LCD1602液晶显示完全资料
table)+x; // 求得字符串长度加上起始列位置 while(xt) //功能为LCD显示到字符串最后一个字符,防止字符串 { //没有16个字符,从而不够位产生乱码; display_lcd_byte(y,x,table[z]); //逐位显示数组内字符 x++; z++; } } 9.主程序: 主程序里除了放入初始化程序外就是加入自己编写的显示子程序,根据你所要的不用功能可以编写各种类型的显示子程序,这里不做详细介绍,以下举例为显示一个字符和显示字符串的显示子程序。 void main() { LCD1602(); init(); display_lcd_byte(0,0,'A'); // 显示一个字符 display_lcd_text(1,3,table); // 显示字符串 while(1); } 到此,让LCD1602显示的操作流程和编程思想基本可以告一段落了,这里有一个完整的显示程序可显示2行英文: http://www.51hei.com/mcu/723.html,大家可依样画瓢,自己修改运行,但是1602的功能实现远不止这些。利用1602你可以做出动态效果的显示,并且除了显示一般字符外,1602还支持自定义字符等等其他一些功能,下面在最后简单介绍下显示动态效果和自定义字符。 一、显示动态效果: 显示动态效果包括让一个字符或字符串原位置闪烁,或者前后移动等等。其实动态效果原理很简单,就是简单的利用延时。 例如让字符原位置闪烁,可以认为是先让1602显示字符,延时一段时间后,可以显示空格或者直接清屏操作都可以达到让字符消失不见的效果,再延时一段时间后再让1602显示这个字符。 同理,让字符前后移动也是这样,例如让字符在第一个位置显示,延时一段时间后让其在后面第二个位置显示,只要显示地址加1,然后显示即可。字符串也是同样的道理。 在这里补充一点就是如何让字符串从1602第16个地址外进入,动态向前移动。其实可以通过显示地址表我们知道起始位置开始后1602一行只能显示16个字符,但是一行的地址却远远不止16个。大家可以看到第一行显示地址是从00~27,然而能显示在1602可见范围的只有00~0F,后面的位置其实就是起到一个缓冲的作用,你完全可以让字符数据存在在10地址后的RAM中,只不过,我们无法看到就是了,如果存在10前的地址我们就能看到显示。 因此,我们可以先把显示起始地址设在10地址后的某一个位置,然后让字符显示地址每次加1,当加到0F时,我们就可以看到字符串第一个字符出现在1602的最末一位,然后继续向前移动。 下面给出一段字符串移动显示的例子: void display_lcd_byte(uchar y,uchar x,uchar z) { if(y) { x+=0x40; } x+=0x80; write(x,0); write(z,1); } void display_lcd_text(uchar y,uchar x,uchar table[]) { uchar z=0; uchar t; t=strlen(table)+x; while(xt) { display_lcd_byte(y,x,table[z]); x++; z++; } display_lcd_byte(y,x,' '); } //前两个子程序是显示子程序 void main() { uchar i; LCD1602(); init(); for(i=16;i>=0;i--) //这里的循环就是为了字符串从后往前显示 { display_lcd_text(0,i,table0); //i减一次,首个字符就往前去一位 delay(200); } while(1); } 二、显示自定义字符: 要想显示自定义字符,首先就得取得想要的图形或者字符的字模数组,可以通过手动提取的方法,取得相应的字模。 如下图所示,对应一个字符显示区域。每8个字节,组成一个点阵数组。 将生成的点阵数组保存到CGRAM存储器中,生成自定义字符。1602内部CGRAM用于自定义的字符点阵的存储,总共64字节。由上一步点阵提取可知,每一个字符由8个字节数据组成。所以64字节CGRAM存储器,能够存储8组自定义字符的点阵数组。按照CGRAM地址划分为 0~7为第一组,8~15为第二组,依次类推56~63为第8组数据。 CHARACTER CODE是数据的显示地址,0-7的范围,能存储8位自定义的字符。(能存八个自定义,每个字符存放的) CGRAM ADDRESS是存储数据的地址,从0-63共64个字节.存储64个数据。我们写入的数据是0x40~0x7F,共128位。(把字符数组内的8个数送进这8个地址,每存完一个字符的8位,下次地址直接转到0x48) CGRAM DATA 字模每一行5位数据存 内部常用字符显示时,显示编码是从0x20开始的。0x00~0x0F是专门留给自定义字符显示的。0x00~0x07和0x08~0x0F内容是一样的。例如:调用0x01 位置和0x09位置,显示的内容是一样的。 LCD1602自定义显示字符的方式共四步,如下面所示: 1.设置向CGRAM中存入这个数据.初始地址是0x40。然后存一位向后加8, 总共能存8位自定义的字符。 2.然后可以把自定义的数据送入到LCD的CGRAM中。 3.向LCD写指令,送入需要显示数据的地址。 4.向LCD写指
要想让某一格子显示就让那一位为1,每行自定义5位,全白为0x00;全黑为0x1f。一共8行,每行一位数据。
- 单片机定时器实现实时时钟程序-lcd1602显示(12-02)
- 单片机写LCD1602液晶程序源码(12-02)
- 单片机I2C通信及LCD1602显示C程序(12-02)
- 单片机LCD1602底层驱动子程序(12-02)
- 51单片机加HC—SR04超声波测距仪用LCD1602显示(12-02)
- PIC单片机驱动LCD1602液晶显示字符串程序(12-02)