单片机与液晶显 示器.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
讲座四 1.多位LED显示 2.键盘管理模块 3.点阵、字符液晶显示器 4.字模提取软件 LED的工作原理 LED数码管和单片机的连接1 LED数码管和单片机的连接2 静态、动态显示方式总结 静态显示连接 所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口。 原理简单;显示无闪烁;占用I/O资源较多。 动态显示连接 所有LED的段选线共同连接在一起共用一个 8位I/O口 而每个LED的位选分别由一根相应的I/O口线控制。 因此必须采用动态扫描显示方式。 例:74ls164+led(proteus) 独立键盘 矩阵式键盘控制 测控系统中必不可少的组成——人机界面 液晶显示器的原理 字符型液晶(1602) 方法:通过向指定显示位置对应的DDRAM中写数据来显示字符。 例如:在第2行第2列显示字符 ‘a’,查表1 可知a对应的代码0x31,则可向地址0x41中写入数据0x31即可显示。 点阵型液晶(12864) 图3 12864的DDRAM地址 图片在12864上的显示 简单来说,主要分为两步: 1)将一幅图片转化为一系列二进制数据 2)将数据按字节(8位)写入液晶对应的DDRAM 由图3可知,12864的DDRAM有128*8=1024个 地址,只需将图片转化的数据按字节写入这其 对应的DDRAM地址即可。 字符在12864上的显示 上图中,汉字为16*16点阵,ASCII码为8*16点阵,同图片一样,一个汉字(ASCII)由16*2(8*2)个字节数据组成,字符显示原理与图片一致,只需将字符代码写入相应DDRAM地址。字体大小可以根据需要改变。 小结 简而言之,无论是字符型还是点阵型LCD,其基本原理都是通过将数据写入所对应的DDRAM地址中来显示所需要的图形或是字符。 12864点阵型液晶对应的DDRAM有1024个地址,当需显示的字符或图片已转为二进制数据时,确定将数据写入对应的DDRAM地址就是你所要做的工作! 单片机与液晶显示器的硬件连接 液晶显示器(12864)主要包含了以下接口(图6) : 1)使能E(51的RD和WR经或非门接LCD的使能E) 2)片选CS1(左半屏)、CS2(右半屏),见图3 3)命令/数据选择RS(0——命令,1——数据) 4)读/写选择R/W(0——写,1——读) 5)数据总线DB0~DB7 6)负压产生和负压输入(对比度)调整 7)复位RST 8)电源与地和背景光电源 软件编程 注意:程序的编写与硬件是分不开的。以图6为例,A11~A8对应CS2、CS1、R/W、RS,未用的地址线为高。见图5 则当向12864的左半屏(CS1=1,CS2=0)写(R/W=0)数据(RS=1)时,总线地址为0x1111010111111111。即0xF5FF。 C文件中定义如下:#define WD1 XBYTE[0xF5FF] 定义了总线地址后,对外部地址的操作变得非常简单。 如向左半屏写数据0xFF : WD1=0xFF 读左半屏数据 : data=RD1(data存储读取到的数据) 举例 下面简单介绍程序编写的流程 1)定义所有总线地址 #define WI1 XBYTE[0xF4FF] //向左半屏写命令 #define WD1 XBYTE[0xF5FF] //向左半屏写数据 #define RI1 XBYTE[0xF6FF] //读左半屏命令 #define RD1 XBYTE[0xF7FF] //读左半屏数据 #define WI2 XBYTE[0xF8FF] //向右半屏写命令 #define WD2 XBYTE[0xF9FF] //向右半屏写数据 #define RI2 XBYTE[0xFAFF] //读右半屏命令 #define RD2 XBYTE[0xFBFF] //读右半屏数据 2)编写底层程序(查忙,写数据,读数据) 查忙(读BF标志即DB7总线,亦即读命令) BF=1表示模块在内部操作,此时模块不接受外部指令和数据; BF=0时模块为准备状态,随时可接受外部指令和数据; b=RI1 或者 b=RI2,观察b中最高位是否为0,否则忙。 写数据a WD1=a 或者 WD2=a 读数据到data data=RD1 或者 data=RD2 注意:无论是写数据还是读数据一定要先查忙(对左右半屏读命令),只有在BF=0时才能对LCD进行操作 3)LCD初始化 包含开显示(0x3F),起始行(0xC0),设置起始页地址(0xB8)和Y地址(0x40),即分别向LCD的左右半

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档