单片机讲解10解析

上传人:我** 文档编号:117871367 上传时间:2019-12-11 格式:PPT 页数:57 大小:473KB
返回 下载 相关 举报
单片机讲解10解析_第1页
第1页 / 共57页
单片机讲解10解析_第2页
第2页 / 共57页
单片机讲解10解析_第3页
第3页 / 共57页
单片机讲解10解析_第4页
第4页 / 共57页
单片机讲解10解析_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《单片机讲解10解析》由会员分享,可在线阅读,更多相关《单片机讲解10解析(57页珍藏版)》请在金锄头文库上搜索。

1、键盘与显示器接口 键盘可分为编码式键盘和非编码式键盘。编码 键盘能够由硬件自动提供与被按键对应的ASCII 码或其它编码。但是它要求采用较多的硬件,价 格昂贵。非编码键盘则仅提供行和列的矩阵,其 硬件逻辑与按键编码不存在严格的对应关系,而 要由所用的程序来确定。非编码键盘的硬件接口 简单,但是要占用较多的CPU时间。 任何键盘接口均要解决三个主要问题: 1、反弹跳 2、串键保护 3、按键识别 1、反弹跳 当按键开关的触点闭合或断开到其稳定,会产生一个短暂的 抖 动和弹跳,如下图所示,这是机械式开关的一个共同性问题 。 消除由于键抖动和弹跳产生的干扰可采用硬件方法,也可采 用 软件延迟的方法。

2、采用RS触发器实现硬件反弹跳 当键数较多时经常用软件 延时的方法来反弹跳,如 流程图所示。当检出有键 按下后,先执行一个反颤 延时20ms的子程序,待前 沿弹跳消失后再转入键闭 合CLOSE子程序。然后再 判断此次按键是否松开, 如果没有,则进行等待。 若已松开,则又执行一次 延时20ms的子程序以消除 后沿弹跳的影响,再去检 测下次按键的闭合。 2、串键保护 由于操作不慎,可能会造成同时有几个键被按下,这种情 况 称为串键。有三种处理串键的技术:两键同时按下、n键同 时 按下和n键锁定。 “两键同时按下”技术是在两个键同时按下时产生保护作用 。 最简单的办法是当只有一个键按下时才读取键盘的输

3、出,最 后 仍被按下的键是有效的正确按键。当用软件扫描键盘时常采 用 这种方法。另一种方法是当第一个按键未松开时,按第二个 键 不产生选通信号。这种方法常藉助硬件来实现。 “n键同时按下”技术或者不理会所有被按下的键,直至只 剩 下一键按下时为止,或者将所有按键的信息都存入内部缓冲器 中,然后逐个处理,这种方法成本较高。 “n键锁定”技术只处理一个键,任何其它按下又松开的键 不 产生任何码。通常第一个被按下或最后一个松开的键产生码 。 这种方法最简单也最常用。 3、按键识别 决定是否有键被按下,如有则应识别键盘 矩 阵中被按键对应的编码。编码键盘通过硬件 直 接提供按键与被按键对应的ASCII

4、码或其它编 码。非编码键盘则需要通过编程方式提供按 键 编码。其优点是结构简单、成本低廉 非编码键盘接口技术 非编码键盘接口技术主要是如何确定被 按键的行、列位置,即键码(值)。按键 识别是接口技术的关键问题。 常用按键识别方法有行扫描法(Row- Scanning)和线反转法(Line-Reverse) 。 典型非编码键盘结构 非编码键盘大都采用按行、列排列的矩阵开关结 构,这种结构可以减少硬件和连线。 矩阵键盘接口 行扫描法识别按键 行扫描法是采用步进扫描方式,CPU通过输出口 把一个“步进的0”逐行加至键盘的行线上,然后通过 输入口检查列线的状态。由行线列线电平状态的组合 来确定是否有键

5、按下,并确定被按键所处的行、列位 置。 R1K13K14K15K16 R2K9K10K11K12 R3K5K6K7K8 R4K1K2K3K4 C1C2C3C4 键位与行列线关系表 上表列出了识别按键位置与各行之间的关系。其 中,R1、R2、R3、R4表示行,C1、C2、C3、C4表 示列。当扫描第一行时,R1=0, 若读入的列值C1=0 ,则表明按键K13被压下,如果C3=0,则表明按键 K15被压下。第一行扫描完毕后再扫描第二行,逐行 扫描至最后一行为止,即可识别出所有的按键。 线反转法识别按键 线反转法是藉助程控 并行接口实现的,比 行扫描法的速度快。 如图所示为一个44 键盘与并行接口的

6、连 接。并行接口有一个 方向寄存器和一个数 据寄存器,方向寄存 器规定了接口总线的 方向,寄存器的某位 置“1”,规定该位口 线为输出。寄存器的 某位置“0”,规定该 位口线为输入。 线反转法的具体操作分两步 第一步:先把控制字0FH置入并行接口的方向寄存器,使4条 行线(PB0PB3)作输出,4条列线(PB4-PB7)作输入。然后把 控制字F0H写入数据寄存器,PB0PB3将输出“0”到键盘行 线。这时若无键按下,则4条列线均为“”;若有某键按 下,则该键所在行线的“0”电平通过闭合键使相应的列线 变为“0”,并经与非门发出键盘中断请求信号给单片机。 图4.6(a)是第2行第1列有键按下的情

7、况。这时PB7PB4线的 输入为1011,其中0对应于被按键所在的列。 第二步:使接口总线的方向反转,把控制字F0H写入方向寄 存器,使PB0PB3作输入,PB4PB7作输出。这时PB7 PB4线的输出为1011,PB3PB0的输入为1011,其中“0”对 应于被按键的行。单片机现在读取数据寄存器的完整内容为 10111011,其中两个0分别对应于被按键所在的行列位置。 根据此位置码到ROM中去查表,就可识别是何键被按下。 单片机通过8155实现的键盘、显示器接口 如图所示为单片机8051与矩阵键盘及LED显示器的一种接口电 路,通过编程设定8155的PA口、PB口作为输出口,PC口作为输 入

8、口。PA口完成键盘的行扫描输出,同时又对LED显示器作字位 扫描,PC口输入键盘列线状态。7407为同相驱动器,75452为反 相驱动器。接口电路中采用8031的P2.7作为8155的片选线,P2.0 作为8155的IO端口和片内RAM选择线,因此8155的命令寄存器 地址为7F00H,PAPC口地址为7F01H7F03H。 按键识别子程序 KEY: MOV DPTR, #7F00H ;8155命令口地址 MOV A, #03H ;置PA、PB口为输出, MOVX DPTR,A ;PC口为输入 MOV R4,00H ;0键号寄存器R4 MOV R2,01H ;扫描模式01HR2 KEY1:MO

9、V DPTR,7F01H MOV A,R2 MOVX DPTR,A ;扫描模式8155PA口 INC DPTR INC DPTR MOVX A,DPTR ;读8155PC口 JB ACC.0,KEY2 ;0列无键闭合,转判1列 MOV A,00H ;0列有键闭合,0A AJMP KEY5 KEY2:JB ACC.1,KEY3 ;1列无键闭合,转判2列 MOV A,01H ;1列有键闭合,列线号01HA AJMP KEY5 KEY3:JB ACC.2,KEY4 ;2列无键闭合,转判3列 MOV A,02H ;2列有键闭合,02HA AJMP KEY5 KEY4:JB ACC.3,NEXT ;3列

10、无键闭合,转判下一行 MOV A,03H ;3列有键闭合,03HA KEY5:ADD A,R4 ;列线号+(R4)作为键值A MOV R4,A ;键值R4 RET ;返回 NEXT:MOV A,R4; ADD A,04 ;键号寄存器加4 MOV R4,A MOV A,R2 JB ACC.3,NEXT1 ;判别是否已扫描到最后一行 RL A ;扫描模式左移一位 MOV R2,A AJMP KEY1 ;重新开始扫描下一行 NEXT1: MOV R4,88H ;扫描到最后一行仍无按键 RET ;置无键闭合标志后返回 键值分析 单片机从键盘接口获得键值后究竟执行什么操作,完全 取决于键盘解释程序。 常

11、用的方法: 1、查表法 根据得到的键值代码,到固化在ROM里的表格中查找 对应该代码的动作例行程序的首地址。这种方法适用于一 个键就产生一个动作的单个命令键。 2.状态分析法 根据键码和当前所处的状态找出下一个应进入的状态及动 作例行程序。这种方法适用于多个键互相配合产生一个动 作的多义键。 查表法 查查表法的核心是一个固化在ROM中的功能子程序入口 地址转转移表。如下表所示。在转转移表内存有各个功能 子程序的入口地址,根据键值键值 代码查阅码查阅 此表获获得相应应 功能的子程序入口地址,从而可以转转移到相应应的命令 处处理子程序。 功能子程序 入口地址 子程序1 子程序2 子程序3 入口地址

12、1 入口地址2 入口地址3 功能子程转移地址 例:键盘接口调用按键识别子程序所获得的键值如 下表所示 ,当键值小于10H时代表数字键,键值大 于等于10H时代表功能键。 键值键值 表按键键键值键值 0F00H 0FH RUN10H RET11H ADRS12H STORE13H READ14H WRITE15H 处理功能键的程序: INPUT: LCALL KEY ;调按键识别子程序,获得键值在A中 MOV R0,A ;键值暂存于R0 ANL A,10H JZ DATIN ;小于10H为数字键,转入数字操作 MOV A,R0 ;大于等于10H为命令键 ANL A,0FH ;保留键值低4位 MO

13、V R0,A ;(A)3 RL A ADD A,R0 MOV DPTR,TABEL ;取转移表首地址 JMP A+DPTR ;按不同键值散转至子程序 TABEL:LJMP RUN ;转RUN命令子程序 LJMP RET ;转RET命令子程序 LJMP ADRS ;转ADRS命令子程序 LJMP STORE ;转STORE命令子程序 LJMP READ ;转READ命令子程序 LJMP WRITE ;转WRITE命令子程序 DATIN: ; 数字键操作程序,略; LED显示器接口技术 LED数码显示器结构与原理 LED数码显示器是由发光二极管显示字段的显示器件。在应用 系统中通常使用的是七段LE

14、D数码显示器。这种显示块有共阴极 与共阳极两种,如下图所示。 使用LED显示器时,要注意区分共阴极和共阳 极两种不同的接法。 为了显示数字或字符,必须对数字或字符进 行编码,简称段码。七段数码管加上一个小数点 ,共计8段。因此为LED显示器提供的段码正好是 一个字节。 实际使用中,通过单片机向LED显示接口输 出不同段码,即可显示相应的数字。 LED数码显示器共阴极和共阳极段码 存储储器 地址 显显示 数字 共阴极接法的七段状态态 g f e d c b a 共阴极接法 段码码(十六进进制数) 共阳极接法 段码码(十六进进制数) SEG00 1 1 1 1 1 13F40 SEG+110 0

15、0 0 1 1 00679 SEG+221 0 1 1 0 1 15B24 SEG+331 0 0 1 1 1 14F30 SEG+441 1 0 0 1 1 06619 SEG+551 1 0 1 1 0 16D12 SEG+661 1 1 1 1 0 17D02 SEG+770 0 0 0 1 1 1 0778 SEG+881 1 1 1 1 1 17F00 SEG+991 1 0 0 1 1 16718 SEG+10A1 1 1 0 1 1 17708 SEG+11B1 1 1 1 1 0 07C03 SEG+12C0 1 1 1 0 0 13946 SEG+13D1 0 1 1 1 1 05E21 SEG+14E1 1 1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号