




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章 LCD显示器原理及运用液晶显示器LCD具有体积小、分量轻、功耗低、可以显示图形图像、便于用集成电路直接驱动、易于实现全彩色等特点,因此在仪器仪表、便携工具、监控系统及消费电子等领域有着广泛的运用。液晶显示器分为段式、字符式、点阵式等。段式只能显示固定的一些符号或字符,价钱低廉;字符式可以显示数字和字符,驱动方便,但无法显示汉字。点阵式可以显示汉字,但价钱较高。汉字液晶显示器又分为带字库和不带字库的两种。9.1 液晶显示模块的原理图9-1是字符型液晶显示器不能显示汉字原理,字框中显示了字码ABC;我们如今看到的图形和实践见到的有些类似,但是有很大的差别,这些字码的显示是经过在方格中依次衔
2、接所得,拼凑成一个个字符;液晶显示屏的原理和数码管的一样,即这些方格在这里的作用相当于一个个LED灯相互拥簇在一同;在这里可以称方格为“数码管;经过控制“数码管的通断就可以显示出不同的字符或数字。每个字符占据8个方格的宽度,11个方格的高度,即11行8列,但并不是显示一个字符一定要用11行8列,也可以是7行5列等。当然,数字液晶屏不可以显示汉字,由于所占据的位数不同。图9-1 字符液晶显示器原理汉字液晶屏的显示原理也是如此,如图9-2的“大字所示。大部分汉字液晶屏的驱动芯片是与液晶屏集成在一同的,统称为液晶模块,无须外加驱动,但不同的驱动芯片,其驱动方式和程序也不同,所以在运用液晶模块之前首先
3、要了解其驱动方式。通常汉字显示屏要比数字显示屏占据的空间大,每个汉字的显示由16行16列组成。以汉字液晶显示器为例,描画一个汉字的点阵数据需求32个字节,由于一个字节占8个位,所以一个位正好描画液晶屏上一个点能否点亮。例如,假设“1表示某个点是亮的,“0表示某个点是不亮的,那么以下图中“大字的第一行可以用二进制表示为:0000,0001,0000,0000,即0 x01和0 x00两个字节。同理,可以推出“大字其他行的二进制表示。明显,假设显示一个汉字,那么需求用32个字节的数据来描画。汉字液晶又分为点阵型和字库型,点阵型既可以显示汉字、又可以显示图形,而字库型只能显示汉字及字符,无法显示图形
4、,但驱动方便。液晶屏的大小也有很大差别,典型的汉字液晶普通有12232、12864、19264和240128等。在实践运用中,要根据所要显示的内容、本钱及信息的多少来选择液晶显示器。图9-2 汉字液晶屏显示原理9.2 字符型液晶显示器RT1602C字符型液晶显示器是一种用57点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,最常用的为2行16个字,RT1602C液晶模块就属于此类型。9.1 液晶显示器模块的原理一字符型液晶显示模块RT-1602C的外观与引脚 显示容量:162个字符;任务电流2.0mA(5.0V);字符尺寸:2.954.35mm。
5、RT-1602C采用规范的16脚接口,各引脚情况如下:第1脚:VSS为电源地第2脚:VDD为+5V电源第3脚:VL为液晶显示偏压信号第4脚:RS为数据/命令选择端,高电平常选择数据存放器、低电平常选择指令存放器。第5脚: 为读/写选择端,高电平常进展读操作,低电平常进展写操作。当RS和 共同为低电平常可以写入指令【或者显示地址】,当RS为低电平, 为高电平常可以读忙信号,当RS为高电平, 为低电平常可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平常负跳变,液晶模块执行命令。第714脚:D0D7,为8位双向数据总线,与单片机的数据总线相连,三态。第15脚:BLA,背光电源,通常为
6、5V,并联一个电位器,调理背光亮度。第16脚:BLK,背光电源地。RS寄存器及操作00指令寄存器写入01忙信号和地址计数器读出10数据寄存器写入11数据寄存器读出二字符型液晶显示模块RT-1602C的内部构造 液晶显示模块RT-C1602C的内部构造可以分成三部分:一为LCD控制器,二为LCD驱动器,三为LCD显示安装,如下图: 控制器采用HD44780,驱动器采用HD44100。HD44780是集控制器,驱动器于一体,公用于字符显示控制驱动集成电路。HD44100是作扩展显示字符位的。HD44780是字符型液晶显示控制器的代表电路。 HD44780集成电路的特点: 1、可选择57或510点字
7、符。 2、HD44780不仅作为控制器而且还具有驱动4016点阵液晶像素的才干,并且HD44780的驱动才干可经过外接驱动器扩展360列驱动。 HD44780可控制的字符高达每行80个字,也就是5X80=400点,HD44780内藏有16路行驱动器和40路列驱动器,所以HD44780本身就具驱动有1640点阵LCD的才干即单行16个字符或两行8个字符。假设在外部加一HD44100外扩展多40路/列驱动,那么可驱动162LCD 3、HD44780的显示缓冲区DDRAM、字符发生存储器ROM及用户自定义的字符发生器CGRAM全部内藏在芯片内。 HD44780有80个字节的显示缓冲区,分两行,地址分
8、别为00H27H,40H67H,它下实践显示位置的陈列顺序跟LCD的型号有关,液晶显示模块RT-1602C的显示地址与实践显示位置的关系如下图。4、HD44780具有8位数据和4位数据传输两种方式,可与4/8位CPU相连。5、HD44780具有简单而功能较强的指令集,可实现字符挪动,闪烁等显示功能。HD44780内部的字符发生存储器ROM曾经存储了160个不同的点阵字符图形,如下图:这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。比如数字“1的代码是00110001B31H,又如大写的英文字母“A的代码是01000001B41H,可以看出英文字
9、母的代码与ASCII编码一样。要显示“1时,只需将ASCII码31H存入DDRAM指定位置,显示模块将在相应的位置把数字“1的点阵字符图形显示出来,就可以看到数字“1。三指令格式与指令功能LCD控制器HD44780内有多个存放器,经过RS和R/W引脚共同决议选择哪一个存放器,选择情况如表:RS寄存器及操作00指令寄存器写入01忙标志和地址计数器读出10数据寄存器写入11数据寄存器读出总共有11条指令,它们的格式和功能如下:RS和 引脚上的电平决议对存放器的选择和读/写,DB7DB0决议命令功能。9.2.3 RT1602C与单片机接口及程序图9-3是RT1602C与单片机接口的详细衔接方式,RT
10、1602C液晶衔接插槽位JP4。在运用液晶时,在第三引脚衔接了一个10K的电位器用来调整对比度,假设程序运转后液晶无显示,那么可调整此电位器。图9-3 1602与单片机接口 1602液晶模块的驱动程序编制如下:功能为:用定时器实现一个时钟,并用1602液晶模块显示时间及提示信息,从中读者可以领会液晶驱动程序的编制方法.#include#define uchar unsigned char#define uint unsigned int sbit rs = P36 ; /定义存放器选择位sbit rw = P37 ; /定义读写控制线sbit ep = P27 ; /定义使能端code uch
11、ar mayuan =0,1,2,3,4,5,6,7,8,9;code uchar aa =The total times is: ;uchar i,hour,minute,second,k=0;void putchar(uchar weizhi,uchar da);/显示一个字符的函数void delay(uchar) ; /延时函数void lcd_wcmd(uchar) ; / 写入指令数据到LCDbit lcd_bz(void) ; / 测试LCD忙碌形状void lcd_pos(uchar) ; /设定显示位置void lcd_wdat(uchar) ; /写入字符显示数据到LCDv
12、oid display(uchar,uchar *) ; /显示一个字符串的函数void lcd_init(void); /液晶初始化函数void showtime(uchar,uchar,uchar);/显示时间函数void time_init(void); /定时时间初始化函数main() delay(10) ; lcd_init() ; / 初始化LCD time_init(); /定时器初始化display(0 x00,aa); /第一行显示The total times is: while(1) if(k!=second) /控制每一秒显示一次 k=second;showtime(h
13、our,minute,second); void delay(uchar ms) / 延时子程序 uchar i ; while(ms-) for(i = 0 ; i250;i+) ; bit lcd_bz() / 测试LCD忙碌形状 bit result ; rs = 0 ; rw = 1 ; ep = 1 ; result = (bit)(P0 & 0 x80) ;ep = 0 ; return result ; void lcd_wcmd(uchar cmd) / 写入指令数据到LCD while(lcd_bz() ; /等待液晶空闲rs = 0 ;rw = 0 ;ep = 0 ;P0
14、= cmd ;ep = 1 ;ep = 0 ; void lcd_pos(uchar pos) /设定显示位置 lcd_wcmd(pos | 0 x80) ;void lcd_wdat(uchar dat) /写入字符显示数据到LCD while(lcd_bz() ; /等待液晶空闲rs = 1 ; rw = 0 ; ep = 0 ; P0 = dat ; ep = 1 ; ep = 0 ; void lcd_init() /LCD初始化设定 lcd_wcmd(0 x38) ; /功能设置:4位总线,双行显示,5x7的点阵字符参指令6 delay(1) ; lcd_wcmd(0 x01) ;
15、/去除LCD的显示内容参指令1 delay(1) ; lcd_wcmd(0 x06) ; /入口方式设置:光标右移,文字不移参指令3 delay(1) ; lcd_wcmd(0 x0c) ; /入口方式设置:开显示,无光标,光标不闪烁参指令4 delay(1) ;/*以下是在LCD上显示数组数据的函数。先写显示地址,后写显示数据。其中pos 为写入的位置,q指向要写入的数据所在的数组*/void display(uchar pos, uchar *q) uchar i ; lcd_pos(pos) ; for(i=0 ;i16;i+) lcd_wdat(*q) ; q+ ; void putc
16、har(uchar weizhi,uchar da) /在weizhi处显示字符dadelay(1);lcd_pos(weizhi);lcd_wdat(da);void showtime(uchar h,uchar m,uchar s)/显示时间h:小时,m:分,s:秒 putchar(0 x40,mayuanh/10); /在位置0 x40显示小时的高位 putchar(0 x41,mayuanh%10); /在位置0 x41显示小时的低位 putchar(0 x42,:); /在位置0 x42显示“: putchar(0 x43,mayuanm/10); /在位置0 x43显示分的高位 p
17、utchar(0 x44,mayuanm%10); /在位置0 x44显示分的低位 putchar(0 x45,:); /在位置0 x45显示“: putchar(0 x46,mayuans/10); /在位置0 x46显示秒的高位 putchar(0 x47,mayuans%10); /在位置0 x47显示秒的低位void time_init(void) /定时器初始化函数 i=0;hour=12;minute=34;second=56; /时间初值为12时34分56秒TMOD=0 x01;TL0=0 xb0; /赋初值,定时50msTH0=0 x3c;TR0=1; /启动定时器EA=1;
18、ET0=1; /相关开中断 void time0() interrupt 1 using 2 /定时器0中断函数,实现定时1秒及时间的计算 TL0=0 xb0; /重新赋初值 TH0=0 x3c; i+; if(i=20) /1秒钟到 second+;i=0; if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=24) hour=0;9.1.2 LCD显示器与单片机的接口与运用 以下图是LCD显示器与8051单片机的接口图,图中RT-1602C的数据线与8051的P1口相连,RS与8051的P2.0相连
19、,与8051的P2.1相连,E端与8051的P2.2相连。编程在LCD显示器的第一行、第一列开场显示“GOOD,第二行、第6列开场显示“BYE。#include sbit RS=P20;sbit RW=P21;sbit E=P22;void delay(void);void init(void);void wcmd(unsigned char);void wdat(unsigned char);void fbusy(void);void main( ) /主函数SP=0 x50;init( );wcmd(0 x80); /写入显示缓冲区起始地址为第1行第1列wdta(0 x44); /第1行第
20、1列显示字母“Gwdat(0 x4f); /第1行第2列显示字母“Owdat(0 x4f); /第1行第3列显示字母“Owdat(0 x47); /第1行第4列显示字母“D【80H45HC5H】wcmd(0 xc5); /写入显示缓冲区起始地址为第2行第6列wdat (0 x42); /第2行第6列显示字母“Bwdat (0 x59); /第2行第7列显示字母“Ywdat (0 x45); /第2行第8列显示字母“Ewhile(1);void init() / 初始化函数,主要写命令wcmd(0 x01); /01H=0000 0001,清屏wcmd(0 x38); /38H=0011 100
21、0,运用8位,显示两行,用5*7的字型wcmd(0 x0e); /0eH0000 1110,显示器开,光标开,字符不闪烁wcmd(0 x06); /06H0000 0110,字符不动,光标自动右移一格RS寄存器及操作00指令寄存器写入01忙信号和地址计数器读出10数据寄存器写入11数据寄存器读出void fbusy( ) /检查忙函数RS=0;RW=1; /RS=0,RW=1,读忙信号E=1;E=0; / E端由高电平到低电平跳变,液晶模块执行命令while (P1&0 x80); /假设忙,那么等待。参见忙指令格式delay( ); / 延时大约2ms由于LCD是一慢速显示器件,所以在执行每
22、条指令之前一定要确认LCD的忙标志为0,即非忙形状,否那么该命令将失效。void wcmd(unsigned char cmd) /写命令函数, RS=0;RW=0fbusy( ); / 写命令前,先检查设备能否忙?E=0;RS=0;RW=0; / 指令存放器写入E=1; / E由高电平到低电平跳变,液晶模块执行命令P1=cmd; / 命令由P1口送入LCDE=0;delay( );void wdat(unsigned char dat) /写数据函数, RS=1;RW=0 fbusy( ); / 写数据前,先检查设备能否忙? E=0;RS=1;RW=0; E=1; / E由高电平到低电平跳变
23、,液晶模块执行命令 P1=dat; / 数据由P1口送入LCD E=0; delay( ); / 延时大约2msvoid delay( ) /延时函数 unsigned char y; for (y=0;y255;y+); / 【大约2ms多一点】#include #include #define uchar unsigned char#define uint unsigned intsbit RS = P20;sbit RW = P21;sbit EN = P22;void Delayms(uint ms) / 延时“ms毫秒 unsigned char i;while(ms-)for(i=
24、0;i120;i+);uchar Busy_Check()unsigned char LCD_Status;RS = 0;RW = 1; / 读忙形状, RS=0;RW=1EN = 1;Delayms(1); / 延时1msLCD_Status = P0;EN = 0; / EN由高电平到低电平跳变,液晶模块执行命令return LCD_Status;void Write_LCD_Command(uchar cmd) while(Busy_Check()&0 x80)= =0 x80);RS = 0; RW = 0; /写命令, RS=0;RW=0EN = 0;P0 = cmd;EN = 1;
25、Delayms(1);EN = 0;void Write_LCD_Data(uchar dat) while(Busy_Check()&0 x80)=0 x80);RS = 1;RW = 0; /写数据, RS=1;RW=0EN = 0;P0 = dat;EN = 1;Delayms(1);EN = 0;void Initialize_LCD() Write_LCD_Command(0 x38); / 0011 1000,8位,显示两行,用5*7的字型Delayms(1);Write_LCD_Command(0 x01); /00000001,清屏Delayms(1);Write_LCD_Co
26、mmand(0 x06); /0000 0110,字符不动,光标自动右移一格Delayms(1);Write_LCD_Command(0 x0c); / 0000 1100,开显示,无光标,字符不闪烁Delayms(1);void ShowString(uchar x,uchar y,uchar *str) uchar i = 0;if(y = 0)Write_LCD_Command(0 x80 | x);if(y = 1)Write_LCD_Command(0 xc0 | x);for(i=0;i16;i+) Write_LCD_Data(stri);/* writer:shopping.w
27、 */#include #include #define uchar unsigned char#define uint unsigned intvoid Initialize_LCD();void ShowString(uchar,uchar,uchar *);sbit K1 = P30;sbit K2 = P31;sbit K3 = P32;uchar code Prompt=PRESS K1-K4 TO START DEMO PROG;uchar const Line_Count = 6;uchar code Msg80= Many CAD users dismiss,process o
28、f creating PCB,of view.with PCB layout,placement and track routing,can often be the most time,And if you use circuit simulation,you are going to spend even more;uchar Disp_Buffer32;void Delayxms(uint ms) uchar i;while(ms-) for(i=0;i120;i+);void V_Scroll_Display() uchar i,j,k = 0;uchar *p = Msg0;uchar *q = MsgLine_Count + strlen(MsgLine_Count);while(pq) for(i=0;(i16)&(pLine_Count)break;p = Msgk;Disp_Bufferi = *p+;f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上市公司投资部管理制度
- 富阳区医院保洁管理制度
- 景区物资运输管理制度
- 外加剂生产人员管理制度
- 县关于快递市场管理制度
- 公司招投标代理管理制度
- 月季养护全年管理制度
- 皮炎湿疹的诊断与治疗讲课件
- 巷道掘进基础知识 巷道断面内水沟和管线布置
- 高中思想政治课教学法探析
- 2025年高考安徽卷物理真题(解析版)
- 新版2025心肺复苏术指南
- 2024年秋儿童发展问题的咨询与辅导终考期末大作业案例分析1-5答案
- TSG ZF001-2006《安全阀安全技术监察规程》
- DL∕T 796-2012 风力发电场安全规程
- 贵州省旅馆业特种行业许可证审批表
- 重庆市关于加强对旋挖桩成桩质量检测的通知
- 中国标准编写模板应用(TCS)课件
- 高压旋喷桩设备基础加固工程施工方案
- 毕业设计(论文)基于单片机的自动计数与装箱控制系统设计
- 土地利用现状分类2007与2017对照表
评论
0/150
提交评论