《液晶显示控制(1602)c语言实例》由会员分享,可在线阅读,更多相关《液晶显示控制(1602)c语言实例(21页珍藏版)》请在金锄头文库上搜索。
1、第九 讲 LCD控制显示字符,一、LCD简介 二、1602字符型液晶显示屏 三、1602控制程序编写 四、实训,一、LCD简介,LCD 液晶显示器是 Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。 1 对比度 对比度是屏幕上同一点最亮时(白色)与最暗时(黑色)的亮度的比值,高的对比度意味着相对较高的亮度和呈现颜色的艳丽程度。 2 亮度 LCD是一种介于固态与液态之间的物质,本身是不能发光的,需借助要额外的光源才行。因此,灯管数目关系
2、着液晶显示器亮度。最早的液晶显示器只有上下两个灯管,发展到现在,普及型的最低也是四灯,高端的是六灯。,3 信号响应时间 响应时间指的是液晶显示器对于输入信号的反应速度,也就是液晶由暗转亮或由亮转暗的反应时间,通常是以毫秒(ms)为单位。 4 可视角度 大多数光都是从屏幕中垂直射出来的,所以从某一个较大的角度观看液晶显示器时,便不能看到原本的颜色,甚至只能看到全白或全黑。为了解决这个问题,到目前为止有三种比较流行的技术,分别是:TN+FILM、IPS(IN-PLANE -SWITCHING)和MVA(MULTI-DOMAIN VERTICAL align MENT)。 LED(Light Emi
3、tting Diode),发光二极管 是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。,二、1602字符型液晶显示屏,字符型LCD是由若干个57或511等点阵符位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。目前市面上常用的有16字1行,16字2行(简称1602),20字2行和40字2行等的字符模块组,其中1602液晶显示屏应用比较广泛。,1、1602引脚,1602与8051单片机的参考连接图,2、 LCD 1602 状
4、态字说明,注意:每次对控制器读写操作之前,都要进行读写检测(忙闲),确保STA7=0,3、 LCD 1602片内RAM,控制器内部带有808(80字节)位的数据缓冲区,如下图所示:,控制器内部设有一个数据指针,可以通过设置数据指针访问片内80个字节的数据。,4、 LCD 1602指令说明,(1)显示模式设置:,(2)显示开/关及光标模式设置:,(3)其它设置,5、基本操作时序(1)读状态输入:RS=L;RW=H;E=H输出:D0D7=状态字(2)写指令:输入:RS=L;RW=L; D0D7=指令码;E=高脉冲输出:无(3)读数据输入:RS=H;RW=H;E=H输出:D0D7=数据(4)写数据输
5、入:RS=H;RW=L; D0D7=数据;E=高脉冲输出:无,(1)读状态输入:RS=L;RW=H;E=H输出:D0D7=状态字,uchar Busy_Check( ) uchar lcd_status;RS=0; RW=1;E=1;Delay_Ms(1);lcd_status=P0;E=0;return lcd_status; ,(2)写指令:输入:RS=L;RW=L; D0D7=指令码;E=高脉冲输出:无,void Write_LCD_Command(uchar cmd)while(Busy_Check(),void Write_LCD_Data(uchar dat) while(Busy
6、_Check() ,(4)写数据输入:RS=H;RW=L; D0D7=数据;E=高脉冲输出:无,6、 LCD 1602初始化过程 (1)延时15ms; (2)写指令38H(不检测忙信号); (3)延时5ms; (4)写指令38H(不检测忙信号); (5)延时5ms; (6)写指令38H(不检测忙信号); (7)以后每次写指令、读写数据操作之前均需检测忙信号; (8)写指令38H:显示模式设置; (9)写指令08H:显示关闭; (10)写指令01H:显示清屏; (11)写指令06H:显示光标移动设置; (12)写指令0CH:显示开及光标设置;,LCD 1602初始化函数实例,void Initi
7、alize_LCD( ) Write_LCD_Command(0x38);Delay_Ms(1);Write_LCD_Command(0x01);Delay_Ms(1);Write_LCD_Command(0x06);Delay_Ms(1);Write_LCD_Command(0x0c);Delay_Ms(1); ,字符函数实例,void Display_String(uchar x,uchar y,uchar *str) uchar i=0;/setting display char startif(y=0)Write_LCD_Command(0x80|x);if(y=1)Write_LCD_Command(0xc0|x);for(i=0;i16;i+)Write_LCD_Data(stri); ,三、1602控制程序编写,三、实训,1、设计显示不同的字符; 2、水平滚动和垂直滚动显示。,