首页 理论教育 零点起步AVR单片机1602LCD显示程序详解

零点起步AVR单片机1602LCD显示程序详解

时间:2023-10-17 理论教育 版权反馈
【摘要】:以下为1602LCD的显示程序。程序说明如下:1)显示屏命令写入函数。1602内部的DDRAM有80B,而显示屏上只有2行×16列,共32个字符,所以两者不完全一一对应。使用的控制指令一共8个类别。在画面滚动的过程中,AC的值也是变化的。38H:8位总线,双行显示,显示5×7的点阵字符。

零点起步AVR单片机1602LCD显示程序详解

以下为1602LCD的显示程序。程序使用IC-CAVR编译环境编译,硬件调试通过。程序使1602LCD显示两行字符:第一行显示welcome to,第二行显示qingdao。

●目的:1602液晶显示

●功能:1602液晶显示。

●时钟频率:内部1MHz。

●编译环境:ICC-AVR6.31。

●使用硬件:1602液晶。

978-7-111-35161-0-Chapter06-85.jpg

图6-32 1602LCD与ATmega16接线原理图

●结果:1602液晶第一行显示welcometo,第二行显示qing dao并循环显示。

●操作要求:插上p7跳帽,调节液晶对比度旋钮R9使液晶达到最佳显示。

程序说明如下(详细程序请参考光盘内容):

978-7-111-35161-0-Chapter06-86.jpg

1)显示屏命令写入函数。

978-7-111-35161-0-Chapter06-87.jpg

2)显示屏数据写入函数。

978-7-111-35161-0-Chapter06-88.jpg

3)显示屏清空显示。

978-7-111-35161-0-Chapter06-89.jpg

4)显示屏字符串写入函数。

978-7-111-35161-0-Chapter06-90.jpg

978-7-111-35161-0-Chapter06-91.jpg

5)显示屏单字符写入函数。

978-7-111-35161-0-Chapter06-92.jpg

6)显示屏初始化函数。

978-7-111-35161-0-Chapter06-93.jpg

7)主函数。

978-7-111-35161-0-Chapter06-94.jpg

978-7-111-35161-0-Chapter06-95.jpg

液晶显示屏中,1602型算是比较简单的一种,使用总结如下:

●1602LCD里的存储器有3种:CGROM、CGRAM、DDRAM。CGROM保存了厂家生产时固化在LCM中的点阵型显示数据,CGRAM是留给用户自己定义点阵型显示数据的,DDRAM则是和显示屏的内容对应的。1602内部的DDRAM有80B,而显示屏上只有2行×16列,共32个字符,所以两者不完全一一对应。默认情况下,显示屏上第一行的内容对应DDRAM中80H~8FH的内容,第二行的内容对应DDRAM中CH~CFH的内容。DDRAM中90H~A7H、D0H~E7H的内容是不显示在显示屏上的,但是在滚动屏幕的情况下,这些内容就可能被滚动显示出来了。注意这里列举的DDRAM的地址准确来说应该是DDRAM地址+80H之后的值,因为在向数据总线写数据的时候,命令字的最高位总是为1。

●1602LCD使用三条控制线:EN、RW、RS。其中EN起到类似片选和时钟线的作用,RW和RS指示了读、写的方向和内容。在读数据(或者Busy标志)期间,EN线必须保持高电平;而在写指令(或者数据)过程中,EN线上必须送出一个正脉冲。RW、RS的组合一共有4种情况,分别对应4种操作。

RS=0、RW=0——表示向LCM写入指令。

RS=0、RW=1——表示读取Busy标志。(www.xing528.com)

RS=1、RW=0——表示向LCM写入数据。

RS=1、RW=1——表示从LCM读取数据。

●LCD在使用的过程中,可以在RS=0、RW=0的情况下,向LCM写入一个字节的控制指令。使用的控制指令一共8个类别。有的类别又有几条不同的指令。具体的情况如下。

1)01H:清除DDRAM的所有单元,光标被移动到屏幕左上角。

2)02H:DDRAM所有单元的内容不变,光标移至左上角。

3)输入方式设置(EnterModeSet),这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加1还是减1);二是屏幕上的内容是否滚动。

4)04H:写入DDRAM后,地址指针减1,比如第一个字符写入8FH,则下一个字符会写入8EH;屏幕上的内容不滚动。

5)05H:写入DDRAM后,地址指针减1,同上一种情况;每一个字符写入以后,屏幕上的内容向右滚动一个字符位。

6)06H:写入DDRAM后,地址指针加1,比如第一个字符写入80H,则下一个字符会写入81H;屏幕上的内容也是不滚动。这应该是最常用的一种显示方式。

7)07H:写入DDRAM后,地址指针加1,同上一种情况;每一个字符写入以后,屏幕上的内容向左滚动一个字符位。

8)屏幕开关、光标开关、闪烁开关。

08H、09H、0AH、0BH:关闭显示屏,实质上是不把DDRAM中的内容对应显示在屏幕上,对DDRAM的操作还是在进行的,执行这条指令,接着对DDRAM进行写入,屏幕上没有任何内容,但是接着执行下面的某条指令,就能看到刚才屏幕关闭期间,对DDRAM操作的效果了。

0cH:打开显示屏,不显示光标,光标所在位置的字符不闪烁。

0dH:打开显示屏,不显示光标,光标所在位置的字符闪烁。

0eH:打开显示屏,显示光标,光标所在位置的字符不闪烁。

0fH:打开显示屏,显示光标,光标所在位置的字符闪烁。

关于光标的位置:光标所在的位置指示了下一个被写入的字符所处的位置,加入在写入下一个字符前没有通过指令设置DDRAM的地址,那么这个字符就应该显示在光标指定的地方。

9)设置光标移动(本质就是AC的增加还是减少)、整体画面是否滚动。

10H:每输入一次该指令,AC就减1,对应了光标向左移动一格。整体的画面不滚动。

14H:每输入一次该指令,AC就加1,对应了光标向右移动一格。整体的画面不滚动。

18H:每输入一次该指令,整体的画面就向左滚动一个字符位。

1CH:每输入一次该指令,整体的画面就向右滚动一个字符位。画面在滚动的时候,每行的首尾是连在一起的,也就是每行的第一个字符,若左移25次,就会显示在该行的最后一格。在画面滚动的过程中,AC的值也是变化的。

10)显示模式设定指令,设定了显示几行,显示什么样的点阵字符,数据总线占用几位。

20H:4位总线,单行显示,显示5×7的点阵字符。

24H:4位总线,单行显示,显示5×10的点阵字符。

28H:4位总线,双行显示,显示5×7的点阵字符。

2CH:4位总线,双行显示,显示5×10的点阵字符。

30H:8位总线,单行显示,显示5×7的点阵字符。

34H:8位总线,单行显示,显示5×10的点阵字符。

38H:8位总线,双行显示,显示5×7的点阵字符。这是最常用的一种模式。

3CH:8位总线,双行显示,显示5×10的点阵字符。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈