欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    第9章 LCD显示器原理及应用2(1).docx

    • 资源ID:2034198       资源大小:447.59KB        全文页数:18页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9章 LCD显示器原理及应用2(1).docx

    第九章 LCD显示器原理及应用9.1 液晶显示器模块的原理一字符型液晶显示模块RT-1602C的外观与引脚显示容量:16×2个字符;工作电流2.0mA(5.0V);字符尺寸:2.95×4.35mm。RT-1602C采用标准的16脚接口,各引脚情况如下:第1脚:VSS为电源地;第2脚:VDD为+5V电源;第3脚:VL为液晶显示对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时,会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为数据/命令选择端,高电平时选择数据寄存器、低电平时选择命令寄存器。RS:Register Selection第5脚:,读写操作选择(1读,0写)。RS寄存器及操作00指令寄存器写入01忙信号和地址计数器读出10数据寄存器写入11数据寄存器读出第6脚:E端为使能端,当E端由高电平跳变成低电平时(负跳变),液晶模块执行命令。第714脚:D0D7,为8位双向数据总线,与单片机的数据总线相连,三态。第15脚:BLA,背光电源,通常为5V,并联一个电位器,调节背光亮度。第16脚:BLK,背光电源地。二字符型液晶显示模块RT-1602C的内部结构液晶显示模块RT-C1602C的内部结构可以分成三部分:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图所示:控制器采用HD44780,驱动器采用HD44100。HD44780是字符型液晶显示控制器的代表电路。HD44780集成电路的特点:1、可选择5×7或5×10点字符。2、3、HD44780的显示缓冲区DDRAM、字符发生存储器(ROM)及用户自定义的字符发生器CGRAM全部集成在芯片内。HD44780有80个字节的显示缓冲区,分两行,地址为:第一行为00H27H;(039 40)第二行为40H67H。(64103 40)显示位置的排列顺序跟LCD的型号有关,RT-1602C液晶显示模块的显示地址与实际显示位置的关系如下图所示。【27H2×1673940H4×166467H6×1679671031036439】4、HD44780具有8位数据和4位数据传输两种方式,可与4/8位CPU相连。【采用8位CPU时,应该采用8位数据传输方式,在51中,用8位方式】5、HD44780具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能。HD44780内部的字符发生存储器(ROM)已经存储了160个不同的点阵字符图形,如图所示:这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码。比如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”的代码是01000001B(41H),【上面的数字在前,左边的数字在后】可以看出英文字母的代码与ASCII编码相同。要显示“1”时,只需将ASCII码31H存入DDRAM指定位置,显示模块将在相应的位置把数字“1”的点阵字符图形显示出来,就可以看到数字“1”。三指令格式与指令功能LCD控制器HD44780内有多个寄存器,通过RS和引脚上的电平决定对(命令和数据)寄存器的选择和读/写,DB7DB0决定命令功能。选择情况如表:RS寄存器及操作00指令寄存器写入01忙标志和地址计数器读出10数据寄存器写入11数据寄存器读出总共有11条指令,它们的格式和功能如下:上图中红色“1”代表每一个指令的特征。1. 清屏命令格式【指令寄存器写入,指令码0X01】RSD7D6D5D4D3D2D1D00000000001功能:清除屏幕,将显示缓冲区DDRAM的内容全部写入空格(ASCII 20H)。光标复位,回到显示器的左上角(光标复位到地址00H位置)。并给地址计数器AC清零。【数据指针清零,所有显示清零】2光标复位命令格式【指令寄存器写入】RSD7D6D5D4D3D2D1D0000000001×功能:光标返回到地址00H位置。【数据指针清零】3输入方式设置命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D000000001I/DS功能:设定光标的移动方向,并指定整体显示是否移动。其中:I/D光标移动方向:当I /D1,光标从左向右移动;当读或写一个字符后,地址指针加1,且光标加1。当I/D0,光标从右向左移动;当读或写一个字符后,地址指针减1,且光标减1 S屏幕上所有文字是否左移或者右移:当S1时,写入一个字符,整屏显示左移(I/D1)或右移(I/D0),以得到光标不移动而屏幕移动的效果;当S0时,写入一个字符,整屏显示不移动。4显示开关控制命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D00000001DCB显示控制开关。其中: D位控制整体显示的开与关,D1,开显示;D0,关显示。C位控制光标的开与关,C1,有光标;C0,无光标。 B位控制光标字符闪烁,B1,字符闪烁;B0,字符不闪烁。例如:RS0,RW0,OCH0000 1100表示:D1开显示,C0无光标,B0字符不闪例如:RS0,RW0,OEH0000 1100表示:D1开显示,C1有光标,B0字符不闪5光标或显示移位置命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D0000001S/CR/L××功能:移动光标或整体显示,DDRAM中内容不变。其中:S/C1时,移位显示的文字;S/C=0时,移动光标。 R/L1时,向右移位;R/L0时,向左移位。6功能设置命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D000001DLNF××DL位设置接口数据位数,DL1为8位数据接口;DL0为4位数据接口。【MCS-51为8位,所以应该用8位方式】【和教材上的不一样】N位设置显示行数,N0,单行显示;N1双行显示。F位设置字型大小,F1时为5×10点阵字符,F0时为5×7点阵字符。例如:0011 1000表示:设置8位数据接口,16×2(2行显示),5×7点阵字符7设置字库CGRAM地址命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D00001AAAAAA 功能:设置CGRAM的地址,地址范围063。【字符发生器RAM地址设置。】8显示缓冲区DDRAM地址设置命令格式:【指令寄存器写入】RSD7D6D5D4D3D2D1D0001AAAAAAA 功能: DDRAM地址设置,地址范围为0127。【控制器内设有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM,80H地址码(027H,40H67H)】9读忙标志BF及光标地址AC命令格式:【指令寄存器,忙标志读出】RSD7D6D5D4D3D2D1D001BFAC功能:BF(Busy Flag)位为忙标志。BF1,表示忙,LCM不能接收命令和数据;BF0,表示LCM不忙,可以接收命令和数据。AC位为地址计数器的值,范围为0127。【007FH】10写DDRAM或CGRAM命令格式:【数据寄存器写入】RSD7D6D5D4D3D2D1D010DATA功能:将数据写入CGRAM或DDRAM中,应与CGRAM或DDRAM地址设置命令结合使用。11读DDRAM或CGRAM命令格式:【数据寄存器读出】RSD7D6D5D4D3D2D1D011DATA 功能:从CGRAM或DDRAM中读出数据,应与CGRAM或DDRAM地址设置命令结合使用。液晶显示模块是一个慢显示器件,如果在执行每条指令之前,一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。所以在写入命令或数据时,要先查询液晶显示模块是否忙。显示字符时首先要输入显示字符地址,也就是告诉模块在什么位置显示字符,表9-2是TC1602EL液晶模块的内部显示位与DDRAM地址的对应关系。表92 显示位与DDRAM地址的对应关系四LCD显示器的初始化LCD使用之前须对它进行初始化,初始化可通过复位完成,也可在复位后完成,初始化过程如下:1清屏;2功能设置;(一般有多条语句)3开/关显示设置;4输入方式设置。9.1.2 LCD显示器与单片机的接口与应用下图是LCD显示器与8051单片机的接口连接图,图中RT-1602C的数据线与8051的P1口相连,RS与8051的P2.0相连,与8051的P2.1相连,E端与8051的P2.2相连。编程在LCD显示器的第一行、第一列开始显示“GOOD”,第二行、第6列开始显示“BYE”。【已通过chap91】#include <reg51.h> sbit RS=P20;sbit RW=P21;sbit E=P22;unsigned char LCD_Status;void delay(unsigned int);void init(void);void wcmd(unsigned char);void wdat(unsigned char);unsigned char Busy_Check(void); void main( ) /主函数init( );wcmd(0x80); /写入显示缓冲区起始地址为第1行第1列wdta(G); /第1行第1列显示字母“G”wdat(O); /第1行第2列显示字母“O”wdat(O); /第1行第3列显示字母“O”wdat(D); /第1行第4列显示字母“D”/【80H45HC5H】wcmd(0xc5); /写入显示缓冲区起始地址为第2行第6列wdat (B); /第2行第6列显示字母“B”wdat (Y); /第2行第7列显示字母“Y”wdat (E); /第2行第8列显示字母“E”while(1);void init() / 初始化函数,主要写命令wcmd(0x01); /01H=0000 0001,清屏wcmd(0x38); /38H=0011 1000,使用8位,显示两行,用5*7的字型wcmd(0x0e); /0eH0000 1110,开显示,有光标,字符不闪烁wcmd(0x06); /06H0000 0110,字符不动,光标自动右移一格RS寄存器及操作00指令寄存器写入01忙信号和地址计数器读出10数据寄存器写入11数据寄存器读出由于LCD是一慢速显示器件,所以在执行每条指令之前一定要确认LCD的忙标志为0,即非忙状态,否则该命令将失效。unsigned char Busy_Check() /检查忙函数 unsigned char LCD_Status;RS = 0; RW = 1;E = 1;delay(20); LCD_Status = P0;delay(20);E = 0;return LCD_Status;void wcmd(unsigned char cmd) /写命令函数, RS=0;RW=0 /while(Busy_Check() & 0x80 = 0x80); / 写命令前,先检查设备是否忙?RS=0;RW=0; / 指令寄存器写入E=1; / E由高电平到低电平跳变,液晶模块执行命令P0=cmd; / 命令由P0口送入LCDE=0;delay(20);void wdat(unsigned char dat) /写数据函数, RS=1;RW=0/while(Busy_Check() & 0x80 = 0x80); / 写数据前,先检查设备是否忙?RS=1;RW=0; E=1; / E由高电平到低电平跳变,液晶模块执行命令P0=dat; / 数据由P1口送入LCDdelay( 20); / 延时大约2msE=0;void delay(unsigned int ms) unsigned char i; while(ms-) for(i=0; i<120; i+);【已通过chap92】#include <reg51.h>#include <string.h> / strlen函数的原型在string.h中void Init_LCD();void ShowString(unsigned char,unsigned char);void Wcmd(unsigned char);void Wdat(unsigned char);void Delay(unsigned int);unsigned char Busy_Check();unsigned char Prompt="1234567890abcdefghijklmnopqrstuvwxyz" sbit RS = P20;sbit RW = P21;sbit EN = P22;void Delay(unsigned int ms) / /延时函数 unsigned char i;while(ms-) for(i=0;i<120;i+);void Init_LCD() / 初始化LCD Wcmd(0x38); / 0011 1000, 8位,2行显示,用5×7点阵字符Delay(1);Wcmd(0x01); /0000 0001,清屏Delay(1);Wcmd(0x06); / 0000 0110,字符不动,光标自动右移一格。命令3Delay(1);Wcmd(0x0e); / 0000 1110,开显示,有光标,字符不闪烁Delay(1); /0x0c=0000 1100,开显示,无光标,字符不闪烁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);else for(i=0;i<strlen(Prompt);i+)/一行显示16个字符 Wdat(Prompti); if(y = = 2) Wcmd(0xc0 | x); /0x80+0x40=0xc0,从第二行的第x位置开始写if(strlen(Prompt>31) for(i=16;i<32;i+)/一行显示16个字符 Wdat(Prompti);else for(i=16;i<strlen(Prompt);i+) for(i=strlen(Prompt);i<32;i+) Prompti=' ' /第2行不满的部分,填充空格,否则为乱码 Wdat(Prompti); void Wcmd(unsigned char cmd) / 写命令函数 while(Busy_Check()&0x80)=0x80);RS = 0; RW = 0; /写命令, 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_Status;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);【变化的情况】void Init_LCD() / 初始化LCD Wcmd(0x38); / 0011 1000, 8位,2行显示,用5×7点阵字符Delay(1);Wcmd(0x01); /0000 0001,清屏Delay(1);Wcmd(0x06); / 0000 0110,字符不动,光标自动右移一格。命令3Delay(1);Wcmd(0x0f); /0x0f=0000 1111,开显示,有光标,字符闪烁(1)Delay(1); /0x0d=0000 1101,开显示,无光标,字符闪烁(2)【chap3】unsigned char word116=" This programm "/第1行显示缓存unsigned char word216=" by LiXueli "/第2行显示缓存code unsigned char word316="!"/用于固定显示的数据,固code unsigned char word416="bitclxl!"/用于固定显示的数据,固code unsigned char word516=" Wellcome To "/用于固定显示的数据,固code unsigned char word616=" Proteus Tools!"/用于固定显示的数据,固化到ROM中#include <reg51.h>#include <absacc.h>#define REG0 XBYTE0x0000/LCD写指令寄存器的地址,可根据配置修改#define REG1 XBYTE0x0001/LCD读出数据到D0D7的地址,可根据配置修改#define REG2 XBYTE0x0002/LCD写数据寄存器的地址,可根据配置修改#define REG3 XBYTE0x0003/LCD读数据寄存器的地址,可根据配置修改unsigned char bdata busyflag;unsigned char dat,datn;unsigned char word116=" This programm "/第1行显示缓存unsigned char word216=" by LiXueli "/第2行显示缓存code unsigned char word316="!"/用于固定显示的数据,固化到ROM中code unsigned char word416="bitclxl!"/用于固定显示的数据,固化到ROM中code unsigned char word516=" Wellcome To "/用于固定显示的数据,固化到ROM中code unsigned char word616=" Proteus Tools!"/用于固定显示的数据,固化到ROM中sbit busyflag_7=busyflag7;sbit p10=P10;sbit p11=P11;sbit p12=P12;void busy()/查询LCD是否忙碌子程序dobusyflag=REG1;while(busyflag_7);void wrc(unsigned char wcon)/写控制指令子程序busy();REG0=wcon;void wrd(unsigned char wdat)/写数据寄存器子程序busy();REG2=wdat;void rdd()/读数据寄存器子程序busy();dat=REG3;void lcdint()/LCD初始化子程序wrc(0x38);wrc(0x01);wrc(0x06);wrc(0x0c);void wrn(unsigned char word)/连续写n个字符数据到LCD的数据寄存器中unsigned char i;for(i=0;i<16;i+)wrd(wordi);void main()lcdint();/初始化wrc(0x80);/显示第1行的第1个字符wrn(word1);wrc(0xc0);/显示第2行的第1个字符wrn(word2); while(1) if(p10=0) /判断P1.0是否按下,并显示数据wrc(0x80);wrn(word1);wrc(0xc0);wrn(word2);if(p11=0)/判断P1.1是否按下,并显示数据wrc(0x80);wrn(word3);wrc(0xc0);wrn(word4);if(p12=0)/判断P1.2是否按下,并显示数据wrc(0x80);wrn(word5);wrc(0xc0);wrn(word6);

    注意事项

    本文(第9章 LCD显示器原理及应用2(1).docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开