单片机实验报告流水灯代码(51单片机流水灯实验报告总结)

实验说明

流水灯是最简单的单片机实验,其原理是通过控制单片机的输出口依次点亮LED灯,形成一个类似于“流水”的效果。本次单片机实验中,我们使用Keil C软件和STC89C52单片机来实现流水灯的效果。

代码实现

首先,我们需要定义单片机的引脚和变量。在本次实验中,我们使用了P1口作为输出口,其中P1.0~P1.7分别与8个LED灯相连。由于需要依次点亮LED灯,我们还需要定义控制灯的计数器变量。代码如下:

单片机实验报告流水灯代码(51单片机流水灯实验报告总结)

```C
#include //头文件

sbit LED1 = P1^0; //定义LED灯引脚
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;

unsigned char cnt = 0; //计数器
```

然后,我们需要编写主函数和流水灯控制函数。主函数中,我们需要调用定时器中断函数,以便依次点亮每个LED灯。流水灯控制函数中,我们需要不停地循环,每隔一段时间点亮下一个LED灯。代码如下:

```C
void main()
{
TMOD = 0x01; //定时器T0工作在模式1
TH0 = 0x3C; //装初值
TL0 = 0xAF;
TR0 = 1; //启动定时器
ET0 = 1; //打开定时器中断
EA = 1; //打开总中断

while (1); //循环
}

void led_control() interrupt 1 //定时器中断函数
{
TH0 = 0x3C; //装初值
TL0 = 0xAF;

switch (cnt) //流水灯控制
{
case 0: LED1 = 1; LED2 = 0; break;
case 1: LED2 = 1; LED1 = LED3 = 0; break;
case 2: LED3 = 1; LED2 = LED4 = 0; break;
case 3: LED4 = 1; LED3 = LED5 = 0; break;
case 4: LED5 = 1; LED4 = LED6 = 0; break;
case 5: LED6 = 1; LED5 = LED7 = 0; break;
case 6: LED7 = 1; LED6 = LED8 = 0; break;
case 7: LED8 = 1; LED7 = 0; break;
default: break;
}

cnt++; //计数器加1
cnt %= 8; //计数器模8
}
```

实验结论

本次单片机实验成功实现了流水灯的效果,通过控制单片机输出引脚的状态,依次点亮每个LED灯,并形成“流水”的效果。通过实验,我们也学习了Keil C软件和STC89C52单片机的使用,加深了我们对单片机原理的理解。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcuwthh.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月25日 下午10:27
下一篇 2023年4月25日 下午10:27

猜你喜欢