第10章AT89C51单片机与键盘显示器等的接口设计.ppt_第1页
第10章AT89C51单片机与键盘显示器等的接口设计.ppt_第2页
第10章AT89C51单片机与键盘显示器等的接口设计.ppt_第3页
第10章AT89C51单片机与键盘显示器等的接口设计.ppt_第4页
第10章AT89C51单片机与键盘显示器等的接口设计.ppt_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

单片机与键盘 显示器 拨盘 打印机接口设计 与LED的接口与键盘的接口与LCD的接口与打印机的接口与BCD码拨盘的接口 例 要求用一个LED数码显示器循环显示0 9这10个数字 每个数字显示1s 硬件电路 由P1 0 P1 6驱动共阳七段LED数码管 显示的字形由P1口送出的数码决定 每个数字显示1s由软件延时 一 LED 七段LED显示器 数码管 系发光器件的一种 常用的LED发光器件有两类 数码管和点阵 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成 根据各管的亮暗组合成字符 根据内部发光二极管的接线形式可分为共阴极和共阳极两种 使用时 共阴极数码管公共端接地 共阳极数码管公共端接电源 每段发光二极管需5 10mA的驱动电流才能正常发光 一般需加限流电阻控制电流的大小 1 LED显示器的结构 LED数码管的a g七个发光二极管 不同亮暗的组合就能形成不同的字型 这种组合称为字型码 共阳极和共阴极的字型码是不同的 可采用硬件译码输出字型码控制显示内容 如采用74LS48 CD4511 共阴极 或74LS46 74LS47 CD4513 共阳极 也可用单片机I O口直接输出字型码控制数码管的显示内容 2 LED数码显示器的显示段码 注 N个LED显示块有N位位选线和8 N根段码线 图是4位LED显示器的结构原理图 段码线控制显示的字型 位选线控制该显示位的亮或暗 3 LED显示器工作原理 静态显示和动态显示两种显示方式 1 静态显示静态显示就是显示驱动电路具有输出锁存功能 单片机将所要显示的数据送出去后 数码管始终显示该数据 不变 CPU不再控制LED 到下一次显示时 再传送一次新的显示数据 静态显示的接口电路采用一个并行口接一个数码管 数码管的公共端按共阴极或共阳极分别接地或接VCC 这种接法 每个数码管都要单独占用一个并行I O口 以便单片机传送字形码到数码管控制数码管的显示 显然其缺点就是当显示位数多时 占用I O口过多 为了解决静态显示I O口占用过多的问题 可采用串行接口扩展LED数码管的技术 静态显示方式的优点是显示的数据稳定 无闪烁 占用CPU时间少 其缺点是由于数码管始终发光 功耗比较大 静态显示方式 各位的公共端连接在一起 接地或 5V 例 片内RAM的23H单元存放有二进制数表示的温度测量结果 100 要求通过两位LED数码管显示出相应的十进制数 并且每隔1s要更新一次显示数据 ORG0000H 程序开始LJMPMAIN 转主程序ORG0100H 存放主程序MAIN MOVA 23H 取二进制数MOVB 0AH 10送B寄存器DIVAB 原数除以10MOV20H A 十位数送20HMOV21H B 个位数送21HMOVDPTR TAB 显示代码首地址MOVA 20H 取十位数MOVCA A DPTR 查十位显示代码MOVP2 A 显示十位MOVA 21H 取个位数MOVCA A DPTR 查个位显示代码MOVP1 A 显示个位LCALLDEL1S 调用延时子程序AJMPMAIN 重复显示 新 DEL1S MOVR5 08H 延时子程序D1 MOVR6 0FFHD2 MOVR7 0FFHD3 DJNZR7 D3DJNZR6 D2DJNZR5 D1RET 延时子程序返回TAB DB0C0H 0F9H 0A4H 定义显示段码DB0B0H 99H 92HDB82H 0F8H 80H 90HEND 程序结束 练习 用两个数码管显示0 99 2 动态显示动态扫描方法是用其接口电路把所有数码管的8个笔划段a g和dp同名端连在一起 而每一个数码管的公共极COM各自独立地受I O线控制 CPU向字段输出口送出字形码时 所有数码管接收到相同的字形码 但究竟是哪个数码管亮 则取决于COM端 COM端与单片机的I O口相连接 由单片机输出位码到I O控制何时哪一位数码管亮 动态扫描用分时的方法轮流控制各个数码管的COM端 使各个数码管轮流点亮 在轮流点亮数码管的扫描过程中 每位数码管的点亮时间极为短暂 但由于人的视觉暂留现象及发光二极管的余辉 给人的印象就是一组稳定的显示数据 优点 当显示位数较多时 采用动态显示方式比较节省I O口 硬件电路也较静态显示简单 缺点 其稳定度不如静态显示方式 而且在显示位数较多时CPU要轮番扫描 占用CPU较多的时间 动态显示方式 只要扫描信号的频率足够快 加上LED数码显示器发光的余晖效应和人的视觉暂留现象 人们感觉到的好像是各位同时显示的效果 而无闪烁现象 一般每个LED数码显示器的显示时间为1 5ms 例 片内RAM的30H单元存放有二进制数表示的温度测量结果 100 要求通过两位LED数码管显示出相应的十进制数 采用动态扫描显示方式P1口输出显示代码 P2口的P2 0 P2 1输出2位显示扫描信号 SecondEQU30H 30H存放要显示的数ORG00HSTART MOVSecond 45NEXT MOVA SecondMOVB 10DIVAB A为十位 B为个位DISP MOVP2 0FEHMOVDPTR TABLEMOVCA A DPTRMOVP0 A 先显示十位LCALLDELAYMOVP2 0FDHMOVA BMOVDPTR TABLEMOVCA A DPTRMOVP0 A 后显示个位LCALLDELAY 延时LJMPSTARTDELAY MOVR5 100D2 MOVR6 125DJNZR6 DJNZR5 D2RETTABLE DB3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FHEND 参考程序 二 键盘 例 发光二极管点亮控制电路 如图 在80C51的P0口低4位接有4个常开的按键开关S1 S2 S3 S4 在P0口的高4位接有4个发光二极管D6 D7 D8 D9 现要求当某个按键被按下一次时 对应的发光二极管被点亮1s 键盘的分类键盘分编码键盘和非编码键盘 编码键盘 键盘上闭合键的识别由专用的硬件编码器实现 并产生键编码号或键值 如BCD码键盘 ASCLL码键盘 计算机键盘等 非编码键盘 靠软件来识别在单片机组成的测控系统及智能化仪器中 用的最多的是非编码键盘 1 了解键盘 2 键盘 单片机应用系统中的按键通常就是一个常开的按动开关 当键被按下时开关闭合 松开后开关断开 利用机械触点完成电路的合 断功能 在CPU检测到有键按下后 并不立即确认该键按下有效 而是先执行一个10ms左右的延时程序 然后再次检测该键电平是否仍保持闭合状态电平 若仍保持为闭合状态电平 则确认该键处于闭合状态 是一次有效的按键 从而消除了抖动影响 按键在闭合和断开时 触点会存在抖动现象 硬件消除抖动 软件消除抖动 3 键盘接口的工作原理 独立式键盘接口 各键相互独立 每个按键各接一根输入线 通过检测输入线的电平状态可很容易判断那个键被按下 此种接口适于键数较少或操作速度较高的场合 独立式按键的结构 独立式按键的键处理程序 JAN1 JBP1 0JAN1 P1 0 1键未按下 继续查询ACALLDELY10MS P1 0 0键被按下 延时消抖JBP1 0JAN1 P1 0是否仍为低电平 否则重新查询ANJ JNBP1 0ANJ 按键有效 等待键释放ACALLJAN1 PRG 调用键功能程序SJMPJAN1 返回继续查询 练习 记录按键的次数 练习 信号灯控制电路 功能是当按下不同的键时发光二极管有不同的亮灭规律 按1号键LED从上到下依次亮 按2号键从下到上依次亮 按3号键闪烁 按4号键呈流水追逐效果 1 2 3 4 信号灯控制程序设计流程图 用于按键数目较多的场合 由行线和列线组成 按键位于行 列的交叉点上 按键数目较多的场合 行列式键盘与独立式键盘相比 要节省很多的I O口线 行列式键盘接口 行列式键盘按键的识别方法 行列式键盘工作原理 无键按下 该行线为高电平 当有键按下时 行线电平由列线的电平来决定 由于行 列线为多键共用 各按键彼此将相互发生影响 必须将行 列线信号配合起来并作适当的处理 才能确定闭合键的位置 a 扫描法 第1步 识别键盘有无键按下 第2步 如有键被按下 识别出具体的按键 把所有列线置0 检查各行线电平是否有变化 如有不全高电平 说明有键按下 否则无键按下 把某一列置低电平 其余各列为高电平 检查各行线电平的变化 如果某行线电平为低 可确定此行列交叉点处的按键被按下 缺点 多次扫描才能获得按键所处的行列值 第1步 列线输出为全低电平 则行线中电平由高变低 或由低变高 的所在行为按键所在行 第2步 行线输出为全低电平 则列线中电平由高变低 或由低变高 所在列为按键所在列 结合上述两步 可确定按键所在行和列 b 线反转法 编程说明 在单片机应用系统中 键盘扫描只是系统的部分程序 进行软件系统编程时 一般作为子程序调用或中断服务程序使用 该子程序入口参数为无 出口参数为键码值 一般存于A 因此 其调用十分简单 但一定要注意返回的键码值所对应的键在键盘的哪个位置 即要掌握键码分配表 矩阵式键盘尽管比独立式键盘复杂 但有了上述子程序后 只要学会调用 你甚至不需要知道键盘扫描程序是如何编写的 COPY即可 编程也就变得十分简单了 从这可以看出平时注意查阅资料 收集实用子程序 掌握子程序的调用 对提高编程效率是多么重要 原则 即要保证能及时响应按键操作 又不要过多占用CPU的工作时间 通常 键盘工作方式有3种 即编程扫描 定时扫描和中断扫描 4 键盘的工作方式 1 编程扫描方式 也称查询方式 只有当单片机空闲时 才调用键盘扫描子程序 反复扫描键盘 如果单片机的查询频率过高 虽能及时响应键盘的输入 但也会影响其他任务的进行 查询频率过低 可能会键盘输入漏判 因此要根据单片机系统的繁忙程度和键盘的操作频率 来调整键盘扫描的频率 2 定时扫描工作方式 利用单片机内的定时器 产生10ms的定时中断 对键盘进行扫描 3 中断工作方式 只有在键盘有键按下时 发出中断申请 单片机响应中断 执行键盘扫描程序 如无键按下 单片机将不理睬键盘 此种工作方式实时性强 工作效率高 键盘所做的工作分为三个层次 单片机如何来监视键盘的输入 三种工作方式 编程扫描 定时扫描 中断扫描 确定具体按键的键号 体现在按键的识别方法上就是 扫描法 线反转法 执行键处理程序 三 键盘 显示器接口设计实例 利用串行口实现键盘 显示器接口利用专用键盘 显示器接口芯片实现键盘 显示器接口 1 利用AT89C51的串行口实现键盘 显示器接口 优点 亮度大 容易做到显示不闪烁 且CPU不必频繁的为显示服务 从而使单片机有更多的时间处理其它事务 显示子程序 DIR SETBP3 3 P3 3 1 允许TXD引脚同步移位脉冲输出MOVR7 08H 送出的段码个数 R7为段码个数计数器MOVR0 7FH 7FH 78H为显示数据缓冲区DL0 MOVA R0 取出要显示的数送AMOVDPTR SEGTABMOVCA A DPTR 查段码表SEGTAG 取出段码MOVSBUF A 将段码送SBUFDL1 JNBTI DL1 输出段码 查询TI状态 1个字节的段码输出完否 CLRTI 1个字节的段码输出完 清TI标志DECR0 指向下一个显示数据单元DJNZR7 DL0 段码个数计数器R7是否为0 如不为0 继续送段码CLRP3 3 8个段码输出完毕 关闭显示器输出RET 返回SEGTAB DB0C0H 0F9H 0A4H 0B0H 99H 共阳极段码表 0 1 2 3 4DB92H 82H 0F8H 90H 5 6 7 8 9DB88H 83H 0C6H 0A1H 86H A B C D EDB8FH 0BFH 8CH 0FFH 0FFH F P 暗 KEYI MOVA 00H 判断有无键按下 所有列线为0的编码送AMOVSBUF A 扫描键盘的 8 号74LS164输出为00H 使所有列线为0KL0 JNBTI KL0 串行输出完否 CLRTI 串行输出完毕 清TIKL1 JNBP3 4 PK1 第一行有闭合键吗 如有 跳PK1进行处理JBP3 5 KL1 在第二行键中有闭合键吗 无闭合键跳KL1PK1 ACALLDL10 调用延时10ms子程序DL10 软件消除抖动JNBP3 4 PK2 判断是否由抖动引起 JBP3 5 KL1PK2 MOVR7 08H 不是抖动引起的MOVR6 0FEH 判别是哪一个键按下 FEH为最左一列为低MOVR3 00H R3为列号寄存器MOVA R6KL5 MOVSBUF A 列扫描码从串行口输出 键盘扫描子程序 扫描法 KL2 JNBTI KL2 等待串行口发送完CLRTI 串行口发送完毕 清TI标志JNBP3 4 PKONE 读第一行线状态 第一行有键闭合 跳PKONEJBP3 5 NEXT 读第二行线状态 是第二行某键否 MOVR4 08H 第二行键中有键被按下 行首键号08H送R4AJMPPK3PKONE MOVR4 00H 第一行键中有键按下 行首键号00H送R4PK3 MOVSBUF 00H 等待键释放 发送00H使所有列线为低KL3 JNBTI KL3CLRTI 发送完毕 清标志KL4 JNBP3 4 KL4 判行线状态JNBP3 5MOVA R4 两行线均为高 说明键已释放ADDA R3 计算得键码 ARETNEXT MOVA R6 列扫描码左移一位 判下一列键是否按下RLAMOVR6 A 记住列扫描码于R6中INCR3 列号增1DJNZR7 KL5 列计数器R7减1 8列键都检查完否 AJMPKEYI 8列键扫描完毕 开始下一个键盘扫描周期DL10 MOVR7 0AH 延时10ms子程序DL MOVR6 0FFHDL6 DJNZR6 DL6DJNZR7 DLRET 3 利用通用键盘 显示器接口芯片HD7279A实现键盘 显示器接口 键盘 显示器接口芯片用专用芯片 可省去编写键盘 显示器动态扫描程序以及键盘去抖动程序编写的繁琐工作 目前流行的键盘 显示器接口芯片均采用串行通信方式 占用口线少 常见的键盘 显示器接口芯片有 ZLG7289A ZLG7290B MAX7219 CH451 BC7281和HD7279等 HD7279特点 28引脚双列直插式封装 PID 单一的 5V供电 HD7279引脚 HD7279引脚说明 HD7279的控制命令 6条纯命令 7条带数据命令 1条读键盘命令 6条纯命令 7条带数据命令 均有双字节组成 第1个字节为命令标志码 还有位地址 第2个字节为显示内容 注 可在指定位上显示字符 1条读键盘命令 注 若无按键按下 按键值为0 xFFH 时序 单片机与HD7279A硬件电路图 编程实现 当有按键按下时 单片机读取该按键代码并将其显示在LED上 四 LCD 1 LCD显示器分类笔段型 笔段型LCD是以长条状显示像素组成一位显示 在形状上总是围绕数字 8 的结构变化 广泛用于电子表 数字仪表中 字符型 字符型液晶显示模块是专门用来显示字母 数字 符号等的点阵型液晶显示模块 在电极图形设计上它是由若干个5 8或5 11点阵组成 每一个点阵显示一个字符 这类模块广泛应用于寻呼机 手机 电子记事本等类电子设备中 点阵图形型 点阵图形型是在一平板上排列多行和多列 形成矩阵形式的晶格点 点的大小可根据显示的清晰度来设计 这类液晶显示器可广泛用于图形显示如游戏机 笔记本电脑和彩色电视等设备中 点阵字符型LCD显示器 需相应的LCD控制器 驱动器 来对LCD显示器进行扫描 驱动 以及一定空间的RAM和ROM来存储写入的命令和显示字符的点阵 已将上述元部件和LCD显示器用PCB连接到一起 称为液晶显示模块LCM LCDModule 只向LCM送入相应的命令和数据就可实现所需要的显示内容 接口简单 灵活方便 分字符和图形两种 驱动器 控制器 2 点阵字符型液晶显示模块 控制器HD44780 1 部分引脚介绍 2 控制器HD44780内寄存器 寄存器的选择 DDRAM就是显示数据RAM 用来寄存待显示的字符代码显示位与DDRAM地址的对应关系 例 想要在屏幕的第一行第一列显示一个 A 字 就要向DDRAM的00H地址写入 A 字的代码就行了 补充 DDRAM CGROM CGRAM LCD模块上也固化了字模存储器 这就是CGROM和CGRAM HD44780内置了192个常用字符的字模 存于字符产生器CGROM CharacterGeneratorROM 中 另外还有8个允许用户自定义的字符产生RAM 称为CGRAM CharacterGeneratorRAM 字模代表了是在点阵屏幕上点亮和熄灭的信息数据 例如 A 标准字符库 命令功能 功能 清除屏幕显示 并给地址计数器AC置 0 功能 置DDRAM 显示数据RAM 及显示RAM的地址为 0 显示返回到原始位置 功能 设置光标的移动方向 并指定整体显示是否移动 其中 I D 1 为增量方式 I D 0 为减量方式 S 1 整体显示移位 如S 0 表示不移位 3 AT89C51与LCD的接口 软件编程 1 初始化单片机开始运行时必须先对LCD模块进行初始化 否则模块无法正常显示 下面介绍两种初始化方法 利用模块内部的复位电路进行初始化 软件初始化 利用模块内部的复位电路进行初始化 LCM有内部复位电路 能进行上电复位 复位期间BF 1 在电源电压VDD达4 5V以后 此状态可维持10ms 复位时执行下列命令 清除显示 功能设置 DL 1为8位数据长度接口 N 0单行显示 F 0为5 7点阵字符 开 关设置 D 0关显示 C 0关光标 B 0关闪烁功能 进入方式设置 I D 1地址采用递增方式 S 0关显示移位功能 软件初始化 2 显示程序例10 1编写程序在LCD第一行显示 CS S 第二行显示 92 假定对LCM已完成初始化 由

温馨提示

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

评论

0/150

提交评论