1 / 49

第六章 单片机并行 I/O 口扩展

第六章 单片机并行 I/O 口扩展. 6.1 单片机 I/O 接口技术概述. 一、 为什么要扩展 I/O 接口. 锁存器. 实质是触发器。 锁存信号有效时,输出随输入变化;无效时,输出不随输入变化,而保持上次的结果,即锁存。 用于单片机输出口扩展。. 三态缓冲器. 控制信号. 实质是门电路。不能保存数据。 使能有效时,输出随输入变化;无效时,输出呈现高阻状态,相当于和总线隔离。 用于单片机输入口扩展。. 二、单片机 I/O 扩展编址技术. MOVX. 三、 I/O 数据传送方式. 6.2 单片机简单 I/O 扩展.

dacia
Download Presentation

第六章 单片机并行 I/O 口扩展

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. 第六章 单片机并行I/O口扩展

  2. 6.1 单片机I/O接口技术概述 一、为什么要扩展I/O接口

  3. 锁存器 实质是触发器。 锁存信号有效时,输出随输入变化;无效时,输出不随输入变化,而保持上次的结果,即锁存。 用于单片机输出口扩展。

  4. 三态缓冲器 控制信号 实质是门电路。不能保存数据。 使能有效时,输出随输入变化;无效时,输出呈现高阻状态,相当于和总线隔离。 用于单片机输入口扩展。

  5. 二、单片机I/O扩展编址技术 MOVX

  6. 三、I/O数据传送方式

  7. 6.2单片机简单I/O扩展 常用的MCS-51并行I/O扩展方法有: 采用74系列器件扩展简单的I/O口; 采用可编程的的并行接口电路(如8255)扩展I/O口。

  8. 6.2.1简单输入口扩展

  9. RD 8051 74LS244 Y P0 数据输入 外设 A 1G 2G 74LS244与单片机接口电路 只扩展了一片74LS244,也没有外部RAM。当读外部RAM时,就选中244,进行数据输入。 MOVX A, @DPTR DRTP可以任意,即0000~FFFFH。

  10. 实验3.3 电路 要访问74LS244,P2.7必须为0,故74LS244的地址范围为 0000~7FFFH。 MOVX A, @DPTR

  11. 8051 G G G G G D800H ~ DFFFH F000H ~ F7FFH E800H ~ EFFFH B800H ~ BFFFH 7800H ~ 7FFFH

  12. 6.2.2简单输出口扩展 典型芯片:74LS273 带复位功能的8D触发器。

  13. WR 8051 74LS273 MR P0 D 数据输出 外设 Q CLK 74LS273与单片机接口电路 只扩展了一片74LS273,也没有外部RAM。当写外部RAM时,就选中273,进行数据输出。 MOVX @DPTR, A DPTR可以任意,即0000~FFFFH。

  14. 实验3.3电路 要访问74LS273,P2.7必须为0,故273的地址范围为 0000~7FFFH。 MOVX @DPTR, A

  15. G

  16. 8051 CLK MR 输出口----利用锁存器扩展; 输入口----利用缓冲器扩展

  17. 6.3单片机LED数码管接口技术 6.3.1 LED结构及原理 D7 D6 D5 D4 D3 D2 D1 D0 如共阳极时,输出1 1 1 1 1 0 0 0即F8H时,显示数字7

  18. 8051 P0.0 P0.7

  19. I/O(1) I/O(2) a b c d e f g dp a b c d e f g dp 6.3.2 LED显示方式 一、静态显示 公共端直接接地(共阴极)或接电源(共阳极); 各段选线分别与I/O口线相连. 要显示字符,直接在I/O线送相应的字段码。

  20. 1位数码管

  21. 查表程序结构 MOV A,#00 MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A SJMP $ TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H

  22. 采用延时程序:0~9每隔1s循环显示 ORG 0000H START:MOV 50H,#00 MOV DPTR,#TABLE ;DPTR指向段码表首地址 S1: MOV A,50H MOVC A,@A+DPTR ;查表取得段码 CJNE A,#01H,S2 ;判断段码是否为结束符 SJMP START S2: MOV P0,A ;段码送数码管显示 LCALL DELAY ;延时 INC 50H SJMP S1 DELAY: MOV R5,#50 ;延时子程序 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码表 DB 01H ;结束符

  23. 采用中断方式:0~9每隔1s循环显示 ORG 0000H AJMP START ORG 000BH AJMP TIMET0 START: MOV R3,#20 MOV TMOD,#01H MOV TH0,#9EH MOV TL0,#58H SETB EA SETB ET0 SETB TR0 MOV 50H,#00H ; MOV A,50H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A SJMP $ TIMET0: MOV TH0,#9EH MOV TL0,#58H DJNZ R3, OVFLOW MOV R3,#20 INC 50H MOV A,50H CJNE A,#0AH,NEXT MOV 50H,#00H NEXT:MOV A,50H MOVC A,@A+DPTR MOV P0,A OVFLOW: RETI TABLE: DB 3FH,06H,5BH DB 4FH, 66H,6DH,7DH DB 07H,7FH,6FH END

  24. 2位数码管静态显示 a P0 Dp a P1 Dp

  25. 利用74LS273扩展I/O口进行2位数码管静态显示 273 a Q0 WR P2.7 P2.6 P0 D Q7 Dp CLK ≥1 1 273 a Q0 D Q7 Dp CLK ≥1 1

  26. 00~59每隔1s循环显示

  27. LE LE LE LE 为高电平时,Q 随 D 而变。当 LE 为低电平时,Q被锁存。

  28. I/O(1) D3 D2 D1 D0 I/O(2) 二、动态扫描显示

  29. 动态扫描显示 将所有数码管的段选线并接在一起,用一个IO口控制; 公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的I/O口线控制. 编程时,需要输出段选和位选信号。位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,其它数码管处于熄灭状态,延时一段时间后,再选中另一个数码管,并输出对应段码,高速交替。 从计算机的角度看, LED是一个一个的显示,但由于人的视觉暂留作用,只要交替显示的时间足够快,看起来所有的数码管都是一起显示的。

  30. P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 8051 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

  31. 显示缓冲区:55H~50H 要显示的数所存放的RAM地址; 显示缓冲区指针:R0,初始值为50H; 位选控制:R1,初始值为0FEH。

  32. 注意: 在轮流显示过程中,每位数码管的点亮时间为1~2ms。若延时时间长,会出现闪烁现象,若延时时间太短,则会出现显示暗且有重影。 随时更新显示缓冲区内容,再调用显示子程序即可显示。

  33. 6.4单片机键盘接口技术 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘. • 非编码键盘又分为: 独立键盘和行列式(又称为矩阵式)键盘。

  34. VCC P1.1 K GND 6.4.1 独立按键 I/O口用于输入; 按键的一端接地,另一端与单片机的任一I/O口相连。 开始时先给I/O赋一高电平,然后让单片机不断地检测该I/O口是否变为低电平,一旦检测到低电平说明按键按下,就可执行相应的指令。

  35. VCC VCC 8051 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 8051 GND GND 与 INT0 独立按键与单片机的接口电路 独立按键就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其它的I/O口线。 查询方式 中断方式

  36. 查询方式独立按键程序 START:MOV P1,#0FFH MOV A, P1 JNB ACC.0,K0 ;检测0号键 JNB ACC.1,K1 ;检测1号键 JNB ACC.2,K2 ;检测2号键 JNB ACC.3,K3 ;检测3号键 JNB ACC.4,K4 ;检测4号键 JNB ACC.5,K5 ;检测5号键 JNB ACC.6,K6 ;检测6号键 JNB ACC.7,K7 ;检测7号键 JMP START ;无键按下返回,再顺次检测 K0: AJMP KEY0 ;入口地址表 K1: AJMP KEY1 …… K7: AJIMP KEY7

  37. KEY0:…… ;0号键功能程序 JMP START ;0号键功能程序执行完返回 KEY1:…… ;1号键功能程序 JMP START ;1号键功能程序执行完返回 …… KEY7:…… ;7号键功能程序 JMP START ;7号键功能程序执行完返回

  38. 按下对应的键点亮对应的灯

  39. 6.4.2 矩阵式键盘 矩阵式键盘又叫行列式键盘。用I/O口线组成行、 列结构,键位设置在行列的交点上。 例如4×4的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。

  40. P1.0 P1.1 P1.2 P1.3 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 矩阵式键盘及其接口 8051 4×4 4×8

  41. 矩阵式键盘的工作过程 第一步是CPU首先检测键盘上是否有键按下; 第二步是再识别是哪一个键按下。 一、判断是否有键按下 方法是:将列线送入全扫描字0,读行线状态判别。 列线输出0000,然后读入行线状态, 若没有键按下,则行线状态为全1( 1111 ); 若有任一键按下,则行线状态不为全(1111)。

  42. 二、识别哪一个键按下 • 方法是:逐列扫描。 • 列线逐列输出0,然后读入行线状态, • 若行线状态为全1,则此列没有键按下,继续扫描下一列。 • 若行线状态不为全为1,则有一键按下。 • 键号:将所有键从左到右从上到下的顺序进行编号。 键号=行号×8+列号

  43. 说明 按键都是机械弹性开关,由于机械触点的弹性作用,一个按键在闭合和断开的瞬间伴随有一连串的抖动,抖动时间长短一般为5~10ms。抖动过程中不能进行状态输入,需要进行去抖动处理。 单片机应用系统常采用软件延时方法去抖动。

  44. 入口 ① 键号入栈保存 有键按下? N 按键抬起? N Y 延时12ms Y 键号送A N 有键按下? 返回 Y ① 键盘扫描程序流程图

More Related