LCD显示器原理及应用.ppt_第1页
LCD显示器原理及应用.ppt_第2页
LCD显示器原理及应用.ppt_第3页
LCD显示器原理及应用.ppt_第4页
LCD显示器原理及应用.ppt_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章LCD显示器原理及应用 液晶显示器 LCD 具有体积小 重量轻 功耗低 可以显示图形图像 便于用集成电路直接驱动 易于实现全彩色等特点 因此在仪器仪表 便携工具 监控系统及消费电子等领域有着广泛的应用 液晶显示器分为段式 字符式 点阵式等 段式只能显示固定的一些符号或字符 价格低廉 字符式可以显示数字和字符 驱动方便 但无法显示汉字 点阵式可以显示汉字 但价格较高 汉字液晶显示器又分为带字库和不带字库的两种 9 1液晶显示模块的原理 图9 1是字符型液晶显示器 不能显示汉字 原理 字框中显示了字码ABC 我们现在看到的图形和实际见到的有些相似 但是有很大的差别 这些字码的显示是通过在方格中依次连接所得 拼凑成一个个字符 液晶显示屏的原理和数码管的相同 即这些方格在这里的作用相当于一个个LED灯相互拥簇在一起 在这里可以称方格为 数码管 通过控制 数码管 的通断就可以显示出不同的字符或数字 每个字符占据8个方格的宽度 11个方格的高度 即11行8列 但并不是显示一个字符一定要用11行8列 也可以是7行5列等 当然 数字液晶屏不能够显示汉字 因为所占据的位数不同 图9 1字符液晶显示器原理 汉字液晶屏的显示原理也是如此 如图9 2的 大 字所示 大部分汉字液晶屏的驱动芯片是与液晶屏集成在一起的 统称为液晶模块 无须外加驱动 但不同的驱动芯片 其驱动方式和程序也不同 所以在使用液晶模块之前首先要了解其驱动模式 通常汉字显示屏要比数字显示屏占据的空间大 每个汉字的显示由16行16列组成 以汉字液晶显示器为例 描述一个汉字的点阵数据需要32个字节 因为一个字节占8个位 所以一个位正好描述液晶屏上一个点是否点亮 例如 假设 1 表示某个点是亮的 0 表示某个点是不亮的 那么下图中 大 字的第一行可以用二进制表示为 0000 0001 0000 0000 即0 x01和0 x00两个字节 同理 可以推出 大 字其他行的二进制表示 明显 如果显示一个汉字 则需要用32个字节的数据来描述 汉字液晶又分为点阵型和字库型 点阵型既可以显示汉字 又可以显示图形 而字库型只能显示汉字及字符 无法显示图形 但驱动方便 液晶屏的大小也有很大差异 典型的汉字液晶一般有12232 12864 19264和240128等 在实际应用中 要根据所要显示的内容 成本及信息的多少来选择液晶显示器 图9 2汉字液晶屏显示原理 9 2字符型液晶显示器RT1602C 字符型液晶显示器是一种用5 7点阵图形来显示字符的液晶显示器 根据显示的容量可以分为1行16个字 2行16个字 2行20个字等 最常用的为2行16个字 RT1602C液晶模块就属于此类型 9 1液晶显示器模块的原理 一 字符型液晶显示模块RT 1602C的外观与引脚 显示容量 16 2个字符 工作电流2 0mA 5 0V 字符尺寸 2 95 4 35mm RT 1602C采用标准的16脚接口 各引脚情况如下 第1脚 VSS为电源地第2脚 VDD为 5V电源第3脚 VL为液晶显示偏压信号第4脚 RS为数据 命令选择端 高电平时选择数据寄存器 低电平时选择指令寄存器 第5脚 为读 写选择端 高电平时进行读操作 低电平时进行写操作 当RS和共同为低电平时可以写入指令 或者显示地址 当RS为低电平 为高电平时可以读忙信号 当RS为高电平 为低电平时可以写入数据 第6脚 E端为使能端 当E端由高电平跳变成低电平时 负跳变 液晶模块执行命令 第7 14脚 D0 D7 为8位双向数据总线 与单片机的数据总线相连 三态 第15脚 BLA 背光电源 通常为 5V 并联一个电位器 调节背光亮度 第16脚 BLK 背光电源地 二 字符型液晶显示模块RT 1602C的内部结构液晶显示模块RT C1602C的内部结构可以分成三部分 一为LCD控制器 二为LCD驱动器 三为LCD显示装置 如图所示 控制器采用HD44780 驱动器采用HD44100 HD44780是集控制器 驱动器于一体 专用于字符显示控制驱动集成电路 HD44100是作扩展显示字符位的 HD44780是字符型液晶显示控制器的代表电路 HD44780集成电路的特点 1 可选择5 7或5 10点字符 2 HD44780不仅作为控制器而且还具有驱动40 16点阵液晶像素的能力 并且HD44780的驱动能力可通过外接驱动器扩展360列驱动 HD44780可控制的字符高达每行80个字 也就是5X80 400点 HD44780内藏有16路行驱动器和40路列驱动器 所以HD44780本身就具驱动有16 40点阵LCD的能力 即单行16个字符或两行8个字符 如果在外部加一HD44100外扩展多40路 列驱动 则可驱动16 2LCD 3 HD44780的显示缓冲区DDRAM 字符发生存储器 ROM 及用户自定义的字符发生器CGRAM全部内藏在芯片内 HD44780有80个字节的显示缓冲区 分两行 地址分别为00H 27H 40H 67H 它下实际显示位置的排列顺序跟LCD的型号有关 液晶显示模块RT 1602C的显示地址与实际显示位置的关系如图所示 4 HD44780具有8位数据和4位数据传输两种方式 可与4 8位CPU相连 5 HD44780具有简单而功能较强的指令集 可实现字符移动 闪烁等显示功能 HD44780内部的字符发生存储器 ROM 已经存储了160个不同的点阵字符图形 如图所示 这些字符有 阿拉伯数字 英文字母的大小写 常用的符号 和日文假名等 每一个字符都有一个固定的代码 比如数字 1 的代码是00110001B 31H 又如大写的英文字母 A 的代码是01000001B 41H 可以看出英文字母的代码与ASCII编码相同 要显示 1 时 只需将ASCII码31H存入DDRAM指定位置 显示模块将在相应的位置把数字 1 的点阵字符图形显示出来 就可以看到数字 1 三 指令格式与指令功能LCD控制器HD44780内有多个寄存器 通过RS和R W引脚共同决定选择哪一个寄存器 选择情况如表 总共有11条指令 它们的格式和功能如下 RS和引脚上的电平决定对寄存器的选择和读 写 DB7 DB0决定命令功能 9 2 3RT1602C与单片机接口及程序 图9 3是RT1602C与单片机接口的具体连接方式 RT1602C液晶连接插槽位JP4 在使用液晶时 在第三引脚连接了一个10K的电位器用来调整对比度 若程序运行后液晶无显示 则可调整此电位器 图9 31602与单片机接口 1602液晶模块的驱动程序编制如下 功能为 用定时器实现一个时钟 并用1602液晶模块显示时间及提示信息 从中读者可以体会液晶驱动程序的编制方法 include defineucharunsignedchar defineuintunsignedintsbitrs P3 6 定义寄存器选择位sbitrw P3 7 定义读写控制线sbitep P2 7 定义使能端codeucharmayuan 0 1 2 3 4 5 6 7 8 9 codeucharaa Thetotaltimesis uchari hour minute second k 0 voidputchar ucharweizhi ucharda 显示一个字符的函数voiddelay uchar 延时函数voidlcd wcmd uchar 写入指令数据到LCDbitlcd bz void 测试LCD忙碌状态 voidlcd pos uchar 设定显示位置voidlcd wdat uchar 写入字符显示数据到LCDvoiddisplay uchar uchar 显示一个字符串的函数voidlcd init void 液晶初始化函数voidshowtime uchar uchar uchar 显示时间函数voidtime init void 定时时间初始化函数main delay 10 lcd init 初始化LCDtime init 定时器初始化display 0 x00 aa 第一行显示 Thetotaltimesis while 1 if k second 控制每一秒显示一次 k second showtime hour minute second voiddelay ucharms 延时子程序 uchari while ms for i 0 i 250 i bitlcd bz 测试LCD忙碌状态 bitresult rs 0 rw 1 ep 1 result bit P0 ep 0 returnresult voidlcd wcmd ucharcmd 写入指令数据到LCD while lcd bz 等待液晶空闲rs 0 rw 0 ep 0 P0 cmd ep 1 ep 0 voidlcd pos ucharpos 设定显示位置 lcd wcmd pos 0 x80 voidlcd wdat uchardat 写入字符显示数据到LCD while lcd bz 等待液晶空闲 rs 1 rw 0 ep 0 P0 dat ep 1 ep 0 voidlcd init LCD初始化设定 lcd wcmd 0 x38 功能设置 4位总线 双行显示 5x7的点阵字符 参指令6 delay 1 lcd wcmd 0 x01 清除LCD的显示内容 参指令1 delay 1 lcd wcmd 0 x06 入口模式设置 光标右移 文字不移 参指令3 delay 1 lcd wcmd 0 x0c 入口模式设置 开显示 无光标 光标不闪烁 参指令4 delay 1 以下是在LCD上显示数组数据的函数 先写显示地址 后写显示数据 其中pos为写入的位置 q指向要写入的数据所在的数组 voiddisplay ucharpos uchar q uchari lcd pos pos for i 0 i 16 i lcd wdat q q voidputchar ucharweizhi ucharda 在weizhi处显示字符da delay 1 lcd pos weizhi lcd wdat da voidshowtime ucharh ucharm uchars 显示时间 h 小时 m 分 s 秒 putchar 0 x40 mayuan h 10 在位置0 x40显示小时的高位putchar 0 x41 mayuan h 10 在位置0 x41显示小时的低位putchar 0 x42 在位置0 x42显示 putchar 0 x43 mayuan m 10 在位置0 x43显示分的高位putchar 0 x44 mayuan m 10 在位置0 x44显示分的低位putchar 0 x45 在位置0 x45显示 putchar 0 x46 mayuan s 10 在位置0 x46显示秒的高位putchar 0 x47 mayuan s 10 在位置0 x47显示秒的低位 voidtime init void 定时器初始化函数 i 0 hour 12 minute 34 second 56 时间初值为12时34分56秒TMOD 0 x01 TL0 0 xb0 赋初值 定时50ms TH0 0 x3c TR0 1 启动定时器EA 1 ET0 1 相关开中断 voidtime0 interrupt1using2 定时器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 2LCD显示器与单片机的接口与应用 下图是LCD显示器与8051单片机的接口图 图中RT 1602C的数据线与8051的P1口相连 RS与8051的P2 0相连 与8051的P2 1相连 E端与8051的P2 2相连 编程在LCD显示器的第一行 第一列开始显示 GOOD 第二行 第6列开始显示 BYE includesbitRS P2 0 sbitRW P2 1 sbitE P2 2 voiddelay void voidinit void voidwcmd unsignedchar voidwdat unsignedchar voidfbusy void voidmain 主函数 SP 0 x50 init wcmd 0 x80 写入显示缓冲区起始地址为第1行第1列wdta 0 x44 第1行第1列显示字母 G wdat 0 x4f 第1行第2列显示字母 O wdat 0 x4f 第1行第3列显示字母 O wdat 0 x47 第1行第4列显示字母 D 80H 45H C5H wcmd 0 xc5 写入显示缓冲区起始地址为第2行第6列wdat 0 x42 第2行第6列显示字母 B wdat 0 x59 第2行第7列显示字母 Y wdat 0 x45 第2行第8列显示字母 E while 1 voidinit 初始化函数 主要写命令 wcmd 0 x01 01H 00000001 清屏wcmd 0 x38 38H 00111000 使用8位 显示两行 用5 7的字型wcmd 0 x0e 0eH 00001110 显示器开 光标开 字符不闪烁wcmd 0 x06 06H 00000110 字符不动 光标自动右移一格 voidfbusy 检查忙函数 RS 0 RW 1 RS 0 RW 1 读忙信号E 1 E 0 E端由高电平到低电平跳变 液晶模块执行命令while P1 0 x80 如果忙 则等待 参见忙指令格式delay 延时大约2ms 由于LCD是一慢速显示器件 所以在执行每条指令之前一定要确认LCD的忙标志为0 即非忙状态 否则该命令将失效 voidwcmd unsignedcharcmd 写命令函数 RS 0 RW 0 fbusy 写命令前 先检查设备是否忙 E 0 RS 0 RW 0 指令寄存器写入E 1 E由高电平到低电平跳变 液晶模块执行命令P1 cmd 命令由P1口送入LCDE 0 delay voidwdat unsignedchardat 写数据函数 RS 1 RW 0 fbusy 写数据前 先检查设备是否忙 E 0 RS 1 RW 0 E 1 E由高电平到低电平跳变 液晶模块执行命令P1 dat 数据由P1口送入LCDE 0 delay 延时大约2ms voiddelay 延时函数 unsignedchary for y 0 y 255 y 大约2ms多一点 include include defineucharunsignedchar defineuintunsignedintsbitRS P2 0 sbitRW P2 1 sbitEN P2 2 voidDelayms uintms 延时 ms 毫秒 unsignedchari while ms for i 0 i 120 i ucharBusy Check unsignedcharLCD Status RS 0 RW 1 读忙状态 RS 0 RW 1EN 1 Delayms 1 延时1msLCD Status P0 EN 0 EN由高电平到低电平跳变 液晶模块执行命令returnLCD Status voidWrite LCD Command ucharcmd while Busy Check voidWrite LCD Data uchardat while Busy Check Write LCD Command 0 x06 00000110 字符不动 光标自动右移一格Delayms 1 Write LCD Command 0 x0c 00001100 开显示 无光标 字符不闪烁Delayms 1 voidShowString ucharx uchary uchar str uchari 0 if y 0 Write LCD Command 0 x80 x if y 1 Write LCD Command 0 xc0 x for i 0 i 16 i Write LCD Data str i writer shopping w include include defineucharunsignedchar defineuintunsignedintvoidInitialize LCD voidShowString uchar uchar uchar sbitK1 P3 0 sbitK2 P3 1 sbitK3 P3 2 ucharcodePrompt PRESSK1 K4TOSTARTDEMOPROG ucharconstLine Count 6 ucharcodeMsg 80 ManyCADusersdismiss processofcreatingPCB ofview withPCBlayout placementandtrackrouting canoftenbethemosttime Andifyouusecircuitsimulation youaregoingtospendevenmore ucharDisp Buffer 32 voidDelayxms uintms uchari while ms for i 0 i 120 i voidV Scroll Display uchari j k 0 uchar p Msg 0 uchar q Msg Line Count strlen Msg Line Count while pLine Count break p Msg k Disp Buffer i p for j i j 16 j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论