


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章LCD显示器原理及应用【Proteus中LCD的选择,用Optoelectronics,在后面有挺多的LCD显示器件】81液晶显示器模块的原理1. 字符型液晶显示模块RT-1602C的外观与引脚16 11OOOQOOOOOOOOOOOO 16;rlQ©图8-1显示容量:16个X 2排字符;工作电流 2.0mA(5.0V ;字符尺寸:2.95X 4.35mm。【能够看到的是2排,各16个字符,不是汉字】RT-1602C采用标准的16脚接口,各引脚情况如下:第1脚:VSS为电源地;第2脚:VDD为+5V电源;【从高频的角度,应该1电源,2地第3脚:VEE为液晶显示对比度调整端,接正
2、电源时对比度最弱,接地时对 比度最高,对比度过高时,会产生 鬼影”使用时可以通过一个10K的电位器 调整对比度。第4脚:RS为数据/命令选择端,高电平时选择数据寄存器、低电平时选择 命令寄存器。RS: RegisterSelectior第5脚:I1,读写操作选择1 -读,0 写)。RSHI寄存器及操作00指令寄存器写入:01忙信号和地址计数器读出10数据寄存器写入11数据寄存器读出第6脚:E端为使能端,当E端由高电平跳变成低电平时 负跳变),液晶模 块执行命令。【类似于74LS373,需要负跳变】执行一条命令或写入一个数据,都要使E有一个负跳变。第714脚:D0D7,为8位双向数据总线,与单片
3、机的数据总线相连, 三 态。第15脚:BLA,背光电源,通常为+ 5V,并联一个电位器,调节背光亮度0第16脚:BLK,背光电源地。2. 字符型液晶显示模块RT-1602C勺内部结构 液晶显示模块RT-C1602C的内部结构可以分成三部分:一为LCD控制器,二为LCD驱动器,三为 LCD显示装置,如图所示:地 VSS + 5V VDD 液晶显示倡压信号VL -RS -读写选择R评_ 使能端E -LCDLCD控制动器器HD44780HD44100LCD显示装备图8-2控制器采用HD44780,驱动器采用HD44100。HD44780是字符型液晶显示 控制器的代表电路。HD44780控制器的特点:
4、(1>可选择5>7或5X10点字符。【X方向为5个点,丫方向为7或10点(2>HD44780的显示缓冲区DDRAM、字符发生存储器VROM )【具体的内容如图8 -4及用户自定义的字符发生器CGRAM全部集成在芯片内。【如果用户不定义字符,则字符发生器CGRAM可以不管HD44780有80个字节的显示缓冲区,分两行,地址为:第一行为 00H27H ; <03940个)第二行为 40H67H。<64103 40个)显示位置的排列顺序跟LCD的型号有关,RT-1602C液晶显示模块的显示地址与实际显示位置的关系如下图所示。【注意: 理解 “ 00和 “ 40图8-3【
5、27H=2X16+ 7=3940H=4X16=6467H=6X16+ 7=96+ 7=103103-64=39】(4>HD44780具有8位数据和4位数据传输两种方式,可与4/8位CPU相连。【采用8 位CPU时,应该采用8位数据传输方式,在51系列中,用8位方式】(5>HD44780具有简单而功能较强的指令集,可实现 字符移动、闪烁等显示功能。HD44780内部的字符发生存储器vROM )已经存储了 160个不同的点阵字符 图形,如图8-4所示:【从这些点阵字符数据可以看出,显示时,需要用ASCII码】这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等 ,每一个字符
6、都有一个固定的代码。比如数字“ 1的代码是00110001BV31H),又如大写的英文字母 “A”勺代码是01000001BV41H),【上面的数字在前,左边 的数字在后】可以看出英文字母的代码与ASCII编码相同。要显示“ 1时,只需 将ASCII码31H存入DDRAM指定位置,显示模块将在相应的位置把数字“ 1的点阵字符图形显示出来,就可以看到数字“ 1。00000001001022LL 1 oooioi01 01111OOOLOO1101010111100L 10 l11101111H KW«000il«0FR0cepxxxxOO:O 1<2>11口Qmn
7、SqJ 0IT2E:R匕厂rY戶eiCatxjeOiOl 1#3匸S匚.三OT=EC"ixxci i no<S>车4C-|TdtI卜PnXKXXO'lO1 1g5EUi 4才ZL<sU1u(7)&6TFUf7=?7T"3P£xxxxD1114S>-J-VU1 w3w1gJLxxxxlOOU(l>cSHXPTx厂Xxxxx1OO1(2>>9IV1yp尊JIL-1y1 (J 1 O<3>*Jz J 1NXZJ讥L-J手XMMX 1 0 1 I-N>+KEk<*rt乂J=iXXXK 1 I
8、OC)(6)<L¥11 $FlJtMXX 1LO1MM>Z>t<'xxxx LI 10<?)>Hn->X.XXX 11117O0+-nOIlli图8-43. 指令格式与指令功能LCD控制器HD44780内有多个寄存器,通过RSffi 引脚上的电平决定 对命令和数据)寄存器的选择和读/写,DB7DB0决定命令功能。选择情况如表:RSa寄存器及操作00指令寄存器写入:01忙信号和地址计数器读出10数据寄存器写入11数据寄存器读出E端,当E出现负跳变的时候,LCD执行命令或执行数据 总共有11条指令,它们的格式和功能如下:序号指令RSR/W
9、D7D6D5D4DSD2D1DO1清显示000Q0000012光标返回0I 00000001+3置输入模式0I 0000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6査功能00001DLNF7置宇符发生存贮器地址0001宇符发生存贮器地址S置数拥存贮器地址001显示数据存贮器拖址9逵忙标志或地址01BF计數器地址10写数到CGRAM或DDRAM10要写的数据内容111从亡它尺AM或DD尺AM读数1M读出的数据内客【表格中红色“ 1”代表每一个指令的特征】(1清屏命令格式【指令寄存器写入,RS=O,R/W=O,指令码0X01】RSLZJD7D6D5
10、D4D3D2D1D00000 1000001功能:清除屏幕显示,将显示缓冲区DDRAM的内容全部写入空格vASCII 2 0H),也就是LCD上无显示。光标复位,回到显示器的左上角 光标复位到地址00H位置,相当于 地址计数器AC清零)。【AC和单片机中的PC类似】(2光标复位命令格式【指令寄存器写入,指令码0X10】RSaD7D6D5D4D3D2D1D0000000001X功能:光标返回到地址00H位置。【数据指针清零】 (3输入方式设置命令格式:【指令寄存器写入】RSaD7D6D5D4D3D2D1D000000001I/DS功能:设定光标的移动方向,并指定整体显示是否移动 其中:I/D光标
11、移动方向:当l/D=1,光标从左向右移动;当读或写一个字符后,地址指针加1,且光标加1向右移动一个字符位置。【一般采用从左到右】当I/D=0,光标从右向左移动;当读或写一个字符后,地址指针减1,且光标减1向左移动一个字符位置。【外国习惯】S屏幕上所有文字是否左移或者右移:当S=1时,写入一个字符,整屏显示左移I/D=1 )或右移l/D=0 ),以得到 光标不移动而屏幕移动的效果; 当S=0时,写入一个字符,整屏显示不移动。(4显示开关控制命令格式:【指令寄存器写入】RSaD7D6D5D4D3D2D1D00000001Dr cB显示控制开关。其中:D位控制整体显示的开与关,D=1,开显示;D=0
12、,关显示C位控制光标的开与关,C=1,有光标;C=0,无光标。B位控制光标字符闪烁,B=1,字符闪烁;B=0,字符不闪烁。例如:RS=O, RW=O,显示开关控制字OCH=0000 1100 表示:D=1开显示,C=0无光标,B=0字符不闪例如:RS=0,RW=0,显示开关控制字OEH=0000 1110 表示:D=1开显示,C=1有光标,B=0字符不闪(5光标或显示移位置命令格式:【指令寄存器写入】RSaD7D6D5D4D3D2D1D00000 n01S/CR/LXX功能:移动光标或整体显示,DDRAM中内容不变。 其中:S/C=1时,移位显示的文字;S/C=0时,移动光标R/L=1时,向右
13、移位;R/L=0时,向左移位(6功能设置命令格式:【指令寄存器写入】RSaD7D6D5D4D3D2D1D00000 n1DLNFXXDL位设置接口数据位数,DL=1为8位数据接口; DL=0为4位数据接口 【MCS-51为8位,所以应该用8位方式“ 1”【和教材上的不一样N位设置显示行数,N=0,单行显示;N=1双行显示。F位设置字型大小,F=1时为5X10点阵字符,F=0时为5 X7点阵字符。例如:功能设置命令38H=0011 1000表示:设置8位数据接口,16X22行显示,N=1),F=0,5X7点阵字符(7设置字库CGRAM地址命令格式:【指令寄存器写入】RSLHJD7D6D5D4D3
14、D2D1D00001AAAAAA功能:设置CGRAM的地址,地址范围063。【字符发生器RAM地址设置。】 【用户自定义的字符,如果没有自定义的字符,此命令可以不用】(8显示缓冲区DDRAM地址设置命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D0001A :AAAAAA功能:DDRAM地址设置,地址范围为0127。【不能任意取值】【控制器内设有一个数据地址指针,用户可通过它们来访问内部的全部80字节 RAM 80H+ 地址码 D7=1,-80H,地址码为 0 27H, 40H-67H)【这个命令在编程时肯定要使用,主要用来设置在第一或第二行显示内容】(9读忙标志BF及光标地址A
15、C命令格式:【指令寄存器,忙标志读出】RSaD7D6D5D4D3D2D1D001BFAC功能:BFvBusyFlag)位为忙标志。BF=1,表示忙,LCM不能接收命令和数据;BF=0,表示L CM不忙,可以接收命令和数据。AC位为地址计数器的值,范围为0127。【007FH例如:(Busy_Check( & 0x80 = 0x80。/取出最高位,判断是否忙。【通常就是威判断最高位是否为“ 1”,表示LCD忙,“ 0”表示不忙】(10写DDRAM或CGRAM命令格式:【数据寄存器写入】RSLHJD7D6D5D4D3D2D1D010DATA功能:将数据写入CGRAM或DDRAM中,应与CG
16、RAM或DDRAM地址设 置命令结合使用。【命令9和命令10,肯定使用】(11读DDRAM或CGRAM命令格式:【数据寄存器读出】RSaD7D6D5D4D3D2D1D011DATA功能:从CGRAM或DDRAM中读出数据,应与CGRAM或DDRAM地址设置命 令结合使用。【一般不用】液晶显示模块是一个慢显示器件,如果在执行每条指令之前,一定要确认 模块的忙标志为低电平,表示不忙,否则此指令失效。所以 在写入命令或数据 时,要先查询液晶显示模块是否忙。显示字符时首先要输入显示字符地址,也就是告诉模块在什么位置显示字 符,表8-2是TC1602EL液晶模块的内部显示位与DDRAM地址的对应关系。表
17、8-2显示位与DDRAM地址的对应关系123456189* F3940DDRAM第 行0001020304050607OS 2627地址CH)第二行404142434445464743V «66674. LCD显示器的初始化LCD使用之前须对它进行初始化,初始化可通过复位完成,也可在复位后 完成,初始化过程如下:(1清屏;(2功能设置;【一般有多条语句进行设置】(3开/关显示设置;(4输入方式设置。8.2 LCD显示器与单片机的接口与应用下图是LCD显示器与8051单片机的接口连接图,图中RT-1602C的数据线与P0口相连,RS与P2.0相连,一 与P2.1相连,E端与P2.2相连
18、。编程在LCD显示器的第一行、第一列开始显示 “GOOD,第二行、第6列开始 显示“BYE。【第1脚:VSS为电源地;第2脚:VDD为+5V电源;第3脚:VEE为液晶显示对比度调整端,可通过电位器调整对比度。第4脚:RS为数据/命令选择端第5脚:I1,读写操作选择1 -读,0-写)。第6脚:当E端由高电平跳变成低电平时 负跳变),液晶模块执行命令】【例1】在LCD上显示GOOD BYE245【已通过CAP8-EX1】LMLCD1XTAL1XTALZ罠STPDIlAlDlD 1PD2VAID3 FQ.WAID 4 F1 口 SfADS PQACiG PD.TWC ?pzsAinFBENFZ3WL
19、11ALE旦F2STA13PlflPSfirAKP1.1Fl.ljTXiDP13RdllM TDF13P3JSTINT1IF1.+F3.<TinPISP16FieminPI,7MID弓ZE_31EATStSi-11 丄-21.£7 IRP1#in elude <reg51.h>sbit RS=P2A0Osbit RW=P2A1。sbit E=P2A2oun sig ned char LCD_Statusun sig ned char num="0123456789"。void delay(unsigned int count un sig ned
20、 char i。while(cou nt->for(i=0。i<120o i+>。unsigned char Busy_Check(> 检查忙函数RS = 0oRW = 1。 RS=0,控制寄存器,RW=1,读E = 1。delay(2>。LCD_Status = PQ 读出 LCD 的状态delay(2>。E = 0oE端出现负跳变return LCD_Statuso _void wcmd(unsigned char cmd> 写命令函数,RS=0; RW=0 / & 0x80取出最高位D7,见命令9<读忙标志BF及光标地址AC命令格式
21、)while(Busy_Check(> & 0x80> = 0x80>。/ 写命令前,先检查设备是否忙?RS=0;RW=0;/ 指令寄存器写入E=1;P0=cmd;/ E设置为高电平/命令由P1 口送入LCDdelay(2;E=0; / E由高电平到低电平跳变,液晶模块执行命令void wdat(unsigned char dat /写/ 数据函数 ,RS=1; RW=0while(Busy_Check( & 0x80 = 0x80。 / 写数据前,先检查设备是否忙?RS=1; RW=0;E=1;P0=dat;/ E由高电平到低电平跳变,液晶模块执行命令/数据
22、由P1 口送入LCDdelay( 2> / 延时大约 2msE=0;void LCD_init( / 初始化函数,主要写命令 wcmd(0x38>。38H=0011 1000,使用 8位,用 5X7的字型,2行 delay(20>。改为 0x3C=0011 1100,就用 5 X0字型wcmd(0x01>。 /01H=0000 0001,清屏【命令 1】delay(20。/已经用检测是否忙,可以不用延时wcmd(0x06。 /06H=0000 0110,字符不动,光标自动右移一格【命令 3】delay(20。wcmd(0x0e。 /0eH=0000 1110,开显示,有
23、光标,字符不闪烁【命令 4】delay(20>。/因为LCD是一慢速显示器件,所以在执行每条指令之前一定要确认LCD/ 的忙标志为 0,即非忙状态,否则该命令将失效。void main( /主函数 unsigned char x=245。LCDnit(。/0x80,见命令8v显示缓冲区DDRAM地址设置命令格式)wcmd(0x8000;/写入显示缓冲区起始地址为第 1行第1列wdat(G'> wdat(O'> wdat(O'> wdat(D'>/第1行第 1 列显示字母 “G” /第1行第 2列显示字母 “O” /第1行第 3列显示
24、字母 “O” /第1 行第 4列显示字母 “D”/【80H45H=C5H】wcmd(0x800x45 ; /写入显示缓冲区起始地址为第 2行第6列wdat (B'> ; wdat (Y '> wdat (E'>/第2行第6列显示字母 “B”/第2行第7列显示字母 “Y”/第2行第8列显示字母 “E”wdat(x/100+0x30。加0x30,把数字变为字符型,最高位wdat(x/10>%10+0x30>。wdat(x%10+0x30>。/最低位/*wdat(numx/100> 。/最高位,也可以用字符数组来变换wdat(num(
25、x/10>%10>。wdat(numx%10>。最低位 */while(1> ;【写入时,需要送相应的字符。如果需要显示数字,贝嚅要转换成字符】【例2】向LCD1602写任意的字符串【已通过CAP8-EX2】LCD 160 21234567890abcdef9hiJkl9997654321_U_A10K4爭2s2223yj £ lli 0XTAL2po.immPO.2jM)2PO.3/AD3PO.4ZAMPO.5ZAD5PO.6ZADRSIPO.7ZAD7psen-P2.DM3P2.1IW9P22A1DP2.3A11ALEP24U12EAP2J5A13P2.6
26、IIA1-4P1.0P2.7M15P3J/RKDPI .1P3.inrKDPI 2P3 2/NT0PI 3P3 3/WT1Pl 4P3.4iT0PI .5P3.5FT1Pi£P3 6AM?Pi .7P37WU1ATB9C51393B37n343332曲305T-In"sszi10KRP1#inelude <reg51.h> 【已通过 CAP8-EX2 】#include <string.h>/ strlen函数的原型在 string.h中void Init_LCD(>。void ShowStri ng(un sig ned char,u nsi
27、g ned char>void Wcmd( un sig ned char>。void Wdat( un sig ned char>。void Delay (un sig ned in t>。un sig ned char Busy_Check(>unsigned char Prompt="1234567890abcdefghijklmnopqrstuvwxyz"。 sbit RS = P2A0O sbit RW =卩2八1。sbit EN =卩2八2。void Delay(unsigned int count/ 延时函数 un sig ned
28、 char。 while(cou nt->for(i=0。i<120。i+>。void Init_LCD(> / 初始化 LCDWcmd(0x38>。/ 0011 1000, 8位,2行显示,用 5X7点阵字符Delay(1 > 。Wcmd(0x01>。/0000 0001,清屏Delay(1 > 。Wcmd(0x06>。/ 0000 0110,字符不动,光标自动右移一格。命令 3Delay(1 > 。Wcmd(0x0e>。/ 0000 1110,开显示,有光标,字符不闪烁Delay(1 > 。/0x0c=0000 110
29、0,开显示,无光标,字符不闪烁void ShowString(unsigned char x,unsigned char y> unsigned char i = 0。if(y = 1>Wcmd(0x80 | x>。命令8要求最高位为“ 1,”第一行的第x位置开始写 if(strlen(Prompt>>16>for(i=0。 i<16。 i+>/一行显示16个字符Wdat(Prompti>。elsefor(i=0。 i<strlen(Prompt>。 i+>/一行显示 16个字符Wdat(Prompti>。if(y
30、= 2>Wcmd(0xc0 | x>。0x80+0x40=0xc0,从第二行的第x位置开始写 if(strlen(Prompt>>31> for(i=16。 i<32。 i+>/一行显示16个字符Wdat(Prompti>。elsefor(i=16。 i<strlen(Prompt>。 i+> Wdat(Prompti>。void Wcmd(unsigned char cmd> /写命令函数 while(Busy_Check(>&0x80>=0x80> 。RS = 0。RW = 0。/写命令
31、,RS=0; RW=0EN = 1 。P0 = cmd。Delay(1>。EN = 0。/ EN由高电平到低电平跳变,液晶模块执行命令void Wdat(unsigned char dat> /写数据函数while(Busy_Check(>&0x80>=0x80> 。RS = 1。RW = 0。 /写数据 ,RS=1;RW=0EN = 1。P0 = dat。Delay(1> 。EN = 0。/ EN由高电平到低电平跳变,液晶模块执行命令unsigned char Busy_Check(>/检查是否忙unsigned char LCD_Statu
32、s。RS = 0。RW = 1。 /读忙状态 ,RS=0; RW=1EN = 1。LCD_Status = P0。Delay(1> 。EN = 0。/ EN由高电平到低电平跳变,液晶模块执行命令return LCD_Status。void main(>/ 主函数Init_LCD(> 。ShowString(0,1>。(x,y>,x开始写的列(从015>, y=1,显示在第1行 if(strlen(Prompt>>16>ShowString(0,2>。(x,y>,x开始写的列,y=2在第2行while(1>。【例题扩展1】用
33、LCD1602来显示ADC0809的转换结果LCD1LW6L#include <reg51.h>【已经通过 CAP8-LCD-0809 】 #include <string.h>sbit RS=P2A0osbit RW=P2A1。sbit E=P2A2osbit ADDC=P1A6。sbit ADDB=P1A5。sbit ADDA=P1A4。un sig ned char LCD_Statusun sig ned char num="0123456789"。un sig ned char mes="The Value is:Osbit OE
34、 = P1A0 0sbit EOC = P1A1 osbit START = PM2。sbit CLK = P1A3ovoid delay (un sig ned int countun sig ned char iwhile(cou nt-> for(i=0 o i<120。i+>。un sig ned char Busy_Check(> 检查忙函数 RS=0oRW=1oE=1odelay(2>。E=0。 return LCD_Status。void wcmd(unsigned char cmd> while(Busy_Check(> & 0x80>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地源热泵施工劳动力计划
- 高效团队合作策略研讨会策划案
- 9《从军行》教学设计-2023-2024学年五年级下册语文统编版
- 2024-2025学年新教材高中生物 第一章 走近细胞 第1节 细胞是生命活动的基本单位(1)教学实录 新人教版必修1
- 三农信息服务平台实施方案
- 本科毕业论文完整范文(满足查重要求)论民间文学(文艺)作品的法律保护
- 延续性护理干预在肺癌化疗患者中的应用效果观察
- 本科毕业论文完整范文(满足查重要求)比较各国小学教师的资格制度
- 8 同学相伴 教学设计-2024-2025学年道德与法治三年级上册统编版
- 三农集体经济发展策略研究
- 《中国最美的地方》课件
- 《中国糖尿病防治指南(2024版)》更新要点解读
- 新产品需求评估申请表
- 专题14 欧姆定律及其应用(4大模块知识清单+4个易混易错+5种方法技巧+典例真题解析)
- 《品质文化》课件
- 2024年度餐饮企业节能改造工程合同
- 2024年10月自考15040习概试题及答案含评分参考
- TSGD7002-2023-压力管道元件型式试验规则
- 赛事运营创新模式
- 新生儿科、儿科《新生儿窒息复苏》理论考试试题
- 信息检索课件 第2章 文献检索方法(1)-2
评论
0/150
提交评论