写一个普通流水灯程序,8盏LED安装在P2端口 2、在P3.0接按钮,控制P2的流水灯,每按一次点亮一盏Led灯,即01234567循环
时间: 2023-12-04 18:02:22 浏览: 100
好的,我可以为您提供一个基于51单片机的普通流水灯程序,代码如下:
```c
#include <reg52.h> //51单片机头文件
sbit LED = P2; //LED灯接口
sbit KEY = P3^0; //按键接口
void delay_ms(unsigned int ms) //延时函数
{
unsigned int i, j;
for(i=0;i<ms;i++)
for(j=0;j<114;j++);
}
void main()
{
unsigned char i = 0; //定义计数器
LED = 0xff; //初始化LED灯
while(1)
{
if(KEY == 0) //按键按下
{
delay_ms(20); //消抖
if(KEY == 0) //再次判断按键是否按下
{
i++; //计数器加1
if(i == 8) i = 0; //计数器复位
LED = 0xff; //先将所有LED灯关闭
LED >>= i; //将LED灯右移i位
LED = ~LED; //取反
}
while(!KEY); //等待按键松开
}
}
}
```
该程序的实现原理是通过一个计数器来控制LED灯的亮灭,当按下按键后,计数器加1,然后将LED灯右移相应的位数,最后通过取反的方式来实现点亮对应的LED灯。程序中还加入了消抖处理和按键松开等待,使得按键操作更加稳定可靠。
阅读全文