单片机的接口技术.ppt
《单片机的接口技术.ppt》由会员分享,可在线阅读,更多相关《单片机的接口技术.ppt(152页珍藏版)》请在三一办公上搜索。
1、51单片机的I/O外设的接口,本章内容,51单片机的键盘与显示器接口键盘、显示器接口芯片8279,9.1 LED数码管的接口,LED(Light Emitting Diode)发光二极管缩写。LED数码管是由发光二极管构成的。,9.1.1 LED数码管的结构常见的LED数码管为“8”字型的,共计8段。每一段对应一个发光二极管。有共阳极和共阴极两种,如图9-1所示。共阴极发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。,图9-1 8段
2、LED数码管结构及外形,8段LED数码管结构,8段LED数码管的字型码,为了使数码管显示不同的符号或数字,要把某些段发光二极管点亮,就要为LED数码管提供段码(字型码)。LED数码管共计8段。正好是一个字节。习惯上是以“a”段对应段码字节的最低位。各段与字节中各位对应关系如表9-1所示。,按照上述格式,显示各种字符的8段LED数码管的段码如表10-2所示。,显示各种字符的8段LED数码管的段码如表9-2所示,表9-2 8段LED段码,其它显示器,除“8”字型的LED数码管外,市面上还有“1”型、“米”字型和“点阵”型LED显示器,如图9-2所示。本章均以“8”字型的LED数码管为例。,图9-2
3、 其他各种字型的LED显示器,9.1.2 LED数码管工作原理,图9-3所示为显示4位字符的LED数码管的结构原理图。N位位选线和8N条段码线。段码线控制显示字型,而位选线控制着该显示位的LED数码管的亮或暗。,图9-3 4位LED数码管的结构原理图,LED静态显示方式无论多少位LED数码管,同时处于显示状态。静态显示方式,各位的共阴极(或共阳极)连接在一起并接地(或接+5V);每位的段码线(adp)分别与一个8位的I/O口锁存器输出相连。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。正因为如此,静态显示方式的显示
4、无闪烁,亮度都较高,软件控制比较容易。图9-4为4位LED数码管静态显示器电路,各位可独立显示,静态显示方式接口编程容易,但是占用口线较多。对图9-4电路,若用I/O口线接口,要占用4个8位I/O口。因此在显示位数较多的情况下,所需的电流比较大,对电源的要求也就随之增高,这时一般都采用动态显示方式。,LED数码管有静态显示和动态显示两种显示方式,图9-4 4位LED静态显示电路,LED静态显示方式,LED动态显示方式,无论在任何时刻只有一个LED数码管处于显示状态,即单片机采用“扫描”方式控制各个数码管轮流显示。在多位LED显示时,为简化硬件电路,通常将所有显示位的段码线的相应段并联在一起,由
5、一个8位I/O口控制,而各位的共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选通。图9-5所示为一个4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。必须采用动态的“扫描”显示方式。即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要有显示的字符的段码。,图9-5 4位8段LED动态显示电路,LED动态显示方式,虽然这些字符是在不同时刻出现,而在同一时刻,只有一位显示,其他各位熄灭,由于余辉和人眼的“视觉暂留”作用,只要每位显示间隔足够短,则可以造成“多位同时亮”的假象,达到同时显示的效果。LE
6、D不同位显示的时间间隔(扫描间隔)应根据实际情况而定。显示位数多,将占大量的单片机时间,因此动态显示的实质是以牺牲单片机时间来换取I/O端口的减少。图9-6所示为8位LED动态显示的过程。图9-6(a)所示为显示过程,某一时刻,只有一位LED被选通显示,其余位则是熄灭的;图9-6(b)所示为实际的显示结果,人眼看到的是8位稳定的同时显示的字符。动态显示的优点是硬件电路简单,显示器越多,优势越明显。缺点是显示亮度不如静态显示的亮度高。如果“扫描”速率较低,会出现闪烁现象。,LED动态显示方式,图9-6 8位LED动态显示过程和结果,LED动态显示方式,9.2 单片机键盘接口技术,键盘输入需解决三
7、个问题(1)判别是否有键按下?若有,进入下一步工作。(2)识别哪一个键被按下,并求出相应的键值。(3)根据键值,找到相应键值的处理程序入口。,9.2.1 键盘接口的任务,键盘输入的特点,常见键盘:触摸式键盘、薄膜键盘和按键式键盘,最常用的是按键式键盘。按键实质上就是一个开关。如图9-7(a)所示,按键开关的两端分别连接在行线和列线上,通过键盘开关机械触点的断开、闭合,其行线电压输出波形如图9-7(b)所示。,图9-7 键盘开关及其行线波形,键盘输入的特点,图9-7(b)所示的t1和t3分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关,一般为510ms,t2
8、为稳定的闭合期,其时间由按键动作确定,一般为十分之几秒到几秒,t0、t4为断开期。,图9-7 键盘开关及其行线波形,按键的识别,键的闭合与否,行线输出电压上就是呈现高电平或低电平。高电平,表示键断开,低电平则表示键闭合,通过对行线电平的高低状态的检测,可确认按键按下以及按键释放与否。为了确保对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。通常t1和t3小于10ms。按键闭合时的电压抖动波形见图9-8。,图9.8 键闭合和断开时的电压抖动,如何消除按键的抖动,按键去抖动的方法有两种:一种软件延时,思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序
9、后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。采取本措施,可消除两个抖动期t1和t3的影响。另一种是采用专用的键盘/显示器接口芯片,这类芯片中都有自动去抖动的硬件电路,9.2.2 键盘工作原理,键盘可分为两类:非编码键盘和编码键盘。非编码键盘非编码键盘是利用按键直接与单片机相连接而成,它通常使用在按键数量较少,系统功能较简单,需处理的任务较少的场合,可以降低成本、简化电路设计。非编码键盘可分为独立式和矩阵式。(1)独立式键盘:结构:一组相互独立的键盘,每个
10、键盘都与单片机的I/O口的一条口线连接,相互独立。独立式键盘的结构见图9-9。原理:当任何一个键被按下时,与其相连的输入线被置成“0”,平时该线为“1”。通过检测I/O输入线的电平状态,判断哪个按键被按下。特点:接口简单,但若键较多,将占用许多I/O线。,图9-9 独立式键盘结构,对于图9-8的键盘,图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平。,键处理子程序,KEYIN:MOVA,#0FFH;置P1口为“1”,设置P1口为输入状态MOVP1,AMOVA,P1;输入键状态CJNEA,#0FFH,QUDOU;有键按下,跳去抖动LJMPRETURN;无键按下,返回QUDOU:MOV R
11、3,A;8个按键的状态送R3保存LCALL DELAY10;调用延时子程序,软件去键抖动MOVA,P1;再一次读入8个按键的状态CJNEA,R3,RETURN;两次键值比较,不同,是抖动引起,转RETURNJNBACC.0,P0F;查询0号键JNBACC.1,P1F;查询1号键JNBACC.2,P2F;查询2号键JNBACC.3,P3F;查询3号键JNBACC.4,P4F;查询4号键JNB ACC.5,P5F;查询5号键JNB ACC.6,P6F;查询6号键JNB ACC.7,P7F;查询7号键,键处理程序(续),LJMPRETURN P0F:LJMPPROM0;入口地址表P1F:LJMPPR
12、OM1 P6F:LJMPPROM6 P7F:LJMPPROM7PROM0:;0号键功能程序LJMPRETURN;0号键处理完返回键盘扫描 PROM7:;7号键功能程序LJMPRETURN;7号键处理完返回键盘扫描RETURNRET,(2)矩阵式(行列式)键盘,结构:键的数目多,将键按行列排成矩阵形式。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。图9-10为44的矩阵式键盘结构。优点:在按键数目较多的场合,节省I/O口线,图9-10 44矩阵式键盘结构,矩阵式(行列式)键盘的按键识别,矩阵式键盘按键的识别方法分为扫描法和反转法。扫描法第1步,识别键盘有无键按下:列线输出全0然后输入行
13、线状态,若行线状态为全1(1111)则没有键按下;若行线状态一定不为全为1,则一定有任一键按下。第2步,识别出具体的键位:逐列扫描,先第一列输出为0,其他列为1,列编码为1110。然后输入行线状态,若行线状态为全1(1111),即按键不在此列线交叉点上,继续扫描。第二列输出为0,其他列为1,列编码为1101,再输入行线状态,若行状态不是全1,即按键在该列交叉点上,否则继续扫描。,扫描法识别按键,将此时的扫描列码与行码组合得到的按键码,即可确定按键的位置。如图9-10所示的“3”键,它位于第4列和第1行交叉点上,其列码为:0111,行码为:1110,键码为:0111,1110B=7EH,图9-1
14、0 44矩阵式键盘结构,每个键的键码,负逻辑表示-行列线数据求反组合,上例中的各键值分别为:88H84H82H81H48H44H42H41H28H24H22H21H18H14H12H11H,正逻辑表示-行列线数据直接组合,图9-10中的各键码分别为:77H7BH7DH7EHB7HBBHBDHBEHD7HDBHDDHDEHE7HEBHEDHEEH,线反转法,让行线编程为输入线,列线编程为输出线,并使输出线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。再把行线编程为输出线,列线编程为输入线,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。线反转法只需经过两步便能获得此
15、按键所在的行列值,比较简练。下面以图9-11所示的矩阵式键盘为例,介绍线反转法的具体步骤。,图9-11 采用线反转法的矩阵式键盘,线反转法,假设键3被按下。第一步,P1.0P1.3输出全为“0”,然后,读入P1.4P1.7线的状态,结果P1.4=0,而P1.5P1.7均为1,因此,第1行出现电平的变化,说明第1行有键按下;第二步,让P1.4P1.7输出全为“0”,然后,读入P1.0P1.3位,结果P1.0=0,而P1.1P1.3均为1,因此第4列出现电平的变化,说明第4列有键按下。综上所述,即第1行、第4列按键被按下,此按键即键3按下。,图9-11 采用线反转法的矩阵式键盘,键盘接口完成的主要
16、功能:,键盘扫描:判断是否有键按下;键识别:确定闭合键的行列位置;产生闭合键键码;排除多键、串键(复按)及去抖动。,键的识别和键功能实现,键的识别由接口电路完成,即键盘接口问题;键的功能实现由中断程序完成。,键处理子程序,在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,转相应的健处理子程序,实现该键所设定的功能。,键处理程序的流程如图9-12,图9-12键处理流程图,9.3 51单片机键盘接口和键功能的实现,单片机的键盘键接口可以有多种方法实现。使用单片机本身的并行口或串行口;使用通用接口芯片(8255、8155等);使用专用接口芯片如8279,周立功公司的ZLG7289A,ZLG
17、7290B,MAX7219,南京沁恒公司的CH451,HD7279和BC7281等。在单片机应用系统设计中,一般都是把键盘和显示器放在一起考虑。也有的系统仅单独需要键盘或显示器。介绍几种实用的键盘/显示器接口的设计方案。,9.3.1 利用AT89S51串行口实现的键盘/显示器接口(举例),使用AT89S51的串行口的方式0的输出方式,构成键盘/显示器接口,如图9-13所示。8个74LS164:74LS164(0)74LS164(7)作为8位LED数码管的段码输出口,AT89S51的P3.4、P3.5作为两行键的行状态输入线,P3.3作为TXD引脚同步移位脉冲输出控制线,P3.3=0时,与门封死
18、,禁止同步移位脉冲输出。这种方案主程序可不必扫描显示器,软件设计简单,使单片机有更多的时间处理其他事务。下面列出显示子程序和键盘扫描子程序。,图9-13 用AT89S51串行口扩展键盘/显示器,显示子程序:,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;将段码送串行口的SBUFDL1:JNB TI,DL1;查询1个字节的段码输出完否?C
19、LRTI;1字节的段码输出完,清TI标志 DECR0;指向下一个显示数据单元,DJNZR7,DL0;段码个数计数器R7是否为0,如不;为0,继续送段码 CLR P3.3;8个段码输出完毕,关闭显示器输出 RET;返回SEGTAB:DB 0C0H,0F9H,0A4H,0B0H;共阳极段码表DB99H,92H,82H,0F8H,90HDB88H,83H,0C6H,0A1H,86HDB8FH,0BFH,8CH,0FFH,0FFH,显示子程序:,键盘扫描子程序:,KEYI:MOVA,00H;判断有无键按下,使所有列线为0 MOVSBUF,A;扫描键盘的(8)号74LS164输出为;00H,使所有列线为
20、0KL0:JNBTI,KL0;串行输出完否?CLRTI;串行输出完毕,清TIKL1:JNBP3.4,PK1;第1行有闭合键吗?如有,跳PK1进行处理 JB P3.5,KL1;在第2行键中有闭合键吗?无闭合键跳KL1PK1:ACALL DL10;调用延时10ms子程,软件消抖动 JNB P3.4,PK2;判断是否由抖动引起?JB P3.5,KL1PK2:MOV R7,08H;不是抖动引起的 MOV R6,0FEH;判别是哪一个键按下,FEH为最左1列为低MOV R3,00H;R3为列号寄存器 MOV A,R6KL5:MOV SBUF,A;列扫描,列扫描码从串行口输出,KL2:JNB TI,KL2
21、;等待串行口发送完 CLR TI;串行口发送完毕,清TI标志 JNB P3.4,PKONE;读第1行线状态,第1行有键闭合跳PKONEJB P3.5,NEXT;读第2行状态,2行某键否?MOV R4,08H;2行中有键被按下,行首键号08H送R4 AJMP PK3PKONE:MOV R4,00H;1行键中有键按下,行首键号00H送R4PK3:MOV SBUF,00H;等待键释放,发送00H使所有列线为低KL3:JNB TI,KL3;判1个字节是否发送完毕 CLR TI;发送完毕,清标志KL4:JNB P3.4,KL4;判行线状态 JNB P3.5,KL4 MOV A,R4;两行线均为高,说明键
22、已释放 ADD A,R3;计算得键码A RET,键盘扫描子程序:,NEXT:MOV A,R6;列扫描码左移一位,判下一列键 RL A MOV R6,A;记住列扫描码于R6中 INC R3;列号增1 DJNZ R7,KL5;列计数器R7减1,8列键都检查完否?AJMP KEYI;8列扫描完,开始下一个键盘扫描周期DL10:MOV R7,0AH;延时10ms子程序DL:MOV R6,0FFHDL6:DJNZ R6,DL6 DJNZ R7,DL RET,键盘扫描子程序:,本例中,如只需LED数码管显示部分,可把键盘部分的电路去掉即可;如只需键盘,可把LED数码管部分的电路去掉。,9.3.2 使用81
23、55作为键盘接口,接口电路逻辑图(见图9-14),图9-14 8031用8155扩展I/O口组成的矩阵式键盘连线图,8155PA口地址7F01HPC口地址7F03H,判断有无键按下,PA口输出00H,PC口输入行状态信号;若PC3PC01111,有键按下,去抖动,延时510ms后再判断有无键按下,确认哪个键被按下及其键号,8155的PA口依次输出下列扫描字:,键扫描及识别过程,8155:PA口输出列扫描信号,PC口输入行状态信号,,,则每个键的键值(列行组合),FE E、FD E、FB E、F7 E、EF E、DE E、BF E、7F E FE D、FD D、FB D、F7 D、EF D、DE
24、 D、BF D、7F D FE B、FD B、FB B、F7 B、EF B、DE B、BF B、7F B FE 7、FD 7、FB 7、F7 7、EF 7、DE 7、BF 7、7F 7,每个键的键号(自己安排),N=行首键号+列号,确认哪个键被按下及其键号(续),8155的PC口输入行状态可能为下列之一:,等待键释放后再进行进一步处理。,键扫描程序框图,入口,有键按下?,延时12ms,有键按下?,N,Y,N,Y,键号入栈保存,按键抬起?,N,Y,键号送A,返回,判断按键是否抬起(以防止重复进行键处理),键扫描程序,ORG1000H KEY1:ACALLKS1;调用判断有无键按下子程序JNZLK
25、1;有键按下,转去抖动AJMPKEY1;无键按下,返回LK1:ACALLTM12S;延时12msACALLKS1;再查有无键按下JNZLK2;确实有键按下,逐行扫描,确定具体键AJMPKEY1;无键按下,返回LK2:MOVR2,#0FEH;首列扫描字送R2MOVR4,#00H;首列号R4LK4:MOVDPTR,#7F01H;首列扫描字送8155的PA口MOVA,R2;第一列扫描MOVXDPTR,A;使第i列为0(R2中Di位为0),键扫描程序(续),INCDPTRINCDPTR;指向8155的PC口MOVXA,DPTR;读入行状态JBACC.0,LONE;0行无键按下,转查1行MOVA,#00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 接口 技术
链接地址:https://www.31ppt.com/p-5937951.html