微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机复位,LCD1602显示变成乱码是咋回事?

51单片机复位,LCD1602显示变成乱码是咋回事?

时间:10-02 整理:3721RD 点击:
本人最近在做一个小项目,需要用到LCD1602作为显示模块。在单片机上电时,1602可以正常显示数据值,但是一按下复位键,1602就显示不正常了,只有将单片机重新上电1602才有恢复原样,这是为什么?一直想不明白啊,复位后不是从头开始执行代码吗?这跟一开始上电的情况有什么很大的不同吗?求大神们不吝赐教!在此先谢过了![qq]376694493[/qq]

你可以在初始化lcd的那段程序上加写标记,比如让某个引脚输出高电平之类的。之后复位测一下那引脚,如果输出的是高电平则说明单片机已近执行了那段程序,那么就不是单片机的问题,可能是lcd的问题

试过了,复位后初始化函数有执行到啊,可是复位后还是显示乱码,而且我换了另一块lcd也是一样的情况。

试过了,复位后初始化函数有执行到啊,可是复位后还是显示乱码,而且我换了另一块lcd也是一样的情况。

原来是单片机复位出了问题,换一块就可以了。

继续努力,也觉得不可能的问题,越可能就是它

丝线控制法下,由于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线写数据时,就没有高低位错乱的问题了。[转载:mrjingf   感谢!]

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

网站地图

Top