微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 1602有时正常,有时乱码

1602有时正常,有时乱码

时间:10-02 整理:3721RD 点击:
各位大侠,求助啊。小弟用1602液晶写了个程序,现在显示有时正常,有时乱码。
初始开关电源5V上电后正常显示,反复开关几次后显示就会乱掉。按下手动复位开关后显示仍然乱码。
断电等待几分钟后再次上电正常显示。硬件连线检测过了没错。



从代码分析。不行发上来,共同学习。

                                       

你可以从以下几个房面考虑下::1602管脚接触是否很好(你可以用万用表测仪测下:蜂鸣器挡);程序下载(多下载两次可以试出来);焊接时,连线与连线相隔太近,存在信号干扰问题;焊接好的板子最好不要直接接地或左面,也就是说,给电路板加上底座,从而使电路板悬空。你可以从以上几个方面尝试下,希望你能找到问题之所在

代码的问题可能是

真心感谢兄台,就是你说的最后一点。之前我把板子直接放在地面上了,用了四个铜柱支撑起来后液晶显示一切正常,请问您清楚板子直接放在地上造成干扰的原因吗?

再次对各位兄弟的帮助表示感谢!有你们真好。

0x01清除数据试一下

嗯嗯,四位接法有时会乱码。能正常显示就证明你的代码应该没有问题。复位后乱码再复位变正常有可能是四位线接法的通病。你可以试一下初始化两次,再传送要显示的内容。或采用8位接法。

四线控制法下,由于LCD复位后默认是8线输入,如果函数LCD_com是一个按4线输入写的函数,执行LCD_com(28)等效为先写入了8线指令2x,写入后LCD已改为4线模式,再写入4线指令8x的高四位,但是不再有低四位写入,所以之后写入其他数据时,LCD仍在等待上一个指令的第四位,导致不能正确识别数据。
执行LCD_com(02),先是写入了8线指令0x,再写入8线指令2x,这时才将LCD改为4线输入。之后按4线写数据时,就没有高低位错乱的问题了。

有人说时钟过快或上电时钟不稳导致时序错误,但我觉得这才是最正确的回答!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top