当前位置:首页 > 实验二 流水灯实验
实验二 流水灯实验
一、实验目的
1、进一步熟悉Keil软件,了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。
2、掌握C51单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
二、实验设备
1、实验仪器:HC600-51单片机开发板、计算机。 2、实验软件:Keil4开发软件、PZISP烧录软件。
三、实验原理 (1)软件程序分析
延时实现8个LED流水灯程序及分析(注释部分)具体如下:
#include
void Delay10ms(unsigned int c); //10ms延时函数声明 main() //主函数定义 {
unsigned char LED;
LED = 0xfe; //0xfe = 1111 1110
while (1)
{
P0 = LED; //熄灭第一盏LED Delay10ms(50); //延时500ms
LED = LED << 1; //循环左移1位,熄灭下一个LED if (P0 == 0x00) //当LED全灭的时候,重新赋值
}
}
{
LED = 0xfe; // 0xfe = 1111 1110
}
void Delay10ms(unsigned int c) //10ms延时函数定义 {
unsigned char a, b; }
(2)硬件连线
实验硬件实物连线如下图所示(注意排线插入方向一致):
for (;c>0;c--) {
for (b=38;b>0;b--) {
for (a=130;a>0;a--);
}
}
如下图为HC600-51实验板动态数码管模块的原理图,当P0口输出高电平时,LED点亮。
四、实验过程 (1)具体操作过程
1、程序中使用P0口作为流水灯实验的I/O口,因此将单片机的8位P0口用排线与8盏LED的排针进行相连,连接时需注意P0口与LED的一一对应关系,否则实验现象与预期流水灯流动方向相反。
2、新建工程并输入、编译和下载程序,观察实验现象是否正确。
(2)实验结果
程序下载完成后,可观察到LED灯D11(左)至D17(右)亮,0.5s后LED从右至左依次熄灭,直至全部熄灭,随后又恢复D11~D17点亮的初始状态,如此反复。
五、问题和讨论
问题1:实验现象出现第一盏LED熄灭0.5s之后又重新点亮?
解决1:P1口排针和8盏LED的排针排线接反,造成流水灯流水方向与试验程序中的相反。
六、实验心得
通过简单的一个移位操作即可实现LED灯流水般地循环点亮,这让我体会到了单片机控制功能的强大之处,通过它我们也可以实现更多那些生活中常见而又充满奇幻色彩的自动控制功能,这就是单片机的魅力所在。
共分享92篇相关文档