第七章 键盘和LED显示.docVIP

  • 4
  • 0
  • 约6.19千字
  • 约 9页
  • 2017-09-01 发布于河南
  • 举报
第七章 键盘和LED显示

第七章 键盘和LED显示 第一节 键盘设计 一 按键种类 在微机系统中,键盘是一种最常用的外设,它由多个开关组合而成。可以用来制造键盘的按键开关有好多种,最常用的有机械式、薄膜式、电容式和霍尔效应式等4种。 机械式开关较便宜,但压键时会产生触点抖动,即在触点可靠地接通前会通断多次,而且长期使用后可靠性会降低。高质量机械式开关的寿命约100万次。 薄膜式开关可做成很薄的密封单元,不易受外界潮气或环境污染,常用于微波炉、医疗仪器或电子称等设备的按键。不同薄膜开关的寿命差别很大。 电容式开关没有抖动问题,但需要特制电路来测电容的变化,平均寿命约2000万次。 霍尔效应按键是另一种无机械触点的开关,具有很好的密封性,平均寿命高达1亿次甚至更高,但开关机制复杂,价格昂贵。 计算机上用的键盘一般都用机械式开关。 二 键盘的工作原理 ⒈ 简易键盘 说明:电路简单,但是有个最大的缺点,那就是每个键要用一条线,每8个开关还要占用一个8位的并行端口。一个具有64个键的键盘需要64条连线,与8个8位的并行端口相连。所以,这种结构只能应用于仅有几个键的小键盘中。 ⒉ 行列式键盘 ① 电路图 ② 电路说明 设16个键分别为16进制数字0~9和A~F,键盘排列、连线及接口电路如上图所示。16个键排成4行×4列的矩阵,接到微型机的一对端口上。端口由8255A构成,其中端口A作输出,端口B作输入。矩阵的4条行线接到输出端口A的PA3~PA0,用程序能改变这4条行线上的电平。4条列线连到输入端口B的PB3~PB0,4条行线还同时接到输入端口B的PB7~PB4上。这样,用输入指令读取B口状态时,可同时读取键盘的行列信号。 ③ 工作原理 在无键压下时,由于接到+5V上的上拉电阻的作用,列线被置成高电平。压下某一键后,该键所在的行线和列线接通。这时,如果向被压下键所在的行线上输出一个低电平信号,则对应的列线也呈现低电平。当从B口读取列线信号时,便能检测到该列线上的低电平。读取B口的状态时,还能读到行线上的低电平信号。这样,根据读入的行和列状态中低电平的位置,便能确定哪个键被压下了。 ④ 键盘扫描过程 Ⅰ 检测是否所有键都松开了,若没有则反复检测; Ⅱ 当所有键都松开了,再检测是否有键压下,若无键压下则反复检测; Ⅲ 若有键压下,要消除键抖动,确认有键压下; Ⅳ 对压下的键进行编码,将该键的行列信号转换称16进制码,由此确定哪个键被压下了。如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。 Ⅴ 该键释放后,再回到Ⅱ。 注意: Ⅰ 检测矩阵中是否有键压下的一种简单方法是,自输出口A向所有行线输出0电平,再通过B口的低4位读取列值,若其中有0值,便是有键压下了。 Ⅱ 当检测到有键压下后,必须消除键抖动。消除键抖动的常用方法是在检测到有键压下后,延长一定时间(通常为20ms),再检查该键是否仍被压着。若是,才认定该键确实被按下了,而不是干扰。 Ⅲ 确认有键压下 后,再确定被压下键所在的行列号。为获取行列信息,先从A口输出一个低电平到一行线上,再从B口读入各列的值,若没有一列为低电平,说明压下的键不在此行。于是,再向下一行输出一个低电平,再检测各列线上是否有低电平。依次对每一行重复这个过程,直到查到某一列线上出现低电平为止。被置成低电平的行和读到低电平的列,便是被压下键所在的行列值。 已知被压下的键所在的行号(0~3)和列号(0~3)后,就能得到该键的扫描码。例如,对于数字0,它位于3行、3列,压下“0”键时,从B口可读得D7为和D3位为0,其余位为1,所以数字0的编码,即77H。把所有按键的编码列成表,放在数据段中,用查表程序来查对,便能确定压下的是什么键。 ⑤ 程序 执行程序后,若返回值AX=0,表示已读到有效的键值,并在BX中存有0~F键的16进制代码;若AX=1,则表示出错。 ;端口地址 PORT_A EQU 0FF8H ;8255A口地址 PORT_B EQU 0FFAH ;8255B口地址 PORT_CTL EQU 0FFEH ;8255控制口地址 ;数据段,键盘扫描表 DATA SEGMENT ; 0 1 2 3 4 5 6 7 TABLE DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH ; 8 9 A B C D E F DB 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH DATA ENDS ;堆栈段 STACK SEGMENT STACK DW 50 DUP(0) TOP_

文档评论(0)

1亿VIP精品文档

相关文档