单片机第7章2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件去抖
如果按键较多,常用软件方 法去抖动,即检测出键闭合后执 行一个延时程序,产生5~10 ms 的延时;让前沿抖动消失后,再 一次检测键的状态,如果仍保持 闭合状态电平,则确认为真正有 键按下。当检测到按键释放后, 也要给5~10 ms的延时,待后沿 抖动消失后,才能转入该键的处 理程序。
有按键信号? Y 延时等待10ms
第0行的键值为: 0行×4+列号(0~3)为0、1、2、3; 第1行的键值为: 1行×4+列号(0~3)为4、5、6、7; 第2行的键值为: 2行×4+列号(0~3)为8、9、A、B; 第3行的键值为: 3行×4+列号(0~3)为C、D、E、F。 4×4键盘行首键号为0、4、8、C,列号为0,1,2,3。
LJMP PKEY1 KEY2: CJNE A,#1DH,KEY3 LJMP PKEY2 KEY3: CJNE A,#1BH,KEY4 LJMP PKEY3 KEY4: CJNE A,#17H,KEY5 LJMP PKEY4 KEY5: CJNE A,#0FH,PASS LJMP PKEY5 RETURN:RET
通常,键盘工作方式有3种,即编程扫描、定时扫描和 中断扫描。
1. 编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。 工作过程: 事先写好键盘扫描子程序,在主程序中的适当位置安 排调用子程序。如上所述,一旦有键按下,子程序会把键 值算好,放如A中,主程序中应有相应的程序去对键值作出 反应。 2. 定时扫描工作方式 利用单片机内的定时器,产生10ms的定时中断,在中断 服务程序中对键盘进行扫描。
2).键输入原理
微机键盘通常使用机械触点式按键开关,其主要功能
是把机械上的通断转换成为电气上的逻辑关系。也就是说, 它能提供标准的TTL逻辑电平,以便与通用数字系统的逻
辑电平相容。 对于一组键或一个键盘,总有一个接口电路与CPU相
连。CPU可以采用查询或中断方式了解有无将键输入,并 检查是哪一个键按下,将该键号送入累加器ACC,然后通
具体描述
行扫描法识别键号(值)的原理
将第0行变为低电平,其余行为高电平时,输出编码为1110。
然后读取列的电平,判别第0行是否有键按下。在第0行上若 有某一按键按下,则相应的列被拉到低电平,则表示第0行 和此列相交的位置上有按键按下。若没有任一条列线为低电 平,则说明0行上无键按下。
将第1行变为低电平,其余行为高电平时,输出编码为1101。
列号译码
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
过跳转指令转入执行该键的功能程序,执行完后再返回主
程序。
3).按键结构与特点 行线电压信号通过键盘开关机械触点的断开、闭合, 输出波形如图10-6。
为了克服按键触点机械抖动所致的检测误判,必须采取去 抖动措施。这一点可从硬件、软件两方面予以考虑。在键数
较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。
去DKEY做什么?
;键位置译码
DKEY:MOV MOV MUL ADD AJMP A,R0 B,#04H AB A,R2 EKEY ;取行号送A ;每一行按键个数 ;行号×按键数 ;行号×按键数+列号=键值,在A中
解读子程序的框架。 问:何时调用?
练习:设计一个2×2行列式键盘,并编写键盘扫描子程序。
此公式是针对例图,若行、列与扫描线、回读线的对应关系 改变了,公式要改变。
键的位置码及键值的译码过程
按键扫描的工作过程如下: ① 判断键盘中是否有键按下; ② 进行行扫描,判断是哪一个键按下,若有键按下, 则调用延时子程序去抖动; ③ 读取按键的位置码; ④ 将按键的位置码转换为键值(键的顺序号)0、1、 2„、F。
7.3.4 键盘/显示器接口设计实例
(1) 利用并行I/O芯片实现键盘/显示器接口 一般把键盘和显示器放在一起考虑。 图10-14:8031用扩展I/O接口芯片8255H实现的6位LED 显示和32键的键盘/显示器接口电路。
8031外扩一片8155H。RAM地址:7E00H~7EFFH。 I/O口地址:7F00H~7F05H。 PA口为输出口,控制键盘列线的扫描,同时又是6位共 阴极显示器的位选线。 PB口作为显示器段码输出口,PC 口作为输入口,是键盘的回读线。 75452:反相驱动器,7407:同相驱动器。
PKEY1: LJMP RETURN
2. 行列式(矩阵式)键盘接口
按键数目较多的场合,行列式键盘与独立式键盘相比, 要节省很多的I/O口线。
由行线和列线组成,按键位于行、列的交叉点上。
为了编程的需要,更准确的叫法:扫描线和回读线。为了 读到确定的值,回读线被定义在有上拉电阻的线上。
4×4矩阵键盘接口图
首先判别键盘中有无键按下: 由单片机I/O口向键盘送(输出)全扫描字,然后读入 (输入)列线状态来判断。方法是: 向扫描线(图中水平线)输 出全扫描字00H,把全部行线置为低电平,然后将回读线的 电平状态读入累加器A中。如果有按键按下,总会有一根列 线电平被拉至低电平,从而使列输入不全为1。 判断键盘中哪一个键被按下: 通过将扫描线逐行置低电平后,检查回读线输入状态。 方法是: 依次给扫描线送低电平,然后查所有回读线状态, 称行扫描。如果全为1,则所按下的键不在此行;如果不全 为1,则所按下的键必在此行,而且是在与零电平列线相交 的交点上的那个键。
;是K1键按下,转K1键处理 ;子程序PKEY1 ;S2键未按下,转KEY3 ;S2键按下,转PKEY2处理 ;S3未按下,转KEY4 ;S3按下,转PKEY3处理 ;S4键未按下,转KEY5 ;S4按下,转PKEY4处理 ;S5未按下,转RETURN ;S5按下,转PKEY5处理 ;重键或无键按下,从子程序返回 PKEY*的 程序框架 怎样
7.3
一、键来自百度文库接口原理
键盘接口设计
二、键盘/显示器接口设计实例
7.3.1 键盘接口原理
键盘输入的特点
1).按键的分类 按键按照结构原理可分为两类,一类是触点式开关按键, 如机械式开关、导电橡胶式开关等;另一类是无触点式开关按 键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。 目前,微机系统中最常见的是触点式开关按键。 按键按接口原理可分为键盘分编码键盘和非编码键盘。 这两类键盘的主要区别是识别键符及给出相应键码的方 法。编码键盘主要是用硬件来实现对键的识别,非编码键盘 主要是由软件来实现键盘的定义与识别。 键盘上闭合键的识别由专用的硬件译码器实现,并产生 键编号或键值的称为编码键盘,如BCD码键盘、ASCII码键盘 等;靠软件识别的称为非编码键盘。
图为8255A扩展I/O口的独立式按键接口电路。
PA
用三态缓冲器扩展的I/O口的按键接口电路。
MOV
DPTR,#0BFFFH
MOVX A,@DPTR
对独立式键盘编程,软件消抖,查询方式检测键的状态。仅 有一键按下时才有效才处理。
KEYIN: MOV DPTR,#0BFFFH ;键盘端口地址BFFFH
然后通过输入口读取各列的电平。检测其中是否有变为低电 平的列线。若有键按下,则进而判别哪一列有键按下,确定 按键位置。
将第2行变为低电平,其余行为高电平时,输出编码为1011。
判别是否有哪一列键按下的方法同上。
将第3行变为低电平,其余行为高电平时,输出编码为0111。
判别是否有哪一列键按下的方法同上。
3.中断工作方式
只有在键盘有键按下时,才执行键盘扫描程序,如无键 按下,单片机将不理睬键盘。 键盘所做的工作分为三个层次 第1层:单片机如何来监视键盘的输 入。三种工作方式:①编程扫描②定 时扫描③中断扫描。 第2层:确定具体按键的键号。体现 在按键的识别方法上就是:①扫描法; ②线反转法。 第3层:执行键处理程序。
硬件去抖 在硬件上可采用在 键输出端加R-S触发器 (双稳态触发器)或单稳 态触发器构成去抖动电 路。右图是一种由R-S触 发器构成的去抖动电路, 当触发器一旦翻转,触 点抖动不会对其产生任 何影响。
+5v
&
开关
+5v
I/O 接 口
单 片 机
&
消除抖动电路
图图 硬件去抖电路 10-6 硬件去抖电路
在扫描过程中,当发现某行有键按下,也就是输入的列 线中有一位为0时,便可判别闭合按键所在列的位置,根据 行线位置和列线位置就能判断按键在矩阵中的位置,知道是 哪一个键按下。
行 读图并归纳,得出: 首 键 按键的值=行号×每行的按键个数+列号。计数译码法 号
如何 将你知道的 第i行 、 第 j列按键 被按下 的信 息 存放在A中?以什么形式 存放?读图10-10
解: 原理如图9-8所示。 ① 判断是否有键按下: 将列线P1.0、P1.1送全0, 查P0.0、P0.1是否为0。 ② 判断哪一个键按下:
逐列送0电平信号,再逐行 扫描是否为0。
③ 键号=行首键号+列号
键盘扫描原理图
7.3.3
键盘的工作方式
单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。 原则:即要保证能及时响应按键操作,又不要过多占用CPU 的工作时间。
A,P1 A,#0FH A EKEY DEL20 ms
A,#00 R0,A R1,A R3 #0FEH A,R3 P1,A A,P1 R1,A A,#0F0H A
;读列值 ;取列值,A中有0则有键闭合 ;A中有1则有键按下则有键闭合 ;无键按下时退出 ;延时20 ms去抖动
;下面进行行扫描,1行1行扫 ;R0作为行计数器,开始为0 ;R1作为列计数器,开始为0 ;R3为行扫描字暂存,低4位为行扫描字 ;输出行扫描字,高4位全1 ;读列值 ;暂存列值 ;取列值 ;高电平则有键闭合
1. 动态显示程序设计
内部RAM 6个显示缓冲单元: 79H~7EH存放要显示的6位数据。 8155H的PB口输出相应位的段码; 8155H的PA口输出位选码,如01H。 子程序流程如图10-15 。 8155H的初始化程序:
SKEY3 ;有键按下转SKEY3,无键按下时进行一行扫描
INC
MOV RL MOV
R0
A,R3 A R3,A
;行计数器加1
;形成下一行扫描字→R3
MOV CJNE EKEY: RET
A,R0 A,#04H,SKEY2;最后一行扫(4次)完了吗?
EKEY是谁的出口?
去SKEY2扫描 下一行
若有键闭合,则去 SKEY3
MOVX A,@DPTR
ANL A,#1FH
;读键盘状态
;屏蔽高三位
MOV R3,A
LCALL DELAY10 MOVX A,@DPTR ANL A,#1FH
;保存键盘状态值
;延时10ms去键盘抖动 ;再读键盘状态 ;屏蔽高三位
CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN ;确认是有键按下 CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2
N
仍有按键信号? N Y 键盘处理
按键释放? Y
N
图10-7 软件去抖
7.3.2
非编码键盘接口的工作原理
独立式按键接口和行列式键盘接口。
1.独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下。 此种接口适于键数较少或操作速度较高的场合。 图(a)为中断方式的独立式键盘工作电路 图(b)为查询方式的独立式键盘工作电路。
这样编键号有何好处?
规划:行扫描过程结束后(发现有键按下)得到的行号 存放在R0中,列号存放在R2中。
描述子程序为DECODE的 功能,出、入口参数?
出口: EKEY 键值(键号)在A中或? KEY: MOV P1,#0F0H ;令所有行为低电平 MOV ORL CPL JZ LCALL
SKEY: MOV MOV MOV MOV SKEY2:MOV MOV MOV MOV ORL CPL S123: JNZ