2024年5月3日发(作者:)
湖 南 城 市 学 院
实 验 报 告
2018-2019 学年 上 学期
姓 名: ***
班 级学 号: ******
实 验课 程: 单片机原理及应用
实验室名称: 电子工程实验室
湖南城市学院信息与电子工程学院实验中心印制
实验项目名称: 实验一 指示灯和开关控制器实验
实验时间:第 周 星期 第五六节, 年 月 日
学生姓名:****
指导老师:*****
班级学号:*****
实验成绩:
一、实验目的及要求
1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方
法;
2、熟悉proteus软件,了解软件的结构组成与功能;
3、学会在ISIS模块中进行汇编程序录入、编译和调试;
4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。
二、实验原理
实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关
组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。此外,还
包括时钟电路、复位电路和片选电路。
+5V
C2
30pF
C1
22uF
X1
CRYSTAL
U1
19
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C3
30pF
18
XTAL2
R1
1k
9
RST
+5V
+
5
V
D1
Y1
LED-YELLOW
D2
Y2
LED-YELLOW
D3
Y3
29
30
31
R2
200
PSEN
ALE
EA
R3
200
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
R4
200
Y4
D4
LED-YELLOW
D5
LED-YELLOW
LED-YELLOW
D6
R5
200
Y5
R6
200
Y6
R7
200
Y7
D7
LED-YELLOW
LED-YELLOW
D8
R8
200
Y8
LED-YELLOW
R9
200
图1 实验原理图
在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8
只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可
观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合
相应灯亮,开关断开相应灯灭,直至停止程序运行。软件编程原理为:
(1)8只发光二极管整体闪烁3次
亮灯:向P2口送入数值0;
灭灯:向P2口送入数值0FFH;
闪烁3次:循环3次;
闪烁快慢:由软件延时时间决定。
(2)根据开关状态控制灯亮或灯灭
开关控制灯:将P3口(即开关状态)内容送入P2口;
无限持续:无条件循环。
程序流程图如图2所示。
主程序
延时子程序
计数器 R5←#3
计数器R0←#100
P2←#0
计数器R1←#50
延时子程序
计数器R2←#25
P2←#0FFH
N
R2-1=0?
延时子程序
Y
N
R5-1=0?
N
R5-1=0?
Y
R5-1=0?
N
Y
P2←P3
Y
子程序返回
图2 实验程序流程图
三、实验仪器设备及装置
(1) 硬件:电脑一台;
(2) 仿真软件:Proteus;
(3) 编程软件Keil uVision4。
其中,仿真软件ISIS元件清单如表1所示。
表1 仿真软件ISIS元件清单
元件类别
Microprocessor ICs
Miscellaneous
Capacitors
Capacitors
Resistors
Resistors
Optoelectronices
Switches&RelayS
电路符号
U1
X1/12MHz
C2~C3/30pF
C1/22uF
R1/10k
R2~R9/200
D1~D8
SW1~SW8
元件名称
80C51
CRYSTAL
CAP
CAP-ELEC
RES
RES
LED-RED
SWITCH
四、实验内容和步骤
(一)实验内容:
(1)熟悉ISIS模块的汇编程序编辑、编译与调试过程;
(2)完成实验的汇编语言的设计与编译;
(3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。
(二)实验步骤:
(1)提前阅读与实验相关的阅读材料;
(2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电
路原理的绘制;
(3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序;
(4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误;
(5)观察仿真结果,检验与电路的正确性。
五、实验数据记录与处理或实验现象与分析
1、实验程序
#include
#define uchar unsigned char
#define uint unsigned int
void delay(uchar k)
{
uint j;
while(k--)
for(j=0;j<1000;j++);
}
void main(void)
{
uchar temp;
uint i;
for (i=0;i<3;i++)
{
P2=0;
delay(100);
P2=0xff;
delay(100);
}
while(1)
{
temp=P1;
P2=temp;
}
}
2、实验现象
① 程序开始运行后,8只发光二极管先整体闪烁3次(亮→暗→亮→暗→
亮→暗)实验结果如图3图4所示。
+5V
C2
30pF
C1
22uF
X1
CRYSTAL
U1
19
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C3
30pF
18
XTAL2
R1
1k
9
RST
+5V
+
5
V
D1
Y1
LED-YELLOW
D2
Y2
LED-YELLOW
D3
Y3
29
30
31
R2
200
PSEN
ALE
EA
R3
200
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
R4
200
Y4
D4
LED-YELLOW
D5
LED-YELLOW
LED-YELLOW
D6
R5
200
Y5
R6
200
Y6
R7
200
Y7
D7
LED-YELLOW
LED-YELLOW
D8
R8
200
Y8
LED-YELLOW
R9
200
图3 二极管灯亮图
+5V
C2
30pF
C1
22uF
X1
CRYSTAL
U1
19
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C3
30pF
18
XTAL2
R1
1k
9
RST
+5V
+
5
V
D1
Y1
LED-YELLOW
D2
Y2
LED-YELLOW
D3
Y3
29
30
31
R2
200
PSEN
ALE
EA
R3
200
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
R4
200
Y4
D4
LED-YELLOW
D5
LED-YELLOW
LED-YELLOW
D6
R5
200
Y5
R6
200
Y6
R7
200
Y7
D7
LED-YELLOW
LED-YELLOW
D8
R8
200
Y8
LED-YELLOW
R9
200
图4 二极管灯灭图
② 开关可以控制二极管的最终状态(即开关闭合则对应二极管最后的状态
为亮,开关断开则对应二极管最后的状态为暗)。
(1)当按下开关1 2 7 8时结果如图5.1所示。
+5V
C2
30pF
C1
22uF
X1
CRYSTAL
U1
19
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C3
30pF
18
XTAL2
R1
1k
9
RST
+5V
+
5
V
D1
Y1
LED-YELLOW
D2
Y2
LED-YELLOW
D3
Y3
29
30
31
R2
200
PSEN
ALE
EA
R3
200
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
R4
200
Y4
D4
LED-YELLOW
D5
LED-YELLOW
LED-YELLOW
D6
R5
200
Y5
R6
200
Y6
R7
200
Y7
D7
LED-YELLOW
LED-YELLOW
D8
R8
200
Y8
LED-YELLOW
R9
200
图5.1 二极管状态图
(2)当按下开关1 3 4 6时结果如图5.2所示。
+5V
C2
30pF
C1
22uF
X1
CRYSTAL
U1
19
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C3
30pF
18
XTAL2
R1
1k
9
RST
+5V
+
5
V
D1
Y1
LED-YELLOW
D2
Y2
LED-YELLOW
D3
Y3
29
30
31
R2
200
PSEN
ALE
EA
R3
200
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
R4
200
Y4
D4
LED-YELLOW
D5
LED-YELLOW
LED-YELLOW
D6
R5
200
Y5
R6
200
Y6
R7
200
Y7
D7
LED-YELLOW
LED-YELLOW
D8
R8
200
Y8
LED-YELLOW
R9
200
图5.2 二极管状态图
实验结果分析:当程序启动时,可以看到8只发光二极管整体循环闪烁三次,
闪烁快慢由延时时间决定,然后根据所设开关的状态对应二极管的亮灯状态。
六、问题讨论
下图6中单片机80C51中31号引脚为什么接+5V?
C2
30pF
X1
CRYSTAL
U1
19
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C3
30pF
18
XTAL2
9
RST
+
5
V
29
30
31
PSEN
ALE
EA
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
图6 问题分析图
答:31号引脚为使能端(EA非),通过+5V电压是使单片机访问内部程序
存储器,但当PC(程序计数器)值超过某值时,将自动转向执行外部程序存储
器内的程序。
实验项目名称:
实验二 LED灯和数码显示器的中断控制
实验时间:第 周 星期 第 节, 年 月 日
学生姓名:
指导老师:
班级学号:
实验成绩:
一、实验目的及要求
1.掌握外部中断原理,学习中断编程与程序调试方法;
2.
熟悉
Keil uVision4平台软件调试方法。
二、实验原理
实验电路原理图如图1所示,图中按键K1和K2分别接于P3.2和P3.3,发
光二极管D1接于P0.4,共阴极数码管LED1接于P2口。时钟电路、复位电路、
片选电路忽略。
C3
30pF
+5V
X1
CRYSTAL
R3
10k
+5V
C2
19
30pF
18
U1
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
D1
LED-GREEN
R2
100
XTAL2
+5V
9
RST
29
30
31
C1
22uF
1
2
3
4
5
6
7
8
PSEN
ALE
EA
R1
1k
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
图1实验原理图
在编程软件的配合下,要求实现如下功能:程序启动后,D1处于熄灯、LED1
处于黑屏状态;单击K1,可使D1亮灯状态反转一次;单击K2,可使LED1显
示增加1,并按十六进制数显示,达到F后重新从1开始。
软件编程原理为:K1和K2的按键动作分别作为INT0和INT1的中断请求,
在中断函数中进行指示灯与数码管的信息处理。初始化后,主函数处于无限循环
状态,等待中断请求。
三、 实验仪器设备及装置
(1)硬件:电脑一台;
(2)仿真软件:Proteus;
(3)编程软件Keil uVision4。
其中,仿真软件ISIS元件清单如表1所示。
表1 仿真软件ISIS元件清单
元件类别
Microprocessor ICs
Optoelectronics
Switches&Relays
Resistors
Optoelectronics
电路符号
U1
D1
K1~K2
R1~R2/100
LED
元件名称
80C51
LED-GREEN
BUTTON
RES
7SEG-COM-CAT-GRN
四、实验内容和步骤
(一)实验内容:
(1)熟悉Keil uVision4的软件调试方法;
(2)完成实验的C51语言编程;
(3)练习Keil uVision4与ISIS的联机仿真方法。
(二)实验步骤:
(1)提前阅读与实验相关的阅读材料;
(2)参考实验电路原理图和元件清单在ISIS中完成电路原理图的绘制;
(3)在Keil uVision4中编写和编译C51程序,生成可执行文件;
(4)在Keil uVision4中启动ISIS的仿真运行,并进行联机调试;
(5)观察仿真结果,检验与电路的正确性。
五、实验数据记录与处理或实验现象与分析
1、实验程序
#include
#define uchar unsigned char
sbit led=P0^4;
uchar led_mod[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39,
0x5e, 0x79, 0x71};
uchar i=0;
void init()
{
}
void int0() interrupt 0{
}
void int1() interrupt 2
{
}
void main()
{
{
P2=led_mod[i];}}
init();
while(1)
led=~led;
IT0=1;
IT1=1;
EA=1;
EX0=1;
EX1=1; //开总中断、中断0、中断1
//中断0边沿触发
//中断1边沿触发
if(++i>=16) i=0; //先加再用
2.实验现象
图2为仿真运行效果图。
+5V
C3
30pF
X1
CRYSTAL
R3
10k
+5V
C2
19
30pF
18
U1
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
D1
LED-GREEN
R2
100
XTAL2
+5V
9
RST
29
30
31
C1
22uF
1
2
3
4
5
6
7
8
PSEN
ALE
EA
R1
1k
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
K1
K2
图2 仿真图
按下K1,D1灯亮,如图3(a)所示:
+5V
C3
30pF
X1
CRYSTAL
R3
10k
+5V
C2
19
30pF
18
U1
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
D1
LED-GREEN
R2
100
XTAL2
+5V
9
RST
29
30
31
C1
22uF
1
2
3
4
5
6
7
8
PSEN
ALE
EA
R1
1k
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
K1
K2
图3(a) 二极管状态图
再按下K1,D1灯灭,如图3(b)所示:
+5V
C3
30pF
X1
CRYSTAL
R3
10k
+5V
C2
19
30pF
18
U1
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
D1
LED-GREEN
R2
100
XTAL2
+5V
9
RST
29
30
31
C1
22uF
1
2
3
4
5
6
7
8
PSEN
ALE
EA
R1
1k
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
K1
K2
图3(b) 二极管状态图
继续按下K1则D1将“亮→灭→亮→灭→亮→灭”如此循环。
当按K2时,每按一次数码显示管上的字符变化一次:持续按K2则数码显示
管依次显示1-F:如图4所示。
图4 LED状态图
实验结果分析:
① 持续按下K1则D1将“亮→灭→亮→灭→…→亮→灭”如此循环表明实现了
K1对应于D1状态反转这个功能;
②持续按下持续按K2则数码显示管依次显示1-F,实现了K2对应于0-F间的数
码管加一计数显示。
六、问题讨论
uchar led_mod[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};这些就代表0-F,为什么呢?
答:数码分为7段式(7个发光二极管)和8段式(8个发光二极管,见图6)
的,而二极管的亮灭对应0x3F的一位(1或0),为0时灭,1为亮;比如 0x3f 就
是是 0b00111111 那么它对应的数码管的最外面一圈的二极管是1,是亮的,中间
的一横和小数点都输0,是灭的,所以显示出来的 就是0。
图5二极管示意图
实验项目名称: 实验三 双机通信及PCB设计
实验时间:第 周 星期 第 节, 年 月 日
学生姓名:
指导老师:
班级学号:
实验成绩:
一、 实验目的及要求
1. 掌握串行口通信工作原理;
2. 熟悉单片机电路的PCB设计过程。
二、 实验原理
实验的电路原理图如图1所示,图中1#机的发送线与2#机的接收线相连,
1#机的接收线与2#机的发送线相连,共阴极BCD数码管BCD_LED1和
BCD_LED2分别接各机的P2 口,两机共地(默认),晶振为11.0592MHz,波特
率为2400bps,串口方式1。软件编程原理如下:
1#机采用查寻法编程,根据RI和TI标志的软件查询结果完成收发过程;2#
机采用中断法编程,根据RI和TI的中断请求,在中断函数中完成收发过程。
PCB设计原理:在1#机的电路原理图中添加接线端,并定义电源端口,图
中BCD数码管需要自定义PCB封装。
J1
CONN-H4
J2
CONN-H4
J3
12341234
B
3
B
2
B
1
B
0
A
3
A
2
A
1
A
0
VCC
GND
1
2
CONN-H2
A
3
A
2
A
1
A
0
B
3
B
2
B
1
B
0
C1
1nF
C4
U1
X1
19
XTAL1
CRYSTAL
18
XTAL2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
XRD
A0
A1
A2
A3
B0
B1
B2
B3
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
U2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
80C51
XTAL1
19
1nF
X2
CRYSTAL
C2
GND
VCC
1nF
C5
1nF
VCC
XTAL2
18
GND
9
RSTRST
9
C3
22uF
29
30
31
PSEN
ALE
EA
PSEN
ALE
EA
29
30
31
C6
22uF
R1
1k
1
2
3
4
5
6
7
8
TXD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
TXDXRD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1
2
3
4
5
6
7
8
R2
1k
GND
GND
图1实验原理图
三、 实验仪器设备及装置
(1)硬件:电脑一台;
(2)仿真软件:Proteus ARES;
(3)编程软件Keil uVision4。
其中,仿真软件ISIS元件清单如表1所示。
表1 仿真软件ISIS元件清单
Category
Microprocessor TCs
Miscellaneous
Capacitors
Capacitors
Capacitors
Resistors
Optoelectronics
Connectors
Connectors
Reference
U1、U2
X1、X2
C1、C2/1nF
C4、C5/1nF
C3、C6/22μF
R1、R2/1K
LED
J1、J4
J2
Value
80C51
CRYSTAL
CAP
CAP
CAP-ELEC
RES
7SEG-BCD-GRN
CONN-H2
CONN-H4
四、 实验内容和步骤
(一)实验内容:
(1)掌握串行通信原理和中断法通信软件编程;
(2)完成实验的C51编程;
(3)学习使用ARES软件,完成实验电路(见图1)PCB设计。
(二)实验步骤
(1)提前阅读与实验相关的阅读材料;
(2)参考图1及表1,在ISIS中完成电路原理图的绘制;
(3)采用Keil μVision4进行C51串行通信编程和调试;
(4)对电路进行PCB设计,生成Gerber输出文件。
五、 实验数据记录与处理或实验现象与分析
1、 实验程序
//实例 实现两个单片机点对点的数据通信
//*甲机程序*//
#include
#define uchar unsigned char
void delay (unsigned int time){
unsigned int j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void main(void){
uchar counter=0;
P2=0x3f;
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
PCON=0x00;
TR1=1;
SCON=0x50;
while(1){
SBUF=counter;
while(TI==0);
TI=0;
while(RI==0);
RI=0;
if(SBUF==counter){
P2=counter;
if(++counter>15) counter=0;
delay(500);
}
}
}
//*乙机程序*//
#include
#define uchar unsigned char
void main(void){
uchar receiv;
P2=0x3f;
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
PCON=0x00;
TR1=1;
SCON=0x50;
while(1){
while(RI==1){
RI=0;
receiv=SBUF;
SBUF=receiv;
while(TI==0);
TI=0;
P2=receiv;
}
}
}
2、实验现象
下面的图2.1和图2.2仿真的效果图,发送值和接收值分别显示在双方LED
数码管上。双机通信双方LED数码管上面显示相同的数字,从0—F递加,保持
双方一致。
J1
CONN-H4
J2
CONN-H4
J3
12341234
B
3
B
2
B
1
B
0
A
3
A
2
A
1
A
0
VCC
GND
1
2
CONN-H2
A
3
A
2
A
1
A
0
B
3
B
2
B
1
B
0
C1
1nF
C4
U1
X1
19
XTAL1
CRYSTAL
18
XTAL2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
XRD
A0
A1
A2
A3
B0
B1
B2
B3
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
U2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
80C51
XTAL1
19
1nF
X2
CRYSTAL
C2
GND
VCC
1nF
C5
1nF
VCC
XTAL2
18
GND
9
RSTRST
9
C3
22uF
29
30
31
PSEN
ALE
EA
PSEN
ALE
EA
29
30
31
C6
22uF
R1
1k
1
2
3
4
5
6
7
8
TXD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
TXDXRD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1
2
3
4
5
6
7
8
R2
1k
GND
GND
图2.1 仿真图
J1
CONN-H4
J2
CONN-H4
J3
12341234
B
3
B
2
B
1
B
0
A
3
A
2
A
1
A
0
VCC
GND
1
2
CONN-H2
A
3
A
2
A
1
A
0
B
3
B
2
B
1
B
0
C1
1nF
C4
U1
X1
19
XTAL1
CRYSTAL
18
XTAL2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
XRD
A0
A1
A2
A3
B0
B1
B2
B3
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
U2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
80C51
XTAL1
19
1nF
X2
CRYSTAL
C2
GND
VCC
1nF
C5
1nF
VCC
XTAL2
18
GND
9
RSTRST
9
C3
22uF
29
30
31
PSEN
ALE
EA
PSEN
ALE
EA
29
30
31
C6
22uF
R1
1k
1
2
3
4
5
6
7
8
TXD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
TXDXRD
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1
2
3
4
5
6
7
8
R2
1k
GND
GND
图2.2 仿真图
3.
PCB设计图
图3 PCB设计图
图4 3D仿真电路图
六、 问题讨论
实验程序中PCON=0x00是什么意思?
答:PCON是电源控制寄存器,是为CHMOS型单片机(如80C51)的电源
控制而设置的专用寄存器。在HMOS单片机中,该寄存器中除最高位之外,其
他位都没有定义。最高位(SMOD)是串行口波特率的倍增位,当SMOD=1时,
串行口波特率加倍。系统复位时,SMOD=0。
实验项目名称: 实验四 直流数字电压表设计
实验时间:第 周 星期 第 节, 年 月 日
学生姓名:
指导老师:
班级学号:
实验成绩:
一、实验目的及要求
掌握LED动态显示和A/D转换接口设计方法。
二、实验原理
实验电路原理图如图1所示,图中4联共阴极数码管以I/O口方式连接单片
机,其中段码A—G和DP接P0.0—P0.7口(需上拉电阻),位码1—4(4#为最
低位数码管,依此类推)接P2.0—P2.3口;ADC0808采用I/O口方式接线,其
中被测模拟量由0#通道接入,位地址引脚ADDA、ADDB、ADDC均接地,START
和ALE并联接P2.51,EOC接P2.6,OE接P2.7,CLOCK接P2.4。
C1
30pF
C2
30pF
X1
19
CRYSTAL
U1
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
18
XTAL2
C3
9
10uF
R9
10k
29
30
31
RST
R1
R2
R3
R4
R5
R6
R7
R8
1k
1k
1k
1k
1k
1k
1k
1k
PSEN
ALE
EA
80C51
4.7k
图1 实验原理图
在编程软件配合下,要求实现如下功能:解调电位器RV1可使其输出电压
在0—5V之间变化。经A/D转换后,数码管以十进制数形式动态显示电位器的
调节电压。
DO
D1
D2
D3
D4
D5
D6
D7
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RV1
26
27
28
1
2
3
4
5
25
24
23
22
12
16
U3
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
ADD A
ADD B
ADD C
ALE
VREF(+)
VREF(-)
ADC0808
CLOCK
START
EOC
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
10
6
7
21
20
19
18
8
15
14
17
D7
D6
D5
D4
D3
D2
D1
D0
U3(CLOCK)
OE
9
动态显示编程原理:将待显示数据拆解为3位十进制数,并分时地将其在相
应数码管上显示。一次完整的输出过程为:最低位数据送P0口→P2.3清零→软
件延时→P2.3置1→中间位数据送P0口→P2.2清零→软件延时→P2.2置1→最
高位数据送P0口→P2.1清零→软件延时→P2.1置1,如此无限循环。
A/D转换编程原理:启动信号与输出使能信号(START、ALE、OE)均由
软件方式的正脉冲提供;结束信号(EOC)由P2.6的高电平提供。A/D转换时
钟信号由T0定时方式2中断提供(设系统晶振频率为12MHz)。一次完整的A/D
转换过程为:发出启动信号→查询EOC标志→发出OE置1信号→读取A/D结
果→发出OE清零结果。如此无限循环
三、实验仪器设备及装置
(1)硬件:电脑一台;
(2)仿真软件:Proteus;
(3)编程软件Keil uVision4。
其中,仿真软件ISIS元件清单如表1所示。
表1 仿真软件ISIS元件清单
Category
Microprocessor ICs
Data Converter
Miscellaneous
Capacitors
Capacitors
Resistors
Resistors
Resistors
Optoelectronics
Reference
U1
U3
X1
C1 C2
C3
R1-R8
R9
RV1
Value
80C51
ADC0808
CRYSTAL
CAP
CAP-ELEC
PULLUP
RES
POT-HG
7SEG-MPX4-CC-BLUE
四、实验内容和步骤
(一)实验内容
(1)数码管动态显示编程;
(2)A/D转换查询法编程;
(3)考察延时量对动态显示效果的影响。
(二)实验步骤
(1)提前阅读与实验相关的阅读材料
(2)参考图1及表1,在ISIS中完成电路原理图的绘制;
(3)采用Keil uVision4进行C51动态显示和A/D转换的编程及调试。
五、实验数据记录与处理或实验现象与分析
1、实验程序
#include
#include
unsigned int tmp;
sbit START=P2^5;
sbit ad_busy=P2^6;
sbit OE=P2^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
char led_mod[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(unsigned int time)
{
unsigned int j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void show ()
{
unsigned int i,j;
P2_0=0;
j=tmp/1000;
i=j%1000;
P0=led_mod[i];
delay(10);
P2_0=1;
P2_1=0;
j=tmp/100;
i=j%100;
P0=led_mod[i];
delay(10);
P2_1=1;
P2_2=0;
j=tmp/10;
i=j%10;
P0=led_mod[i];
delay(10);
P2_2=1;
P2_3=0;
i=tmp%10;
P0=led_mod[i];
delay(10);
P2_3=1;
}
void main()
{
while(1){
START=0;
START=1;
START=0;
while(ad_busy==1);
OE=1;
tmp=P1;
OE=0;
show();}
}
2、实验现象
C1
C2
X1
U1
C3
R9
R1
R2
R3
R4
R5
R6
R7
R8
图2 实验效果图
C1
C2
X1
U1
C3
R9
R1
R2
R3
R4
R5
R6
R7
R8
图3 运行效果图
00
RV1
RV1U3
U3
实验结果分析:本实验是使用A/D转换器将模拟信号(电位器输出电压)
转换为数字信号,A/D转换器与80C51接在一起,转换结果通过80C51以十进
制形式动态显示在四个共阴极数码管上,通过改变模拟信号大小可以显示
0—255之间的任意数据。启动信号与输出使能信号(START、ALE、OE)均由
软件方式的正脉冲提供;结束信号(EOC)由P2.6的高电平提供。A/D转换时
钟信号由T0定时方式2中断提供(设系统晶振频率为12MHz)。
六、问题讨论
段码A—G和DP接P0.0—P0.7口为什么需上拉电阻(如图4)?
R1
R2
R3
R4
R5
R6
R7
R8
1k
1k
1k
1k
1k
1k
1k
1k
图6 问题分析图
答:上拉电阻的作用就是将不确定的信号通过一个电阻钳位在高电平,电阻
同时起限流作用。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714741130a2506484.html
评论列表(0条)