当前位置:
文档之家› 《单片机Proteus仿真C51参考程序实验》
《单片机Proteus仿真C51参考程序实验》
班级:
学号:
姓名
实验二 定时计数器中断实验
一、实验目的
利用单片机的定时计数器和外部中断,实现 LED 流水灯轮流发光,流水时间以定时器 的方式来控制,利用计数器进行计数改变流水灯的状态,输入外部脉冲产生外部中断改变流 水灯的状态。
二、实验原理
1.在 Proteus 环境下建立如下仿真原理图,并保存为文件;
uchar t;while(x--)for(t=0;t<120;t++); }
班级:
学号:
姓名
void main() {
uchar i,j=0x01; while(1) {
P2=j; j=_crol_(j,1); delay_ms(100); } } 将以上程序补充完整,流水时间间隔为 100ms。 3.将.HEX 文件导入仿真图,运行并观察结果;
R11uF
200
29
R2 30
1k 31
PSEN ALE EA
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
2.在 Keil 环境下建立源程序并保存为.C 文件,生成.HEX 文件;
参考程序如下:
#include<reg51.h>
班级:
学号:
姓名
#include<intrins.h> #define uchar unsigned char #define uint unsigned int void delay_ms(uint x) {
1.在 Proteus 环境下建立如下仿真原理图,并保存为文件;
C1
30pF
C2
30pF
X1
19
CRYSTAL
18
U1
XTAL1
XTAL2
C3
9 RST
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
三、主要实验设备
实验室电脑及配套软件。
四、实验内容
1.编写出对应的 C51 程序; 2.改变流水灯的时间间隔; 3.改变流水灯方向。
五、实验总结
进行软硬件仿真时,观察到 8 支 LED 发光二极管流水发光。
六、预习及思考
1.如何让改变流水方向? 2.若将 R3 至 R10 上拉电阻省略,8 支 LED 还能正常发光吗? 3.如果将 LED 接到 P0 口与接到 P2 口硬件设计时应注意什么问题?
班级:
学号:
姓名
} 将以上程序补充完整,流水时间间隔,闪烁时间间隔为 250ms。 3.将.HEX 文件导入仿真图,运行并观察结果;
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
2.在 Keil 环境下建立源程序并保存为.C 文件,生成.HEX 文件;
参考程序如下:
#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int
void delay_ms(uint x) {
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
R11
1k
原理图中常用库元件的名称:
无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51
晶体振荡器:CRYSTAL电阻:RES
按键:BUTTON
发光二极管:红色 LED-RED 绿色 LED-GREEN 蓝色 LED-BLUE 黄色 LED-YELLOW
班级:
学号:
姓名
实验一 I/O口的实验
一、实验目的
1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4.实现Proteus与Keil联调软件仿真。
二、实验原理
uchar t;while(x--)for(t=0;t<120;t++); } void main() {
uchar i,j=0x80; IT0=1; EX0=1; EA=1; while(1) {
P1=j; j=_cror_(j,1) delay_ms(250); } } void EX0_INT()interrupt 0 { uchar i; for(i=0;i<5;i++) { P1=0xff; delay_ms(250); P1=0x00; delay_ms(250); }
C1
30pF
C2 30pF C3 R1 1uF
200
U1 X1 19 XTAL1
18 XTAL2
9 RST
R2 29
1k 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
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
AT89C51 PROGRAM=..\KEIL\shiyan2.hex
原理图中常用库元件的名称:
R3 R4 R5 R6 R7 R8 R9 R10ຫໍສະໝຸດ 1k1k1k
1k
1k
1k
1k
1k
D1 D2 D3 D4 D5 D6 D7 D8
无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51
晶体振荡器:CRYSTAL 电阻:RES
按键:BUTTON
发光二极管:红色 LED-RED 绿色 LED-GREEN 蓝色 LED-BLUE 黄色 LED-YELLOW