下载浏览该文件20085309543533

Download Report

Transcript 下载浏览该文件20085309543533

第4章 MCS-51输入/输出接口
第4章 MCS-51输入输出接口
4 .1 实 训 概 要
任何微型计算机与外部设备进行信息交换均由输入/输
出接口电路(简称I/O接口)完成。I/O接口实质上就是计
算机与外部设备之间起连接作用的逻辑控制器件,起桥梁
和纽带作用。I/O接口中包含I/O端口。端口是在接口中存
放各类信息的一组寄存器。这组寄存器通常分为三类:数
据端口、状态端口和控制端口。MCS-51单片机有4个并行
I/O端口,单片机通过这些端口与外设进行数据交换。
第4章 MCS-51输入/输出接口
实训内容:
闪烁灯控制。
开关状态的显示。
节日彩灯控制。
运算器电路。
预备知识:
P0~P3口的功能
P0口 : P0口是双向I/O口,既可以作为通用I/O口使
用,又可以分时作为地址/数据总线使用。当单片机系
统需要扩展片外数据存储器或程序存储器时, P0 口
第4章 MCS-51输入/输出接口
只能作地址/数据线,而不能再作通用I/O口使用。P0口
作为地址/数据线使时,无需外接上拉电阻,作通用I/O
口时,必须外接上拉电阻。
P1口: P1口是一个准双向I/O口,它只能作为通用I/O口
使用。准双向口是指当P1口作为输入口时,需要先向P1
口锁存器写入“1”,然后读取P1口的输入信号。由于其
内部已接有上拉电阻,使用时无需外接。
第4章 MCS-51输入/输出接口
P2口: P2口既可以作为通用I/O口使用,也可作为地址线高8
位。当作为一个通用I/O口且用于输入操作时,是一个准双
向I/O口,不需外接上拉电阻。当系统扩展外部输入存储器
时,只能作地址线高8位使用。
P3口 : P3口是一个准双向口。除可作为通用I/O口外,还具
有第二功能。这主要包括:可以实现定时/计数控制、中断
控制、串行口控制和外部数据存储器的读写控制。
第4章 MCS-51输入/输出接口
P0~P3口的特点
•
功能不同。MCS-51单片机4个I/O口中,只有P1口具有
单一功能,其它口都具有其它功能。
•
带负载能力不同。P0口每个引脚内部接有上拉场效应
管,故每个引脚可驱动8个TTL,而P1口~P3口引脚内
部只接有上拉电阻,只能驱动3个TTL。
•
复位状态相同。当系统复位后,P0~P3口均输出高电
平。
第4章 MCS-51输入/输出接口
4.2 实训13 闪烁灯控制
4.2.1 实训目的
通过本节实训,主要学习下面内容:
MCS-51单片机I/O口的结构。
I/O端口的使用及编程方法。
第4章 MCS-51输入/输出接口
4.2.2 实训要求
设计硬件电路,且编程控制,使接在P1.0引脚上的发光二极
管不停地闪亮,亮灭的时间间隔为1秒。
手动开关控制接在P1.0引脚上的发光二极管闪亮。开关接在
P1.7脚上。
4.2.3 硬件电路原理图
实训硬件电路如图4-1所示。
第4章 MCS-51输入/输出接口
第4章 MCS-51输入/输出接口
4.2.4 程序设计思路
1.输出发光二极管的控制
若接在P1.0端口的发光二极管为共阴极接法,当P1.0脚输出
高电平,即P1.0=1时,发光二极管被点亮;若发光二极管为
共阳极接法,则P1.0脚输出低电平则亮。我们可以使用SETB
P1.0指令使P1.0端口输出高电平,使用CLR
P1.0指令使P1.0端
口输出低电平。发光二极管亮灭的时间可调用延时子程序控制。
第4章 MCS-51输入/输出接口
2.延时子程序的设计方法
延时既可以通过软件实现,也可以通过定时/计数器进行定
时控制。这里讨论软件延时。简单地说,计算机执行指令需要
时间,若能通过循环,多次执行一些指令,将时间累加起来,
就可以实现定时。作为单片机的指令的执行的时间是很短,数
量为微秒级。因此,我们要求的闪烁时间间隔为1秒,相对于
微秒来说,相差太大,可用循环实现。下面具体介绍其原理:
设单片机晶振为6MHz,则1个机器周期为2微秒。各指令的
执行时间见表4-1所示。
第4章 MCS-51输入/输出接口
指令
需要的时间
L3: NOP
2μs
NOP
2μs
NOP
2μs
DJNZ R7,L3
4μs
第4章 MCS-51输入/输出接口
内层循环的循环次数为100次,则累加时间为
1000μs=1ms,再循环250次,时间为250ms,第三重循环为4
次,累计时间约为1s。
4.2.5 实训程序流程图
自动闪烁灯实训程序流程如图4-2所示。
第4章 MCS-51输入/输出接口
开始
P1.0输出“1”点亮
LED
延时1S
P1.0输出“0”使
LED熄灭
延时1S
第4章 MCS-51输入/输出接口
4.2.6 实训程序
1.手控灯实训程序
手控灯实训程序见表4-2所示。
第4章 MCS-51输入/输出接口
存储地址
机器码
1000
行号
源程序
1
ORG 1000H
1000
209704
2
ST: JB P1.7,A1
1003
C290
3
CLR P1.0
1005
80F9
4
SJMP ST
1007
D290
5
A1: SETB P1.0
1009
80F5
6
SJMP ST
7
END
注释
第4章 MCS-51输入/输出接口
存储地址
机器码
2000
行号
源程序
1
ORG 2000H
2000
C290
2
ST: CLR P1.0
2002
122050
3
LCALL D1S
2005
D290
4
SETB P1.0
2007
122050
5
LCALL D1S
200A
022000
6
LJMPST
7
ORG 2050H
8
D1S: MOV R5,#4
2050
2050
7D04
注释
第4章 MCS-51输入/输出接口
2052
7EFA
9
L1: MOV R6,#250
2054
7F64
10
L2: MOV R7,#100
2056
00
11
L3: NOP
2057
00
12
NOP
2058
00
13
NOP
2059
DFFB
14
DJNZ R7,L3
205B
DEF7
15
DJNZ R6,L2
205D
DDF3
16
DJNZ R5,L1
205F
22
17
RET
18
END
第4章 MCS-51输入/输出接口
4.2.7 实训步骤
按电路原理图4-1连接电路。
将全部实训程序输入单片机开发系统中,并检查机器
码是否正确。
为程序的每条指令加注释,填入实训程序表中。
输入第一个程序首地址1000H,用连续执行命令执行
程序,并拨动手动开关,观察发光二极管亮灭变化情况。
输入第二个程序首地址2000H,用连续执行命令执行
程序,观察发光二极管亮灭变化情况。
第4章 MCS-51输入/输出接口
若通过P1.4脚控制发光二极管的亮灭,如何实现?
若将延时时间变为0.2秒,如何修改程序?
若延时时间为半分钟呢?请用手表等计时工具验证时间。
提示:
编程控制发光二极管时,点亮或熄灭发光二极管与
二极管的接法有关。
采用软件延时,延时子程序的定时时间不是非常精
确,可采用定时/计数器定时。
由P1口直接连接发光二极管,其亮度较低,可增加
三极管或74LS04、74LS07等驱动元件或电路,提高亮
度,但要加限流电阻。
第4章 MCS-51输入/输出接口
4.3 实训14 开关状态的显示
4.3.1 实训目的
通过本节实训,主要学习下面内容:
MCS-51单片机I/O口的结构。
I/O端口的使用及程序控制方法。
判位转移指令在I/O接口电路中的应用。
第4章 MCS-51输入/输出接口
4.3.2 实训要求
将单片机P1口某些位的状态通过发光二极管显示出来。设
单片机的P1.0-P1.3连接四个发光二极管L1~L4,P1.4~P1.7
连接四个开关K1~K4。编程将开关的状态反映到发光二极管
亮灭上。即:开关闭合,对应的灯点亮,开关断开,对应的
灯熄灭。
4.3.3 硬件电路原理图
实训硬件电路原理图如图4-3所示。
第4章 MCS-51输入/输出接口
第4章 MCS-51输入/输出接口
4.3.4 程序设计思路
通过指令将开关状态读入单片机中,并通过每个开关对
应的发光二极管显示出来。可以采用判位转移指令JB或JNB
来完成;也可以一次读入四路开关状态,用逻辑指令进行相
应处理,然后送发光二极管显示。
编程时,要视具体硬件电路的结构而定。本电路发光二
极管采用共阳接法。即:P1.0~P1.3为低电平时发光二极管
点亮,高电平时熄灭。
4.3.5 实训程序
实训程序见表4-4所示。
第4章 MCS-51输入/输出接口
存储地址
机器码
2000
行号
1
源程序
ORG 2000H
2000
209404
2
ST: JB
P1.4,KG1
2003
D290
3
SETB P1.0
2005
8002
4
SJMP K1
2007
C290
5
KG1: CLR P1.0
2009
209504
6
K1: JB
200C
D291
7
SETB P1.1
200E
8002
8
SJMP K2
2010
C291
9
KG2: CLR P1.1
P1.5,KG2
注释
第4章 MCS-51输入/输出接口
2012
209604
10
2015
D292
11
SETB P1.2
2017
8002
12
SJMP K3
2019
C292
13
KG3: CLR P1.2
201B
209704
14
K3: JB
201E
D293
15
SETB P1.3
2020
8002
16
SJMP K4
2022
C293
17
KG4: CLR P1.3
2024
80DA
18
K4: SJMP ST
19
K2: JB
END
P1.6,KG3
P1.7,KG4
第4章 MCS-51输入/输出接口
4.3.6 实训器材
单片机开发系统、四个发光二极管、开关、电阻和导线
等。
4.3.7 实训步骤
(1)按实训硬件电路图4-3连接电路。注意P1.0~P1.3接到
发光二极管L1~L4上。P1.4~P1.7接到开关K1~K4上,顺
序不能接错。即:开关K1~K4分别控制发光二极管L1~
L4。
第4章 MCS-51输入/输出接口
(2)仔细阅读并理解程序,画出程序流程图,并为每条指
令加注释,填入实训程序表4-4中。
(3)将程序机器码输入单片机中,并检查程序是否正确。
(4)输入程序首地址2000H,用连续执行命令执行程序。然
后将开关按照表4-5顺序拨动,观察发光二极管的亮灭变化,
填入表4-5中。
第4章 MCS-51输入/输出接口
开关状态
发光二极管状态
K2
K3
K4
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
L1
L2
L3
L4
第4章 MCS-51输入/输出接口
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
第4章 MCS-51输入/输出接口
4.3.8 思考与讨论
已知程序见表4-6所示。按要求回答问题:
阅读程序,写出每条指令的注释。
查指令速查表,将程序翻译成机器语言。
使用图4-3硬件电路,将机器语言程序送入单片机执行,
观察现象。
第4章 MCS-51输入/输出接口
存储地址
机器码
源程序
ORG 3000H
START:
MOV A,P1
ANL A,#0F0H
RR A
RR A
RR A
RR A
注释
第4章 MCS-51输入/输出接口
XOR A,#0F0H
MOV P1,A
SJMP START
END
提示:
在实际连接电路时,连接时应连接一部分用万用电表
测试一部分,以保证做独立系统时,电路能可靠工作。
做独立单片机系统时,通电后应先用示波器测试晶振
是否工作。
第4章 MCS-51输入/输出接口
4.4 实训15 节日彩灯控制
4.4.1 实训目的
通过本节实训,主要学习下面内容:
I/O端口的使用及自动控制方法。
P1口的编程应用。
4.4.2 实训要求
设计一个节日彩灯电路,要求从两边向中间点亮,依次
循环不止,亮灭时间为0.25秒。
4.4.3 硬件电路原理图
实训彩灯电路如图4-4所示。
第4章 MCS-51输入/输出接口
第4章 MCS-51输入/输出接口
4.4.4 程序设计思路
只要根据所设计的硬件电路,给P1口送入不同的二进制数,
并延时即可达到控制P1口上发光二极管亮灭的目的。在电路
原理图中,发光二极管采用共阴极接法,“1”亮,“0”灭。
具体见表4-7所示。
第4章 MCS-51输入/输出接口
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
说明
L8
L7
L6
L5
L4
L3
L2
L1
发光二极管
1
0
0
0
0
0
0
1
L8、L1亮
0
1
0
0
0
0
1
0
L7、L2亮
0
0
1
0
0
1
0
0
L6、L3亮
0
0
0
1
1
0
0
0
L5、L4亮
0
0
1
0
0
1
0
0
L6、L3亮
0
1
0
0
0
0
1
0
L7、L2亮
1
0
0
0
0
0
0
1
L8、L1亮
第4章 MCS-51输入/输出接口
4.4.5 实训器材
单片机开发系统、八个发光二极管和导线等。
4.4.6 实训步骤
(1)按实训硬件电路图4-4连接电路。发光二极管接成共阴
极型,连接到P1口。
(2)仔细阅读并理解程序,画出程序流程图,并为每条指
令加注释,填入实训程序表4-8中。
第4章 MCS-51输入/输出接口
(3)将程序机器码输入单片机中,并检查程序是否正确。
(4)输入程序首地址2000H,用连续执行命令执行程序。观
察发光二极管的亮灭变化,是否符合要求。
(5)若发光二极管接成共阳极型,试修改程序,并上机实践。
4.4.7 实训程序
节日彩灯实训程序见表4-8所示。
第4章 MCS-51输入/输出接口
存储地址
机器码
2000
行号
源程序
1
ORG 2000H
LP:MOV A,#81H
2000
7481
2
2002
F590
3
MOV P1,A
2004
122050
4
LCALL DE
2007
7442
5
MOV A,#42H
2009
F590
6
MOV P1,A
200B
122050
7
LCALL DE
200E
7424
8
MOV A,#24H
注释
第4章 MCS-51输入/输出接口
2010
F590
9
MOV P1,A
2012
122050
10
LCALL DE
2015
7418
11
MOV A,#18H
2017
F590
12
MOV P1,A
2019
122050
13
LCALL DE
201C
7424
14
MOV A,#24H
201E
F590
15
MOV P1,A
2020
122050
16
LCALL DE
2023
7442
17
MOV A,#42H
第4章 MCS-51输入/输出接口
2025
F590
18
MOV P1,A
2027
122050
19
LCALL DE
202A
80D4
20
SJMP LP
21
ORG 2050H
2050
2050
751201
22
DE: MOV 12H,#1
2053
7511FA
23
L3: MOV 11H,#250
2056
751064
24
L2: MOV 10H,#100
2059
00
25
L1: NOP
第4章 MCS-51输入/输出接口
205A
00
26
NOP
205B
00
27
NOP
205C
D510FA
28
DJNZ 10H,L1
205F
D511F4
29
DJNZ 11H,L2
2062
D512EE
30
DJNZ 12H,L3
2065
22
31
RET
32
END
第4章 MCS-51输入/输出接口
4.4.8 思考与讨论
(1)若要求彩灯从左到右一个一个循环点亮,试编制控制程序。
(2)若要求彩灯1、3、5、7同时点亮,延时后,2、4、6、8同
时点亮,试编制控制程序。
(3)若要求彩灯从左第一个开始闪烁10次后,转移给下一个闪
烁10次,循环不止,试编制控制程序。
(4)将各种不同点亮形式连接在一起,并能控制每一种点亮形
式的闪烁次数,试编程实现。
第4章 MCS-51输入/输出接口
提示:
编写软件延时程序时,必须考虑晶振频率。通常晶振
频率为6MHz或12MHz。
编写控制循环次数的点亮形式时,可采用固定次数循
环实现。通常使用DJNZ或CJNE指令。
当P1口所接彩灯不足以满足要求时,可考虑使用不可
编程接口芯片或可编程接口芯片来扩展接口。
第4章 MCS-51输入/输出接口
4.5 实训16 运算器电路
4.5.1 实训目的
通过本节实训,主要学习下面内容:
I/O端口的使用及自动控制方法。
P1口的编程应用。
第4章 MCS-51输入/输出接口
4.5.2实训要求
借助P1口上连接的发光二极管显示8032内部运算器的运算过
程,以便完成两个8位二进制数各种运算,并将参加运算的操作
数、运算结果和标志位的状态在发光二极管上以二进数的形式
显示出来。
4.5.3 硬件电路原理图
运算器硬件电路如图4-5所示。
第4章 MCS-51输入/输出接口
第4章 MCS-51输入/输出接口
4.5.4 程序设计思路
实现两个8位二进制数运算,例如做加法,可设置四个
时间段,间隔30秒。第一个时间段显示被加数,以二进制
数形式在发光二极管上显示出来;第二时间段显示加数;
第三时间段显示二者之和;最后显示标志寄存器PSW的值。
之后,8个发光二极管同时闪动2次后从头开始。
4.5.5 实训器材
单片机开发系统、八个发光二极管和导线等。
4.5.6 实训程序
实训程序见表4-8所示。
第4章 MCS-51输入/输出接口
存储地址
机器码
行号
源程序
2000
1
2000
E570
2
2002
F4
3
CPL A
2003
F590
4
MOV P1,A
2005
122050
5
LCALL DELY
2008
E571
6
MOV A,71H
200A
F4
7
CPL A
200B
F590
8
MOV P1,A
ORG 2000H
ST: MOV A,70H
注释
第4章 MCS-51输入/输出接口
200D
122050
9
LCALL DELY
2010
E570
10
MOV A,70H
2012
2571
11
ADD A,71H
2014
F4
12
CPL A
2015
F590
13
MOV P1,A
2017
122050
14
LCALL DELY
201A
E5D0
15
MOV A,PSW
201C
F4
16
CPL A
第4章 MCS-51输入/输出接口
201D
F590
17
MOV P1,A
201F
122050
18
LCALL DELY
2022
1220A0
19
LCALL SA
2025
022000
20
LJMP ST
21
ORG 2050H
2050
2050
752208
22
DELY: MOV 22H,#8
2053
7521FA
23
L3: MOV 21H,#250
2056
752064
24
L2: MOV 20H,#100
2059
00
25
L1: NOP
第4章 MCS-51输入/输出接口
205A
00
26
NOP
205B
00
27
NOP
205C
D520FA
28
DJNZ 20H,L1
205F
D521F4
29
DJNZ 21H,L2
2062
D522EE
30
DJNZ 22H,L3
2065
22
31
RET
第4章 MCS-51输入/输出接口
20A0
32
ORG 20A0H
20A0
759000
33
SA: MOV P1,#00H
20A3
1220AF
34
LCALL DEL1
20A6
7590FF
35
MOV P1,#0FFH
20A9
1220AF
36
LCALL DEL1
20AC
022000
37
LJMP ST
20AF
753202
38
DEL1: MOV 32H,#2
20B2
75313C
39
L33: MOV 31H,#60
20B5
753064
40
L22: MOV 30H,#100
第4章 MCS-51输入/输出接口
20B8
00
41
L11: NOP
20B9
00
42
NOP
20BA
00
43
NOP
20BB
D530FA
44
DJNZ 30H,L11
20BE
D531F4
45
DJNZ 31H,L22
20C1
D532EE
46
DJNZ 32H,L33
20C4
22
47
RET
48
END
第4章 MCS-51输入/输出接口
4.5.7 实训步骤
(1)按实训硬件电路图4-5连接电路。发光二极管接成共阳
极型,连接到P1口。
(2)仔细阅读并理解程序,画出程序流程图,并为每条指令
加注释,填入实训表4-8中。
(3)将程序机器码输入单片机中,并检查程序是否正确。
(4)将参加运算的被加数和加数分别送入片内RAM70H和
71H单元。
(5)输入程序首地址2000H,用连续执行命令执行程序。观
察发光二极管的亮灭变化,是否符合二进制转换要求。
(6)明确程序状态寄存器PSW的各位含义及各标志位的位置,
观察是否与发光二极管显示相一致。
第4章 MCS-51输入/输出接口
4.5.8 思考与讨论
如何将程序修改成减法运算、乘除法运算或逻辑运算?编
程并上机调试。
提示:
要顺利完成运算电路实训,必须对二~十进制数制转
换非常熟悉,一看便知。
对标志寄存器PSW各标志位非常清楚,且各标志位在
PSW中位置记忆准确。
对各种运算要先计算后验证。
第4章 MCS-51输入/输出接口
习 题
4.1 简述MCS-51四个I/O口的功能。
4.2 根据P0口引脚一位结构图,简述其工作原理。
4.3 为什么P0口既能作一般I/O口,又能作地址/数据线?而
P2口不能做数据线?
4.4 8051端口 P0和P2口作扩展系统总线时,其负载能力各
是多少?
4.5 8051端口P0~P3口作通用I/O口时,在输入引脚数据时
应注意什么问题?
第4章 MCS-51输入/输出接口
4.6 P3口的第二功能有哪些?
4.7 MCS-51单片机在扩展系统时,片外程序存储器和片
外数据存储器使用相同的地址编址,是否会在数据总
线上出现争总线现象?为什么?
4.8 在单片机系统扩展时,为什么P2口悬空引脚不能再
作一般I/O口使用?