基于单片机仿真软件 Proteus 的流水灯实验报告
一、实验目的:
1. 熟练掌握单片机仿真软件 Proteus 使用方法和注意事项。
2. 了解简单单片机应用系统的设计方法。
3. 帮助学生养成良好实验习惯。
二、实验内容:
本实验内容是使用单片机仿真软件 Proteus 实现 8 个发光 LED 的流水灯现象,实现两个流水灯情况:
1. 先奇数灯亮,再偶数灯亮。
2. 实现流水灯从两边向中间亮,再从中间到两边亮。
三、实验说明:
依照实验的硬件电路原理,在单片机仿真软件 Proteus 上进行硬件电路的模拟,然后进行实验。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,人眼就可以看到流水的现象。
四、实验环境:
硬件:PC 机;
软件:单片机仿真软件 Proteus。
五、实验原理图:
实验原理图是单片机仿真软件 Proteus 的流水灯实验电路图,展示了 8 个 LED 的连接方式和单片机的控制逻辑。
六、实验参考程序:
实验参考程序是使用 C 语言编写的,使用单片机仿真软件 Proteus 进行编译和模拟。程序的主要内容是控制 8 个 LED 的流水灯现象,包括奇数灯亮、偶数灯亮、流水灯从两边向中间亮和从中间到两边亮等。
#include
#include
void delay_ms(int n) // 延时 n 毫秒
{
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < 110; j++);
}
void main()
{
int i, num;
unsigned char p1;
unsigned char p0, p;
while (1)
{
for (i = 0; i < 3; i++) // 间隔 500ms 先奇数亮再偶数亮,循环三次
{
P1 = 0xaa;
P0 = p1;
delay_ms(500);
P1 = 0x55;
P0 = p1;
delay_ms(500);
}
p1 = 0xfe;
num = 3;
while (num-- > 0) // 一个灯上下循环三次
{
for (i = 0; i < 8; i++)
{
P0 = p1;
delay_ms(100);
p1 = _cror_(p1, 1);
}
}
// 两个分别从两边往中间流动三次
p1 = 0xfe;
p0 = 0x7f;
num = 3;
while (num-- > 0)
{
for (i = 0; i < 4; i++)
{
p1 = _crol_(p1, 1);
p0 = _cror_(p0, 1);
p = p1 & p0;
delay_ms(100);
P1 = p;
P0 = p;
}
}
// 再从中间往两边流动三次
p1 = 0xef;
p0 = 0xf7;
num = 3;
while (num-- > 0)
{
for (i = 0; i < 4; i++)
{
p1 = _crol_(p1, 1);
p0 = _cror_(p0, 1);
p = p1 & p0;
delay_ms(100);
P1 = p;
P0 = p;
}
}
// 8 个全部闪烁 3 次
num = 3;
while (num-- > 0)
{
p1 = 0;
delay_ms(500);
p1 = 1;
delay_ms(500);
}
break;
}
}
七、实验结论:
通过本实验,我们掌握了单片机仿真软件 Proteus 的使用方法和注意事项,并了解了简单单片机应用系统的设计方法。同时,我们也学习了如何使用 C 语言编写程序控制流水灯现象。
2024-06-16 13:24:16
1.46MB
1