微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 液晶1602/1620/1604的问题及解答

液晶1602/1620/1604的问题及解答

时间:11-27 来源:互联网 点击:
1.M16C20板子在重新启动后,写入的显示程序只能显示一行

回答:发现每次重新启动后,需要通过指令给板子一个电压稳定到2,7V到4,5V之间的时间.
解决方法-在main入口多进行一次或者多次初始化程序,为了稳定电压,也为了确定初始化指令确实被执行
2.指令间的延时不同,有时候lcd不会显示字符.
回答:指令间的时间延时长短必须有,对于单指令系统,长短没有区别,但是如果往lcd上面写数据的时候,因为是5*10个点阵,这个期间一直处于忙得状态,所以需要比较长的时间.
解决方法-a.加长延时时间b.写一个检查忙得程序
3.显示一个流水字符程序在lcd上的时候,光标老是在第一行第一个字符上停留。
回答:清屏指令(0001H)的原因,现在没有解决
解决方法-重新写一个清屏程序,把2*16个字符设定成空字符。
4.Lcd初始化的时候,不是显示2行,老是显示1行
回答:有几种情况应该考虑
a. 因为lcd打开电源以后默认的是8位接口(DB0~BD7),所以要先写入3次03H命令,这个时候因为以8位处理,所以中间要加入一定延长时间。因为使用的是4位数据指令,所以然后要写入一次02H指令,防止没有写入,不加延时再执行一次02H,这个时候有2种可能,一种以4bit处理,一种是以8bit处理。紧接着开始进行lcd的初始化,在进行初始化前要加入延时。
delay_1(100);
writeini(0x03);
delay_1(50);
writeini(0x03);
delay_1(10);
writeini(0x03);
delay_1(10);
writeini(0x02);
writeini(0x02);
delay_1(50);
lcd_writeCommand(LCD_SETDISPLAY);
b、启动电压到电压稳定,需要一定的时间,这个时间要在初始化程序中体现出来。
在主程序中,可以利用2次初始化,来满足这段时间。
void main()
{
unsigned char i,address1,address2,address22;
for(i = 0;i < 80;i++)
for(i = 0;i < 80;i++)

ini_sys();
ini_sys();
ini_sys();

5.练习了往lcd1602中写入自己的字符图形并且输出,发现没有初始化的字符行列却出现了字符。
回答:在重新往CGRAM中写字符的时候,应该对5*8行列或者5”10行列的每一行进行初始化,否则没有初始化的地方就会出现乱码,在最后一行的光标位应该全部初始化为0。

附:LCD1602液晶(驱动器为HD44780)学习总结
1.能够区分清楚DDRAM与CGROM,1602使用的字符存储器是EEPROM,而不是手册中说的EPROM。
2.HD44780带有192字符的字符库,可以自定义8个5*8的字符
3.在写程序的时候要严格按照”指令-----数据”的格式考虑
4.通过学习建立了分控制位和数据位的概念
5.掌握了读懂时序图的基本方法,写程序的时候应该严格参照时序图
6.Character code与character address与character pattern是不同的概念,以后要区分清楚
7.Lcd有14个端口可与单片机连接,8个数据位,3个控制位,剩下3个为电源,地,调节电源。

6.LCD1602/1604的行地址

(1)LCD1602:

第一行:0x00+(0x80)

第二行:0x40+(0x80)

(2)LCD1604:

第一行:0x00+(0x80)

第二行:0x40+(0x80)

第三行:0x10+(0x80)

第四行:0x50+(0x80)

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

网站地图

Top