1 / 92

单片机原理与应用

单片机原理与应用. 四川文理学院 Email : ycfwsm@gmail.com 2014年9月10日. 第 6 章 MCS-51 单片机的交互通道 配置与接口. 主要内容: 从工程应用角度介绍了 MCS-51 单片机的交互通道配置与接口,主要包括人机界面中的 键盘 、 显示器 、 微型打印机 等。介绍了多种实用方案和设计技巧。 重点 : 系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。 难点 : 在于使用动态方法进行键盘和显示的硬件及软件设计。. 人机界面. 指人与计算机系统进行信息交互的接口,包括信息的输入和输出。.

vita
Download Presentation

单片机原理与应用

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. 单片机原理与应用 四川文理学院 Email:ycfwsm@gmail.com 2014年9月10日

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

  3. 人机界面 指人与计算机系统进行信息交互的接口,包括信息的输入和输出。

  4. 6.1 MCS-51单片机与键盘的接口技术 键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。 键盘的分类: (1)按编码方式可分为编码键盘与非编码键盘。 (2)按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。

  5. 6.1.1 概述_键盘分类 1.独立连接式键盘 每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。 适用场合:多用于设置控制键、功能键。适用于键数少的场合。

  6. 6.1.1 概述_键盘分类 独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。

  7. 6.1.1 概述_键盘分类 2. 矩阵连接式键盘 • 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。 • 适用场合:多用于设置数字键,适用于键数多的场合。

  8. 6.1.1 概述_键盘分类 4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。 扫描方式:低电平扫描(回送线必须被上拉为高电平)、高电平扫描(回送线需被下拉为低电平)。右图中给出了低电平扫描的电路。

  9. 6.1.1 概述_键盘分类 • 3. 薄膜开关 • 特点:不需要进行导线与开关间的焊接,结构简单、体积小、防尘、防水、防有害气体侵蚀、寿命长、可靠性高。 • 应用:与按键式键盘类似,多个薄膜开关也可按照独立式或矩阵式设计内部电路,其原理与普通键盘相同。

  10. 6.1.2 使用键盘时必须解决的问题 (1)开关状态的可靠输入。必须消除键抖动。可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上添加去抖动电路;软件方法则采用延迟10~20ms (2)键盘状态的监测方法——中断方式还是查询方式 (3)键盘编码方法 (4)键盘控制程序的编制

  11. 6.1.3 键盘接口 • 功能:对键盘上所按下的键进行识别。 • 分类: (1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。 (2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统键盘。

  12. 6.1.3 键盘接口 1.键盘接口的工作原理 对于矩阵式键盘,如下页键盘示意图,键盘的行线X0~X3通过电阻接+5V,当键盘上没有键闭合时,所有的扫描线和回送线都断开,无论扫描线处于何种状态,回送线都呈高电平。当键盘上某一键闭合时,则该键所对应的扫描线和回送线被短路,可以确定,变为低电平的回送线与扫描线相交处的键闭合。

  13. 6.1.3 键盘接口

  14. 6.1.3 键盘接口 • CPU对键盘扫描的方式:程序控制的随机方式( CPU空闲时扫描键盘)、定时控制方式(定时扫描键盘)、中断方式。 • CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状态计算求得,或根据行线和列线的状态查表求得。

  15. 6.1.3 键盘接口 2.键输入程序的设计方法 (1)判断键盘上是否有键闭合; (2)消除键的机械抖动; (3)确定闭合键的物理位置; (4)得到闭合键的编号; (5)确保CPU对键的一次闭合只做一次处理

  16. 6.1.3 键盘接口 3.键盘接口方式 (1)独立式键盘接口(静态方式) 特点:结构简单,每个按键接单片机的一条I/O线,通过对输入线的查询,可以识别每个按键的状态。 [例题] 在MCS-51 单片机系统中,设计一个含8个按键的独立式键盘。 解:在MCS-51中,含8个按键的独立式键盘的线路连接如下页图所示,8个按键经上拉电阻拉高后分别接到MCS-51单片机P1口的8条I/O线上(P1.0~P1.7)。

  17. 6.1.3 键盘接口 在无键按下的情况下,P1.0~P1.7线上输入均为高电平。当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。

  18. 6.1.3 键盘接口 注: P1口8条I/O线经与非门74LS30实现逻辑与非后,再经过1个非门74LS04进行信号变换,然后接至MCS-51的 引脚上,可通过中断的方式处理键盘。在中断服务程序中,先延时20 ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。

  19. 6.1.3 键盘接口 主程序如下: ORG 0000H LJMP MAIN ORG 0003H ; 外部中断0中断服务入口地址 LJMP INT ; 转中断服务 ORG 0100H MAIN: SETB EA ; 开总中断允许 SETB EX0 ; 开INT0中断 SETB IT0 ; 下降沿有效 ……

  20. 6.1.3 键盘接口 中断服务程序清单如下: INT: CALL D20 ; 延时去抖动 MOV P1, #0FFH ; P1口送全1值 MOV A, P1 ; 读P1口各引脚 CJNE A, #0FFH,CLOSE ; 验证是否确实有键闭合 AJMP INT0 ; 无键按下 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

  21. 6.1.3 键盘接口 KEY 7: …… ; 7号键处理程序 KEY 71: MOV A, P1 ; 再读P1口各引脚 JNB ACC.7, FUNC71 ; 确认键是否释放 RETI KEY 6: …… ; 其他键处理程序 …… D20: …… ; 20ms延时子程序 …… END

  22. 6.1.3 键盘接口 (2)矩阵式键盘接口——行反转法 矩阵式键盘按键识别方法有行反转法和扫描法等。行反转法需要两个双向I/O口分别接行、列线。步骤如下: (1)由行线输出全“0”,读入列线,判有无键按下。 (2)若有键按下,再将读入的列线输出,读行线的值。 (3)第一步读进的列线值与第二步读进的行线值运算,从而得到代表此键的唯一的特征值。 行反转法因输入与输出线反过来用而得名。优点是判键速度快,两次即可。

  23. 6.1.3 键盘接口 [例题]请为8051微处理器设计一个由4行4列键阵构成的键盘。 解:4×4矩阵键盘的线路连接如下页图所示。其中P2口的低4位作为输出线。P1口的低4位作为输入线,输入线通过74LS21进行逻辑相与后作为8051的一个外部中断源输入。当有键按下时就将引起中断。中断服务程序要对所按的键进行判别。

  24. 6.1.3 键盘接口

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

  26. 6.1.3 键盘接口 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

  27. 6.1.3 键盘接口 (b)中断服务程序 中断服务程序开始部分应利用软件延时消除键抖动,然后再对所按的键做出处理。 中断服务程序如下: ORG 1000H INT11: LCALL DELAY ; 延时去抖动 MOV A, P1 ; 读输入线 ANL A, #0FH ; 判断是否有键闭合 CJNE A, #0FH, TEST ; 有键闭合,转判断按键程序 RETI ; 无键闭合,返回

  28. 6.1.3 键盘接口 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

  29. 6.1.3 键盘接口 中断程序结束后,键的特征值存放在40H单元中。此键的输出线号位于40H单元的高4位,其输入线号位于低4位。此后,根据40H单元的内容去查表,得到相应键的代码,可进行显示或其他处理。

  30. 6.1.3 键盘接口 (c)去抖动的延时子程序DELAY 利用CPU的空闲方式,通过定时器T1实现延时, T1必须预先置初值,以得到需要的延迟时间。 设晶振频率为6MHz,欲延时20ms,定时时间为: (216-TC)×6/12=20×103μs, 初值: TC=25536=63C0H。

  31. 6.1.3 键盘接口 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

  32. 6.1.3 键盘接口 (3)矩阵式键盘接口动态扫描法 行反转法适用于扩展键阵。而动态扫描法不仅可以扫描键阵,也可以实现显示,应用较广泛。 动态扫描法原理:采用输出“移动”信号,轮流对各行按键进行检测来实现的。设置行线为输出,列线为输入,当无按键按下时,列输入全为“1”。设计时,将某一行输出为“0”,读取列线值,若其中某一位为“0”,则表明行、列交叉点处的按键被按下,否则无按键按下;继续扫描下一行(将下一行输出为“0”),直至全扫描完为止。

  33. 6.1.3 键盘接口 [例题]用8155实现4行8列的32键键盘接口。 解:电路如下页图所示,8155的PA设定为输出口,称其为扫描线。PC3~PC0设定为输入口,称其为回送线。8155与MCS-51单片机的接口略,设PA口的端口地址为7F01H,PC口的端口地址为7F03H。

  34. 6.1.3 键盘接口 键值编码形式:回送线PC0, PC1, PC2, PC3上的键值(每条回送线上有8个键,顺序从左到右)分别为00H +(00H~07H)、08H +(00H~07H)、10H +(00H~07H)、18H +(00H~07H)。其中,(00H~07H)的具体内容由扫描线决定,存放在R4中。

  35. 6.1.3 键盘接口 (a)扫描是否有键按下子程序KEY1,回扫线的值存放在A中。 程序如下: ORG 1000H KEY1: MOV DPTR, #7F01H ; 将PA口地址送DPTR,PA口作为扫描线 MOV A, #00H ; 所有扫描线均为低电平 MOVX @DPTR, A ; PA口向列线输出00H INC DPTR INC DPTR ; 指向PC口 MOVX A, @DPTR ; 取回送线状态 CPLA ; 行线状态取反 ANL A, #0FH ; 屏蔽A的高半字节 RET ; 返回

  36. 6.1.3 键盘接口 (b)判断是否有键按下子程序KEY,如果有,识别按键的键码。其中DELAY1是延时子程序。 程序如下: KEY: ACALL KEY1 ; 检查有键闭合否 JNZ LKEY1 ; A非0说明有键按下 ACALL DELAY1 ; 执行一次延时子程序(延时6 ms) AJMP KEY LKEY1: ACALL DELAY1 ACALL DELAY1 ; 有键闭合延时2×6ms=12ms以去抖动 ACALL KEY1 ; 延时以后再检查是否有键闭合 JNZ LKEY2 ; 有键闭合,转LKEY2 ACALL DELAY1 ; 无键闭合,说明是干扰信号,不作处理 AJMP KEY ; 延时6ms后转KEY继续等待键入

  37. 6.1.3 键盘接口 LKEY2: MOV R2, #0FEH ; 扫描初值送R2,设定PA0为当前扫描线 MOV R4, #00H ; 回送初值送R4 LKEY4: MOV DPTR, #7F01H ; 指向PA口 MOV A, R2 MOVX @DPTR, A ; 扫描初值送PA口 INC DPTR INC DPTR ; 指向PC口 MOV A, @DPTR ; 取回送线状态 JB ACC.0, LONE ; ACC.0=1,第0行无键闭合,转LONE MOV A, #00H ; 装第0行行值 AJMP LKEYP ; 转计算键码 LONE: JB ACC.1, LTWO ; ACC.1=1,第1行无键闭合,转LTWO

  38. 6.1.3 键盘接口 MOV A, #08H ; 装第1行行值 AJMP LKEYP ; 转计算键码 LTWO: JB ACC.2, LTHR ; ACC.2=1,第2行无键闭合,转LTHR MOV A, #10H ; 装第2行行值 AJMP LKEYP LTHR: JB ACC.3, NEXT ; ACC.3=1,第3行无键闭合,转NEXT MOV A, #18H ; 装第3行行值 LKEYP: ADD A, R4 ; 计算键码 PUSH ACC ; 保存键码 LKEY3: ACALL DELAY1 ; 延时6ms ACALL KEY1 ; 判断键是否继续闭合,若闭合再延时 JNZ LKEY3 POP ACC ; 若键释放,则键码送A RET

  39. 6.1.3 键盘接口 NEXT: INC R4 ; 列号加1 MOV A, R2 JNB ACC.7, KND ; 第7位为0,以扫描到最高列,转KND RL A ; 循环右移一位 MOV R2, A AJMP LKEY4 ; 进行下一列扫描 KND: AJMP KEY ; 扫描完毕,开始新的一轮 DELAY1: ······ ; 延时子程序,略 END

  40. 6.1.3 键盘接口 (4)通过串行口扩展键盘接口 MCS-51系列单片机的串行口与串/并转换芯片配合(如串入并出芯片74LS164 )可以扩展键盘。

  41. 6.1.3 键盘接口 [例题]利用MCS-51的串行口与串/并转换芯片配合,扩展2行8列的键盘接口,键号为0~15。要求给出其硬件连接和键盘查询子程序。 解:串口与串/并转换芯片配合扩展键盘的线路连接如下图所示。

  42. 6.1.3 键盘接口 其中,P1.0和P1.1作为行线。键盘的编码为: P1.0线上的8个键分别为00H+(00H~07H),P1.1线上的8个键分别为08H+(00H~07H)。扫描线(00H~07H)的具体值存放在R4中。 程序采取查询方式读取键号,并且考虑了键的抖动问题。 DLY1是延时子程序。

  43. 6.1.3 键盘接口 程序如下: 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

  44. 6.1.3 键盘接口 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

  45. 6.1.3 键盘接口 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 ; 结束

  46. 6.2 MCS-51单片机与显示器的接口技术 显示器用于实现单片机应用系统中的数据输出和状态的反馈。单片机系统中常用的显示器有发光二极管、七段数码显示器、液晶显示器等。

  47. 6.2.1 LED显示器及其接口 发光二极管简称LED(Light Emitting Diode)。LED显示器从外观可分为 “8”字形的七段数码管、米字形数码管、点阵块、矩形平面显示器、数字笔划显示器等。 1.七段LED数码显示器 七段LED数码管显示器能够显示十进制或十六进制数字及某些简单字符。但控制简单,使用方便,在单片机系统中应用较多。其结构如下页图所示。

  48. 6.2.1 LED显示器及其接口 上图中的a~g七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。 单片机系统扩展LED数码管时多用共阳LED。共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。通常每个段笔画要串一个数百欧姆的降压电阻。

  49. 6.2.1 LED显示器及其接口 七段LED字形码如下表所示。

  50. 6.2.1 LED显示器及其接口 2.LED点阵模块显示器 LED点阵模块显示器是指由发光二极管排成一个m×n的点阵,每个发光二极管构成点阵中的一个点。这种显示器显示的字形逼真,能显示的字符比较多,但控制比较复杂。适用于显示汉字、图形和表格,广泛应用于公共场合的信息发布。

More Related