这两天在整1602,程序都写完后用Keil编译,有报错,但后来都一一解决了,于是烧进单片机,可不管怎么调1602就是不显示,首先我可以确定硬件电路是没有问题的,因为我用另外一个程序往1602里面写一个字符串,就可以显示。最后我只得对照书上的源程序,一个字母一个字母比对,比较了有3次,问题依然没有找到,都有点灰心了,花了我一天半时间于是就放一边了。今天下班后再一次找错,总与知道错在了哪里,
/*********************************
函数功能:写数据
*********************************/
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1; //此处错误,RS写成了ES,可为什么检查不出来呢
RW=0;
E=0;
P0=y;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
在向1602写数据的时候,RS=1误写成了ES=1,当然肯定写不进去了,但Keil为啥不报错呢?只是因为没有语法错误吗?
其实,在写不进去的时候我就应该好好检查一下WriteData这个函数是否正确,找问题的时候不进行分析可能出错的地方,到头来耽误的还是自己的时间。