void display(uchar *p1)
{
uchar i;
P3=0x7f;
P0=tab[*p1];
write_com(0x80);
write_dat(keydat);
delayms(5);
}
我姑且不论你这函数怎样,但是我看见了调用这函数的地方
display(&keydat);
=====================================================
楼下几位甚至喊出程序没有错,我表示想打两个字:呵呵。
1、不懂指针,就低调一点,要么不用,要么回去复习一下C语言基础知识,就是一定不能乱用。
2、不懂你在这里对P3操作是什么意思,P0我懂了,你想对数据口赋值,问题是……你看过1602的时序么……write_dat函数已经帮你干好这事了,你在这里抛弃了他自己创业。
3、keydat=keyscan(); 这里我简单地看了一下,发现返回按键的值是1234这种数据
write_dat(keydat); 然后,你直接把1234写入1602,我想说,你在那里急得抓头挠耳,到处在网上找帮助找代码,就不能好好看一下1602的数据手册?你知道要显示字符‘1’要输入什么数据吗?
这里我用字符'1',而不是数据1,你该知道两个是不一样的。他们的值相差30H。
所以
write_dat(keydat+0x30);
4、而这个display函数就搞笑了,你回去复习一下C语言吧
你的程序的目的是按下某个键,同时液晶显示这个键代表的号码是吗,建议键盘和液晶分块调试吧
程式没有错,那你查一下硬件接线是否有错
没有电路图 ,你是怎么写出来的程序 纸上谈兵么?