MCS-51单片机的交互通道配置与接口_第1页
MCS-51单片机的交互通道配置与接口_第2页
MCS-51单片机的交互通道配置与接口_第3页
MCS-51单片机的交互通道配置与接口_第4页
MCS-51单片机的交互通道配置与接口_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

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

文档简介

第6章MCS-51单片机的交互通道配置与接口主要内容:

从工程应用角度介绍了MCS-51单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器、微型打印机等。介绍了多种实用方案和设计技巧。重点在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。难点在于使用动态方法进行键盘和显示的硬件及软件设计。第6章MCS-51单片机的交互通道配置与接口主要内容:1

人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。6.1MCS-51单片机与键盘的接口技术键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。键盘的分类:按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。6.1.1概述

键盘输入的主要对象:各种按键或开关。1.独立连接式键盘

每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。适用场合:多用于设置控制键、功能键。适用于键数少的场合。人机界面:是指人与计算机系统进行信息交互的接口,包括信2

独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。2.矩阵连接式键盘

键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。适用场合:多用于设置数字键,适用于键数多的场合。独立连接式键盘连接图如右图所示。当没有键被按下3

4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。扫描方式:低电平扫描(回送线必须被上拉为高电平)、高电平扫描(回送线需被下拉为低电平)。右图中给出了低电平扫描的电路。3.薄膜开关特点:不需要进行导线与开关间的焊接,结构简单、体积小、防尘、防水、防有害气体侵蚀、寿命长、可靠性高。应用:与按键式键盘类似,多个薄膜开关也可按照独立式或矩阵式设计内部电路,其原理与普通键盘相同。

4行4列矩阵式键盘连接图如右图所示。这种键盘适合采4按键开关去抖动问题

*键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。按键开关去抖动问题*键盘的抖动时间一般为5~10ms,抖动5⑴硬件去抖动

消除抖动不良后果的方法:其中RC滤波电路去抖动电路简单实用,效果较好。⑵软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。⑴硬件去抖动消除抖动不良后果的方法:其中RC滤波电路去抖6

(1)开关状态的可靠输入。必须消除键抖动。可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟10~20ms

(2)键盘状态的监测方法——中断方式还是查询方式。

(3)键盘编码方法。

(4)键盘控制程序的编制。。6.1.3键盘接口

功能:对键盘上所按下的键进行识别。分类:

(1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。

6.1.2使用键盘时必须解决的问题

(1)开关状态的可靠输入。必须消除键抖动。可以采7(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统。键盘。1.键盘接口的工作原理

对于矩阵式键盘,如上页图所示,键盘的行线X0~X3通过电阻接+5V,当键盘上没有键闭合时,所有的扫描线和回送线都断开,无论扫描线处于何种状态,回送线都呈高电平。当键盘上某一键闭合时,则该键所对应的扫描线和回送线被短路,可以确定,变为低电平的回送线与扫描线相交处的键闭合。

CPU对键盘扫描的方式:程序控制的随机方式(CPU空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。

CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。

(2)非编码键盘:采用软件编/译码的方式,通过扫描82.键输入程序的设计方法

(1)判断键盘上是否有键闭合;(2)消除键的机械抖动;(3)确定闭合键的物理位置;(4)得到闭合键的编号;(5)确保CPU对键的一次闭合只做一次处理3.键盘接口方式(1)独立式键盘接口(静态方式)特点:结构简单,每个按键接单片机的一条I/O线,通过对输入线的查询,可以识别每个按键的状态。[例题]

在MCS-51单片机系统中,设计一个含8个按键的独立式键盘。解:在MCS-51中,含8个按键的独立式键盘的线路连接如下页图所示,8个按键经上拉电阻拉高后分别接到MCS-51单片机P1口的8条I/O线上(P1.0~P1.7)。2.键输入程序的设计方法9

在无键按下的情况下,P1.0~P1.7线上输入均为高电平。当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。

P1口8条I/O线经与非门74LS30实现逻辑与非后,再经过1个非门74LS04进行信号变换,然后接至MCS-51的引脚上,可通过中断的方式处理键盘。在中断服务程序中,先延时20ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。在无键按下的情况下,P1.10

CLOSE: JNB ACC.7,KEY7 ;查询7号键 JNB ACC.6,KEY6 ;查询6号键 JNB ACC.5,KEY5 ;查询5号键 JNB ACC.4,KEY4 ;查询4号键 JNB ACC.3,KEY3 ;查询3号键 JNB ACC.2,KEY2 ;查询2号键 JNB ACC.1,KEY1 ;查询1号键 JNB ACC.0,KEY0 ;查询0号键INT0: RETIKEY7: …… ;7号键处理程序KEY71: MOV A,P1 ;再读P1口各引脚 JNBACC.7,FUNC71 ;确认键是否释放 RETIKEY6: …… ;其他键处理程序 …… D20: …… ;20ms延时子程序 …… END

CLOSE: JNB AC11

主程序如下:

ORG 0000H LJMP MAIN ORG 0003H ;外部中断0中断服务入口地址 LJMP INT ;转中断服务 ORG 0100H MAIN: SETB EA ;开总中断允许 SETB EX0 ;开INT0中断 SETB IT0 ;下降沿有效 ……中断服务程序清单如下:

INTI CALL D20 ;延时去抖动 MOV P1,#0FFH ;P1口送全1值(准双向口原因) MOV A,P1 ;读P1口各引脚 CJNE A,#0FFH,CLOSE ;验证是否确实有键闭合 AJMP INT0 ;无键按下(按键时间过短)则退 ;出中断主程序如下:12(2)矩阵式键盘接口——行反转法

矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双向I/O口分别接行、列线。步骤如下:

(1)由行线输出全“0”,读入列线,判有无键按下。(2)若有键按下,再将读入的列列线输出,读进行线的值。(3)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键的唯一的特征值。行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。[例题]请为8051微处理器设计一个由4行4列键阵构成的键盘。解:4×4矩阵键盘的线路连接如下页图所示。其中P2口的低4位作为输出线。P1口的低4位作为输入线,输入线通过74LS21进行逻辑相与后作为8051的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。

(2)矩阵式键盘接口——行反转法矩阵式键盘按键13(1)查询闭合键的位置子程序KEYR

KEYR子程序用以确定每组线中哪一位为0,是否有多个0。在调用前,应将读某组线的数据存入累加器A中。KEYR子程序返回时,某组线中0的位置(0~3)保存在R3中。按键闭合引起中断后,执行中断服务程序。(1)查询闭合键的位置子程序KEYR14表2-5工作寄存器组选择控制表KEYR子程序如下:

KEYR: CJNE A,#0FEH,TESTP11 ;测试P1.0 MOV R3,#0 ;P1.0=0,说明被按键的输入线为P1.0 LJMP FINISH ;返回TESTP11: CJNE A,#0FDH,TESTP12 ;测试P1.1 MOV R3,#1 LJMP FINISHTESTP12: CJNE A,#0FBH,TESTP13 ;测试P1.2 MOV R3,#2 LJMP FINISHTESTP13: CJNE A,#0F7H,FINISH ;测试P1.3 MOV R3,#3FINISH: RET表2-5工作寄存器组选择控制表KEYR子程序如下:15

(2)中断服务程序

中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键做出处理。中断服务程序如下:

ORG1000H INT11:LCALLDELAY ;延时去抖动 MOV A,P1 ;读输入线 ANL A,#0FH ;判断是否有键闭合 CJNE A,#0FH,TEST ;有键闭合,转判断按键程序 RETI ;无键闭合,返回TEST:MOV B,A ;暂存 LCALL KEYR ;调用读取子程序 MOV 40H,R3 ;暂存在40H单元 MOV P2,#0FFH ;输出线写1 MOV P1,B ;输入线写入数据 MOV A,P2 ;读输出线 LCALL KEYR ;调用读取子程序 XCH A,R3 SWAP A ORL 40H,A ;得按键特征值 RETI (2)中断服务程序16

中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。(3)去抖动的延时子程序DELAY

利用CPU的空闲方式,通过定时器T1实现延时,T1必须预先置初值,以得到需要的延迟时间。设晶振频率为6MHz,欲延时20ms,定时时间为:(216-TC)×6/12=20×103μs,初值:TC=25536=63C0H。程序如下:

DELAY: MOV TOMD,#11H ;方式1定时 MOV TL1,#0C0H ;定时器1定时初值 MOV TH1,#63H SETB EA ;开中断 SETB ET1 ;开定时器1中断 SETB PT1 ;定时器1为高级中断(因被键盘中断调用) SETB TR1 ;启动定时器 ORL PCON,#1 ;启动空闲方式,实际CPU在此处等待 CLR TR1;以下四条指令只有在延时后,定时器被唤醒,才能执行 CLR PT1 CLR ET1 RET END 中断程序结束后,键的特征值存放在40H单元中。此键17(4)通过串行口扩展键盘接口

MCS-51系列单片机的串行口与串/并转换芯片配合(如串入并出芯片74LS164)可以扩展键盘。[例题]

利用MCS-51的串行口与串/并转换芯片配合,扩展2行8列的键盘接口,键号为0~15。要求给出其硬件连接和键盘查询子程序。解:串口与串/并转换芯片配合扩展键盘的线路连接如下图所示。

(4)通过串行口扩展键盘接口MCS-51系列单片18

其中,P1.0和P1.1作为行线。键盘的编码为:P1.0线上的8个键分别为00H+(00H~07H),P1.1线上的8个键分别为08H+(00H~07H)。扫描线(00H~07H)的具体值存放在R4中。程序采取查询方式读取键号,并且考虑了键的抖动问题。DLY1是延时子程序。

程序如下:

ORG1000H SERKEY:MOVSCON,#00H ;设置串行口 MOVA,#00H ;键盘初始化,送00H到列线上 LCALLVARTO ;发送数据CHK:JNBP1.0,CHK0 ;检查是否有键按下 JNBP1.1,CHK0 ;检查是否有键按下 AJMPCHK ;无键按下,继续查找CHK0:LCALLDLY1 ;调用10ms延时子程序,去抖 JNBP1.0,CHEN ;确实有键按下,转CHEN JNBP1.1,CHEN AJMPCHK ;无键按下,继续查找CHEN:MOVR2,#0FEH ;首列扫描字送R2,查键号,最低位为0 MOVR4,#00H ;首列偏移值送R4其中,P1.0和P1.1作为行线。键盘的编码19

CHKN:MOVA,R2 ;发送列扫描字 LCALLVARTO JB P1.0,CH1 ;检查P1.0有无键按下;若无,转CH1 MOVA,#0 ;第一行首列值送A,00H+(R4) AJMPCKEY ;转求键号CH1:JB P1.1,NEXT ;检查P1.1有无键按下;若无,转NEXT MOVA,#8H ;第二行首列值送ACKEY:ADDA,R4 ;求键号,并入栈保护 RET NEXT:INCR4 ;指向下一列 MOVA,R2 ;取出原扫描字 JNBACC.7,KEND ;是否已检查完8列? RLA ;8列未完,指向下一列 MOVR2,A ;列扫描字送R2 AJMPCHKN ;8列未完,检查下一列KEND:AJMPSERKEY ;8列查完,未查到有键按下,等待VARTO:MOVSBUF,A ;发送A中数据 JNBTI,$ ;发送等待 CLRTI ;清除 RET DLY1: …… ;延时10ms子程序(略) END ;结束CHKN:MOVA,R2 ;206.2MCS-51单片机与显示器的接口技术

显示器用于实现单片机应用系统中的数据输出和状态的反馈。单片机系统中常用的显示器有发光二极管、七段数码显示器、液晶显示器等。6.2.1LED显示器及其接口

发光二极管简称LED(LightEmittingDiode)。LED显示器从外观可分为“8”字形的七段数码管、米字形数码管、点阵块、矩形平面显示器、数字笔划显示器等。1.七段LED数码显示器

七段LED数码管显示器能够显示十进制或十六进制数字及某些简单字符。但控制简单,使用方便,在单片机系统中应用较多。其结构如下页图所示。6.2MCS-51单片机与显示器的接口技术21

上图中的a~g七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。

单片机系统扩展LED数码管时多用共阳LED。共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。通常每个段笔画要串一个数百欧姆的降压电阻。上图中的a~g七个笔划(段)及小数点dp均为发22MCS-51单片机的交互通道配置与接口232.LED点阵模块显示器

LED点阵模块显示器是指由发光二极管排成一个m×n的点阵,每个发光二极管构成点阵中的一个点。这种显示器显示的字形逼真,能显示的字符比较多,但控制比较复杂。适用于显示汉字、图形和表格,广泛应用于公共场合的信息发布。七段LED字形码如下表所示。2.LED点阵模块显示器七段LED字形码如下表所示。243.LED的驱动接口

LED工作时需要一定的工作电流,才能正常发光。单个LED实际上是一个压降为1.2~1.5V的发光二极管,流过LED的电流大小决定了它的发光强度,R为限流电阻。适当减小限流电阻可以增加LED的工作电流,使LED的显示效果更好。但工作电流过大,会对驱动器件、LED造成损害。通常每个段笔画要串一个数百欧姆的降压电阻。下图为单个LED的驱动接口电路。3.LED的驱动接口254.LED数码管的显示与驱动

LED数码管显示器的工作方式:静态和动态两种显示方式。(1)静态显示方式

静态显示方式的各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。其特点是显示稳定,无闪烁,用元器件多,占I/O线多,无须扫描。系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,节省CPU时间,提高CPU的工作效率,编程简单。

[例题]

利用在8051串行口扩展多片串行输入并行输出的移位寄存器74LS164作为静态显示器接口的方法,设计3位静态显示器接口,并写出显示更新子程序,实现将7FH~7DH3个单元的数值分别显示在3位LED2~LED0上。4.LED数码管的显示与驱动LED数码管显示器26解:接口电路如图下图所示。3个共阳极数码管的公共端均接Vcc,段码通过串行口,采用串—并转换原理,分别送出3个数码管的段码(先送出的段码字节在LED2数码管上显示),图中的电阻值取100~500。解:接口电路如图下图所示。3个共阳极数码管的公共端均接Vcc27程序如下:

ORG 1000H DISPSER: MOV R5,#03H ;显示3个字符 MOV R1,#7FH ;7FH~7DH存放要显示的数据DL0: MOV A,@R1 ;取出要显示的数据 MOV DPTR,#STAB ;指向段数据表 MOVC A,@A+DPTR ;查表取字形数据 MOV SBUF,A ;送出数据,进行显示 JNB T1,$ ;输出完否? CLR T1 ;输出完,清中断标志 DEC R1 ;再取下一个数据 DJNZ R5,DL0 ;循环3次 RET ;返回STAB: DB 0C0H,0F9H,0A4H,0B0H;段数据表(共阳极) DB· …… …… END 程序如下:28(2)动态显示方式

动态显示方式是指一位一位地轮流点亮每位显示器,与各数码管接口的I/O口线是共用的。其特点是有闪烁,用元器件少,占I/O线少,必须扫描,花费CPU时间,编程复杂。

[例题]设计89S51通过74LS273扩展6位七段共阳极LED显示器。

解:接口电路如下页图所示。在程序中通过P0口将相应的字形码写入74LS273,P2.0~P2.5作为段码输出口,P0口的端口地址为00FFH。进行扫描时,P2的低6位依次置1,依次选中了从左至右的显示器。使用74LS04作为段码输出驱动(反相驱动),所以共阴极数码管在段数据表中的字形码应与共阳极数码管的字形码相同。显示器就可以显示出6位字符。(2)动态显示方式动态显示方式是指一位一位地轮流29

说明:1、单片机WR引脚要与273的CLK连接2、273的CLR引脚要与VCC连接3、DPTR值不一定是7FFFh,用FFH可消除闪烁说明:1、单片机WR引脚要与273的CLK连接306.2.2LCD显示器及其接口

液晶显示器简称LCD(LiquidCrystalDiodes)是利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。其特点是体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中有着日益广泛的应用。1.LCD的分类及特点分类:笔段式和点阵式(可分为字符型和图像型)。笔段式LCD显示器:类似于LED数码管显示器。每个显示器的段电极包括a,b,c,d,e,f,g七个笔划(段)和一个背电极BP(或COM)。可以显示数字和简单的字符。

点阵式LCD显示器:段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。点阵式LCD的控制一般采用行扫描方式,如图右所示为显示字符“A”的情况。6.2.2LCD显示器及其接口液晶显示器简312.笔段式LCD液晶显示器的驱动

在LCD的公共极(一路为背电极)加上恒定的交变方波信号,通过控制段极的电压变化,在LCD两极间产生所需的零电压或二倍幅值的交变电压,以达到LCD亮、灭的控制。在笔段式LCD的段电极与背电极间施加周期地改变极性的电压(通常为4V或5V),可使该段呈黑色。3.LCD显示模块LCM(LiquidCrystalDisplayModule)

在实际应用中,用户很少直接设计LCD显示器驱动接口,一般是直接使用专用的LCD显示驱动器和LCD显示模块LCM。LCM是把LCD显示屏、背景光源、线路板和驱动集成电路等部件构造成一个整体,作为一个独立部件使用。其特点是功能较强、易于控制、接口简单,在单片机系统中应用较多。其内部结构如下页图所示。LCM一般带有内部显示RAM和字符发生器,只要输入ASCII码就可以进行显示。

2.笔段式LCD液晶显示器的驱动在LCD的公32LCD显示器接口原理

1.LCD的基本结构及工作原理图液晶显示器基本结构LCD显示器接口原理 1.LCD的基本结构及工作原理图液33液晶字符显示屏液晶图形点阵显示屏液晶字符显示屏34

LCD显示模块LCM按显示功能可分为:LCD段式显示模块、LCD字符型显示模块、LCD图形显示模块三类。HD44780字符显示模块是较常用的LCD显示模块,共有14个引脚,其中,8个数据引脚,3个控制引脚,3个电源引脚。每个HD44780可控制的字符可达每行80个,具有驱动16×40点阵的能力。具有其自身的11条指令构成的指令系统,用户对模块写入适当的控制命令,即可完成清屏、显示、地址设置等操作。LCD显示模块LCM按显示功能可分为:LCD段式35各引脚功能定义如下表所示。各引脚功能定义如下表所示。36[例题]

设计8051单片机驱动HD44780显示模块的接口电路。解:8051单片机与HD44780显示模块的线路连接如下图所示,8051的P1口与HD44780的数据线相连,HD44780的端信号由8051的P3.5提供,HD44780的通信允许信号E由8051的P3.3提供,HD44780的寄存器选择信号RS由8051的P3.4提供。

HD44780初始化的方法主要有以下两种:(1)利用模块内部的复位电路进行初始化,完成清除显示、功能设置、开/关显示、设置光标状态及闪烁功能、方式设置。(2)利用软件编程实现初始化。[例题]设计8051单片机驱动HD44780显示模块的接口371602液晶显示模块接线图(16字符×2行)1602液晶显示模块接线图(16字符×2行)386.3利用MCS-51的串行口实现键盘和显示器接口1.接口电路

应用MCS-51单片机的串行口方式0的输出方式,在串行口外接移位寄存器74LS164,构成键盘和显示器接口,其硬件接口如下页图所示(图中只画出三位LED静态显示和16个按键,用户根据需要可以扩展)。采用静态显示,软件设计比较简单,节约CPU的资源。 6.3利用MCS-51的串行口实现键盘和显示器接口39MCS-51单片机的交互通道配置与接口402.软件设计显示子程序如下:

ORG 1000H DSPSER: SETB P3.3 ;开放显示输出 MOV R7,#03H ;送出的显示段码个数 MOV R0,#7FH ;7FH~7DH为显示缓冲区DSPS1: MOV A,@R0 ;取出要显示的数据 ADD A,#0DH ;加上偏移量 MOVC A,@A+PC ;查段码表TAB1 MOV SBUF,A ;经过串行口将段码送出DSPS2: JNBTI,DSPS2 ;数据发送完? CLRTI DECR0 ;指向下一个数据单元 DJNZR7,DSPS1 ;三个显示器是否全部显示? CLRP3.3 ;三个数据显示完,关闭送显示数据通道 RET TAB1: DB …… ;段码表2.软件设计41键盘扫描子程序如下:

KEYS1: MOV A,#00H MOV SBUF,A ;扫描键盘全部输出0KSY0: JNB TI,KSY0 ;数据发送完? CLR TI KSY1: JNB P3.4,PKS1 ;有键闭合吗?有则转PKS1处理 JB P3.5,KSY1 ;第二行有键闭合吗?PKS1: ACALL DELAY10 ;调用延时10ms子程序,键盘去抖 JNB P3.4,PKS2 ;有键闭合吗? JB P3.5,KSY1 ;无键闭合,是抖动PKS2: MOV R7,#08H ;不是抖动引起的 MOV R6,#0FEH ;判断是哪个键按下? MOV R3,#00H MOV A,R6 KSY2: MOV SBUF,A KSY3: JNB TI,KSY3 ;等待串行口发送完 CLR TI JNB P3.4,PKONE ;是第一行的某键按下? JB P3.5,NEXT ;是第二行的某键按下? MOV R4,#08H ;第二行有键按下 AJMP PKS3 PKONE: MOV R4,#00H ;第一行有键按下键盘扫描子程序如下: 42

PKS3: MOV SBUF,#00H ;等待键的释放KSY4: JNB TI,KSY4 ; CLR TI KSY5: JNB P3.4,KSY5 ;是第一行的某键按下? JNB P3.5,KSY5 MOV A,R4 ADD A,R3 RETNEXT: MOV A,R6 ;判断下一列是否有键按下 RL A MOV R6,A INC R3 DJNZ R7,KSY2 ;8列是否全部扫描完? AJMP KEYS1 ;扫描完成DELAY10: ;延时10ms子程序 …… RET END 6.3.3利用专用芯片实现键盘和显示器接口

键盘的处理和显示的处理可由专用芯片完成,键盘和显示器管理专用芯片种类较多,常用的键盘和显示器管理专用芯片有Intel公司的8279芯片,可实现64个按键、16位LED显示器的管理。PKS3: MOV SBU43

在由单片机组成的控制系统中,大多数外围电路是处于各种各样的复杂环境中,如控制对象可能处于大电流、高电压的情况。控制的执行机构可能是电动机、继电器或电磁铁等大功率机构。因此,单片机不可能和这些外部机构直接连接。通常必须采取两个基本措施:一是采用隔离的方法把单片机的工作环境与外电路隔离开来;另一种是采用电流接续的办法扩大输出电流的能力,以驱动各种外电路。6.4.1扩大驱动电流的方法1、采用晶体三极管扩大输出电流2、采用带驱动电路的逻辑门扩大驱动电流3、采用达林顿管作驱动器扩大驱动电流下面分别给出具体电路图6.4MCS-51单片机功率驱动接口技术在由单片机组成的控制系统中,大多数外围电路是处于各种各441、三极管1、三极管45三极管的概述

半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。它最主要的功能是电流放大和开关作用。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。由于不同的组合方式,形成了一种是NPN型的三极管,另一种是PNP型的三极管。

三极管的种类很多,并且不同型号各有不同的用途。三极管大都是塑料封装或金属封装,常见三极管的外观如图,大的很大,小的很小。三极管的电路符号有两种:有一个箭头的电极是发射极,箭头朝外的是NPN型三极管,而箭头朝内的是PNP型。实际上箭头所指的方向是电流的方向。电子制作中常用的三极管有90××系列,包括低频小功率硅管9013(NPN)、9012(PNP),低噪声管9014(NPN),高频小功率管9018(NPN)等。它们的型号一般都标在塑壳上,而样子都一样,都是TO-92标准封装。三极管的概述

半导体三极管也称为晶体三极管,可以说它是电子电46半导体三极管的管脚判别在安装半导体三极管之前,首先搞清楚三极管的管脚排列。一方面可以通过查手册获得,另一方面也可利用电子仪器进行测量,下面讲一下利用万用表判定三极管管脚的方法。首先判定PNP型和NPN型晶体管:用万用表的R×1kW(或R×100W)档,用黑表笔接三极管的任一管脚,用红表笔分别接其他两管脚。若表针指示的两阻值均很大,那么黑表笔所接的那个管脚是PNP型管的基极;如果万用表指示的两个阻值均很小,那么黑表笔所接的管脚是NPN型的基极;如果表针指示的阻值一个很大,一个很小,那么黑表笔所接的管脚不是基极。需要新换一个管脚重试,直到满足要求为止。进一步判定三极管集电极和发射极:首先假定一个管脚是集电极,另一个管脚是发射极;对NPN于型三极管,黑表笔接假定是集电极的管脚,红表笔接假定是发射极的管脚(对于PNP型管,万用表的红、黑表笔对调);然后用大拇指将基极和假定集电极连接(注意两管脚不能短接),这时记录下万用表的测量值;最后反过来,把原先假定的管脚对调,重新记录下万用表的读数,两次测量值较小的黑表笔所接的管脚是集电极(对于PNP型管,则红表笔所接的是集电极)。半导体三极管的管脚判别47MCS-51单片机的交互通道配置与接口48MCS-51单片机的交互通道配置与接口49MCS-51单片机的交互通道配置与接口50MCS-51单片机的交互通道配置与接口51MCS-51单片机的交互通道配置与接口522、逻辑门2、逻辑门53MCS-51单片机的交互通道配置与接口543、达林顿管ULN20033、达林顿管ULN200355内部逻辑电路图内部逻辑电路图56MCS-51单片机的交互通道配置与接口57MCS-51单片机的交互通道配置与接口58例题:设计使单片机唱歌的程序;在接在单片机的P2.0上的小喇叭唱八月桂花香实验;执行结果:程序运行后在在单片机的P2.0上的小喇叭唱八月桂花香;本实验源程序如下:;*****************************************************;*Date:2004.4.20--------------------------------------------------*;*SupportMb-mail:c51cn@163.com-------*;*Createby:dengdewu更多例程请登陆网站--*;*网站单片机学习资料同步更新,敬请新老朋友随时关注---*;******************************************************ORG0000HLJMPSTARTORG000BH;中断入口INC20H;中断服务程序,中断计数器加1MOVTH0,#0D8HMOVTL0,#0EFH;12M晶振,形成10毫秒中断RETI例题:设计使单片机唱歌的程序;在接在单片机的P2.0上的小喇59START:

MOVSP,#50H

MOVTH0,#0D8H

MOVTL0,#0EFH

MOVTMOD,#01H;设定定时器工作方式

MOVIE,#82H

MUSIC0:

NOP

MOVDPTR,#DAT;表头地址送DPTR

MOV20H,#00H;中断计数器清0

MOVB,#00H;表序号清0

MUSIC1:

NOP

CLRA

MOVCA,@A+DPTR;查表取代码

JZEND0;是00H,则结束

CJNEA,#0FFH,MUSIC5

LJMPMUSIC3

MUSIC5:

NOP

START:

MOVSP,#50H

60MOVR6,A

INCDPTR

MOVA,B

MOVCA,@A+DPTR;取节拍代码送R7

MOVR7,A

SETBTR0;启动计数

MUSIC2:

NOP

CPLP2.0

MOVA,R6

MOVR3,A

CPLA

MOVP1,A;显示(修改者加入的显示)

CPLA

LCALLDEL

MOVA,R7

CJNEA,20H,MUSIC2;中断计数器(20H)=R7否?

;不等,则继续循环

MOV20H,#00H;等于,则取下一代码

INCDPTR

LJMPMUSIC1

MOVR6,A

IN61MUSIC3:

NOP

CLRTR0;休止100毫秒

MOVR2,#0DH

MUSIC4:

NOP

MOVR3,#0FFH

LCALLDEL

DJNZR2,MUSIC4

INCDPTR

LJMPMUSIC1

END0:

MOVR2,#64H;歌曲结束,延时1秒后继续

MUSIC6:

MOVR3,#00H

LCALLDEL

DJNZR2,MUSIC6

LJMPMUSIC0

DEL:;延时子程序

NOP

DEL3:

MOVR4,#05H

DEL4:

NOP

DJNZR4,DEL4

NOP

DJNZR3,DEL3

RET

MUSIC3:

NOP

CLR62

DAT:;数据表格存放在ROM中。

DB18H,30H,1CH,10H,20H,40H,1CH,10H,18H,10H,20H,10H

DB1CH,10H,18H,40H,1CH,20H,20H,20H,1CH,20H,18H,20H

DB20H,80H,0FFH,20H,30H,1CH,10H,18H,20H,15H,20H,1CH

DB20H,20H,20H,26H,40H,20H,20H,2BH,20H,26H,20H,20H

DB20H,30H,80H,0FFH,20H,20H,1CH,10H,18H,10H,20H,20H

DB26H,20H,2BH,20H,30H,20H,2BH,40H,20H,20H,1CH,10H

DB18H,10H,20H,20H,26H,20H,2BH,20H,30H,20H,2BH,40H

DB20H,30H,1CH,10H,18H,20H,15H,20H,1CH,20H,20H,20H

DB26H,40H,20H,20H,2BH,20H,26H,20H,20H,20H,30H,80H

DB20H,30H,1CH,10H,20H,10H,1CH,10H,20H,20H,26H,20H

DB2BH,20H,30H,20H,2BH,40H,20H,15H,1FH,05H,20H,10H

DB1CH,10H,20H,20H,26H,20H,2BH,20H,30H,20H,2BH,40H

DB20H,30H,1CH,10H,18H,20H,15H,20H,1CH,20H,20H,20H

DB26H,40H,20H,20H,2BH,20H,26H,20H,20H,20H,30H,30H

DB20H,30H,1CH,10H,18H,40H,1CH,20H,20H,20H,26H,40H

DB13H,60H,18H,20H,15H,40H,13H,40H,18H,80H,00H

END

DAT:63例题2:使继电器按一下按键就吸合,放开按键就不吸合的程序。P2.0接继电器,P1.2接继电器合灯,P1.4接继电器断开灯。程序设计如下:org00h ;源程序起始地址 jmpmain ;跳转到MAIN org0050h ;主程序开始地址main: clrp2.0 ;关继电器和灯 clrp1.2 ;灯1灭 setbp1.4 ;灯2亮例题2:使继电器按一下按键就吸合,放开按键就不吸合的程序。P64loop:jbp3.6,lop1;键没按下则去lop1setbp2.0 ;否则继电器吸合setbp1.2 ;灯1亮clrp1.4 ;灯2灭jmplop2lop1:clrp2.0;继电器松开 clrp1.2;灯1灭 setbp1.4;灯2亮lop2:nopajmploop;循环retendloop:jbp3.6,lop1;键没按下则去l65作业与练习:26.136.14作业与练习:6.16.466第6章MCS-51单片机的交互通道配置与接口主要内容:

从工程应用角度介绍了MCS-51单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器、微型打印机等。介绍了多种实用方案和设计技巧。重点在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。难点在于使用动态方法进行键盘和显示的硬件及软件设计。第6章MCS-51单片机的交互通道配置与接口主要内容:67

人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。6.1MCS-51单片机与键盘的接口技术键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。键盘的分类:按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。6.1.1概述

键盘输入的主要对象:各种按键或开关。1.独立连接式键盘

每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。适用场合:多用于设置控制键、功能键。适用于键数少的场合。人机界面:是指人与计算机系统进行信息交互的接口,包括信68

独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。2.矩阵连接式键盘

键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。适用场合:多用于设置数字键,适用于键数多的场合。独立连接式键盘连接图如右图所示。当没有键被按下69

4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。扫描方式:低电平扫描(回送线必须被上拉为高电平)、高电平扫描(回送线需被下拉为低电平)。右图中给出了低电平扫描的电路。3.薄膜开关特点:不需要进行导线与开关间的焊接,结构简单、体积小、防尘、防水、防有害气体侵蚀、寿命长、可靠性高。应用:与按键式键盘类似,多个薄膜开关也可按照独立式或矩阵式设计内部电路,其原理与普通键盘相同。

4行4列矩阵式键盘连接图如右图所示。这种键盘适合采70按键开关去抖动问题

*键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。按键开关去抖动问题*键盘的抖动时间一般为5~10ms,抖动71⑴硬件去抖动

消除抖动不良后果的方法:其中RC滤波电路去抖动电路简单实用,效果较好。⑵软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。⑴硬件去抖动消除抖动不良后果的方法:其中RC滤波电路去抖72

(1)开关状态的可靠输入。必须消除键抖动。可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟10~20ms

(2)键盘状态的监测方法——中断方式还是查询方式。

(3)键盘编码方法。

(4)键盘控制程序的编制。。6.1.3键盘接口

功能:对键盘上所按下的键进行识别。分类:

(1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。

6.1.2使用键盘时必须解决的问题

(1)开关状态的可靠输入。必须消除键抖动。可以采73(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统。键盘。1.键盘接口的工作原理

对于矩阵式键盘,如上页图所示,键盘的行线X0~X3通过电阻接+5V,当键盘上没有键闭合时,所有的扫描线和回送线都断开,无论扫描线处于何种状态,回送线都呈高电平。当键盘上某一键闭合时,则该键所对应的扫描线和回送线被短路,可以确定,变为低电平的回送线与扫描线相交处的键闭合。

CPU对键盘扫描的方式:程序控制的随机方式(CPU空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。

CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。

(2)非编码键盘:采用软件编/译码的方式,通过扫描742.键输入程序的设计方法

(1)判断键盘上是否有键闭合;(2)消除键的机械抖动;(3)确定闭合键的物理位置;(4)得到闭合键的编号;(5)确保CPU对键的一次闭合只做一次处理3.键盘接口方式(1)独立式键盘接口(静态方式)特点:结构简单,每个按键接单片机的一条I/O线,通过对输入线的查询,可以识别每个按键的状态。[例题]

在MCS-51单片机系统中,设计一个含8个按键的独立式键盘。解:在MCS-51中,含8个按键的独立式键盘的线路连接如下页图所示,8个按键经上拉电阻拉高后分别接到MCS-51单片机P1口的8条I/O线上(P1.0~P1.7)。2.键输入程序的设计方法75

在无键按下的情况下,P1.0~P1.7线上输入均为高电平。当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。

P1口8条I/O线经与非门74LS30实现逻辑与非后,再经过1个非门74LS04进行信号变换,然后接至MCS-51的引脚上,可通过中断的方式处理键盘。在中断服务程序中,先延时20ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。在无键按下的情况下,P1.76

CLOSE: JNB ACC.7,KEY7 ;查询7号键 JNB ACC.6,KEY6 ;查询6号键 JNB ACC.5,KEY5 ;查询5号键 JNB ACC.4,KEY4 ;查询4号键 JNB ACC.3,KEY3 ;查询3号键 JNB ACC.2,KEY2 ;查询2号键 JNB ACC.1,KEY1 ;查询1号键 JNB ACC.0,KEY0 ;查询0号键INT0: RETIKEY7: …… ;7号键处理程序KEY71: MOV A,P1 ;再读P1口各引脚 JNBACC.7,FUNC71 ;确认键是否释放 RETIKEY6: …… ;其他键处理程序 …… D20: …… ;20ms延时子程序 …… END

CLOSE: JNB AC77

主程序如下:

ORG 0000H LJMP MAIN ORG 0003H ;外部中断0中断服务入口地址 LJMP INT ;转中断服务 ORG 0100H MAIN: SETB EA ;开总中断允许 SETB EX0 ;开INT0中断 SETB IT0 ;下降沿有效 ……中断服务程序清单如下:

INTI CALL D20 ;延时去抖动 MOV P1,#0FFH ;P1口送全1值(准双向口原因) MOV A,P1 ;读P1口各引脚 CJNE A,#0FFH,CLOSE ;验证是否确实有键闭合 AJMP INT0 ;无键按下(按键时间过短)则退 ;出中断主程序如下:78(2)矩阵式键盘接口——行反转法

矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双向I/O口分别接行、列线。步骤如下:

(1)由行线输出全“0”,读入列线,判有无键按下。(2)若有键按下,再将读入的列列线输出,读进行线的值。(3)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键的唯一的特征值。行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。[例题]请为8051微处理器设计一个由4行4列键阵构成的键盘。解:4×4矩阵键盘的线路连接如下页图所示。其中P2口的低4位作为输出线。P1口的低4位作为输入线,输入线通过74LS21进行逻辑相与后作为8051的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。

(2)矩阵式键盘接口——行反转法矩阵式键盘按键79(1)查询闭合键的位置子程序KEYR

KEYR子程序用以确定每组线中哪一位为0,是否有多个0。在调用前,应将读某组线的数据存入累加器A中。KEYR子程序返回时,某组线中0的位置(0~3)保存在R3中。按键闭合引起中断后,执行中断服务程序。(1)查询闭合键的位置子程序KEYR80表2-5工作寄存器组选择控制表KEYR子程序如下:

KEYR: CJNE A,#0FEH,TESTP11 ;测试P1.0 MOV R3,#0 ;P1.0=0,说明被按键的输入线为P1.0 LJMP FINISH ;返回TESTP11: CJNE A,#0FDH,TESTP12 ;测试P1.1 MOV R3,#1 LJMP FINISHTESTP12: CJNE A,#0FBH,TESTP13 ;测试P1.2 MOV R3,#2 LJMP FINISHTESTP13: CJNE A,#0F7H,FINISH ;测试P1.3 MOV R3,#3FINISH: RET表2-5工作寄存器组选择控制表KEYR子程序如下:81

(2)中断服务程序

中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键做出处理。中断服务程序如下:

ORG1000H INT11:LCALLDELAY ;延时去抖动 MOV A,P1 ;读输入线 ANL A,#0FH ;判断是否有键闭合 CJNE A,#0FH,TEST ;有键闭合,转判断按键程序 RETI ;无键闭合,返回TEST:MOV B,A ;暂存 LCALL KEYR ;调用读取子程序 MOV 40H,R3 ;暂存在40H单元 MOV P2,#0FFH ;输出线写1 MOV P1,B ;输入线写入数据 MOV A,P2 ;读输出线 LCALL KEYR ;调用读取子程序 XCH A,R3 SWAP A ORL 40H,A ;得按键特征值 RETI (2)中断服务程序82

中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。(3)去抖动的延时子程序DELAY

利用CPU的空闲方式,通过定时器T1实现延时,T1必须预先置初值,以得到需要的延迟时间。设晶振频率为6MHz,欲延时20ms,定时时间为:(216-TC)×6/12=20×103μs,初值:TC=25536=63C0H。程序如下:

DELAY: MOV TOMD,#11H ;方式1定时 MOV TL1,#0C0H ;定时器1定时初值 MOV TH1,#63H SETB EA ;开中断 SETB ET1 ;开定时器1中断 SETB PT1 ;定时器1为高级中断(因被键盘中断调用) SETB TR1 ;启动定时器 ORL PCON,#1 ;启动空闲方式,实际CPU在此处等待 CLR TR1;以下四条指令只有在延时后,定时器被唤醒,才能执行 CLR PT1 CLR ET1 RET END 中断程序结束后,键的特征值存放在40H单元中。此键83(4)通过串行口扩展键盘接口

MCS-51系列单片机的串行口与串/并转换芯片配合(如串入并出芯片74LS164)可以扩展键盘。[例题]

利用MCS-51的串行口与串/并转换芯片配合,扩展2行8列的键盘接口,键号为0~15。要求给出其硬件连接和键盘查询子程序。解:串口与串/并转换芯片配合扩展键盘的线路连接如下图所示。

(4)通过串行口扩展键盘接口MCS-51系列单片84

其中,P1.0和P1.1作为行线。键盘的编码为:P1.0线上的8个键分别为00H+(00H~07H),P1.1线上的8个键分别为08H+(00H~07H)。扫描线(00H~07H)的具体值存放在R4中。程序采取查询方式读取键号,并且考虑了键的抖动问题。DLY1是延时子程序。

程序如下:

ORG1000H SERKEY:MOVSCON,#00H ;设置串行口 MOVA,#00H ;键盘初始化,送00H到列线上 LCALLVARTO ;发送数据CHK:JNBP1.0,CHK0 ;检查是否有键按下 JNBP1.1,CHK0 ;检查是否有键按下 AJMPCHK ;无键按下,继续查找CHK0:LCALLDLY1 ;调用10ms延时子程序,去抖 JNBP1.0,CHEN ;确实有键按下,转CHEN JNBP1.1,CHEN AJMPCHK ;无键按下,继续查找CHEN:MOVR2,#0FEH ;首列扫描字送R2,查键号,最低位为0 MOVR4,#00H ;首列偏移值送R4其中,P1.0和P1.1作为行线。键盘的编码85

CHKN:MOVA,R2 ;发送列扫描字 LCALLVARTO JB P1.0,CH1 ;检查P1.0有无键按下;若无,转CH1 MOVA,#0 ;第一行首列值送A,00H+(R4) AJMPCKEY ;转求键号CH1:JB P1.1,NEXT ;检查P1.1有无键按下;若无,转NEXT MOVA,#8H ;第二行首列值送ACKEY:ADDA,R4 ;求键号,并入栈保护 RET

温馨提示

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

评论

0/150

提交评论