《键盘显示器接口》PPT课件.ppt_第1页
《键盘显示器接口》PPT课件.ppt_第2页
《键盘显示器接口》PPT课件.ppt_第3页
《键盘显示器接口》PPT课件.ppt_第4页
《键盘显示器接口》PPT课件.ppt_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

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

文档简介

第10章 AT89S51单片机与输入/输出 外设的接口 1 1 2 第10章 目录录 10.1 LED数码码管的显显示原理 10.1.1 LED数码管的结构 10.1.2 LED数码管工作原理 10.2 键盘键盘 接口原理 10.2.1 键盘输 入应解决的问题 10.2.2 键盘的工作原理 10.2.3 键盘的工作方式 10.3 键盘键盘 /显显示器接口设计实设计实 例 10.3.1 利用AT89S51单片机串行口实现的键盘/显示器接口 2 10.3.2 各种专用的键盘/显示器接口芯片简介 10.3.3 专用接口芯片CH451实现的键盘/显示器控制 10.3.4 专用接口芯片HD7279实现的键盘/显示器控制 10.4 AT89S51单单片机与液晶显显示器(LCD)的接口 10.4.1 LCD显示器的分类 10.4.2 点阵字符型液晶显示模块介绍 10.4.3 AT89S51单片机与LCD的接口及软件编程 10.5 AT89S51单单片机与微型打印机TPP-40A/16A的接口 10.6 AT89S51单单片机与BCD码拨盘码拨盘 的接口设计设计 3 内容概要 大多数的单片机应用系统,都要配置输入外设和输出外 设。常用的输入外设有键盘、BCD码拨盘等;常用的输出 外设有LED数码管、LCD显示器、打印机等。 本章介绍AT89S51与各种输入外设、输出外设的接口 设计以及软件编程。 4 10.1 LED数码管的显示原理 LED(Light Emitting Diode)发光二极管缩写。LED 数码管是由发光二极管构成的。 10.1.1 LED数码管的结构 常见的LED数码管为“8”字型的,共计8段。每一段对 应一个发光二极管。有共阳极和共阴极两种,如图10-1所 示。共阴极发光二极管的阴极连在一起,通常公共阴极接 地。当阳极为高电平时,发光二极管点亮。 同样,共阳极LED数码管的发光二极管的阳极连接在 一起,公共阳极接正电压,当某个发光二极管的阴极接低 电平时,发光二极管被点亮,相应的段被显示。 5 5 6 图图10-1 8段LED数码码管结结构及外形 6 为了使数码管显示不同的符号或数字,要把某些段发光 二极管点亮,就要为LED数码管提供段码(字型码)。 LED数码管共计8段。正好是一个字节。习惯上是以“a” 段对应段码字节的最低位。各段与字节中各位对应关系如 表10-1所示。 按照上述格式,显示各种字符的8段LED数码管的段码 如表10-2所示。 7 7 8 8 表10-1只列出了部分段码,读者可以根据实际情况选用 ,或重新定义。除 “8”字型的LED数码管外,市面上还有 “1”型、“米”字型和“点阵”型LED显示器,如图10-2所示 。本章均以“8”字型的LED数码管为例。 图10-2 其他各种字型的LED显示器 9 9 10.1.2 LED数码管工作原理 图10-3所示为显示4位字符的LED数码管的结构原理 图。N位位选线和8 N条段码线。段码线控制显示字型, 而位选线控制着该显示位的LED数码管的亮或暗。 10 图图10-3 4位LED数码管的结构原理图 10 LED数码管有静态显示和动态显示两种显示方式。 1LED静态显示方式 无论多少位LED数码管,同时处于显示状态。 静态显示方式,各位的共阴极(或共阳极)连接在一起 并接地(或接+5V);每位的段码线(adp)分别与一 个8位的I/O口锁存器输出相连。如果送往各个LED数码管 所显示字符的段码一经确定,则相应I/O口锁存器锁存的 段码输出将维持不变,直到送入另一个字符的段码为止。 正因为如此,静态显示方式的显示无闪烁,亮度都较高, 软件控制比较容易。 1111 图10-4为4位LED数码管静态显示器电路,各位可独立 显示,静态显示方式接口编程容易,但是占用口线较多。 对图10-4电路,若用I/O口线接口,要占用4个8位I/O口。 因此在显示位数较多的情况下,所需的电流比较大,对电 源的要求也就随之增高,这时一般都采用动态显示方式。 2LED动态显示方式 无论在任何时刻只有一个LED数码管处于显示状态,即 单片机采用“扫描”方式控制各个数码管轮流显示。 1212 13 图图10-4 4位LED静态显态显 示电电路 13 在多位LED显示时,为简化硬件电路,通常将所有显示 位的段码线的相应段并联在一起,由一个8位I/O口控制, 而各位的共阳极或共阴极分别由相应的I/O线控制,形成 各位的分时选通。 图10-5所示为一个4位8段LED动态显示电路。其中段码 线占用一个8位I/O口,而位选线占用一个4位I/O口。必须 采用动态的“扫描”显示方式。即在某一时刻,只让某一位 的位选线处于选通状态,而其他各位的位选线处于关闭状 态,同时,段码线上输出相应位要有显示的字符的段码。 1414 15 图图10-5 4位8段LED动态显动态显 示电电路 15 虽然这些字符是在不同时刻出现,而在同一时刻,只有 一位显示,其他各位熄灭,由于余辉和人眼的“视觉暂留” 作用,只要每位显示间隔足够短,则可以造成“多位同时 亮”的假象,达到同时显示的效果。 LED不同位显示的时间间隔(扫描间隔)应根据实际情 况而定。显示位数多,将占大量的单片机时间,因此动态 显示的实质是以牺牲单片机时间来换取I/O端口的减少。 图10-6所示为8位LED动态显示2009.10.10的过程。图 10-6(a)所示为显示过程,某一时刻,只有一位LED被 选通显示,其余位则是熄灭的;图10-6(b)所示为实际 的显示结果,人眼看到的是8位稳定的同时显示的字符。 1616 图10-6 8位LED动态显示过程和结果 动态显示的优点是硬件电路简单,显示器越多,优势越 明显。缺点是显示亮度不如静态显示的亮度高。如果“扫 描”速率较低,会出现闪烁现象。 1717 10.2 键盘接口原理 键盘具有向单片机输入数据、命令等功能,是人与单片 机对话的主要手段。下面介绍键盘的工作原理和键盘的工 作方式。 10.2.1 键盘输入应解决的问题 1键盘的任务 任务有三项: (1) 判别是否有键按下?若有,进入下一步工作。 (2)识别哪一个键被按下,并求出相应的键值。 (3)根据键值,找到相应键值的处理程序入口。 1818 2键盘输入的特点 常见键盘:触摸式键盘、薄膜键盘和按键式键盘,最常 用的是按键式键盘。按键实质上就是一个开关。如图10-7 (a)所示,按键开关的两端分别连接在行线和列线上, 通过键盘开关机械触点的断开、闭合,其行线电压输出波 形如图10-7(b)所示。 图10-7 键盘开关及其行线波形 1919 图10-7(b)所示的t1和t3分别为键的闭合和断开过程中 的抖动期(呈现一串负脉冲),抖动时间长短与开关的机 械特性有关,一般为510ms,t2为稳定的闭合期,其时 间由按键动作确定,一般为十分之几秒到几秒,t0、t4为 断开期。 3按键的识别 键的闭合与否,行线输出电压上就是呈现高电平或低电 平。高电平,表示键断开,低电平则表示键闭合,通过对 行线电平的高低状态的检测,可确认按键按下以及按键释 放与否。为了确保对一次按键动作只确认一次按键有效, 必须消除抖动期t1和t3的影响。 2020 4如何消除按键的抖动 按键去抖动的方法有两种: 一种软件延时,本思想是:在检测到有键按下时,该键 所对应的行线为低电平,执行一段延时10ms的子程序后 ,确认该行线电平是否仍为低电平,如果仍为低电平,则 确认该行确实有键按下。当按键松开时,行线的低电平变 为高电平,执行一段延时10ms的子程序后,检测该行线 为高电平,说明按键确实已经松开。采取本措施,可消除 两个抖动期t1和t3的影响。 另一种是采用专用的键盘/显示器接口芯片,这类芯片 中都有自动去抖动的硬件电路。 2121 10.2.2 键盘的工作原理 键盘可分为两类:非编码键盘和编码键盘。 非编码键盘是利用按键直接与单片机相连接而成,这种 键盘通常使用在按键数量较少的场合。使用这种键盘,系 统功能通常比较简单,需要处理的任务较少,但是可以降 低成本、简化电路设计。按键的信息通过软件来获取。 1非编码键盘 常见的为两种结构:独立式键盘和矩阵式键盘。 (1)独立式键盘 特点是:一键一线,各键相互独立,每个键各接一条 I/O口线,通过检测I/O输入线的电平状态,可容易地判断 哪个按键被按下,如图10-8所示。 2222 图图10-8 独立式键盘键盘 接口电电路 23 对于图10-8的键盘,图中的上拉电阻保证按键释放时, 输入检测线上有稳定的高电平。 当某一按键按下时,对应的检测线就变成了低电平,与 其他按键相连的检测线仍为高电平,只需读入I/O输入线 的状态,判别哪一条I/O输入线为低电平,很容易识别哪 个键被按下。 优点:电路简单,各条检测线独立,识别按下按键的软 件编写简单。适用于键盘按键数目较少的场合,不适用于 键盘按键数目较多的场合,因为将占用较多的I/O口线。 2424 识别某一键是否按下的子程序: KEYIN: MOVP1,0FFH;P1口写入1,设置P1口为输入状态 MOVA,P1;读入8个按键的状态 CJNEA,#0FFH,QUDOU;有键按下,跳去抖动 LJMPRETURN;无键按下,返回 QUDOU:MOV R3,A;8个按键的状态送R3保存 LCALL DELAY10;调用延时子程序,软件去键抖动 MOVA,P1;再一次读入8个按键的状态 CJNEA,R3,RETURN;两次键值比较,不同, ;是抖动引起,转RETURN 2525 KEY0:MOVC,P1.0;有键按下,读P1.0的按键状态 JCKEY1;P1.0为高,该键未按下,跳KEY1, ;判下一个键 LJMPPKEY0 ;P1.0的键按下,跳PKEY0处理 KEY1:MOVC,P1.1;读P1.1的按键状态 JCKEY2;P1.1为高,该键未按下,跳KEY2, ;判下一个键 LJMPPKEY1 ;P1.1的键按下,跳PKEY1处理 2626 KEY2:MOVC,P1.2;读P1.2的按键状态 JCKEY3;P1.2为高,该键未按下,跳 ;KEY3,判下一个键 LJMPPKEY2;P1.2的键按下,跳PKEY2处理 KEY3:MOVC,P1.3;读P1.3的按键状态 KEY7:MOVC,P1.7;读P1.7的按键状态 JCRETURN;P1.7为高,该键未按下,跳 ;RETURN处 LJMPPKEY7;P1.7的键按下,跳PKEY7处理 RETURN: RET ;子程序返回 2727 软件延时10ms子程序DELAY10的编写,参见第4章。 对应8个按键的键处理程序PKEY0 PKEY7,根据按键功 能的要求来编写。注意,在进入键处理程序后,需要先等 待按键释放,再执行键处理功能。另外,在键处理程序完 成后,一定要跳向RETURN标号处返回。 (2)矩阵式键盘 矩阵式(也称行列式)键盘用于按键数目较多的场合, 由行线和列线组成,按键位于行、列的交叉点上。如图10 -9所示,一个44的行、列结构可以构成一个16个按键键 盘。在按键数目较多的场合,要节省较多的I/O口线。 2828 29 图图10-9 矩阵阵式键盘键盘 接口 29 矩阵中无按键按下时,行线为高电平;当有按键按下时 ,行线电平状态将由与此行线相连的列线的电平决定。列 线的电平如果为低,则行线电平为低;列线的电平如果为 高,则行线的电平也为高,这是识别按键是否按下的关键 所在。 由于矩阵式键盘中行、列线为多键共用,各按键彼此将 相互发生影响,所以必须将行、列线信号配合,才能确定 闭合键位置。下面讨论矩阵式键盘按键的识别方法。 扫描法。第1步,识别键盘有无键按下;第2步,如 有键被按下,识别出具体的键位。 下面以图10-9所示的键3被按下为例,说明识别过程。 3030 第1步,识别键盘有无键按下。先把所有列线均置为0, 然后检查各行线电平是否都为高,如果不全为高,说明有 键按下,否则无键被按下。 例如,当键3按下时,第1行线为低,还不能确定是键3 被按下,因为如果同一行的键2、1或0之一被按下,行线 也为低电平。只能得出第1行有键被按下的结论。 第2步,识别出哪个按键被按下。采用逐列扫描法,在 某一时刻只让1条列线处于低电平,其余所有列线处于高 电平。 当第1列为低电平,其余各列为高电平时,因为是键3被 按下,第1行的行线仍处于高电平; 3131 当第2列为低电平,其余各列为高电平时,第1行的行线仍处 于高电平; 直到让第4列为低电平,其余各列为高电平时,此时第1行的 行线电平变为低电平,据此,可判断第1行第4列交叉点处 的按键,即键3被按下。 综上所述,扫描法的思想是,先把某一列置为低电平,其余 各列置为高电平,检查各行线电平的变化,如果某行线电 平为低电平,则可确定此行此列交叉点处的按键被按下。 32 线反转法。扫描法要逐列扫描查询,有时则要多次 扫描。而线反转法则很简练,无论被按键是处于第一列或 最后一列,均只需经过两步便能获得此按键所在的行列值 ,下面以图10-10所示的矩阵式键盘为例,介绍线反转法 的具体步骤。 n让行线编程为输入线,列线编程为输出线,并使输出 线输出为全低电平,则行线中电平由高变低的所在行为按 键所在行。 n再把行线编程为输出线,列线编程为输入线,并使输 出线输出为全低电平,则列线中电平由高变低所在列为按 键所在列。 3333 两步即可确定按键所在的行和列,从而识别出所按的键 。 图10-10 采用线反转法的矩阵式键盘 3434 假设键3被按下。 第一步,P1.0P1.3输出全为“0”,然后,读入P1.4 P1.7线的状态,结果P1.4=0,而P1.5P1.7均为1,因此 ,第1行出现电平的变化,说明第1行有键按下; 第二步,让P1.4P1.7输出全为“0”,然后,读入P1.0 P1.3位,结果P1.0=0,而P1.1P1.3均为1,因此第4 列出现电平的变化,说明第4列有键按下。 综上所述,即第1行、第4列按键被按下,此按键即键3 按下。线反转法简单适用,但不要忘记按键去抖动处理。 3535 10.2.3 键盘的工作方式 单片机在忙于其他各项工作任务时,如何兼顾键盘的输入, 这取决于键盘的工作方式。工作方式选取原则是,既要保 证及时响应按键操作,又不过多占用单片机工作时间。键 盘工作方式有3种,即编程扫描、定时扫描和中断扫描。 1编程扫描方式 也称查询方式,利用单片机空闲时,调用键盘扫描子程序, 反复扫描键盘。 如果单片机的查询的频率过高,虽能及时响应键盘的输入, 但也会影响其他任务的进行。查询的频率过低,可能会键 盘输入漏判。 36 所以要根据单片机系统的繁忙程度和键盘的操作频率, 来调整键盘扫描的频率。 2定时扫描方式 每隔一定的时间对键盘扫描一次。在这种方式中,通常 利用单片机内的定时器产生的定时中断,进入中断子程序 来对键盘进行扫描,在有键按下时识别出该键,并执行相 应键的处理程序。为了不漏判有效的按键,定时中断的周 期一般应小于100ms。 3737 3中断扫描方式 为提高单片机扫描键盘的工作效率,可采用中断扫描方 式,如图10-11所示。 图中的键盘只有在键盘有按键按下时,发出中断请求信 号,单片机响应中断,执行键盘扫描程序中断服务子程序 。如无键按下,单片机将不理睬键盘。 此种方式的优点是,只有按键按下时,才进行处理,所 以其实时性强,工作效率高。 3838 39 图图10-11 采用线线反转转法的矩阵阵式键盘键盘 39 非编码矩阵式键盘所完成的工作分为3个层次。 (1)单片机如何来监视键盘的输入,体现在键盘的工 作方式上就是:编程扫描;定时扫描;中断扫描。 (2)确定按下键的键号。体现在按键的识别方法上就 是:扫描法;线反转法。 (3)根据按下键的键号,实现按键的功能,即跳向对 应的键处理程序。 10.3 键盘/显示器接口设计实例 在单片机应用系统设计中,一般都是把键盘和显示器放 在一起考虑。也有的系统仅单独需要键盘或显示器。介绍 几种实用的键盘/显示器接口的设计方案。 4040 10.3.1 利用AT89S51串行口实现的键盘/显示器接口 当AT89S51单片机的串行口未作它用时,可使用 AT89S51的串行口的方式0的输出方式,构成键盘/显示器 接口,如图10-12所示。 8个74LS164:74LS164(0)74LS164(7)作为8位 LED数码管的段码输出口,AT89S51的P3.4、P3.5作为 两行键的行状态输入线,P3.3作为TXD引脚同步移位脉冲 输出控制线,P3.3=0时,与门封死,禁止同步移位脉冲输 出。这种方案主程序可不必扫描显示器,软件设计简单, 使单片机有更多的时间处理其他事务。 下面列出显示子程序和键盘扫描子程序。 4141 图10-12 用AT89S51串行口扩展键盘/显示器 4242 显示子程序: DIR: SETBP3.3; P3.3=1,允许TXD脚同步移位脉冲输出 MOVR7,08H; 送出的段码个数 MOVR0,7FH; 7FH78H为显示数据缓冲区 DL0: MOV A,R0; 取出要显示的数送A ADD A,0DH; 加上偏移量 MOVC A,APC; 查段码表SEGTAB, 取出段码 MOV SBUF ,A; 将段码送串行口的SBUF DL1: JNB TI,DL1; 查询1个字节的段码输出完否? CLRTI; 1字节的段码输出完,清TI标志 DECR0; 指向下一个显示数据单元 4343 DJNZR7,DL0;段码个数计数器R7是否为0,如不 ;为0,继续送段码 CLR P3.3; 8个段码输出完毕,关闭显示器输出 RET ; 返回 SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H;共阳极段 ; 码表 DB92H,82H,0F8H,90H; DB88H,83H,0C6H,0A1H,86H; DB8FH,0BFH,8CH,0FFH,0FFH; 4444 键盘扫描子程序: KEYI:MOV A,00H; 判断有无键按下, 使所有列线为0 MOV SBUF,A; 扫描键盘的(8)号74LS164输出为 ;00H, 使所有列线为0 KL0: JNB TI,KL0; 串行输出完否? CLR TI; 串行输出完毕,清TI KL1:JNBP3.4,PK1; 第1行有闭合键吗?如有,跳PK1 ;进行处理 JB P3.5,KL1 ; 在第2行键中有闭合键吗?无闭 ;合键跳KL1 4545 PK1: ACALL DL10; 调用延时10ms子程,软件消抖动 JNB P3.4,PK2; 判断是否由抖动引起? JB P3.5,KL1 PK2: MOV R7,08H; 不是抖动引起的 MOV R6,0FEH;判别是哪一个键按下,FEH为最左 ;1列为低 MOV R3,00H; R3为列号寄存器 MOV A,R6 KL5: MOV SBUF,A; 列扫描,列扫描码从串行口输出 4646 KL2: JNB TI,KL2; 等待串行口发送完 CLR TI; 串行口发送完毕,清TI标志 JNB P3.4,PKONE ; 读第1行线状态,第1行有键 ;闭合,跳PKONE JB P3.5,NEXT; 读第2行状态,2行某键否? MOV R4,08H; 2行中有键被按下,行首键 ;号08H送R4 AJMP PK3 PKONE:MOV R4,00H; 1行键中有键按下,行首键 ;号00H送R4 PK3: MOV SBUF,00H; 等待键释放,发送00H使所 ;有列线为低 4747 KL3: JNB TI,KL3; 判1个字节是否发送完毕 CLR TI; 发送完毕,清标志 KL4: JNB P3.4,KL4; 判行线状态 JNB P3.5 MOV A,R4; 两行线均为高,说明键已释放 ADD A,R3; 计算得键码A RET NEXT: MOV A,R6;列扫描码左移一位,判下一列键 RL A MOV R6,A; 记住列扫描码于R6中 4848 INC R3; 列号增1 DJNZ R7,KL5; 列计数器R7减1,8列 ;键都检查完否? AJMP KEYI; 8列扫描完,开始下一个键盘扫描周期 DL10: MOV R7,0AH; 延时10ms子程序 DL: MOV R6,0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL RET 本例中,如只需LED数码管显示部分,可把键盘部分的 电路去掉即可;如只需键盘,可把LED数码管部分的电路去 掉。 4949 10.3.2 各种专用的键盘/显示器接口芯片简介 用专用芯片,可省去编写键盘/显示器动态扫描程序以 及键盘去抖动程序编写的繁琐工作。 目前各种专用接口芯片种类繁多,各有特点,总体趋势 是并行接口芯片逐渐退出,串行接口芯片越来越多的得到 应用。 早期的较为流行的键盘/显示器芯片8279,目前流行的 键盘/显示器接口芯片均采用串行通信方式,占用口线少 。常见的芯片有:周立功公司的ZLG7289A、ZLG7290B 、MAX7219、南京沁恒公司的CH451、HD7279和 BC7281等。 5050 这些芯片全采用动态扫描方式,且控制的键盘均为编码 键盘。 1. 专用键盘/显示器接口芯片8279 可编程的并行键盘/显示器接口芯片。内部有键盘FIFO (先进先出堆栈)/传感器双重功能的88=64字节RAM, 键盘控制部分可控制88的键盘矩阵,能自动获得按下键 的键号。 自动去键盘抖动并具有双键锁定保护功能。显示RAM 的容量为168位,最多可控制16个LED数码管显示。 8279已经逐渐淡出市场。 5151 2. 专用键盘/显示器芯片ZLG7290B 采用I2C串行口总线结构,可实现8位LED显示和64键的 键盘管理,需外接晶振,使用按键功能时要接8个二极管, 电路稍显复杂,且每次I2C通信间隔稍长(10ms)。 功能:闪烁、段点亮、段熄灭、功能键、连击键计数等 。其中,功能键实现了组合按键,这在此类芯片中极具特 点;连击键计数实现了识别长按键的功能,也是独有的。 3. 专用显示器芯片MAX7219 MAXIM(美信)公司的产品。该芯片采用串行SPI接口 ,仅是单纯驱动共阴极LED数码管,没有键盘管理功能。 5252 4. 专用显示器芯片BC7281 可驱动16位LED数码管显示和实现64键的键盘管理, 可实现闪烁、段点亮、段熄灭等功能。最大特点是通过外 接移位寄存器驱动16位LED数码管。但所需外围电路较多 ,占PCB空间较大,且在驱动16位LED数码管时,由于采 用动态扫描方式工作,电流噪声过大。 5专用键盘/显示器芯片HD7279 与单片机间采用串行通信,可控制并驱动8位LED数码 管和实现64(88)键的键盘管理。外围电路简单,价格 低廉。由于具有上述优点,目前得到较为广泛的应用。 5353 6专用键盘/显示器芯片CH451 可动态驱动8位LED数码管显示,具有BCD码译码、闪 烁、移位等功能。内置大电流驱动级,段电流不小于 30mA,位电流不小于160mA。内置64(88)键键盘控 制器,可对88矩阵键盘自动扫描,且有去抖动电路,并 提供键盘中断和按键释放标志位,可供查询按键按下与释 放状态。片内内置上电复位和看门狗定时器。芯片性价比 较高,是目前使用较为广泛的专用的键盘/显示器接口芯 片之一。但抗干扰能力不是很强,不支持组合键识别。 上述各种芯片,CH451和HD7279使用较多。从性价比 ,首推CH451,主要对LED数码管的驱动功能较完善。 5454 10.3.3 专用接口芯片CH451实现的键盘/显示器控制 介绍专用键盘/显示器接口芯片CH451(南京沁恒公司) 1. 基本功能与引脚介绍 内部集成数码管显示驱动和键盘扫描控制的专用键盘/显 示器接口芯片。内置RC振荡电路,可以直接动态驱动8位LED 数码管(或者64只LED),可实现显示数字左移、右移、左循环 、右循环、各位显示数字独立闪烁等功能。 内置大电流驱动级,段电流不小于30mA,字电流不小于 160mA,并有16级亮度控制功能; 5555 在键盘控制方面,该芯片内有64键键盘控制器,可实现88 矩阵编码键盘的扫描,并内置自动去抖动电路,可提供按 键中断与按键释放标志位等功能。 与单片机的接口,可选用1线串行接口或高速4线串行接口, 片内有上电复位电路,同时可提供高电平有效复位和低电 平有效复位两种输出,同时片内提供看门狗WatchDog。 56 两种封装形式:28脚的表贴型封装(SOP型)以及24脚的 双列直插 (DIP)封装,如图10-13所示。 图10-13 CH451的封装与引脚 5757 58 28脚与24脚在功能上稍有差别,引脚定义见表10-3。 58 . CH451的操作命令 命令均为12位,其中高4位为标识码,低8位为参数, (1)空操作命令 编码:0000。 对CH451无任何影响。可应用在多个CH451的级联中 ,透过前级CH451向后级CH451发送操作命令而不影响前 级CH451的状态。 例如,要将操作命令001000000001B发送给两级级联 电路中的后级CH451(后级CH451的DIN引脚连接到前级 CH451的DOUT引脚),只要在该操作命令后添加空操作 5959 命令000000000000B再发送,该操作命令将经过前级 CH451到达后级CH451,而空操作命令留给了前级 CH451。 另外,为在不影响CH451的前提下, 使DCLK变化以清除看 门狗计时器,也可以发送空操作命令。在非级联的应用中 ,空操作命令可只发送高4位。 (2)芯片内部复位命令 编码:001000000001B。 可将CH451的各个寄存器和各种参数复位到默认的状态。芯 片上电时,CH451均被复位,此时各个寄存器均复位为0 ,各种参数均恢复为默认值。 60 (3)字数据移位命令 编码:0011000000D1D0B。 命令共有个:开环左移、右移,闭环左移、右移。 D0=0时为开环,D0=时为闭环;D1=0时左移,D1=1时为 右移。 开环左移时,DIG引脚对应的单元补00,此时不译 码方式显示为空格,BCD译码方式时显示为0; 开环右移时,DIG7引脚对应的单元补00;而在闭环 时 DIG0与DIG7头尾相接,闭环移位。 6161 (4)设定系统参数命令 编码:010000000WDOGKEYBDISPB。 用于设定CH451的系统级参数,如看门狗WDOG使能 、键盘扫描使能KEYB、显示驱动使能DISP等。各个参数 均可通过命令中的位数据来进行控制,将相应数据位置 为可启用该功能,否则关闭该功能(默认值)。 (5)设定显示参数命令 编码:0101MODE(1位)LIMIT(3位) INTENSITY(4位)B。 设定CH451的显示参数,其中译码方式MODE(1位) 、扫描极限LIMIT(3位)、显示亮度INTENSITY(4位) 。 6262 译码方式MODE=1,为BCD译码方式,MODE=时为 不译码方式。 CH451默认不译码方式,此时8个数据寄存器中字节数 据的位7位0分别对应8个数码管的小数点和段a段g, 当某段数据位为1时,对应的段点亮;当某段数据位为0时 熄灭。 CH451BCD译码方式主要用于LED数码管驱动,单片 机只要给出二进制数的BCD码,便由CH451将其译码并 直接驱动LED数码管以显示对应的字符。 BCD译码方式是对显示数据寄存器字节中的数据位4 位0进行BCD译码,可用于控制段驱动引脚SEG6SEG0 的输出,它们对应于数码管的段g段a,同时可用字节 6363 数据的位7来控制SEG7段对应的LED数码管的小数点,字节数据 的位和位不影响BCD译码的输出,它们可以是任意值。 将位4位0进行BCD译码可显示以下28个字符, 其中00000B01111B分别对应于显示字符“0F”, 10000B11010B分别对应于显示“空格”、“+”、“-”、“=”、“”、“”、 “_”、“H” 、“L”、“P”、“”,其余值为空格。 扫描极限LIMIT控制位001B111和000B(默认值)可分别设定 扫描极限17和8。 64 显示亮度INTENSITY控制位(4位) 可实现16级显示亮度 控制。00011111和0000(默认值)则用于分别 设定显示驱动占空比1161516和1616, (6)设定闪烁控制命令 编码:D7SD6SD5SD4SD3SD2SD1SD0SB 用于设定CH451的闪烁显示属性,其中D7SD0S位分别 对应于8个数码管的字驱动DIG7DIG0,并控制DIG7 DIG0的属性,将相应的数据位置为1则闪烁显示,否则为 不闪烁的正常显示(默认值)。 (7)加载显示数据命令 编码:DIG_ADDR DIG_DATAB。 6565 用于将显示字节数据DIG_DATA(8位)写入 DIG_ADDR(3位)指定的数据寄存器中。 DIG_ADDR的000B111B分别用于指定显示寄存器的 地址07,并分别对应于DIG0DIG7引脚驱动的8个 LED数码管。DIG_DATA为待写入的显示字节数据。 (8)读取按键代码命令 编码:0111B。 用于获得CH451最近检测到的有效按键的代码。 CH451通常从DOUT引脚向单片机输出按键代码,按键代 码是7位数据,最高位是状态码,位5位0是扫描码。读 取按键代码命令的位7位0可以是任意值,可将该命令缩 短为位,即位11位8。 6666 例如,CH451检测到有效按键并向单片机发出中断请求 时,假如按键代码是5EH,则单片机先向CH451发出读取 按键代码命令0111B,然后再从DOUT获得按键代码5EH 。CH451所提供的按键代码为位,位2位0是列扫描码 ,位5位3是行扫描码,位6是按键的状态码(键按下为 ,键释放为)。 对88键盘,即连接在DIG7DIG0与SEG7SEG0之 间的键按下时,CH451所提供的按键代码是固定的,如图 10-14所示。如果需要键被释放时的按键代码,可将图10- 14所示的按键代码的位6 置0,也可将按键代码减去40H 。 6767 例如,连接DIG3与SEG4的键被按下时,按键代码为63H, 键被释放后,按键代码是23H。 单片机可在任何时候读取有效按键的代码,但一般在CH451 检测到有效按键并向发出键盘中断请求时,进入中断服务 程序读取按键代码,此时按键代码的位6总是1。 另外,如需了解按键何时释放,可通过查询方式定期读取按 键代码,直到按键代码的位6为0。 注意:CH451不支持组合键。如需要组合键功能,则可利用 两片CH451来实现。具体的实现,请见相关资料。 68 3. CH451与AT89S51单片机的接口 接口电路如图10-14所示,使用线串行接口。其中 DOUT脚连到外部中断输入 脚,用中断方式响应有 效按键。也可用查询方式确定CH451是否检测到有效按键 ,同时还可向单片机提供复位信号RESET,并带有 WatchDog功能。 CH451的段驱动脚串200电阻用于限制和均衡段驱动 电流。在5V下,串接200电阻对应的段电流为13mA。 CH451具有64键的键盘扫描功能,为防止键按下后在 SEG信号线与DIG信号线之间形成短路而影响数码管显示 ,一般应在CH451的DIGDIG脚与键盘矩阵之间串 接限流电阻,阻值1k10k。 6969 图图10-14 CH451与AT89S51单单片机的接口电电路 70 将P1.0与DIN连接可用于输入串行数据,串行数据输入的 顺序是低位在前,高位在后。 另外,在上电复位后,CH451 默认选择线串行接口, 如需选择线串行接口,则应在DCLK输出串行时钟之前, 先在DIN上输出一个低电平脉冲,以通知CH451为4线串行 接口。将P1.1与DCLK连接可提供串行时钟,以使CH451在 其上升沿从DIN输入数据,并在其下降沿从DOUT输出数据 。 7171 LOAD用于加载串行数据,CH451一般在其上升沿加载移位 寄存器中的12位数据以作为操作命令进行分析并处理。也 就是说,LOAD的上升沿是串行数据帧的帧完成标志,此 时无论移位寄存器中的12位数据是否有效,CH451都会将 其当作操作命令来处理。 应注意,在级联电路中,单片机每次输出的串行数据必须是 单个CH451的串行数据的位数乘以级联的级数。下面介绍 该接口电路的驱动程序: 72 CH451初始化子程序: INIT:CLR P1.0 ;DIN脚先置低,当有上跳沿时 ;选择CH451为线串行接口 SETB P1.1;置DCLK为默认的高电平 SETB P1.0;置DIN为高电平,产生上跳 ;沿,选线串行接口 SETB P1.2;置LOAD脚为高电平 SETB P3.2 ;置 (P3.2)为输入 MOVB,#04H ;设置系统参数命令 MOV,#07H ;WatchDog使能,开键盘、显示功能 LCALL WRITE;调用写命令子程序WRITE MOV B,#03H ;设置移位命令 7373 MOV A,#00H ;开环左移 LCALL WRITE;调用写命令子程序WRITE MOVB,#05H;设置显示参数 MOVA,#00H ;不译码,位显示,最高亮度 LCALL WRITE;调用写命令子程序WRITE MOVB,#06H ;设置闪烁控制 MOVA,#00H ;不闪烁 LCALL WRITE;调用写命令子程序WRITE CLR IT0 ;置外中断请求信号为低电平触发 CLR IE0 ;清外中断的中断请求标志 SETB EX0 ;允许键盘中断 SETB EA;总中断允许 RET;子程序返回 7474 写入命令子程序: 入口:B、Acc中装入待写的12位命令数据,低位在 Acc中,高位在B的低位中 WRITE:CLR EX0;禁止键盘中断 CLR P1.2 ;置LOAD脚为低,命令开始 MOV R7,#08H ;将Acc中位送出 WRIT_8: RRC A ;低位在前,高位在后 CLRP1.1;置DCLK脚为低电平 MOV P1.0,C ;送出1位数据 SETB P1.1 ;时钟上升沿,通知CH451输入位数据 DJNZ R7,WRIT_8 ;8位数据未送完,继续 7575 MOV A,B MOV R7,#04H ;将B中位送出 WRIT_4:RRC A ;低位在前 高位在后 CLR P1.1;置DCLK脚为低电平 MOVP1.0,C;送出1位数据 SETBP1.1;产生时钟上升沿,通知 ;CH451输入位数据 DJNZ R7,WRIT_4;4位数据未送完,继续 SETB P1.2 ;产生加载上跳沿,通知 ;CH451处理命令数据 SETB EX0 ;允许键盘中断 RET 7676 读入键值子程序: 出口:键值数据在Acc中。 READ: CLR EXO ;禁止键盘中断 CLR P1.2 ;命令开始 MOV A,#07H ;读取键值命令的高位0111B MOV R7,#04H ;忽略12位命令的低位READ_4 READ_4:RRC A ;低位在前,高位在后 CLR P1.1;置DCLK脚为低电平 MOV P1.0,C;读入1位数据 SETB P1.1;置DCLK脚为高电平 DJNZ R7,READ_4;4位数据未完继续 SETB P1.2 ;加载上跳沿,通知CH451处理命令数据 MOVA ;先清除键值单元以便移位 7777 MOVR7,#07 ;读入位键值 READ_7:MOV C,P3.2 ;读入1位数据 CLRP1.1 ;置DCLK脚低电平,产生下跳 ;沿,通知CH451输出下一位 RLCA ;数据移入Acc,高位前,低位后 SETB P1.1;置DCLK脚为高电平 DJNZ R7,READ_7 ;7位数据未完继续 MOV IE0 ;清中断标志,读操作过程中 ;有低电平脉冲 SETB EX0 ;允许键盘中断 RET 7878 使用CH451扩展键盘显示接口,具有接口简单、占用 CPU资源少、外围器件简单、性能价格比高等优点,在各 种单片机系统中得以广泛的应用。 7979 10.3.4 专用接口芯片HD7279实现的键盘/显示器控制 HD7279是目前使用较广泛的另一种专用接口芯片。 1 HD7279A简介 能同时驱动8个共阴极LED数码管(或64个独立的LED 发光二极管)和64(88)键的编码键盘矩阵。控制LED 数码管采用动态扫描的循环显示方式。具有如下特性: n与单片机采用串口方式,仅占4条口线,接口简单; n内部有译码器,可直接接收BCD码或十六进制码,同 时具有两种译码方式,实现LED数码管位寻址和段寻址, 可方便地控制每位LED数码管中任意一段是否发光; 8080 n内部有驱动器,可直接驱动不超过25.4mm的LED数码 管。 n片选信号输入,易实现多于8位显示器或多于64键的键 盘控制。 n具有自动消除键抖动并识别有效键值的功能。 nHD7279A芯片占用口线少,外围电路简单,具有较高 性价比,已在键盘/显示器接口的设计中获得广泛应用。 (1)引脚说明与电气特性 为28脚标准双列直插式封装(DIP),单一+5V供电。 其引脚如图10-15所示,引脚功能见表10-4。 8181 图10-15 HD7279A的引脚 8282 8383 位驱动输出端DIG0DIG7连接8只LED数码管的共阴 极; 段驱动输出端SASG分别连接至LED数码管的ag段 的阳极,而DP脚连至小数点dp的阳极。 DIG0DIG7和DP以及SASG还分别是64键的键盘的 列线和行线,完成对键盘的译码和键值识别。 88矩阵阵列中的每个键值(见图10-19)可用读键盘 命令读出,键值范围是00H3FH。 与单片机连接仅需4条口线: 、DATA、CLK和 KEY。 8484 : 当单片机访问HD7279A芯片(写入命令、显示数据 、位地址、段地址或读出键值等)时,应将其置为低电平 。 DATA:串行数据端,当单片机向HD7279A芯片发送数据时 ,DATA为输入端;当单片机从HD7279A芯片读入键值时 ,DATA为输出端。 CLK:数据串行传送的同步时钟输入端,时钟的上升沿将数 据写入HD7279A中或从HD7279A中读出数据。 85 KEY:为按键信号输出端,在无键按下时为高电平,在 有键按下时变为低电平,并且一直保持到该按下键至释放 为止。 :为复位端,由低电平变为高电平,并经过18 25ms复位结束。通常,该端接+5V即可。若对可靠性要 求较高,则可外接复位电路,或直接由单片机控制。 RC:用于外接振荡元件,其典型值为R=1.5k, C=15pF。 NC:悬空。 HD7279A的电气特性如表10-5所示。 8686 87 (2)控制命令介绍绍 6条纯命令、7条带数据命令和1条读键盘 命令组成。 纯纯命令(6条)。所有纯命令都是单字节,见表10-6。 87 88 带带数据命令(7条)。均由双字节组成,第一字节为命 令标志码(有的还有位地址),第二字节为显 示内容。 a按方式0译码显译码显 示命令 88 命令中的a2、a1、a0表示LED数码管的位地址,表示 显示数据是送给哪一位LED的,L1表示LED最低位,L8表 示LED最高位,具体位地址的译码见表10-7。 8989 命令中的d3、d2、d1、d0为显示数据,收到这些数据 后,HD7279A按表10-8所示的规则译码和显示。dp为小 数点显示控制位,dp=1时,小数点显示,dp=0时,小数 点不显示。命令中的为无影响位。 9090 例如,命令第一字节为80H,第二字节为08H,则L1位 LED显示内容为8,小数点dp熄灭:命令第一字节为87H,第 二字节为8EH,则L8位LED显示内容为P,小数点dp点亮。 b按方式1译码显示命令 91 该命令和按方式0译码显 示的含义基本相同,不同的是译码 方式为1,LED显示的内容与十六进制相对应,如表10-9所示 。a2、a1、a0位地址译码表如表10-9所示 91 表10-9方式1译码显示表 例如,命令第一字节为C8H,第二字节为09H,则L1位 LED显示内容为9,小数点dp熄灭; 命令第一字节为C9H,第二字节为8FH,则L2位LED显 示内容为F,小数点dp点亮。 92 d3d0(十六进制 ) LED显示 d3d0(十六进制 ) LED显示 0H08H8 1H19H9 2H2AHA 3H3BHB 4H4CHC 5H5DHD 6H6EHE 7H7FHF 92 c不译码显示命令 命令中的a2、a1、a0仍为位地址,译码表如表10-8所 示。第2字节仍为LED显示内容,其中dp和AG分别代表 LED的小数点和对应的段,当取值为1时,该段点亮;取 值为0时,该段熄灭,见表10-10。 9393 可在指定位上显示字符。例如,若命令第一字节为95H, 第二字节为3EH,则在L6位LED上显示字符U,小数点dp 熄 灭。 d闪烁控制命令 94 命令规定了每个数码管的闪烁属性。d8d1分别对应 L8 L1位数码码管,其值为为1时时,LED不闪烁闪烁 ;其值为为0时时, LED闪烁闪烁 。如表10-11所示,该命令默认认所有数码管均不闪闪 烁烁。 94 例如,命令第一字节为88H,第二字节为97H,则L7、 L6、L4位LED闪烁。 e消隐控制命令 9595 该命令规定了每个数码管的消隐属性。d8d1分别对 应L8L1位数码管,其值为1时,LED显示;值为0时, 消隐,如表10-12所示。应注意至少要有一个LED数码管 保持显示,如全部消隐,该命令无效。 96 例如,命令第一字节为98H,第二字节为81H,则L7、L6 、L5、L4、L3、L2位LED消隐隐。 96 f段点亮命令 点亮某个LED数码管中的某一段或独立的64个LED发光 二极管中的某一个。d5d0取值为00H3FH,点亮段见表 10-13。 例如,命令第一字节为E0H,第二字节为00H,则点亮L1 位LED的g段;第二字节为10H,则点亮L3位LED的g段。 9797 9898 g段关闭命令 关闭某个数码管中的某一段。d5d0的取值为00H3FH, 所对应的关闭段同表10-12,仅将点亮段变为关闭段。 例如,命令第一字节为C0H,第二字节为00H,则关闭L1位 LED的g段;第二字节为10H,则关闭L3位LED的g段。 9999 读取键盘命令 从HD7279A读出当前按键值。命令第一字节为15H, 表示单片机写到HD7279A是读键命令,而第二字节d7 d0为从HD7279A中读的按键值,其范围为00H3FH。 当

温馨提示

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

评论

0/150

提交评论