问题描述:
在lcd12864中用stc12c5a60s2控制单片机显示数字,发现一直都显示白屏,在普中51的开发板上显示正常,没有问题,挪到自己焊接的洞洞板上就出现了问题。
排除法尝试解答:
查了lcd12864接线,和背光调节发现都正常。lcd12864背光亮度可以直观看到变化,故不是背光原因。
重新拿一个流水灯的程序测试,发现流水灯也不正常工作,拿万用表测量单片机引脚,发现单片机IO口全为高电平,即单片机没有正常工作,测完后发现单片机RST引脚一直是高电平,按下复位按键也不变化,检查电路接线,发现四角按键接错了,应该交叉接线,重新接复位按键后,单片机引脚有高低电平变化,再用流水灯测试,单片机正常工作,即单片机是没有问题了,单片机的最小系统焊接完全正常。
又在网上搜寻问题的答案,发现有网友说lcd12864的引脚需要外接上拉电阻,stc12c5a60s2单片机内置了四种IO口的设置模式,因此将其设置成推挽输出,在此测试发现,仍然没有结果。
推挽输出设置方式:
P0M1 = 0X00;//根据手册将P0M0和P0M1设置即可将IO口设置成推挽输出
P0M0 = 0XFF;
P2M1 = 0X00;
P2M0 = 0XFF;
P1M1 = 0X00;
P1M0 = 0XE0;
P3M1 = 0X00;
P3M0 = 0X0C;
然后硬件没有问题了,开始检查软件,发现,在LCD12864的程序中有一个检测忙状态的函数,这个函数中有个while循环,是不是程序中这个循环的终止条件有问题所以单片机执行到这出不去了。发现问题后,尝试注释掉这个忙状态检测指令,在需要检测忙状态的地方,让单片机软件延迟10毫秒,即LCD12864有足够的时间写完数据,进入不忙的状态,更新完程序,烧录上电测试,发现问题解决了!能显示该显示的文字了!此BUG查询修改结束。