1.99k likes | 2.19k Views
第九章 应用系统配置及 接口技术. 9.1 人 - 机通道配置与接口技术 9.2 前向通道中的 A/D 转换器及接口技术 9.3 系统后向通道配置及接口技术. 9.1 人 - 机通道配置与接口技术. 9.1.1 键盘接口及处理程序 键盘是一组按键的集合,它是最常用的单片机输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机通信。 键是一种常开型按钮开关,平时 ( 常态 ) 键的二个触点处于断开状态,按下健时它们才闭合 ( 短路 ) 。. 任务 :可靠而快速的实现键信息输入与键功 能任务。 解决下列问题:.
E N D
第九章 应用系统配置及接口技术 9.1 人-机通道配置与接口技术 9.2 前向通道中的A/D转换器及接口技术 9.3 系统后向通道配置及接口技术
9.1 人-机通道配置与接口技术 9.1.1 键盘接口及处理程序 • 键盘是一组按键的集合,它是最常用的单片机输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机通信。 • 键是一种常开型按钮开关,平时(常态)键的二个触点处于断开状态,按下健时它们才闭合(短路)。
任务:可靠而快速的实现键信息输入与键功 能任务。 解决下列问题: 1. 键开关状态的可靠输入 键盘是利用机械触点的合、断作用来实现的。由于机械触点的弹性作用,在闭合及断开的瞬间均有抖动过程,会出现一系列负脉冲,见图9-1(b)。抖动时间一般为5~10ms。
89C51 (b) (a) 图9-1 按键电路及按键时的抖动
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。 键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合仅作一次处理,必须去除键抖动,在键闭合稳定时取键状态。 消除抖动影响措施: ⑴ 硬件方法消除抖动:常用RS触发器去抖电路。 ⑵ 软件方法:利用延时程序消除抖动。
2. 对按键进行编码,给定键值或直接给出键号 一组按键或键盘由多个按键组成,为区分每个按键,每个按键都有一个键值或键号。根据键值或键号找到对应的功能程序。 不同类型的键盘结构,采用不同的编码方式。
3. 选择键盘的监测方法 监测是否有键按下的信息输入方式有中断方式和查询方式。 4. 编制键盘程序 键盘控制程序应解决的问题: ⑴ 监测有无键按下;
⑵ 有键按下,若无硬件除抖电路时,应有软件 去抖程序消除抖动影响; ⑶ 有可靠的逻辑处理方法; ⑷ 输出确定的键号或键值。
一、键盘结构 键盘分编码键盘和非编码键盘。 1) 编码键盘:键盘上闭合键的识别由专用的硬件译码器实现并产生键编号或键值,如D码键盘、ASII码键盘等。 2) 非编码键盘:键盘上闭合键的识别靠软件识别。
1.独立式非编码键盘接口及处理程序 独立式按键是各按键互相独立地接通一条输入数据线,如图9-2所示。这是最简单的键盘结构,该电路为查询方式电路。 这种键盘结构的优点是电路简单,配置灵活;缺点是当键数较多时,要占用较多的I/O线。
89C51 图9-2 独立连接式非编码键盘
上图示查询方式键盘的处理程序比较简单,程序中没有使用散转指令,省略了软件去抖动措施,只包括键查询、键功能程序转移。P0F~P7F为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节; PROM0~PROM7分别为每个按键的功能程序。
程序清单(设I/0为P1口): START: MOV A,#0FFH ;输入时先置P1口为全1 MOV P1,A MOV A,P1 ;键状态输入 JNB ACC.0,P0F ;0号键按下转P0F标号地址 JNB ACC.1,P1F ;1号键按下转P1F标号地址 JNB ACC.2,P2F ;2号键按下转P2F标号地址 JNB ACC.3,P3F ;3号键按下转P3F标号地址 JNB ACC.4,P4F ;4号键按下转P3F标号地址
JNB ACC.5,P5F;5号键按下转P5F标号地址 JNB ACC.6,P6F;6号键按下转P6F标号地址 JNB ACC.7,P7F;7号键按下转P7F标号地址 JMP START P0F: JMP PROM0 ∶ ∶ P7F: JMP PROM7 入口地址表
PROM0: …………;0号键功能程序 …………. JMP START ;0号键执行完返回 PROM1: …………;1号键功能程序 …………. JMP START ∶ ∶ PROM7: …………;7号键功能程序 …………. JMP START 由此程序可以看出,各按键由软件设置了优先级,优先级顺序依次为0~7。
2.行列式键盘接口及工作原理 为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵型式,如图9-3所示。 ⑴ 结构: 每一水平线(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来联通。利用这种行列短阵结构只需N条行线和M条列线,即可组成N×M个按键的键盘。
⑵ 键盘工作原理 图9-3 行列式键盘原理电路
行(或列)扫描法的工作原理 以4×4键盘为例说明扫描法识别哪一个按键被按下的工作原理: 1) 判别键盘中有无键按下 由单片机I/O口向键盘送(输出)全扫描字,然后读入(输入)行(列)线状态来判断。其方法是:向列(行)线(图中垂直线)输出全扫描字00H,即把全部列(行)线置为低电平,然后将行(列)线的电平状态读入累加器A中。如果有按键按下,总会有一根行(列)线电平被拉至低电平,从而使行(列)输入不全为“1”。
2) 判断键盘中哪一个键按下 采用列(行)扫描方式,即逐列(行)置低电平后,检查行输入状态。其方法是:依次给列(行)线送低电平、然后查所有行(列)线状态,如果全为“1”,则所按下之键不在此列(行)。如果不全为“1”,则所按下的键必在此列(行),而且是在与“0”电平行线相交的交点上的那个键。
3) 计算键值 键盘上的每个键都有一个键值,计算键值有两种方法: ① 键值赋值的最直接办法是将行、列线按二进制顺序排列,当某一键按下时,键盘扫描程序执行到给该列置“0”电平,读出各行状态为非全“1”状态,这时的行、列数据组合成键值。 ② 采用依次排列键值的方法,可得 键值(号) = 行号*行的按键个数+ 列号 即键值(号) = 行首键号 + 列号
二、单片机对非编码键盘扫描的控制方式 ⑴ 程序控制扫描方式,即查询方式。 ⑵ 定时扫描方式: 利用单片机内部定时器产生中断(例如10ms),CPU响应中断后对键盘扫描一次。定时扫描方式的硬件电路与程序扫描方式相同。 ⑶ 中断扫描方式: 引起外部中断(INT0或INT1)后,CPU响应中断对键盘进行扫描。 要根据应用系统中CPU的“忙”、“闲”情况,所需按键数目的多少来选择工作方式。下面重点介绍常用的程序控制扫描方式和中断扫描方式。
1.程序控制扫描方式及处理程序 以教材P233图9-6 4×4矩阵键盘为例,介绍程序控制扫描工作方式工作过程与键盘扫描子程序。 程序流程图见P235图9-7。 程序在进行行扫描时,先将行计数器、列计数器设置为0,然后再设置行扫描初值为FEH。 行扫描得到的行号和列号分别放在R0和R2中,采用计数译码法对键值译码。
⑵ 键盘扫描子程序的功能 ① 判断键盘上有无键按下。 ② 去除键的机械抖动影响。 ③ 判别闭合键的键值 ④ 采用计数译码法(DECODE子程序)将键号送入累加器A中。
键盘扫描子程序(出口:键值在A中) KEY: MOV P1,#0F0H ;行为低电平,列为输入 MOV R7,#0FFH ;设置计数常数 KEY1:DjNZ R7,KEY1 ;延时 MOV A,P1 ;读P1口的列值 ANL A,#0F0H ;判有键按下吗? CPL A ;求反后,高电平为有键按下 JZ EKEY ;无键按下退出 LCALL DEL20ms;延时20ms去抖动 SKEY: MOV A, #00H ;开始行扫描,一行一行扫 MOV R0, A ;行计数器初值为0 MOV R1, A ;列计数器初值为0 MOV R3,#0FEH ;行扫描字
SKEY2: MOV A,R3 MOV P1,A ;输出行扫描字,高4位全1 NOP NOP NOP ;使P1口输出稳定 MOV A,P1 ;读列值 MOV R1,A ;暂存列值 ANL A,#0F0H ;取列值 CPL A ;高电平则有键闭合 S123: JNZ SKEY3 ;有键按下转,无键下一行扫描 INC R0 ;行计数器加1
SETB C MOV A, R3 ;R3带进位左移 RLC A MOV R3, A ; 下一扫描字送R3 MOV A, R0 CJNE A, #04H,SKEY1 ;第4行扫完了吗? EKEY: RET
列号译码: SKEY3: MOV A,R1 JNB ACC.4,SKEY5 JNB ACC.5,SKEY6 JNB ACC.6,SKEY7 JNB ACC.7,SKEY8 AJMP EKEY SKEY5: MOV A, #00H MOV R2, A ;存0列号 AJMP DKEY SKEY6: MOV A, #01H MOV R2, A ;存1列号 AJMP DKEY
SKEY7: MOV A, #02H MOV R2, A ;存2列号 AJMP DKEY SKEY8: MOV A, #03H MOV R2, A ;存3列号 AJMP DKEY 键位置译码: DKEY: MOV A, R0 ACALL DECODE AJMP EKEY
键值(键号译码): DECODE: MOV A, R0 ;取行号 MOV B,#04H ;每行按键个数 MUL AB ;行*按键数 ADD A, R2 ;行*按键数+列 RET
2.中断扫描方式 中断扫描工作方式,即只有在键盘有键按下时才产生中断申请,CPU响应中断,进入中断服务程序进行键盘扫描,并作相应处理。 ⑴ 键盘接口 中断扫描工作方式的键盘接口如下图9-6所示。该键盘直接由89C51的P1口的高、低字节构成4×4行列式键盘。键盘的行线与P1口的低4位相接,键盘的列线通过二极管接到P1口的高4位。因此,P1.4~P1.7
作键输出线,P1.0~P1.3作扫描输入线。扫描时,使P1.4~P1.7置零。当有键按下时、INT0/INTl端为低电平,向CPU发出中断申请,若CPU开放外部中断,则响应中断请求,进入中断服务程序。在中断服务程序中除完成键识别、键功能处理外,还须有消除键抖动等功能。作键输出线,P1.0~P1.3作扫描输入线。扫描时,使P1.4~P1.7置零。当有键按下时、INT0/INTl端为低电平,向CPU发出中断申请,若CPU开放外部中断,则响应中断请求,进入中断服务程序。在中断服务程序中除完成键识别、键功能处理外,还须有消除键抖动等功能。 ⑵ 中断服务程序 功能:键识别,键功能处理,消除键抖动等。
89C51 图9-6 中断方式的接口 图9-7 求功能键地址转换程序流程图
三、键操作及功能处理 在键盘扫描程序中,求得键值只是手段,最终目的是使程序转移到相应的地址去完成该键的操作。一般对数字键是直接将该键值送到显示缓冲区进行显示,对功能键则需找到该功能键处理程序入口地址,并转去执行该键的命令。因此,当键值求得后,还必须找到功能键处理程序入口。下面介绍一种求地址转移的程序。
设0、1、2…、E、F 16个键为数字键,其它16个键为功能键,即10H~1FH。设备功能键入口程序地址标号分别为AAA、BBB、…、PPP。功能键地址转移程序如下:
ORG 8000H KEYADR:MOV A,BUFF ;键值A CJNE A,#0FH,KYARD1 AJMP DIGPRO ;等于F,转数字键处理 KYARD1:JC DIGPRO ;小于F,转数字键处理 KEYTBL:MOV DPTR,#JMPTBL ;送功能键地址表指针 CLR C ;清进位位 SUBB A,#10H ;功能键值(10H~FH)减16 RL A ;(A)×2,使(A)为偶数:0,2, ; 4…… JMP @A+DPTR ;转相应的功能键处理程序
JMPTBL: AJMP AAA ; AJMP BBB ; AJMP CCC ; AJMP DDD ; AJMP EEE ; AJMP FFF ; AJMP GGG ; 均为2字节,转到16个功能键的 AJMP HHH ; 相应入口地址。 AJMP III ; (A)=0,2,4,6, .. 散转到 AJMP JJJ ; AAA,BBB,CCC, DDD,……PPP AJMP KKK ; AJMP LLL ; AJMP MMM ; AJMP NNN ; AJMP OOO ; AJMP PPP ;
9.1.2 LED显示器接口及显示程序 单片机应用系统中使用的显示器主要有: • 发光二极管显示器(数码管),简称LED; • 液晶显示器,简称LCD; • 也有配置CRT显示器的。 前者价廉,配置灵活,与单片机接口方便后 者可进行图形显示,但接口较复杂,成本也较 高。
一、LED显示器结构原理 • 在单片机中通常使用七段LED,构成字型“8”,另外还有一个小数点发光二极管以显示数字、符号及小数点。 • 这种显示器有共阴和共阳两种,如图所示。发光二极管的阳极连在一起的(公共端K0)称为共阳极显示器,阴极连在一起的(公共端K0)称为共阴极显示器。
表9-1 八段LED数码显示管字形码表 8段LED显示数字0~F、文字、符号及小数点的编码(a段为最低位,dp点为最高位)
二、LED显示器接口及显示方式 LED显示器有静态显示和动态显示两种方式。 1.LED静态显示方式 所谓静态显示.就是当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。例如,7段显示器的a、b、c段恒定导通,其余段和小数点恒定截止时显示“7”,当更换显示另一个字符“8”时,显示器的a、b、c、d、e、f段恒定导通,g、dp截止。
LED显示器工作于静态显示方式时,如图9-9所示,各位的共阴极(公共端K0)接地,若为共阳极(公共端K0)时接十5v电源。每位的段选线(a~dp)分别与一个8位锁存输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。LED显示器工作于静态显示方式时,如图9-9所示,各位的共阴极(公共端K0)接地,若为共阳极(公共端K0)时接十5v电源。每位的段选线(a~dp)分别与一个8位锁存输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。 • 正因为如此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单,但占用I/O口线资源较多,因此,在显示位数较多的情况下,一般都采用动态显示方式。
I/O1 I/O2 I/O3 I/O4 a b c d e f g dp a b c d e f g dp GND 图9-9 静态显示接口电路
2.LED动态显示方式 在多位LED显示时,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(或共阳)公共端K0分别由相应的I/O线控制,实现各位的分时选通。图9-10所示为6位共阴极LED动态显示接口电路。 由于所有6位段选线皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED即
在每一瞬间只使某一位显示字符。在此瞬间 ,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通电平(因为LED为共阴,故应送低电平),以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。
三、LED显示器与8155接口及显示子程序 1. 接口电路 图中P0口输出段选码,P1口输出位选码,位选码占用输出口的线数决定于显示器位数,比如6位就要占6条。75452(或7406)是反向驱动器,这是因为8155 PB口正逻辑输出的位控与共阴极LED要求的低电平点亮正好相反,即当PB口位控线输出高电平时,点亮一位LED。7407是同相OC门,作段选码驱动器。逐位轮流点亮各个LED,每一位停留1ms,在10~20ms之内再一次点亮,重复不止,这样,利用人的视觉暂留好象6位LED同时点亮了。
2 . 显示子程序 1)功能 ① 把显示字符送显示缓冲区; ② 把显示字符转换为对应的段选码; ③ 送出位选码,使LED依次显示。 2)框图