Upload
fraley
View
92
Download
0
Embed Size (px)
DESCRIPTION
第 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. 写控制信号. 转换开关. 读引脚. 作用 : - PowerPoint PPT Presentation
Citation preview
第 2 章 MCS-51 单片机内部并行口及其应用
第 2 章 MCS51 单片机内部并行口及应用
2.1 MCS-51 单片机并行口结构
2.2 MCS-51 单片机并行口应用
2.3 七段LED显示器接口
2.4 键盘接口
第 2 章 MCS-51 单片机内部并行口及其应用
1.1 MCS-51 单片机并行口结构
1.1.1 P0口结构
1.1.2 P1口结构
1.1.3 P2口结构
1.1.4 P3口结构
第 2 章 MCS-51 单片机内部并行口及其应用
1.1.1 P0 口结构
返回
D
CP
Q
Q
&
读引脚
读锁存
写控制信号
DB0.0
地址 / 数据控制线 +5V
P0.0
转换开关
锁存器
作用 :
1 、外扩芯片时, P0 口不再做 I/O 口使用,而是先传送地址,后传送数据。2 、没有外扩芯片时, P0 口可以直接作为输入口或输出口使用。
第 2 章 MCS-51 单片机内部并行口及其应用
P0 口直接做输出口时,输出信息的过程:(将 0送到 P0.0 的过程 )
返回
D
CP
Q
Q
&
读引脚
读锁存
写控制信号
DB0.0
地址 / 数据控制线 +5V
P0.0
转换开关
锁存器
0
0
0 1
0
注意 : P0 口做输出口时,内部数据经过锁存器送到 P00---P07 上。由于上管始终截止,而当下管也截止时, P00—P07 被架空,没有标准的高电平,所以 P0 口作输出口使用时,必须外接上拉电阻。
第 2 章 MCS-51 单片机内部并行口及其应用P0 口直接做输入口时,输入信息的过程:(将 P0.0 处的 1送入 DB0.0 的过程 )
D
CP
Q
Q
&
读引脚
读锁存
写控制信号
DB0.0
地址 / 数据控制线 +5V
P0.0
转换开关
锁存器
0
0
1
注意 :
1 、 P0 口作输入口时, P00—P07 上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置 1 ,否则总是读到 0 。2 、 CPU 对 P0 口的读操作有 2 种:读引脚和读—改—写锁存器。
1
当 CPU 执行 MOV A , P0 或 JB/JN
B P0.x ,标号 时,产生读引脚控制信号,此时读的是引脚的状态 。
当 CPU 执行读—改—写指令(以端口为目的操作数的 ANL 、 ORL 、 XRL 、DEC 、 INC SETB 、 CLR 等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
1.1.2 P1 口结构
D
CP
Q
Q
读引脚
读锁存
写控制信号
DB0.0
+5V
P1.0
锁存器
作用 :
P1 口只能可以直接作为输入口或输出口使用。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
返回
D
CP
Q
Q
读引脚
读锁存
写控制信号
DB0.0
+5V
P1.0
锁存器
P1 口直接做输出口时,输出信息的过程:(将 1 送到 P1.0 的过程 )
1
0 0
1
注意: P1 口做输出口时,内部数据经过锁存器送到 P10---P17 上。由于内部有上拉电阻,所以 P1 口作输出口使用时,不用外接上拉电阻。
第 2 章 MCS-51 单片机内部并行口及其应用
D
CP
Q
Q
读引脚
读锁存
写控制信号
DB0.0
+5V
P1.0
锁存器
P1 口直接做输入口时,输入信息的过程: (将 P1.0 处的 0送入 DB0.0 的过程 )
0
0
注意 :
1 、 P1 口作输入口时, P10—P17 上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置 1 ,否则总是读到 0 。2 、 CPU 对 P1 口的读操作有 2 种:读引脚和读—改—写锁存器。
当 CPU 执行 MOV A , P1 或 JB/JN
B P1.x ,标号 时,产生读引脚控制信号,此时读的是引脚的状态 。
当 CPU 执行读—改—写指令(以端口为目的操作数的 ANL 、 ORL 、 XRL 、 D
EC 、 INC 、 SETB 、 CLR 等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
1.1.3 P2 口结构
D
CP
Q
Q
读引脚
读锁存
写控制信号
DB0.0
地址控制线 +5V
P2.0
转换开关锁存器
作用 :
1 、外扩芯片时, P2 口不再做 I/O 口使用,而是传送高 8 位地址。2 、没有外扩芯片时, P2 口可以直接作为输入口或输出口使用。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
返回
D
CP
Q
Q
读引脚
读锁存
写控制信号
DB0.0
地址控制线 +5V
P2.0
转换开关锁存器
P2 口直接做输出口时,输出信息的过程:(将 0送到 P2.0 的过程 )
0
0
0
1
0
注意: P2 口做输出口时,内部数据经过锁存器送到 P20---P27 上。由于内部有上拉电阻,所以 P2 口作输出口使用时,不用外接上拉电阻。
第 2 章 MCS-51 单片机内部并行口及其应用
D
CP
Q
Q
读引脚
读锁存
写控制信号
DB0.0
地址控制线 +5V
P2.0
转换开关锁存器
P2 口直接做输入口时,输入信息的过程:(将 P2.0 处的 0送入 DB0.0 的过程 )
0
0
0
注意 :
1 、 P2 口作输入口时, P20—P27 上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置 1 ,否则总是读到 0 。2 、 CPU 对 P2 口的读操作有 2 种:读引脚和读—改—写锁存器。
当 CPU 执行 MOV A , P2 或 JB/JN
B P2.x ,标号 时,产生读引脚控制信号,此时读的是引脚的状态 。
当 CPU 执行读—改—写指令(以端口为目的操作数的 ANL 、 ORL 、 XRL 、 D
EC 、 INC 、 SETB 、 CLR 等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
1.1.4 P3 口结构
D
CP
Q
Q
&
读引脚
读锁存
写控制信号
DB0.0
+5V
P3.0
锁存器
第二功能输出
第二功能输入
作用 :
1 、 P3 口可以直接作为输入口或输出口使用。2 、 P3 口的引脚又具有第二功能。
1 .当使用单片机内部串行口时,若 CPU 执行 MOV A , SBUF 指令,则 P3.0(RXD)
作为接收信号线,接收由外界串行输入的数据;若 CPU 执行 MOV SBUF , A 指令,则 P3.1(TXD) 作为发送信号线,串行发送数据至外界。 2 .当单片机使用外中断时, P3.2 ( INT0 )作为外中断 0 的中断请求输入线, 3.3(I
NT1) 作为外中断 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
口线使用。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
返回
D
CP
Q
Q
&
读引脚
读锁存
写控制信号
DB0.0
+5V
P3.0
锁存器
第二功能输出
第二功能输入
P3 口直接做输出口时,输出信息的过程:(将 1送到 P3.0 的过程 )
1
0
0
1
注意: P3 口做输出口时,内部数据经过锁存器送到 P30---P37 上。由于内部有上拉电阻,所以 P2 口作输出口使用时,不用外接上拉电阻。
第 2 章 MCS-51 单片机内部并行口及其应用
D
CP
Q
Q
&
读引脚
读锁存
写控制信号
DB0.0
+5V
P3.0
锁存器
第二功能输出
第二功能输入
0
P3 口直接做输入口时,输入信息的过程:(将 P3.0 处的 0送入 DB0.0 的过程 )
0
注意 :
1 、 P3 口作输入口时, P30—P37 上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置 1 ,否则总是读到 0 。2 、 CPU 对 P3 口的读操作有 2 种:读引脚和读—改—写锁存器。
当 CPU 执行 MOV A , P3 或 JB/JN
B P3.x ,标号 时,产生读引脚控制信号,此时读的是引脚的状态 。
当 CPU 执行读—改—写指令(以端口为目的操作数的 ANL 、 ORL 、 XRL 、 D
EC 、 INC 、 SETB 、 CLR 等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。
返回
第 2 章 MCS-51 单片机内部并行口及其应用
1.2 MCS-51 单片机并行口的应用
1.2.1 直接做输出口
1.2.2 直接做输入口
在没有外扩任何芯片时, MCS-51 单片机内部并行口可以作为输出口,直接与输出外设连接,常用的输出外设是发光二极管; MCS-51 单片机内部并行口也可以作为输入口,直接与输入外设连接,常用的输入外设是开关。
例 1 例 2
例 1 例 2
第 2 章 MCS-51 单片机内部并行口及其应用
1.2.1 直接做输出口
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
89C51 +5V
电阻的作用是当流过发光二极管的电流过大时,它就会被烧坏。这个电阻可以限制流过发光二极管的电流,因此这个电阻叫作限流电阻。限流电阻阻值的计算方法如下: R=(5-1.75)/Id ; Id 是流过发光二极管的电流,一般从 8mA 到 20mA ,其值越大,发光二极管越亮,但不能太大,当流过发光二极管的电流超过20mA 时,容易烧坏发光二极管。例 1 :用 89C51 的 P1 口驱动 8 个发光二极管,使 8 个发光二极管由左向右轮流点亮。试画出连接图,编制驱动程序。
解:
1 、画电路图
2 、编程
思考
mov a,#0feh up: mov p1,a lcall delay rl a sjmp updelay1: mov r7,#2delay11: mov r6,#250 djnz r6,$ djnz r7,delay11 ret
第 2 章 MCS-51 单片机内部并行口及其应用
例 1 :用 89C51 的 P1 口驱动 8 个发光二极管,使 8 个发光二极管由左向右轮流点亮。试画出连接图,编制驱动程序。思考: ① 如果用 P0 口驱动发光二极管,则如何修改?② 如果使 8 个发光二极管由右向左轮流点亮,则如何修改?③ 如果使 8 个发光二极管闪亮,则如何修改?④ 如果使 8 个发光二极管由内向外轮流点亮,则如何修改?⑤ 如果使 8 个发光二极管由右向左依次点亮,则如何修改?⑥ 如果使延时时间延长或缩短,会出现什么现象?预习实验并思考:熟悉实验板上与发光二极管有关的电路。编制驱动程序,实现如下操作:⑴ 由左向右轮流点亮⑵ 由外向里轮流点亮 ⑶ 由右向左依次点亮⑷ 闪亮
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
89C51 +5V
第 2 章 MCS-51 单片机内部并行口及其应用
1.2.1 直接做输出口
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
89C51
+5V
例 2 :用 8051 的 P1 口驱动 1 个数码管,制成 1 位秒表 .试画出连接图,编制驱动程序。 解:1 、画电路图2 、编程
思考
a
b
c
d
e
f
g
Dp
ab
c
de
f g
Dp
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 UP0TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
第 2 章 MCS-51 单片机内部并行口及其应用
例 2 :用 8051 的 P1 口驱动 1 个数码管,制成 1 位秒表 . 试画出连接图,编制驱动程序。思考: ① 如果用 P2 口驱动发光二极管,公共端接 P3.0 ,则如何修改? ② 如果制成 0.1S 的表,则如何修改?
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
89C51
P3.0
a
b
c
d
e
f
g
Dp
CLR P3.0UP0 : 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 UP0TAB: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H,80H,98H
第 2 章 MCS-51 单片机内部并行口及其应用
1.2.2 直接做输入口
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
89C51
+5V
例 1 :用 89C51 的 P1 口传送 8 个开关状态,用 P2 口显示 8个开关状态,若开关合则对应灯亮,试画出连接图,编制驱动程序。解:1 、画电路图
MOV P1 , #0FF
H
UP : MOV A ,P1
MOV P2 ,A
SJMP UP
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
+5V
开关处的电阻称为上拉电阻,它的作用是当开关断开时,使 P3 口的电压上拉为准确的高电平,避免悬空状态。
2 、编程
强调:8051 内部并行口直接作为输入口时,必须先将口锁存器置 1 。 思考
第 2 章 MCS-51 单片机内部并行口及其应用
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
89C51
MOV P1 , #0FF
H
UP : MOV A ,P1
CPL A
MOV P2 ,A
SJMP UP
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
+5V
思考:如果将发光二极管反接,则如何修改程序?
第 2 章 MCS-51 单片机内部并行口及其应用
1.2.2 直接做输入口
89C51 +5V
例 2 :用 8051 的 P1 口驱动 8 个发光二极管, P3.4 接一个开关 K1 ,当开关按下时, 8 个发光二极管由左向右轮流点亮;开关断开时, 8 个发光二极管不亮。试画出连接图,编制驱动程序。 解:1 、画电路图 P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
2 、编程
+5V
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 思考
第 2 章 MCS-51 单片机内部并行口及其应用
例 2 :用 8051 的 P1 口驱动 8 个发光二极管, P3.4 接一个开关 K1 ,当开关按下时, 8 个发光二极管由左向右轮流点亮;开关断开时, 8 个发光二极管不亮。试画出连接图,编制驱动程序。思考:① 在上述程序中,开关必须一直按着,灯才能轮流点亮,当开关断开时,停留在某个灯点亮状态。如果当开关断开时,灯全灭,如何修改程序?② 如果开关作为启动开关,开关按下并抬起时,灯才开始轮流点亮,则如何编程?预习实验熟悉实验板上与发光二极管和开关有关的电路。编制驱动程序,实现如下操作:1 .读入 4 个按键并使对应的 LED 点亮。2 . K1 按下时, LED 每 2 个为一组由右向左依次点亮。3 . K2 按下并抬起时, LED 由内向外轮流点亮。
P3.2
P3.3
P3.4
P3.5
+5V
第 2 章 MCS-51 单片机内部并行口及其应用
1.3 七段 LED 显示器接口
1.3.1 数码管简介
1.3.2 单个七段 LED 数码管的接口
1.3.3 多个七段 LED 数码管的接口
在单片机控制系统中显示器是必不可少的外设。常用的显示器有发光二极管,数码管和液晶显示器。本节介绍数码管接口。
第 2 章 MCS-51 单片机内部并行口及其应用
1.3.1 数码管简介 组成: LED 数码管由 7 段或 8 段发光二极管组成,在平面上排成 8 字
型。
分类:有共阴极和共阳极两种。
COM
a
b
c
d
e
f
g
Dp
COM
a
b
c
d
e
f
g
Dp
显示原理:使某些段点亮而另一些段不亮就可以显示 0---9 , A---F 等字型。使某段点亮必须具备 2 个条件:① 共阴极管的公共端接地和共阳极管的公共端接电源。② 共阴极管的控制端接电源和共阳极管的控制端接地。
共阳极 共阴极
ab
c
de
f g
Dp
第 2 章 MCS-51 单片机内部并行口及其应用
1.3.2 单个七段 LED 数码管的接口
单个七段 LED 数码管与单片机的连接方法有 2 种:
1 、软译码连接法
2 、硬译码连接法a
b
c
de
f g
Dp
第 2 章 MCS-51 单片机内部并行口及其应用
软译码连接法在软译码连接法下, LED 数码管与单片机的连接图 :
ab
c
de
f g
Dp
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
89C51
+5V
a
b
c
d
e
f
g
Dp
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
TAB : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
共阳极 LED
第 2 章 MCS-51 单片机内部并行口及其应用
硬译码连接法
在硬译码连接法下, LED 数码管与单片机的连接图 :
ab
c
de
f g
Dp
P1.0P1.1P1.2P1.3
ABCD
89C51利用 BCD 码—七段码译码器实现字形到字形码的转换。常用的BCD 码—七段码译码器有 74LS
48 和 74LS47 。 编程让 LED 数码管显示 30H
单元的内容( 30H 单元的内容在 0—9 之间)。 MOV P1,30H
LTRBORBI
abcdefg
P1.4P1.5P1.6P1.7
COM
abcdefg
74LS48 共阴极 LED
+5V
注意:在硬译码连接法下,直接送欲显示的数即可,字形到字形码的转换是用硬件实现的。
思考:如果 7448 的 ABCD 接到 8051 的 P14—P17 ,则如何修改程序?答案
第 2 章 MCS-51 单片机内部并行口及其应用
1.3.3 多个七段 LED 数码管的接口
多个数码管与 CPU 的连接方法有 4 种:
1 、静态软译码连接法
2 、静态硬译码连接法
3 、动态硬译码连接法
4 、动态软译码连接法
ab
c
de
f g
Dp
第 2 章 MCS-51 单片机内部并行口及其应用
静态软译码连接法
在静态软译码连接法下, 4 个 LED 数码管与单片机的连接图 :
ab
c
de
f g
Dp
Dp
P0.0P0.1P0.2P0.3
89C51
P0.4P0.5P0.6P0.7
COM
abcdefg
共阴极 LED
Dp
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
COM
abcdefg
Dp
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
COM
abcdefg
Dp
P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7
COM
abcdefg
1 、编程在 4 个七段 LED 数码管上显示 1234 。 MOV P
0 , #06HMOV P
1 , #5BHMOV P
2 , #4FHMOV P
3 , #66HSJMP $
2 、编程在 4 个七段 LED 数码管上显示 30H ,31H , 32H , 33H 单元中存放的 1 位 BCD 码的内容 。
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 UP0TAB : DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,
6FH
思考:编程在 4 个七段 LED 数码管上显示 30H , 31H 单元中的内容。( 30H , 31H 单元中分别存有 2 位 BCD 码)。答案
第 2 章 MCS-51 单片机内部并行口及其应用
静态硬译码连接法
在静态硬译码连接法下, 4 个 LED 数码管与单片机的连接图 :
ab
c
de
f g
Dp
P2.0P2.1P2.2P2.3
89C51
Dp
P2.4P2.5P2.6P2.7
COM
abcdefg
Dp
P1.0P1.1P1.2P1.3
COM
abcdefg
P1.4P1.5P1.6P1.7
ABCD
LTRBORBI
abcdef
g
74LS47
+5V
Dp
COM
abcdefg
ABCD
LTRBORBI
abcdef
g
74LS47
+5V
ABCD
LTRBORBI
abcdefg
74LS47
+5V
Dp
COM
abcdefg
ABCD
LTRBORBI
abcdefg
74LS47
+5V
编程在 4 个七段 LED 数码管上显示 30H , 31H 单元中的内容。( 30H , 31H 单元中分别存有 2 位 BCD 码)。
思考:编程在 4 个七段 LED 数码管上显示 30H ,31H , 32H , 33H 单元中存放的 1 位 BCD 码的内容 。
+5V
+5V
+5V
+5V
程 序
答 案
第 2 章 MCS-51 单片机内部并行口及其应用
动态硬译码连接法
在动态硬译码连接法下, 4 个 LED 数码管与单片机的连接图 :
ab
c
de
f g
DpP2.0P2.1P2.2P2.3
89C51
P2.4P2.5P2.6P2.7
COM
a b c d e fg
ABCD
LTRBORBI
abcdef
g
74LS48
+5V
COM
a b c d e fg
COM
a b c d e fg
COM
a b c d e fg
例: 编程在 4 个七段 LED 数码管上显示 1234 。 在动态连接法下,数码管公共端均受控。驱动程序的编制充分利用了人眼的视觉滞留效应,循环扫描各数码管,使各数码管不是连续显示,但给人的视觉印象是连续地在显示。每个数码管的显示时间不得低于 1ms ,不亮的时间不能超过 20 ms 。 利用人眼的视觉滞留现象,实现让 4 个七段 LED 数码管上不同时显示 1234 ,但人眼看到的效果却是同时显示 1234 。
1 2 3 4
思考:编程在 4 个七段 LED 数码管上显示30H , 31H , 32H , 33H 单元中的内容。
程 序
答 案
第 2 章 MCS-51 单片机内部并行口及其应用
动态软译码连接法
在动态软译码连接法下, 4 个 LED 数码管与单片机的连接图 :
ab
c
d
e
f g
DpP2.0P2.1P2.2P2.3
89C51
P3.0P3.1P3.2P3.3
COM
a b c d e fg
驱动器
COM
a b c d e fg
COM
a b c d e fg
COM
a b c d e fg1 2 3 4
P2.4P2.5P2.6P2.7
例: 编程在 4 个七段 LED 数码管上显示 1234 。例:编程在 4 个七段 LED 数码管上显示 30H , 31H , 32H , 33H 单元中的内容。
程 序
程 序
第 2 章 MCS-51 单片机内部并行口及其应用
1.4 键盘接口
1.4.1 键盘类型
1.4.2 非编码键盘与单片机的接口
1.4.3 矩阵非编码键盘与单片机的接口
键盘是单片机控制系统最常用、最简单的输入设备。用户可以通过键盘输入数据或命令,实现简单的人机通信。
第 2 章 MCS-51 单片机内部并行口及其应用
1.4.1 键盘类型
单片机控制系统所用的键盘有编码键盘和非编码键盘两种。
1 、编码键盘除了键开关外,还有专门的硬件电路,用于识别闭合键并产生键代码。不仅如此,编码键盘一般还有去键抖动电路和防串键保护电路等。这种键盘的优点是所需软件简短,但硬件电路较复杂,价格较昂贵。目前在单片机控制系统中使用不多。
2 、非编码键盘仅由键开关组成,其它工作如键识别、键代码的产生、去抖动等,不是由硬件完成而是由软件完成的。为了简化硬件电路,降低成本,目前单片机控制系统中大多数采用非编码键盘。
非编码键盘的键开关可以排列成线性形式或矩阵形式,因此非编码键盘
有线性非编码键盘和矩阵非编码键盘两种。
第 2 章 MCS-51 单片机内部并行口及其应用
1.4.1 键盘类型
单片机控制系统所用的键盘有编码键盘和非编码键盘两种。
1 、编码键盘除了键开关外,还有专门的硬件电路,用于识别闭合键并产生键代码。不仅如此,编码键盘一般还有去键抖动电路和防串键保护电路等。这种键盘的优点是所需软件简短,但硬件电路较复杂,价格较昂贵。目前在单片机控制系统中使用不多。
2 、非编码键盘仅由键开关组成,其它工作如键识别、键代码的产生、去抖动等,不是由硬件完成而是由软件完成的。为了简化硬件电路,降低成本,目前单片机控制系统中大多数采用非编码键盘。
非编码键盘的键开关可以排列成线性形式或矩阵形式,因此非编码键盘
有线性非编码键盘和矩阵非编码键盘两种。
第 2 章 MCS-51 单片机内部并行口及其应用
1.4.1 键盘类型
单片机控制系统所用的键盘有编码键盘和非编码键盘两种。
1 、编码键盘除了键开关外,还有专门的硬件电路,用于识别闭合键并产生键代码。不仅如此,编码键盘一般还有去键抖动电路和防串键保护电路等。这种键盘的优点是所需软件简短,但硬件电路较复杂,价格较昂贵。目前在单片机控制系统中使用不多。
2 、非编码键盘仅由键开关组成,其它工作如键识别、键代码的产生、去抖动等,不是由硬件完成而是由软件完成的。为了简化硬件电路,降低成本,目前单片机控制系统中大多数采用非编码键盘。
非编码键盘的键开关可以排列成线性形式或矩阵形式,因此非编码键盘
有线性非编码键盘和矩阵非编码键盘两种。
第 2 章 MCS-51 单片机内部并行口及其应用
1.4.2 非编码键盘与单片机的接口 线性非编码键盘的键开关排成一行或一列的形式,它与单片机的接口电路如图所示:
K1
K2
K3
K4
P1.1
P1.0
P1.2
P1.3
89C51
+5V线性非编码键盘的工作原理:当键未被按下时,与此键相连的 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
例
第 2 章 MCS-51 单片机内部并行口及其应用
例 某单片机控制系统, P1 口接有 8 发光二极管, P3.0 、 P3.1 、 P3.2 、 P3.3 接有 4 个开关 K1 、 K2 、 K3 、 K4 ,试画出接口电路,并编程使得当 K1 按下时 8 个发光二极管全亮;当 K2 按下时 8 个发光二极管闪亮;当 K3 按下时 8 个发光二极管由左向右点亮;当 K4 按下时 8 个发光二极管全灭。
K1
K2
K3
K4
P3.1
P3.0
P3.2
P3.3
89C51
+5V
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7程 序
第 2 章 MCS-51 单片机内部并行口及其应用 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 UP1
NEXT2 : 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
程 序子程序
K1 : MOV P1 , #0FFH
RET
K2 : MOV P1 , #0FFH
LCALL D2S
MOV P1 , #00H
LCALL D2S
RET
K3 : MOV P1 , B
LCALL D2S
MOV A , B
RL A
MOV B , A
RET
K4 : MOV P1 , #00H
RET
第 2 章 MCS-51 单片机内部并行口及其应用a
b
c
de
f g
DpP1.0P1.1P1.2P1.3
ABCD
89C51
LTRBORBI
abcdefg
P1.4P1.5P1.6P1.7 COM
abcdefg
74LS48 共阴极 LED
+5V
UP : MOV A , 30H
SWAP A
MOV P1 , A
SJMP UP
思考:如果 7448 的 ABCD 接到 8051 的 P14—P17 ,则如何修改程序?
第 2 章 MCS-51 单片机内部并行口及其应用a
b
c
de
f g
Dp
Dp
P0.0P0.1P0.2P0.3
89C51
P0.4P0.5P0.6P0.7
COM
abcdefg
共阴极 LED
Dp
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
COM
abcdefg
Dp
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
COM
abcdefg
Dp
P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7
COM
abcdefg
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 UP0TAB : DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,
6FH
思考:编程在 4 个七段 LED 数码管上显示 30H , 31H 单元中的内容。( 30H , 31H 单元中分别存有 2 位 BCD 码)。
第 2 章 MCS-51 单片机内部并行口及其应用 ab
c
de
f g
Dp
P2.0P2.1P2.2P2.3
89C51
Dp
P2.4P2.5P2.6P2.7
COM
abcdefg
Dp
P1.0P1.1P1.2P1.3
COM
abcdefg
P1.4P1.5P1.6P1.7
ABCD
LTRBORBI
abcdef
g
74LS47
+5V
Dp
COM
abcdefg
ABCD
LTRBORBI
abcdef
g
74LS47
+5V
ABCD
LTRBORBI
abcdefg
74LS47
+5V
Dp
COM
abcdefg
ABCD
LTRBORBI
abcdefg
74LS47
+5V
编程在 4 个七段 LED 数码管上显示 30H , 31H 单元中的内容。( 30H , 31H 单元中分别存有 2位 BCD 码)。 UP : MOV P1 , 30H
MOV P2 , 31H
SJMP UP
+5V
+5V
+5V
+5V
第 2 章 MCS-51 单片机内部并行口及其应用a
b
c
de
f g
Dp
P2.0P2.1P2.2P2.3
89C51
Dp
P2.4P2.5P2.6P2.7
COM
abcdefg
Dp
P1.0P1.1P1.2P1.3
COM
abcdefg
P1.4P1.5P1.6P1.7
ABCD
LTRBORBI
abcdef
g
74LS47
+5V
Dp
COM
abcdefg
ABCD
LTRBORBI
abcdef
g
74LS47
+5V
ABCD
LTRBORBI
abcdefg
74LS47
+5V
Dp
COM
abcdefg
ABCD
LTRBORBI
abcdefg
74LS47
+5V
思考:编程在 4 个七段 LED 数码管上显示 30H , 31H , 32H , 33H 单元中存放的 1 位 BCD 码的内容 。
+5V
+5V
+5V
+5V
UP : MOV A , 31
H
SWAP A
ORL A , 30H
MOV P1 , A
MOV A , 33H SWAP A ORL A , 32H MOV P2 , A SJMP UP
第 2 章 MCS-51 单片机内部并行口及其应用a
b
c
de
f g
DpP2.0P2.1P2.2P2.3
89C51
P2.4P2.5P2.6P2.7
COM
a b c d e fg
ABCD
LTRBORBI
abcdef
g
74LS48
+5V
COM
a b c d e fg
COM
a b c d e fg
COM
a b c d e fg
例: 编程在 4 个七段 LED 数码管上显示 1234 。
1 2 3 4
START:MOV P2,#11100001B
LCALL D2MS
MOV P2,#11010010B
LCALL D2MS
MOV P2,#10110011B
LCALL D2MS
MOV P2,#01110100B
LCALL D2MS
SJMP START
第 2 章 MCS-51 单片机内部并行口及其应用a
b
c
de
f g
DpP2.0P2.1P2.2P2.3
89C51
P2.4P2.5P2.6P2.7
COM
a b c d e fg
ABCD
LTRBORBI
abcdef
g
74LS48
+5V
COM
a b c d e fg
COM
a b c d e fg
COM
a b c d e fg3 4
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
思考:编程在 4 个七段 LED 数码管上显示 30H , 31
H , 32H , 33H 单元中的内容。
第 2 章 MCS-51 单片机内部并行口及其应用a
b
c
d
e
f g
DpP2.0P2.1P2.2P2.3
89C51
P3.0P3.1P3.2P3.3
COM
a b c d e fg
驱动器
COM
a b c d e fg
COM
a b c d e fg
COM
a b c d e fg1 2 3 4
P2.4P2.5P2.6P2.7
例: 编程在 4 个七段 LED 数码管上显示 1234 。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
第 2 章 MCS-51 单片机内部并行口及其应用
ab
c
d
e
f g
DpP2.0P2.1P2.2P2.3
89C51
P3.0P3.1P3.2P3.3
COM
a b c d e fg
驱动器
COM
a b c d e fg
COM
a b c d e fg
COM
a b c d e fg3 4
P2.4P2.5P2.6P2.7
例:编程在 4 个七段 LED 数码管上显示 30H , 31H , 32H , 33H 单元中的内容。 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
第 2 章 MCS-51 单片机内部并行口及其应用
习题与思考:
用 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
返回