单片机中级教程 第9章接口设计.docx
- 文档编号:26272705
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:68
- 大小:105.38KB
单片机中级教程 第9章接口设计.docx
《单片机中级教程 第9章接口设计.docx》由会员分享,可在线阅读,更多相关《单片机中级教程 第9章接口设计.docx(68页珍藏版)》请在冰豆网上搜索。
单片机中级教程第9章接口设计
第9章MCS-51单片机的接口技术
一般单片机应用系统中,通常包括有数据采集部分(即前向通道)、控制输出部分(即后向通道)和人机通信部分。
而每一部分又都有各自的信号接口,本章将介绍组成单片机应用系统的这几个基本组成部分。
9.1人机通信接口技术
9.1.1键盘接口技术
在单片机应用系统中,为了控制其运行状态,需要向系统输入一些命令或数据,因此应用系统中应设有键盘,这些键包括数字键、功能键和组合控制键等。
这些按键或键盘都是以开关状态来设置控制功能或输入数据的。
但是,这些开关绝不仅仅是简单的电平输入。
1.键输入过程与软件结构
当所设置的功能键或数字键按下时,单片机应用系统应完成该按键所设定的功能。
因此,键盘信息输入是与软件结构密切相关的。
对某些简单应用系统来说,如对于智能仪表来说,键输入程序是整个应用程序的核心部分。
在MCS-51系列单片机的指令系统中设有散转指令JMP@A+DPTR,可看成是专门配合键盘信息输入而设置的指令,或是键盘信息输入的软件接口。
图9-1是MCS-51单片机应用系统的键输入软件框图。
对于任何一个单片机应用系统,
图9-1MCS-51单片机应用系统键输入软件框图
键盘总要有其相应的接口电路与CPU相连,通过软件了解键盘输入的信息。
而CPU可以采用中断方式或查询方式来了解有无键输入,并检查是那一个键按下,将键号送入累加器ACC,然后通过散转指令转去执行相应的程序,以完成该键应完成的功能。
最后又返回到原始状态。
2.键盘输入接口与软件应解决的任务
CPU对键盘操作的响应要满足实时性,即及时发现键盘操作,及时作出响应,因此,键输入接口与软件应可靠而快速地实现键信息输入与键功能任务。
为此,应用系统应解决下列问题。
1)键开关状态的可靠输入
键盘的操作,无论是按键或键盘都是利用机械触点的合、断作用。
一个电压信号通过机
械触点的闭合、断开过程,其波形如图9-2所示。
由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。
抖动时间的长短,与开关的机械特性有关,一般为5~10ms。
按键的稳定闭合期,由操作人员的按
键动作所确定,一般为十分之几秒到几秒
的时间。
为了保证CPU对键的一次闭合,
仅作一次键输入处理,必须去除抖动影响。
通常去抖动影响的措施有硬、软件两
种。
对于系统软件量不大的场合,采用软
件去抖即节省硬件开销,又很实用且有效。
图9-2键闭合及断开时的电压抖动
采用软件去除抖动影响的办法是:
检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则可确认确实有键按下,从而消除了抖动的影响。
2)按键编码与键号定义
一组按键或键盘都要通过I/O口线查询按键的开关状态。
根据键盘结构不同,采用的编码也有所不同。
但无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的转移(相应的转移指令为JMP@A+DPTR)。
3)键盘监测与编制键盘程序
对于单片机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。
对是否有键按下的信息检测方式有中断与查询方式两种。
不同的应用场合,所采用的键盘检测手段不同。
在编制键盘控制程序时应考虑如下问题:
⑴监测有无按键按下;
⑵有键按下后,在无硬件去抖电路时,应用软件延时方法除去抖动影响;
⑶有可靠的逻辑处理办法。
比如是采用双键锁定方式还是N键轮回方式。
如采用N键锁定,即只处理一个键,其间任何按下又松开的键不产生影响;不管一次按键持续有多长时间,仅执行一次按键功能程序等;
⑷给出确定的键号以满足散转指令要求。
3.独立式按键
1)独立式按键结构
独立式按键是指直接用I/O口线构成的单个按键电路。
每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。
独立式按键电路如图9-3所示。
独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。
故在按键数量不多时,常采用这种按键电路。
图9-3(a)为中断方式的独立式按键电路,图9-3(b)为查询方式的独立式按键电路。
通常按键输入都采用低电平有效。
上拉电阻保证了按键断开时,I/O口线有确定的高电平。
当I/O口内部有上拉电阻时,外电路可以不配置上拉电阻。
(a)中断方式(b)查询方式
图9-3独立式按键电路
2)独立式按键的软件结构
下面是查询方式的键盘程序。
程序中没有使用散转指令,也没有软件防抖动措施。
它只包括键查询、键功能程序转移。
FUN0-FUN7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,SUB0-SUB7分别为每个按键的功能程序。
程序清单如下(设键盘接入端口为P1口)
Start:
MOVP1,#0FFH;置I/O口为输入方式
MOVA,P1;读入键状态
CPLA
JZStart;无键按下,则返回
JBACC.0,FUN0;0号键按下转
JBACC.1,FUN1;1号键按下转
JBACC.2,FUN2;2号键按下转
JBACC.3,FUN3;3号键按下转
JBACC.4,FUN4;4号0号键按下转键按下转
JBACC.5,FUN5;5号键按下转
JBACC.6,FUN6;6号键按下转
SJMPFUN7;7号键按下转
FUN0:
AJMPSUB0
FUN1:
AJMPSUN1
…
FUN7:
AJMPSUN7
SUB0:
…
LJMPStart
SUB1:
…
LJMPStart
SUB7:
…
LJMPStart
从程序中可以看出,键盘的内部优先级别依次为0~7。
4.矩阵式键盘
1)矩阵式键盘电路的结构及工作原理
矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。
如图9-4所示。
由图可知,一个4×4的行、列结构可以构成
一个含有16个按键的键盘,很明显,在按键数量
较多的场合,矩阵键盘与独立式按键键盘相比,
要节省很多的I/O口线。
图中行线通过上拉电阻接+5V,平时无按键动
作时,行线处于高电平状态,而当有按键按下时,
则对应的行线和列线短接,行线电平状态将由与
此行线相连的列线电平决定。
图9-4矩阵式键盘结构
如果把行线接到单片机的输入口线,列线接到单片机的输出口线,则在单片机的控制下,可以判别键盘中究竟哪一个按键被按下。
其方法是:
先令列线Y0为低电平(0),其余3根列线Y1、Y2、Y3都为高电平,读行线状态。
如果X0、X1、X2、X3都为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态;如果Y0这一列上没有键闭合,接着使列线Y1为低电平,其余列线为高电平。
用同样的方法检查Y1这一列上有无键闭合,以此类推,最后使列线Y3为低电平,其余列线为高电平,检查Y3这一列有无键闭合。
这种逐行逐列地检查键盘状态的过程称为对键盘进行扫描。
2)键盘的工作方式
在单片机应用系统中,扫描键盘只是CPU的工作任务之一。
在实际应用中要想做到既能及时响应键操作,又不过多地占用CPU的工作时间,就要根据应用系统中CPU的忙闲情况,选择好键盘的工作方式。
键盘的工作方式一般有编程扫描方式和中断扫描方式两种。
(1)编程扫描方式
编程扫描方式是利用CPU在完成其他工作的空余,调用键盘扫描子程序,来响应键输入要求。
在执行键功能程序时,CPU不再响应键输入要求。
键盘扫描程序一般应具备下述4个功能。
①判别键盘上有无键按下。
其方法为扫描口输出全扫描字“0”(即Y0~Y3均为低电平),读X0~X3的状态,若为全“1”,则键盘无键按下,若不全为“1”,则有键按下。
②去除键的抖动影响。
其方法为判别到有键按下后,软件延时一段时间(一般为10ms左右)后,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键被按下,否则按键抖动处理。
③求按键位置。
根据前面介绍的键盘扫描方法,逐行逐列进行扫描,最后确定按下键的键号。
对于图9-4中16个按键,每行的行首键号给以固定编号:
0、4、8、12;列线依次为0~3。
则闭合键的键号等于为低电平的行首键号加上为低电平的列号。
闭合键的键号也可以用计算法获得:
为低电平的行号×4+为低电平的列号。
④判别按键是否释放,键闭合一次仅进行一次键功能操作。
等键释放以后再将键值送入累加器A中,,然后执行键功能操作。
(2)中断扫描方式
采用上述扫描键盘的工作方式,能及时响应键入的命令和数据,但是这种方式不管键盘上有无键按下,CPU总要定时扫描键盘,而应用系统在工作时,并不经常需要键输入,因此CPU经常处于空扫描状态。
为了进一步提高CPU的工作效率,可采用中断扫描工作方式。
即当键盘上有键闭合时产生中断请求,CPU响应中断请求后,转去执行中断服务程序,在中断服务程序中判别键盘上闭合键的键号,并作相应的处理。
3)键盘接口举例
图9-5为8×2的行列式按键键盘接口电原理图。
图9-58×2行列式按键键盘接口电原理图
这是一个由74HC245构成的8×2行列式键盘扫描接口电路。
电路中,74HC245只占用应用系统的一个扩展I/O口和两条I/O口线,这样做的好处就在于它不占用太多的I/O口,也可以达到对键盘进行实时扫描的目的。
其基本工作原理是:
当P1.0为低电平、P1.1为高电平时,只有0到7号键某个键按下改变74HC245A口的状态,而8到F键是否按下不会改变74HC245A口的状态;而P1.0为高电平、P1.1为低电平时,0到7号键是否按下,不会改变74HC245A口的状态,而8到F键某个按下将改变74HC245A口的状态。
下面是其键盘扫描的程序(采用查询方法):
KS:
MOVDPTR,#7FFFH;键扫程序CLRP1.0;先扫描第一列(即0~7号键)MOVXA,@DPTR;读入按键状态MOV37H,A;暂存按键状态CPLAJZKSK1;0~7号键没有键操作,则跳
LCALLDL20;0~7号键有按键操作,则延时去抖
MOVXA,@DPTR;再读按键状态
XRLA,37H;和延时前的状态一样吗?
JZKS1;一样,则转去查询键号
KSK1:
SETBP1.0;开始扫描第二列键,即8~F号键
CLRP1.1
MOVXA,@DPTR;读入按键状态
MOV37H,A;暂存按键状态
CPLA
JZKSK2;8~F号键没有键操作,则跳
LCALLDL20;8~F号键有按键操作,则延时去抖
MOVXA,@DPTR;再读按键状态
XRLA,37H;和延时前的状态一样吗?
JZKS1;一样,则转去查询键号
KSK2:
AJMPKS9;8~F键也不存在键操作,则跳
KS1:
MOVXA,@DPTR;再读按键状态
CPLA
JNZKS1;按键还没有松开,则等待松开
MOVA,37H;查询有键操作的键号
JBACC.0,KS2;不是第一个键,则跳
MOV37H,#00H;赋键初值
AJMPKS10
KS2:
JBACC.1,KS3;不是第二个键,则跳
MOV37H,#01H;赋键初值
AJMPKS10
KS3:
JBACC.2,KS4;不是第三个键,则跳
MOV37H,#02H;赋键初值
AJMPKS10
KS4:
JBACC.3,KS5;不是第四个键,则跳
MOV37H,#03H;赋键初值
AJMPKS10
KS5:
JBACC.4,KS6;不是第五个键,则跳
MOV37H,#04H;赋键初值
AJMPKS10
KS6:
JBACC.5,KS7;不是第六个键,则跳
MOV37H,#05H;赋键初值
AJMPKS10
KS7:
JBACC.6,KS8;不是第七个键,则跳
MOV37H,#06H;赋键初值
AJMPKS10
KS8:
JBACC.7,KS9;不是第八个键,则跳
MOV37H,#07H;赋键初值
AJMPKS10
KS9:
SETBACC.7;设置键值无效标志
AJMPKS11
KS10:
MOVA,37H;取得按键号码,即键值
ANLA,#07H
JNBP1.0,KS11;是0~7号键,则跳
SETBACC.3;是8~F键,则置第二列标志
KS11:
ORLP1,#03H
MOV37H,A;将键值存入37H单元
RET;返回
按照上述键值整定法,第一列按键的键值依次为0~7,第二列按键的键值依次为8~F,这是一个键盘扫描子程序,子程序的出口条件是37H单元中存放有键操作的按键号,即键值。
并且,规定单元中的最高位为“1”,则键值无效。
把键盘扫描程序编成子程序的好处是:
当需要对键盘进行扫描时,就可调用之,否则,CPU可不必始终扫描键盘,这样,也就节省了大量的CPU时间。
9.1.2显示接口技术
单片机应用系统中,常用的显示器件有LED(发光二极管显示器)和LCD(液晶显示器)。
这两种器件都具有成本低廉、配置灵活、与单片机接口方便的特点。
随着电子技术的飞速发展,近年来,也开始出现有配置简易形式的CRT接口,以方便图形显示。
本节将以在单片机应用中普遍使用的LED显示器为例进行介绍。
1.LED结构与显示方式
1)LED显示器结构与原理
LED显示块是由发光二极管显示字段的显示器件,也可称为数码管。
在单片机应用系统中通常使用的是七段LED。
这种显示块有共阴极与共阳极两种,如图9-6所示。
共阴极LED显示块的发光二级管阴极共地。
如图中9-6(a)所示,当某个发光二极管的阳极为高电平时,发光二极管点亮;共阳极LED显示块的发光二极管阳极并接(在系统中,接驱动电源)。
如图中9-6(b)所示。
当某个发光二极管的阴极为低电平时,发光二极管点亮。
通常的七段LED显示块中有八个发光二极管,故也称做八段显示器。
其中七个发光二极管构成七笔字形“8”;一个发光二极管构成小数点的“·”。
七段发光二极管,再加上一个小数点位,共计8段,因此提供给LED显示器的字形数据正好一个字节。
其对应关系如下:
D7D6D5D4D3D2D1D0
dp
g
f
e
d
c
b
a
LED显示块与单片机接口非常容易。
只要将一个8位并行输出口与显示块的发光二极
(a)共阴极(b)共阳极(c)管脚配置
图9-6七段LED显示块
管引脚相连即可。
8位并行输出口输出不同的字节数据可显示不同的数字或字符,如表9-1所示。
通常将控制发光二极管的8位字节数据称为段选码或称字形代码,公共极称为位选线。
共阳极与共阴极的段选码互为补数。
表9-1七段LED的段选码
显示
字符
共阴极段
选码
共阳极段
选码
显示
字符
共阴极段
选码
共阳极段
选码
0
3FH
COH
C
39H
C6H
1
06H
F9H
d
5EH
A1H
2
5BH
A4H
E
79H
86H
3
4FH
B0H
F
71H
8EH
4
66H
99H
P
73H
8CH
5
6DH
92H
U
3EH
C1H
6
7DH
82H
Г
31H
CEH
7
07H
F8H
y
6EH
91H
8
7FH
80H
8.
FFH
00H
9
6FH
90H
“灭”
00H
FFH
A
77H
88H
┇
┇
┇
b
7CH
83H
2)LED显示器与显示方式
在单片机应用系统中,经常要使用LED显示块构成N位LED显示器。
图9-7是N位LED显示器的构成原理图。
图9-7N位LED显示器的构成原理图
N位LED显示器有N根位选线和8*N根段选线。
根据显示方式不同,位选线与段选线的连接方法不同。
段选线控制要显示什么样的字符,而位选线则控制要在哪一位上显示这个字符。
LED显示器有静态显示和动态显示两种显示方式。
(1)LED静态显示方式所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截止,并且显示器的各位可同时显示。
静态显示时,较小的驱动电流就能得到较高的显示亮度。
LED显示器工作在静态显示方式下,共阴极或共阳极连接在一起接地或+5V;每位的段选线(a—dp)分别与一个8位并行口相连。
如图9-8所示,该图表示了一个4位静态LED显示器电路。
该电路每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。
由于每一位由一个8位输出口控制段选码,故在同一时间里,各位可同时显示,且显示的字符可以各不相同。
图9-84位LED显示器的构成原理图N位静态显示器要求有N*8根I/O口线,占用I/O口线资源较多。
故在位数较多时往往不采用静态显示,而是采用动态显示方式。
(2).LED动态显示方式
所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
在多位LED显示时,为了简化电路,降低成本,通常将所有位的段选线并联在一起,由一个8位I/O口控制,形成段选线的多路复用。
而各位的共阴极点或共阳极点分别由相应的I/O口线控制。
实现各位的分时选通,图9-9就是一个8位LED动态显示器电路。
图9-9八位LED动态显示器电路
8位LED动态显示电路只需要两个8位I/O口。
其中一个控制段选码,另一个控制位选。
由于所有位的段选码皆由一个8位I/O口控制,因此,在每个瞬间,8位LED可能显示相同的字符。
要想每位显示不同的字符,必须采用扫描显示方式。
即在每一瞬间只使某一位显示相应字符。
在此瞬间,段选码由控制I/O口输出相应字符电平,位选I/O口输出位选码(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符。
如此轮流,使每位显示该位应显示字符,并延时一段时间,以造成视觉暂留效果。
例如,要求8位LED动态显示数为表9-28位动态扫描显示器状态表
385.47C9F时,I/O
(1)和I/O
(2)轮流
送入的段选码、位选码及显示状态如表
9-2所示。
段选、位选码每送入一次后延
时1~5ms(设显示块为共阴极LED)。
不
断循环送出相应的段选码和位选码,就可
获得视觉稳定的显示状态。
表中的段选码和位选码都是按共阴极
LED数码管设置的,如果是共阳极LED
数码管显示块,表中的段选码取反、位选
码改用反码和原码。
2.由MC14543构成的静态LED驱动接口电路
1)MC14543引脚功能
MC14543为4线-七段译码/驱动电路,具有4位二进制锁存、BCD-七段译码和驱动功能。
图9-10为该集成电路的引脚图。
其各引脚功能如下:
M:
输入线,用来控制输出状态的正反向;
BI:
输入线,用来消隐显示;
LD:
输入线,用来锁存BCD码;
D0-D3:
显示数据输入端(BCD码);
Ya-Yg:
BCD-七段码的译码/驱动输出端;
VDD接电源,VSS接地。
采用液晶显示时,应在液晶的公共电极和电路的图9-10MC14543引脚图
M端施加方波脉冲,电路的输出端直接连接到液晶的各笔划段。
也可采用发光二极管、荧光数码管和白炽灯显示。
表9-3是4线-七段译码/驱动器MC14543的逻辑真值表。
从该表中可
表9-3MC14543的逻辑真值表
以看出,使用共阴极发光二极管时,M=L;使用共阳极发光二极管时,M=H;使用液晶显示器时,从M端加脉冲;译码/驱动输出的状态由LD从H变到L时的内部锁存器的状态而定。
2)由MC14543构成的静态LED驱动接口电路
图9-11给出了由MC14543构成的静态LED驱动接口电路。
从图9-11中可以看出,该电路主要由51单片机、或非门、MC14543、共阴阳数码管组成。
其中,或非门用来产生锁存信号,MC14543完成锁存、译码、驱动,数码管则用来显示。
上两个MC14543的地址为0BFFFH,下两个MC14543的地址为7FFFH。
只要给出相应的地址,并在单片机的P0口输出BCD码,就会在相应的数码管上显示对应的数据。
图9-11MC14543构成的静态LED驱动接口电路
9.1.3键盘/显示接口芯片8279
Intel8279芯片是一种通用的可编程序的键盘、显示接口器件,单个芯片就能完成键盘输入和LED显示控制两种功能。
其内部结构如图9-12所示。
图9-128279结构框图
8279包括键盘输入和显示输出两个部分。
键盘部分提供的扫描方式,可以和具有64个按键或传感器的阵列相连。
能自动消除开关抖动以及n键同时按下的保护。
显示部分按扫描方式工作。
可以显示8或16位LED显示块。
1.8279电路工作原理
根据结构框图,分别介绍各部分电路的作用及原理。
1)I/O控制及数据缓冲器
数据缓冲器是双向缓冲器,连接内、外部总线,用于传送CPU和8279之间的命令或数据。
I/O控制线是CPU对8279进行控制的引线。
是8279的片选信号,当
=0,8279才被允许读出或写入信息。
、
为来自CPU的读、写控制信号。
Ao用于区别信息特性:
Ao=1时,表示数据缓冲器输入为指令、输出为状态字;A=0时,输入、输出皆为数据。
2)控制与定时寄存器及定时控制
控制与定时寄存器用来寄存键盘及显示的工作方式,以及由CPU编程的其它操作方式。
这些寄存器一旦接收并锁存送来的命令,就通过译码产生的相应的信号,从而完成相应的控制功能。
定时控制包含基本一些计数器。
首级计数器是一个可编程的N级计数器。
N可以2~31之间由软件编程,以便从外界时钟CLK分频得到内部所需要的100kHz时钟。
然后再经过分频,为键盘扫描提供适当的逐行扫描频率和显示扫描时间。
3)扫描计数器
扫描计数器有两种工作方式。
按编码方式工作时,计数器作二进制计数。
4位计数状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机中级教程 第9章接口设计 单片机 中级 教程 接口 设计