《单片机并行接口技术〖PPT教案〗单片机原理与应用》由会员分享,可在线阅读,更多相关《单片机并行接口技术〖PPT教案〗单片机原理与应用(127页珍藏版)》请在金锄头文库上搜索。
1、 第七章 单片机并行接口技术 单片机与键盘接口 单片机与显示器接口 D/A/ 键盘接口 键盘工作原理 1 按键的分类 按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 按键按照接口原理可分为编码键盘与非编码键盘两类 ,这两类键盘的主要区别是识别键符及给出相应键码的方法 。编码键盘主要是用硬件来实现对键的识别 , 非编码键盘主要是由软件来实现键盘的定义与识别 。 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键
2、保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。 2 键输入原理 在单片机应用系统中 , 除了复位按键有专门的复位电路及专一的复位功能外 , 其它按键都是以开关状态来设置控制功能或输入数据的 。 当所设置的功能键或数字键按下时 , 计算机应用系统应完成该按键所设定的功能 , 键信息输入是与软件结构密切相关的过程 。 对于一组键或一个键盘 , 总有一个接口电路与 并检查是哪一个键按下 , 将该键号送入累加器 然后通过跳转指令转入执
3、行该键的功能程序 , 执行完后再返回主程序 。 3 按键结构与特点 微机键盘通常使用机械触点式按键开关 , 其主要功能是把机械上的通断转换成为电气上的逻辑关系 。 也就是说 ,它能提供标准的 以便与通用数字系统的逻辑电平相容 。 机械式按键再按下或释放时 , 由于机械弹性作用的影响 , 通常伴随有一定时间的触点机械抖动 , 然后其触点才稳定下来 。 其抖动过程如图 抖动时间的长短与开关的机械特性有关 , 一般为 510 图 按键触点的机械抖动 闭合稳定键按下前沿抖动 后沿抖动 在触点抖动期间检测按键的通与断状态 , 可能导致判断出错 , 即按键一次按下或释放被错误地认为是多次操作 , 这种情况
4、是不允许出现的 。 为了克服按键触点机械抖动所致的检测误判 , 必须采取去抖动措施 。 这一点可从硬件 、 软件两方面予以考虑 。 在键数较少时 , 可采用硬件去抖 , 而当键数较多时 , 采用软件去抖 。 在硬件上可采用在键输出端加 双稳态触发器 )或单稳态触发器构成去抖动电路 。 图 当触发器一旦翻转 , 触点抖动不会对其产生任何影响 。 图 双稳态去抖电路 &V 5 V ) 7 k 4 . 7 k 电路工作过程如下:按键未按下时 , a = 0, b = 1, 输出 Q = 1。 按键按下时 , 因按键的机械弹性作用的影响 , 使按键产生抖动 。 当开关没有稳定到达 因与非门 2输出为
5、0反馈到与非门 1的输入端 , 封锁了与非门 1, 双稳态电路的状态不会改变 , 输出保持为 1, 输出 当开关稳定到达 因 a = 1, b = 0, 使 Q = 0,双稳态电路状态发生翻转 。 当释放按键时 , 在开关未稳定到达 因 Q = 0, 封锁了与非门 2, 双稳态电路的状态不变 , 输出 消除了后沿的抖动波形 。 当开关稳定到达 因 a = 0, b = 0, 使 Q = 1, 双稳态电路状态发生翻转 , 输出 由此可见 , 键盘输出经双稳态电路之后 , 输出已变为规范的矩形方波 。 软件上采取的措施是:在检测到有按键按下时 , 执行一个 10 具体时间应视所使用的按键进行调整
6、) 的延时程序后 , 再确认该键电平是否仍保持闭合状态电平 ,若仍保持闭合状态电平 , 则确认该键处于闭合状态 。 同理 ,在检测到该键释放后 , 也应采用相同的步骤进行确认 , 从而可消除抖动的影响 。 4. 按键编码 一组按键或键盘都要通过 I/ 根据键盘结构的不同 , 采用不同的编码 。 无论有无编码 , 以及采用什么编码 , 最后都要转换成为与累加器中数值相对应的键值 , 以实现按键功能程序的跳转 。 5. 编制键盘程序 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下 , 并采取硬件或软件措施 , 消除键盘按键机械触点抖动的影响 。 (2) 有可靠的逻辑处理办法 。
7、每次只处理一个按键 ,其间对任何按键的操作对系统不产生影响 , 且无论一次按键时间有多长 , 系统仅执行一次按键功能程序 。 (3) 准确输出按键值 ( 或键号 ) , 以满足跳转指令要求 。 独立式按键 单片机控制系统中 , 往往只需要几个功能键 , 此时 ,可采用独立式按键结构 。 1. 独立式按键结构 独立式按键是直接用 I/其特点是每个按键单独占用一根 I/ 每个按键的工作不会影响其它 I/ 独立式按键的典型应用如图 独立式按键电路配置灵活 , 软件结构简单 , 但每个按键必须占用一根 I/ 因此 , 在按键较多时 , I/ 不宜采用 。 图 独立式按键电路 P 1 . 0P 1 .
8、1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 78 0 3 1V C C 2. 独立式按键的软件结构 独立式按键的软件常采用查询式结构 。 先逐位查询每根 I/ 如某一根 I/则可确认该 I/ 然后 , 再转向该键的功能处理程序 。 图 , 请读者自行编制相应的软件 。 矩阵式按键 单片机系统中 , 若使用按键较多时 , 通常采用矩阵式( 也称行列式 ) 键盘 。 1. 矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成 , 按键位于行 、 列线的交叉点上 , 其结构如图 由图可知 , 一个 4 4的行 、 列结构可以构成一个含有16个按键的键盘 , 显然
9、 , 在按键数量较多时 , 矩阵式键盘较之独立式按键键盘要节省很多 I/ 图 矩阵式键盘结构 0 1 2 34 5 6 78 9 10 1112 13 14 1500 1 2 3123 5 V 矩阵式键盘中 , 行 、 列线分别连接到按键开关的两端 , 行线通过上拉电阻接到 5 当无键按下时 , 行线处于高电平状态;当有键按下时 , 行 、 列线将导通 ,此时 , 行线电平将由与此行线相连的列线电平决定 。 这是识别按键是否按下的关键 。 然而 , 矩阵键盘中的行线 、列线和多个键相连 , 各按键按下与否均影响该键所在行线和列线的电平 , 各按键间将相互影响 , 因此 , 必须将行线 、 列线
10、信号配合起来作适当处理 , 才能确定闭合键的位置 。 2. 矩阵式键盘按键的识别 识别按键方法很多 , 其中最常见的方法是扫描法 。 下面以图 号键的识别为例来说明扫描法识别按键的过程 。 按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平。显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线处在低电平。只有这样,当有键按下时,该键所在的行电平才会由高电平变为低电平。 能判定相应的行有键按下。 8号键按下时,第 2行一定为低电平。然而,第 2行为低电平时,能否肯定是 8号键按下呢? 回答是否定的,因为 9、 10、 11号键按下,同
11、样会使第 2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。采用键盘扫描后,再来观察 8号键按下时的工作过程,当第 0列处于低电平时,第 2行处于低电平,而第 1、 2、 3列处于低电平时,第 2行却处在高电平,由此可判定按下的键应是第 2行与第 0列的交叉点,即 8号键。 3. 键盘的编码 对于独立式按键键盘,因按键数量少,可根据实际需要灵活编码。对于矩阵式键盘,按键的位置由行号和列号惟一确定,因此可分别对行号和列号进行二进制
12、编码,然后将两值合成一个字节,高 4位是行号,低 4位是列号。如图 号键,它位于第 2行,第 0列,因此,其键盘编码应为 20H。采用上述编码对于不同行的键离散性较大,不利于散转指令对按键进行处理。因此,可采用依次排列键号的方式对按排进行编码。以图 4键盘为例,可将键号编码为: 01H、 02H、 03H、 、 00106个键号。编码相互转换可通过计算或查表的方法实现。 4. 键盘的工作方式 对键盘的响应取决于键盘的工作方式 , 键盘的工作方式应根据实际应用系统中 其选取的原则是既要保证 又不要过多占用 通常 , 键盘的工作方式有三种 , 即编程扫描 、 定时扫描和中断扫描 。 1) 编程扫描
13、方式 编程扫描方式是利用 调用键盘扫描子程序来响应键盘输入的要求 。 在执行键功能程序时 , 直到 键盘扫描程序一般应包括以下内容: (1) 判别有无键按下 。 (2) 键盘扫描取得闭合键的行 、 列值 。 (3) 用计算法或查表法得到键值 。 (4) 判断闭合键是否释放 , 如没释放则继续等待 。 (5) 将闭合键键号保存 , 同时转去执行该闭合键的功能 。 图 8矩阵键盘电路 , 由图可知 , 其与单片机的接口采用 8155扩展 I/ 键盘采用编程扫描方式工作 。 8155位输入行扫描信号 , 位列扫描信号 , 二者均为低电平有效 。 8155的 与 与 、 分别与单片机的 、 相连 。 由此可确定 8155的口地址为: 命令 /状态口: 0100H( ) A 口: 0101H 0102H 0103H R 8155扩展 I/01234567891617182425262728293031P 2 . 7P 2 . 0