1 / 20

第 6 章 MCS-51 单片机的交互通道配置与接口

第 6 章 MCS-51 单片机的交互通道配置与接口. 主要内容: 从工程应用角度介绍了 MCS-51 单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器、微型打印机等。介绍了多种实用方案和设计技巧。 重点 在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。 难点 在于使用动态方法进行键盘和显示的硬件及软件设计。. 人机界面 : 是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。 6.1 MCS-51 单片机与键盘的接口技术 键盘: 单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。

ashtyn
Download Presentation

第 6 章 MCS-51 单片机的交互通道配置与接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章MCS-51单片机的交互通道配置与接口 主要内容: 从工程应用角度介绍了MCS-51单片机的交互通道配置与接口,主要包括人机界面中的键盘、显示器、微型打印机等。介绍了多种实用方案和设计技巧。重点在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。难点在于使用动态方法进行键盘和显示的硬件及软件设计。

  2. 人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。 6.1 MCS-51单片机与键盘的接口技术 键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。 键盘的分类:按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。 6.1.1 概述 键盘输入的主要对象:各种按键或开关。 1.独立连接式键盘 每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。 适用场合:多用于设置控制键、功能键。适用于键数少的场合。

  3. 独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。 2. 矩阵连接式键盘 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。 适用场合:多用于设置数字键,适用于键数多的场合。

  4. 4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。 扫描方式:低电平扫描(回送线必须被上拉为高电平)、高电平扫描(回送线需被下拉为低电平)。右图中给出了低电平扫描的电路。 3. 薄膜开关 特点:不需要进行导线与开关间的焊接,结构简单、体积小、防尘、防水、防有害气体侵蚀、寿命长、可靠性高。 应用:与按键式键盘类似,多个薄膜开关也可按照独立式或矩阵式设计内部电路,其原理与普通键盘相同。

  5. 按键开关去抖动问题* 键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。

  6. 消除抖动不良后果的方法: ⑴ 硬件去抖动 其中RC滤波电路去抖动电路简单实用,效果较好。 ⑵ 软件去抖动 检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。

  7. 6.1.2 使用键盘时必须解决的问题 (1)开关状态的可靠输入。必须消除键抖动。可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟10~20ms (2)键盘状态的监测方法——中断方式还是查询方式。    (3)键盘编码方法。   (4)键盘控制程序的编制。。 6.1.3 键盘接口 功能:对键盘上所按下的键进行识别。 分类: (1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。

  8. (2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统。键盘。(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统。键盘。 1.键盘接口的工作原理 对于矩阵式键盘,如上页图所示,键盘的行线X0~X3通过电阻接+5V,当键盘上没有键闭合时,所有的扫描线和回送线都断开,无论扫描线处于何种状态,回送线都呈高电平。当键盘上某一键闭合时,则该键所对应的扫描线和回送线被短路,可以确定,变为低电平的回送线与扫描线相交处的键闭合。 CPU对键盘扫描的方式:程序控制的随机方式( CPU空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。 CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。

  9. 2.键输入程序的设计方法 (1)判断键盘上是否有键闭合; (2)消除键的机械抖动; (3)确定闭合键的物理位置; (4)得到闭合键的编号; (5)确保CPU对键的一次闭合只做一次处理 3.键盘接口方式 (1)独立式键盘接口(静态方式) 特点:结构简单,每个按键接单片机的一条I/O线,通过对输入线的查询,可以识别每个按键的状态。 [例题]在MCS-51 单片机系统中,设计一个含8个按键的独立式键盘。 解:在MCS-51中,含8个按键的独立式键盘的线路连接如下页图所示,8个按键经上拉电阻拉高后分别接到MCS-51单片机P1口的8条I/O线上(P1.0~P1.7)。

  10. P1口8条I/O线经与非门74LS30实现逻辑与非后,再经过1个非门74LS04进行信号变换,然后接至MCS-51的 引脚上,可通过中断的方式处理键盘。在中断服务程序中,先延时20 ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。 在无键按下的情况下,P1.0~P1.7线上输入均为高电平。当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。

  11. CLOSE: JNB ACC.7, KEY 7 ; 查询7号键 JNB ACC.6, KEY 6 ; 查询6号键 JNB ACC.5, KEY5 ; 查询5号键 JNB ACC.4, KEY4 ; 查询4号键 JNB ACC.3, KEY 3 ; 查询3号键 JNB ACC.2, KEY 2 ; 查询2号键 JNB ACC.1, KEY 1 ; 查询1号键 JNB ACC.0,KEY 0 ; 查询0号键 INT0: RETI KEY 7: …… ; 7号键处理程序 KEY 71: MOV A, P1 ; 再读P1口各引脚 JNB ACC.7, FUNC71 ; 确认键是否释放 RETI KEY 6: …… ; 其他键处理程序 …… D20: …… ; 20ms延时子程序 …… END

  12. 主程序如下: ORG 0000H LJMP MAIN ORG 0003H ; 外部中断0中断服务入口地址 LJMP INT ; 转中断服务 ORG 0100H MAIN: SETB EA ; 开总中断允许 SETB EX0 ; 开INT0中断 SETB IT0 ; 下降沿有效 …… 中断服务程序清单如下: INTI CALL D20 ; 延时去抖动 MOV P1, #0FFH ; P1口送全1值(准双向口原因) MOV A, P1 ; 读P1口各引脚 CJNE A, #0FFH,CLOSE ; 验证是否确实有键闭合 AJMP INT0 ; 无键按下(按键时间过短)则退 ;出中断

  13. (2)矩阵式键盘接口——行反转法 矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双向I/O口分别接行、列线。步骤如下: (1)由行线输出全“0”,读入列线,判有无键按下。 (2)若有键按下,再将读入的列列线输出,读进行线的值。 (3)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键的唯一的特征值。 行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。 [例题]请为8051微处理器设计一个由4行4列键阵构成的键盘。 解:4×4矩阵键盘的线路连接如下页图所示。其中P2口的低4位作为输出线。P1口的低4位作为输入线,输入线通过74LS21进行逻辑相与后作为8051的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。

  14. (1)查询闭合键的位置子程序KEYR KEYR子程序用以确定每组线中哪一位为0,是否有多个0。在调用前,应将读某组线的数据存入累加器A中。 KEYR子程序返回时,某组线中0的位置(0~3)保存在R3中。按键闭合引起中断后,执行中断服务程序。

  15. KEYR子程序如下: KEYR: CJNE A, #0FEH, TESTP11 ; 测试P1.0 MOV R3, #0 ; P1.0=0,说明被按键的输入线为P1.0 LJMP FINISH ; 返回 TESTP11: CJNE A, #0FDH, TESTP12 ; 测试P1.1 MOV R3, #1 LJMP FINISH TESTP12: CJNE A, #0FBH, TESTP13 ; 测试P1.2 MOV R3, #2 LJMP FINISH TESTP13: CJNE A, #0F7H, FINISH ; 测试P1.3 MOV R3, #3 FINISH: RET 表2-5 工作寄存器组选择控制表

  16. (2)中断服务程序 中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键做出处理。 中断服务程序如下: ORG 1000H INT11:LCALL DELAY ; 延时去抖动 MOV A, P1 ; 读输入线 ANL A, #0FH ; 判断是否有键闭合 CJNE A, #0FH, TEST ; 有键闭合,转判断按键程序 RETI ; 无键闭合,返回 TEST: MOV B, A ; 暂存 LCALL KEYR ; 调用读取子程序 MOV 40H, R3 ; 暂存在40H单元 MOV P2, #0FFH ; 输出线写1 MOV P1, B ; 输入线写入数据 MOV A, P2 ; 读输出线 LCALL KEYR ; 调用读取子程序 XCH A, R3 SWAP A ORL 40H, A ; 得按键特征值 RETI

  17. 中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。 (3)去抖动的延时子程序DELAY 利用CPU的空闲方式,通过定时器T1实现延时, T1必须预先置初值,以得到需要的延迟时间。设晶振频率为6MHz,欲延时20ms,定时时间为: (216-TC)×6/12=20×103μs,初值:TC=25536=63C0H。 程序如下: DELAY: MOV TOMD, #11H ; 方式1定时 MOV TL1, #0C0H ; 定时器1定时初值 MOV TH1, #63H SETB EA ; 开中断 SETB ET1 ; 开定时器1中断 SETB PT1 ; 定时器1为高级中断(因被键盘中断调用) SETB TR1 ; 启动定时器 ORL PCON,#1 ; 启动空闲方式,实际CPU在此处等待 CLR TR1 ; 以下四条指令只有在延时后,定时器被唤醒,才能执行 CLR PT1 CLR ET1 RET END

  18. (4)通过串行口扩展键盘接口 MCS-51系列单片机的串行口与串/并转换芯片配合(如串入并出芯片74LS164 )可以扩展键盘。 [例题]利用MCS-51的串行口与串/并转换芯片配合,扩展2行8列的键盘接口,键号为0~15。要求给出其硬件连接和键盘查询子程序。 解:串口与串/并转换芯片配合扩展键盘的线路连接如下图所示。

  19. 其中,P1.0和P1.1作为行线。键盘的编码为: P1.0线上的8个键分别为00H+(00H~07H),P1.1线上的8个键分别为08H+(00H~07H)。扫描线(00H~07H)的具体值存放在R4中。 程序采取查询方式读取键号,并且考虑了键的抖动问题。 DLY1是延时子程序。 程序如下: ORG 1000H SERKEY:MOV SCON, #00H ; 设置串行口 MOV A, #00H ; 键盘初始化,送00H到列线上 LCALL VARTO ; 发送数据 CHK:JNB P1.0, CHK0 ; 检查是否有键按下 JNB P1.1, CHK0 ; 检查是否有键按下 AJMP CHK ; 无键按下,继续查找 CHK0:LCALL DLY1 ; 调用10ms延时子程序,去抖 JNB P1.0, CHEN ; 确实有键按下,转CHEN JNB P1.1, CHEN AJMP CHK ; 无键按下,继续查找 CHEN:MOV R2, #0FEH ; 首列扫描字送R2,查键号,最低位为0 MOV R4, #00H ; 首列偏移值送R4

  20. CHKN:MOV A, R2 ; 发送列扫描字 LCALL VARTO JB P1.0, CH1 ; 检查P1.0有无键按下;若无,转CH1 MOV A, #0 ; 第一行首列值送A,00H+(R4) AJMP CKEY ; 转求键号 CH1:JB P1.1, NEXT ; 检查P1.1有无键按下;若无,转NEXT MOV A, #8H ; 第二行首列值送A CKEY:ADD A, R4 ; 求键号,并入栈保护 RET NEXT:INC R4 ; 指向下一列 MOV A, R2 ; 取出原扫描字 JNB ACC.7,KEND ; 是否已检查完8列? RL A ; 8列未完,指向下一列 MOV R2, A ; 列扫描字送R2 AJMP CHKN ; 8列未完,检查下一列 KEND:AJMP SERKEY ; 8列查完,未查到有键按下,等待 VARTO:MOV SBUF, A ; 发送A中数据 JNB TI, $ ; 发送等待 CLR TI ; 清除 RET DLY1: …… ; 延时10ms子程序(略) END ; 结束

More Related