1 / 49

第 2 章 MCS51 单片机内部并行口及应用

第 2 章 MCS51 单片机内部并行口及应用. 2.1 MCS-51 单片机并行口结构 2.2 MCS-51 单片机并行口应用 2.3 七段 LED 显示器接口 2.4 键盘接口. 1.1 MCS-51 单片机并行口结构. 1.1.1 P0 口结构 1.1.2 P1 口结构 1.1.3 P2 口结构 1.1.4 P3 口结构. 1.1.1 P0 口结构. +5V. 地址 / 数据控制线. 读锁存. &. P0.0. D. Q. DB0.0. 锁存器. CP. Q. 写控制信号. 转换开关. 读引脚. 作用 :

fraley
Download Presentation

第 2 章 MCS51 单片机内部并行口及应用

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. 第2章 MCS51单片机内部并行口及应用 2.1MCS-51 单片机并行口结构 2.2MCS-51 单片机并行口应用 2.3七段LED显示器接口 2.4键盘接口

  2. 1.1 MCS-51单片机并行口结构 • 1.1.1 P0口结构 • 1.1.2 P1口结构 • 1.1.3 P2口结构 • 1.1.4 P3口结构

  3. 1.1.1 P0口结构 +5V 地址/数据控制线 读锁存 & P0.0 D Q DB0.0 锁存器 CP Q 写控制信号 转换开关 读引脚 作用: 1、外扩芯片时,P0口不再做I/O口使用,而是先传送地址,后传送数据。 2、没有外扩芯片时,P0口可以直接作为输入口或输出口使用。 返回

  4. P0口直接做输出口时,输出信息的过程:(将0送到P0.0的过程)P0口直接做输出口时,输出信息的过程:(将0送到P0.0的过程) +5V 地址/数据控制线 0 读锁存 & P0.0 0 0 D Q DB0.0 锁存器 1 0 CP Q 写控制信号 转换开关 读引脚 注意: P0口做输出口时,内部数据经过锁存器送到P00---P07上。由于上管始终截止,而当下管也截止时,P00—P07被架空,没有标准的高电平,所以P0口作输出口使用时,必须外接上拉电阻。 返回

  5. 当CPU执行读—改—写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。 P0口直接做输入口时,输入信息的过程:(将P0.0处的1送入DB0.0的过程) 当CPU执行 MOV A,P0或 JB/JNB P0.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。 +5V 地址/数据控制线 0 读锁存 & P0.0 1 1 D Q DB0.0 锁存器 CP Q 写控制信号 转换开关 0 读引脚 注意: 1、P0口作输入口时,P00—P07上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。 2、CPU对P0口的读操作有2种:读引脚和读—改—写锁存器。 返回

  6. 1.1.2 P1口结构 +5V 读锁存 P1.0 D Q DB0.0 锁存器 CP Q 写控制信号 读引脚 作用: P1口只能可以直接作为输入口或输出口使用。 返回

  7. P1口直接做输出口时,输出信息的过程:(将1送到P1.0的过程)P1口直接做输出口时,输出信息的过程:(将1送到P1.0的过程) +5V 读锁存 P1.0 1 1 D Q DB0.0 锁存器 0 0 CP Q 写控制信号 读引脚 注意:P1口做输出口时,内部数据经过锁存器送到P10---P17上。 由于内部有上拉电阻,所以P1口作输出口使用时,不用外接上拉电阻。 返回

  8. 当CPU执行读—改—写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC 、SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。 P1口直接做输入口时,输入信息的过程:(将P1.0处的0送入DB0.0的过程) 当CPU执行 MOV A,P1或 JB/JNB P1.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。 +5V 读锁存 0 P1.0 D Q DB0.0 锁存器 CP Q 写控制信号 0 读引脚 注意: 1、P1口作输入口时,P10—P17上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。 2、CPU对P1口的读操作有2种:读引脚和读—改—写锁存器。 返回

  9. 1.1.3 P2口结构 地址控制线 +5V 读锁存 P2.0 D Q DB0.0 锁存器 转换开关 CP Q 写控制信号 读引脚 作用: 1、外扩芯片时,P2口不再做I/O口使用,而是传送高8位地址。 2、没有外扩芯片时,P2口可以直接作为输入口或输出口使用。 返回

  10. P2口直接做输出口时,输出信息的过程:(将0送到P2.0的过程)P2口直接做输出口时,输出信息的过程:(将0送到P2.0的过程) 地址控制线 +5V 0 读锁存 0 1 P2.0 0 D Q DB0.0 锁存器 0 转换开关 CP Q 写控制信号 读引脚 注意:P2口做输出口时,内部数据经过锁存器送到P20---P27上。 由于内部有上拉电阻,所以P2口作输出口使用时,不用外接上拉电阻。 返回

  11. 当CPU执行读—改—写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC 、SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。 P2口直接做输入口时,输入信息的过程:(将P2.0处的0送入DB0.0的过程) 当CPU执行 MOV A,P2或 JB/JNB P2.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。 地址控制线 +5V 0 读锁存 0 P2.0 D Q DB0.0 锁存器 转换开关 CP Q 写控制信号 0 读引脚 注意: 1、P2口作输入口时,P20—P27上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。 2、CPU对P2口的读操作有2种:读引脚和读—改—写锁存器。 返回

  12. 1.1.4 P3口结构 1 .当使用单片机内部串行口时,若CPU执行MOV A,SBUF指令,则P3.0(RXD)作为接收信号线,接收由外界串行输入的数据;若CPU执行MOV SBUF,A指令,则P3.1(TXD)作为发送信号线,串行发送数据至外界。 2.当单片机使用外中断时,P3.2(INT0)作为外中断0的中断请求输入线,3.3(INT1) 作为外中断1的中断请求输入线。 3.当单片机使用定时器,且定时器工作于计数方式时,P3.4(T0)作为定时器0的计数脉冲输入线,P3.5(T1)作为定时器1的计数脉冲输入线。 4.当单片机外扩RAM或I/O接口芯片时,P3.6(WR)作为RAM或I/O接口芯片的写控制信号,P3.7(RD)作为RAM或I/O接口芯片的读控制信号。 当P3口的一些引脚没有作为第二功能使用时,这些引脚就被释放,直接作为I/O口线使用。 +5V 第二功能输出 读锁存 P3.0 & D Q DB0.0 锁存器 CP Q 写控制信号 读引脚 第二功能输入 作用: 1、P3口可以直接作为输入口或输出口使用。 2、P3口的引脚又具有第二功能。 返回

  13. P3口直接做输出口时,输出信息的过程:(将1送到P3.0的过程)P3口直接做输出口时,输出信息的过程:(将1送到P3.0的过程) +5V 第二功能输出 读锁存 1 P3.0 & 0 1 D Q DB0.0 锁存器 0 CP Q 写控制信号 读引脚 第二功能输入 注意:P3口做输出口时,内部数据经过锁存器送到P30---P37上。 由于内部有上拉电阻,所以P2口作输出口使用时,不用外接上拉电阻。 返回

  14. 当CPU执行读—改—写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC 、SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。 P3口直接做输入口时,输入信息的过程:(将P3.0处的0送入DB0.0的过程) 当CPU执行 MOV A,P3或 JB/JNB P3.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。 +5V 第二功能输出 读锁存 P3.0 0 & D Q DB0.0 锁存器 CP Q 写控制信号 0 读引脚 第二功能输入 注意: 1、P3口作输入口时,P30—P37上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。 2、CPU对P3口的读操作有2种:读引脚和读—改—写锁存器。 返回

  15. 1.2 MCS-51单片机并行口的应用 • 在没有外扩任何芯片时,MCS-51单片机内部并行口可以作为输出口,直接与输出外设连接,常用的输出外设是发光二极管; MCS-51单片机内部并行口也可以作为输入口,直接与输入外设连接,常用的输入外设是开关。 • 1.2.1 直接做输出口 • 1.2.2 直接做输入口 例1 例2 例1 例2

  16. 电阻的作用是当流过发光二极管的电流过大时,它就会被烧坏。这个电阻可以限制流过发光二极管的电流,因此这个电阻叫作限流电阻。限流电阻阻值的计算方法如下:电阻的作用是当流过发光二极管的电流过大时,它就会被烧坏。这个电阻可以限制流过发光二极管的电流,因此这个电阻叫作限流电阻。限流电阻阻值的计算方法如下: R=(5-1.75)/Id ;Id 是流过发光二极管的电流,一般从8mA到20mA,其值越大,发光二极管越亮,但不能太大,当流过发光二极管的电流超过20mA时,容易烧坏发光二极管。 例1:用89C51的P1口驱动8个发光二极管,使8个发光二极管由左向右轮流点亮。试画出连接图,编制驱动程序。 +5V • 1.2.1 直接做输出口 89C51 解: P1.0 1、画电路图 P1.1 P1.2 2、编程 P1.3 mov a,#0feh up: mov p1,a lcall delay rl a sjmp up delay1: mov r7,#2 delay11: mov r6,#250 djnz r6,$ djnz r7,delay11 ret P1.4 P1.5 P1.6 P1.7 思考

  17. 例1:用89C51的P1口驱动8个发光二极管,使8个发光二极管由左向右轮流点亮。试画出连接图,编制驱动程序。例1:用89C51的P1口驱动8个发光二极管,使8个发光二极管由左向右轮流点亮。试画出连接图,编制驱动程序。 思考: ① 如果用P0口驱动发光二极管,则如何修改? ② 如果使8个发光二极管由右向左轮流点亮,则如何修改? ③ 如果使8个发光二极管闪亮,则如何修改? ④ 如果使8个发光二极管由内向外轮流点亮,则如何修改? ⑤ 如果使8个发光二极管由右向左依次点亮,则如何修改? ⑥ 如果使延时时间延长或缩短,会出现什么现象? 预习实验并思考: 熟悉实验板上与发光二极管有关的电路。 编制驱动程序,实现如下操作: ⑴ 由左向右轮流点亮 ⑵ 由外向里轮流点亮 ⑶ 由右向左依次点亮 ⑷ 闪亮 +5V 89C51 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

  18. a f b g c e 例2:用8051的P1口驱动1个数码管,制成1位秒表. 试画出连接图,编制驱动程序。 d Dp • 1.2.1 直接做输出口 89C51 解: a P1.0 1、画电路图 b P1.1 2、编程 c P1.2 +5V UP0: MOV R7,#10 MOV R2,#00H MOV DPTR,#TAB UP: MOV A,R2 MOVC A,@A+DPTR MOV P1 , A LCALL D1S INC R2 DJNZ R7,UP SJMP UP0 TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H d P1.3 e P1.4 f P1.5 g P1.6 Dp P1.7 思考

  19. 例2:用8051的P1口驱动1个数码管,制成1位秒表.试画出连接图,编制驱动程序。例2:用8051的P1口驱动1个数码管,制成1位秒表.试画出连接图,编制驱动程序。 思考: ① 如果用P2口驱动发光二极管,公共端接P3.0,则如何修改? ② 如果制成0.1S的表,则如何修改? 89C51 a CLR P3.0 UP0: MOV R7,#10 MOV R2,#00H MOV DPTR,#TAB UP: MOV A,R2 MOVC A,@A+DPTR MOV P2 , A LCALL D1S INC R2 DJNZ R7,UP SJMP UP0 TAB: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H,80H,98H P2.0 b P2.1 c P2.2 P3.0 d P2.3 e P2.4 f P2.5 g P2.6 Dp P2.7

  20. 开关处的电阻称为上拉电阻,它的 作用是当开关断开时,使P3口的电 压上拉为准确的高电平,避免悬空 状态。 例1:用89C51的P1口传送8个开关状态,用P2口显示8个开关状态,若开关合则对应灯亮,试画出连接图,编制驱动程序。 解: • 1.2.2 直接做输入口 +5V +5V 1、画电路图 P1.0 P2.0 2、编程 P1.1 P2.1 MOV P1,#0FFH UP:MOV A,P1 MOV P2,A SJMP UP P1.2 P2.2 P1.3 P2.3 P1.4 P2.4 P1.5 P2.5 P1.6 P2.6 强调: 8051内部并行口 直接作为输入口时, 必须先将口锁存器 置1。 P1.7 P2.7 89C51 思考

  21. 思考:如果将发光二极管反接,则如何修改程序?思考:如果将发光二极管反接,则如何修改程序? +5V P1.0 P2.0 MOV P1,#0FFH UP:MOV A,P1 CPL A MOV P2,A SJMP UP P1.1 P2.1 P1.2 P2.2 P1.3 P2.3 P1.4 P2.4 P1.5 P2.5 P1.6 P2.6 P1.7 P2.7 89C51

  22. 例2:用8051的P1口驱动8个发光二极管,P3.4接一个开关K1,当开关按下时,8个发光二极管由左向右轮流点亮;开关断开时,8个发光二极管不亮。试画出连接图,编制驱动程序。 解: • 1.2.2 直接做输入口 89C51 +5V +5V 1、画电路图 P1.0 P1.1 2、编程 P3.4 mov p3,#0ffh up0: mov a,#0feh up1: jb p3.4,up1 mov p1,a lcall delay1 rl a sjmp up1 delay1: mov r7,#2 delay11: mov r6,#250 djnz r6,$ djnz r7,delay11 ret P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 思考

  23. 例2:用8051的P1口驱动8个发光二极管,P3.4接一个开关K1,当开关按下时,8个发光二极管由左向右轮流点亮;开关断开时,8个发光二极管不亮。试画出连接图,编制驱动程序。例2:用8051的P1口驱动8个发光二极管,P3.4接一个开关K1,当开关按下时,8个发光二极管由左向右轮流点亮;开关断开时,8个发光二极管不亮。试画出连接图,编制驱动程序。 思考: ① 在上述程序中,开关必须一直按着,灯才能轮流点亮,当开关断开时,停留在某个灯点亮状态。如果当开关断开时,灯全灭,如何修改程序? ② 如果开关作为启动开关,开关按下并抬起时,灯才开始轮流点亮,则如何编程? 预习实验 熟悉实验板上与发光二极管和开关有关的电路。 编制驱动程序,实现如下操作: 1.读入4个按键并使对应的LED点亮。 2.K1按下时,LED每2个为一组由右向左依次点亮。 3.K2按下并抬起时,LED由内向外轮流点亮。 +5V P3.2 P3.3 P3.4 P3.5

  24. 1.3 七段LED显示器接口 • 在单片机控制系统中显示器是必不可少的外设。常用的显示器有发光二极管,数码管和液晶显示器。本节介绍数码管接口。 • 1.3.1 数码管简介 • 1.3.2 单个七段LED数码管的接口 • 1.3.3 多个七段LED数码管的接口

  25. 1.3.1 数码管简介 a a • 组成:LED数码管由7段或8段发光二极管组成,在平面上排成8字 • 型。 • 分类:有共阴极和共阳极两种。 b b c c COM a COM d d f b g e e c e f f d Dp g g Dp Dp 共阳极 共阴极 显示原理:使某些段点亮而另一些段不亮就可以显示0---9,A---F等字型。 使某段点亮必须具备2个条件: ① 共阴极管的公共端接地和共阳极管的公共端接电源。 ② 共阴极管的控制端接电源和共阳极管的控制端接地。

  26. 1.3.2 单个七段LED数码管的接口 • 单个七段LED数码管与单片机的连接方法有2种: • 1、软译码连接法 • 2、硬译码连接法 a f b g c e d Dp

  27. a 软译码连接法 f b g • 在软译码连接法下,LED数码管与单片机的连接图 : c e • 1、欲使LED数码管显示2,试编程。 • MOV P1,#01011011B • 注意:字形与字形码的区别,字形是欲显示的数或字符的形状;字形码是为了在数码管上显示数或字符,CPU应该送出的数据。字形转换成字形码的2种方法:软译码法和硬译码法。 • 2、编程让LED数码管显示30H单元的内容(30H单元的内容在0—9之间)。 • UP: MOV A,30H • MOV DPTR,#TAB • MOVC A,@A+DPTR • MOV P1,A • SJMP UP d Dp 89C51 共阳极LED a P1.0 b P1.1 c P1.2 +5V d P1.3 e P1.4 f P1.5 g P1.6 Dp P1.7 TAB : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H

  28. a 硬译码连接法 f b g • 在硬译码连接法下,LED数码管与单片机的连接图 : c e • 利用BCD码—七段码译码器实现字形到字形码的转换。常用的BCD码—七段码译码器有74LS48和74LS47。 • 编程让LED数码管显示30H单元的内容(30H单元的内容在0—9之间)。 • MOV P1,30H d Dp 74LS48 共阴极LED 89C51 a a P1.0 A b P1.1 B b c P1.2 C c d P1.3 D d COM +5V e P1.4 e f P1.5 LT f g P1.6 RBO g P1.7 RBI 思考:如果7448的ABCD接到8051的P14—P17,则如何修改程序? 答案 注意:在硬译码连接法下,直接送欲显示的数即可,字形到字形码的转换 是用硬件实现的。

  29. 1.3.3 多个七段LED数码管的接口 • 多个数码管与CPU的连接方法有4种: • 1、静态软译码连接法 • 2、静态硬译码连接法 • 3、动态硬译码连接法 • 4、动态软译码连接法 a f b g c e d Dp

  30. a 思考:编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。 静态软译码连接法 f b 答案 g • 在静态软译码连接法下,4个LED数码管与单片机的连接图 : c e 1、编程在4个七段LED数码管上显示1234。 d Dp MOV P0,#06H MOV P1,#5BH MOV P2,#4FH MOV P3,#66H SJMP $ 共阴极LED 89C51 a P1.0 P0.0 a P1.1 P0.1 b b P1.2 P0.2 c c P1.3 P0.3 d COM d 2、编程在4个七段LED数码管上显示30H, 31H,32H,33H单元中存放的1位BCD码 的内容 。 COM P1.4 P0.4 e e P1.5 P0.5 f f P1.6 P0.6 g g MOV DPTR,#TAB UP0: MOV A,30H MOVC A,@A+DPTR MOV P0,A MOV A,31H MOVC A,@A+DPTR MOV P1,A MOV A,32H MOVC A,@A+DPTR MOV P2,A MOV A,33H MOVC A,@A+DPTR MOV P3,A SJMP UP0 TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH P1.7 P0.7 Dp Dp a a P3.0 P2.0 b P3.1 P2.1 b c P3.2 P2.2 c d P3.3 P2.3 d COM COM e P3.4 P2.4 e f P3.5 P2.5 f g P3.6 P2.6 g P3.7 P2.7 Dp Dp

  31. a 思考:编程在4个七段LED数码管上显示30H, 31H,32H,33H单元中存放的1位BCD码的内容 。 答 案 静态硬译码连接法 f b g • 在静态硬译码连接法下,4个LED数码管与单片机的连接图 : c e d Dp 74LS47 89C51 74LS47 a a a A P1.0 P2.0 A a b +5V b B P1.1 P2.1 B b b c c C P1.2 P2.2 C +5V c c d d COM D P1.3 P2.3 D d d e +5V e COM +5V e e f f LT LT f f g g RBO RBO g g Dp RBI RBI Dp 74LS47 74LS47 a a a A P1.4 P2.4 A a b b B +5V P1.5 P2.5 B b b c c +5V C P1.6 P2.6 C c c d d COM D P1.7 P2.7 D d d e +5V e COM +5V e e f f LT LT f f g g RBO RBO g g Dp RBI RBI Dp 编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。 程 序

  32. a 思考:编程在4个七段LED数码管上显示 30H,31H,32H,33H单元中的内容。 答 案 动态硬译码连接法 f b g • 在动态硬译码连接法下,4个LED数码管与单片机的连接图 : c e d 89C51 74LS48 Dp a P2.0 A b P2.1 B c P2.2 C d P2.3 D +5V e f LT g RBO RBI a b c d e f g a b c d e f g a b c d e f g a b c d e f g 1 2 3 4 COM COM COM COM P2.4 P2.5 P2.6 P2.7 程 序 例: 编程在4个七段LED数码管上显示1234。 在动态连接法下,数码管公共端均受控。驱动程序的编制充分利用了人眼的视觉滞留效应,循环扫描各数码管,使各数码管不是连续显示,但给人的视觉印象是连续地在显示。每个数码管的显示时间不得低于1ms,不亮的时间不能超过20 ms。 利用人眼的视觉滞留现象,实现让4个七段LED数码管上不同时显示1234,但人眼看到的效果 却是同时显示1234。

  33. a 动态软译码连接法 f b g • 在动态软译码连接法下,4个LED数码管与单片机的连接图 : c e 89C51 d Dp P2.0 驱 动 器 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 a b c d e f g a b c d e f g a b c d e f g a b c d e f g 1 2 3 4 COM COM COM COM P3.0 P3.1 P3.2 P3.3 例: 编程在4个七段LED数码管上显示1234。 例:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中的内容。 程 序 程 序

  34. 1.4 键盘接口 • 键盘是单片机控制系统最常用、最简单的输入设备。用户可以通过键盘输入数据或命令,实现简单的人机通信。 • 1.4.1 键盘类型 • 1.4.2 非编码键盘与单片机的接口 • 1.4.3 矩阵非编码键盘与单片机的接口

  35. 1.4.1 键盘类型 • 单片机控制系统所用的键盘有编码键盘和非编码键盘两种。 • 1、编码键盘除了键开关外,还有专门的硬件电路,用于识别闭合键并产生键代码。不仅如此,编码键盘一般还有去键抖动电路和防串键保护电路等。这种键盘的优点是所需软件简短,但硬件电路较复杂,价格较昂贵。目前在单片机控制系统中使用不多。 • 2、非编码键盘仅由键开关组成,其它工作如键识别、键代码的产生、去抖动等,不是由硬件完成而是由软件完成的。为了简化硬件电路,降低成本,目前单片机控制系统中大多数采用非编码键盘。 • 非编码键盘的键开关可以排列成线性形式或矩阵形式,因此非编码键盘有线性非编码键盘和矩阵非编码键盘两种。

  36. 1.4.1 键盘类型 • 单片机控制系统所用的键盘有编码键盘和非编码键盘两种。 • 1、编码键盘除了键开关外,还有专门的硬件电路,用于识别闭合键并产生键代码。不仅如此,编码键盘一般还有去键抖动电路和防串键保护电路等。这种键盘的优点是所需软件简短,但硬件电路较复杂,价格较昂贵。目前在单片机控制系统中使用不多。 • 2、非编码键盘仅由键开关组成,其它工作如键识别、键代码的产生、去抖动等,不是由硬件完成而是由软件完成的。为了简化硬件电路,降低成本,目前单片机控制系统中大多数采用非编码键盘。 • 非编码键盘的键开关可以排列成线性形式或矩阵形式,因此非编码键盘有线性非编码键盘和矩阵非编码键盘两种。

  37. 1.4.1 键盘类型 • 单片机控制系统所用的键盘有编码键盘和非编码键盘两种。 • 1、编码键盘除了键开关外,还有专门的硬件电路,用于识别闭合键并产生键代码。不仅如此,编码键盘一般还有去键抖动电路和防串键保护电路等。这种键盘的优点是所需软件简短,但硬件电路较复杂,价格较昂贵。目前在单片机控制系统中使用不多。 • 2、非编码键盘仅由键开关组成,其它工作如键识别、键代码的产生、去抖动等,不是由硬件完成而是由软件完成的。为了简化硬件电路,降低成本,目前单片机控制系统中大多数采用非编码键盘。 • 非编码键盘的键开关可以排列成线性形式或矩阵形式,因此非编码键盘有线性非编码键盘和矩阵非编码键盘两种。

  38. 1.4.2 非编码键盘与单片机的接口 • 线性非编码键盘的键开关排成一行或一列的形式,它与单片机的接口电路如图所示: 线性非编码键盘的工作原理:当键未被按下时,与此键相连的I/O线获得高电平;当键被按下时,与此键相连的I/O线获得低电平,单片机只要读取I/O口状态,就可以获取按键信息,识别有无键按下和哪个键被按下。 键处理程序如下: MOV P1,#0FFH UP1: MOV A,P1 ;读I/O口状态 ANL A,#0FH ;屏蔽无用位 CJNE A,#0FH,NEXT1 ;有闭合键? SJMP UP1 NEXT1: LCALL D10ms ;延时10ms去抖动 MOV A,P1 ;再读I/O口状态 ANL A,#0FH CJNE A,#0FH,NEXT2 ;有闭合键? SJMP UP1 NEXT2:JB P1.0,NEXT3 ;K1按下? LCALL K1 ;K1键处理程序 NEXT3: JB P1.1,NEXT4 ;K2按下? LCALL K2 ;K2键处理程序 NEXT4: JB P1.2,NEXT5 ;K3按下? LCALL K3 ;K3键处理程序 NEXT5: JB P1.3,UP1 ;K4按下? LCALL K4 ;K4键处理程序 LJMP UP1 +5V 89C51 K1 P1.0 K2 P1.1 K3 P1.2 K4 P1.3 例

  39. 某单片机控制系统,P1口接有8发光二极管,P3.0、P3.1、P3.2、P3.3接有4个开关K1、K2、K3、K4,试画出接口电路,并编程使得当K1按下时8个发光二极管全亮;当K2按下时8个发光二极管闪亮;当K3按下时8个发光二极管由左向右点亮;当K4按下时8个发光二极管全灭。 +5V 89C51 K1 P1.0 P3.0 K2 P1.1 P3.1 K3 P1.2 P3.2 K4 P1.3 P3.3 P1.4 P1.5 P1.6 P1.7 程 序

  40. 程 序 子程序 K1: MOV P1,#0FFH RETK2: MOV P1,#0FFH LCALL D2S MOV P1,#00H LCALL D2S RETK3: MOV P1,B LCALL D2S MOV A,B RL A MOV B,A RETK4: MOV P1,#00H RET MOV B,#01H MOV P3,#0FFH MOV P1,#00H UP1: MOV A,P3 ANL A,#0FH CJNE A,#0FH,NEXT1 SJMP UP1 NEXT1: LCALL D10ms MOV A,P3 ANL A,#0FH CJNE A,#0FH,NEXT2 SJMP UP1NEXT2:JB P3.0,NEXT3 LCALL K1 NEXT3: JB P3.1,NEXT4 LCALL K2 NEXT4: JB P3.2,NEXT5 LCALL K3 NEXT5: JB P3.3,UP1 LCALL K4 LJMP UP1

  41. 思考:如果7448的ABCD接到8051的P14—P17,则如何修改程序?思考:如果7448的ABCD接到8051的P14—P17,则如何修改程序? a f b g 89C51 c e P1.0 d P1.1 Dp P1.2 74LS48 共阴极LED P1.3 a a P1.4 A b P1.5 B b c P1.6 C c d P1.7 D d COM +5V e e f LT f g RBO g RBI UP:MOV A,30H SWAP A MOV P1,A SJMP UP

  42. 思考:编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。思考:编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。 a f b g c e MOV DPTR,#TAB UP0: MOV A,30H ANL A,#0FH MOVC A,@A+DPTR MOV P0,A MOV A,30H SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P1,A MOV A,31H ANL A,#0FH MOVC A,@A+DPTR MOV P2,A MOV A,31H SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P3,A SJMP UP0 TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH d Dp 共阴极LED 89C51 a P1.0 P0.0 a P1.1 P0.1 b b P1.2 P0.2 c c P1.3 P0.3 d COM d COM P1.4 P0.4 e e P1.5 P0.5 f f P1.6 P0.6 g g P1.7 P0.7 Dp Dp a a P3.0 P2.0 b P3.1 P2.1 b c P3.2 P2.2 c d P3.3 P2.3 d COM COM e P3.4 P2.4 e f P3.5 P2.5 f g P3.6 P2.6 g P3.7 P2.7 Dp Dp

  43. a 编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。 UP: MOV P1,30H MOV P2,31H SJMP UP b g f c e d Dp 74LS47 89C51 74LS47 a a a A P1.0 P2.0 A a b +5V b B P1.1 P2.1 B b b c c C P1.2 P2.2 C +5V c c d d COM D P1.3 P2.3 D d d e +5V e COM +5V e e f f LT LT f f g g RBO RBO g g Dp RBI RBI Dp 74LS47 74LS47 a a a A P1.4 P2.4 A a b b B +5V P1.5 P2.5 B b b c c +5V C P1.6 P2.6 C c c d d COM D P1.7 P2.7 D d d e +5V e COM +5V e e f f LT LT f f g g RBO RBO g g Dp RBI RBI Dp

  44. a 思考:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中存放的1位BCD码的内容 。 f b UP:MOV A,31H SWAP A ORL A,30H MOV P1,A g MOV A,33H SWAP A ORL A,32H MOV P2,A SJMP UP c e d Dp 74LS47 89C51 74LS47 a a a A P1.0 P2.0 A a b +5V b B P1.1 P2.1 B b b c c C P1.2 P2.2 C +5V c c d d COM D P1.3 P2.3 D d d e +5V e COM +5V e e f f LT LT f f g g RBO RBO g g Dp RBI RBI Dp 74LS47 74LS47 a a a A P1.4 P2.4 A a b b B +5V P1.5 P2.5 B b b c c +5V C P1.6 P2.6 C c c d d COM D P1.7 P2.7 D d d e +5V e COM +5V e e f f LT LT f f g g RBO RBO g g Dp RBI RBI Dp

  45. a 例: 编程在4个七段LED数码管上显示1234。 f b g c e d 89C51 74LS48 Dp a START:MOV P2,#11100001B LCALL D2MS MOV P2,#11010010B LCALL D2MS MOV P2,#10110011B LCALL D2MS MOV P2,#01110100B LCALL D2MS SJMP START P2.0 A b P2.1 B c P2.2 C d P2.3 D +5V e f LT g RBO RBI a b c d e f g a b c d e f g a b c d e f g a b c d e f g 1 2 3 4 COM COM COM COM P2.4 P2.5 P2.6 P2.7

  46. START: MOV R0,#30H MOV R7,#4 MOV R2,#0E0H UP: MOV A,@R0 ORL A,R2 MOV P1,A LCALL D2MS INC R0 MOV A,R2 RL A MOV R2,A DJNZ R7,UP SJMP START a 思考:编程在4个七段LED数码管上显示30H,31H, 32H,33H单元中的内容。 f b g c e d 89C51 74LS48 Dp a P2.0 A b P2.1 B c P2.2 C d P2.3 D +5V e f LT g RBO RBI a b c d e f g a b c d e f g a b c d e f g a b c d e f g 3 4 COM COM COM COM P2.4 P2.5 P2.6 P2.7

  47. a 例: 编程在4个七段LED数码管上显示1234。 f b g UP:MOV P1,#06H MOV P3,#0FEH LCALL D2Ms MOV P1,#5BH MOV P3,#0FDH LCALL D2mS MOV P1,#4FH MOV P3,#0FBH LCALL D2mS MOV P1,#66H MOV P3,#0F7H LCALL D2mS SJMP UP c e 89C51 d Dp P2.0 驱 动 器 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 a b c d e f g a b c d e f g a b c d e f g a b c d e f g 1 2 3 4 COM COM COM COM P3.0 P3.1 P3.2 P3.3

  48. 例:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中的内容。例:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中的内容。 a START: MOV R0,#30H MOV R7,#4 MOV R2,#0FEH MOV DPTR,#TAB UP: MOV A,@R0 MOVC A,@A+DPTR MOV P1,A MOV P3,R2 LCALL D2MS INC R0 MOV A,R2 RL A MOV R2,A DJNZ R7,UP SJMP START TAB : DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH f b g 89C51 c e P2.0 驱 动 器 d Dp P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 a b c d e f g a b c d e f g a b c d e f g a b c d e f g 3 4 COM COM COM COM P3.0 P3.1 P3.2 P3.3

  49. 习题与思考: • 用8051实现如下功能: • 4个开关,1个蜂鸣器,当4个开关的状态与30H单元的低四位相同时,蜂鸣器以100Hz的频率响5下,否则蜂鸣器不响。 • 在动态硬译码连接法下,编程: • 1.在4个数码管上同时显示8 • 2.在4个数码管上轮流显示3 • 3.在4个数码管上依次显示5 • 实验板上数码管电路如下: • 欲使最右边的数码管显示3,试编程。 • ② 欲使最右边的数码管显示30H单元的内容(30H单元的内容在0—9之间),试编程, • 编制一位秒表的驱动程序。 • 预习实验板上数码管电路,编程: • ① 在4个数码管上显示秒数 • 实现分秒表 • 预习实验板上数码管电路和按键电路,编程: • K1按下时,最右面数码管的显示数加1;K2按下时,最右面数码管的显示数减1。 • K1按下时,4个数码管的显示数加1;K2按下时,4个数码管的显示数减1 返回

More Related