欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C51单片机编程教程:轻松打造炫酷呼吸灯和流水灯效果

最编程 2024-02-02 17:34:44
...

1.用C51单片机实现花样流水灯,代码如下:

#include <reg52.h>
#define LED_A P1//led灯所用的接口,是哪个口就写P几
void delayms()
{
unsigned char x = 0;
unsigned char i;
unsigned char y = 0;
while(y < 0.001) //定义led灯的切换的延时时间,越小越快。
{   //(y < 0.001);(x<100);(i<100)都可以修改
x = 0;
while(x<100)
{
i = 0;
while(i<100)
{
i++;
}
x++;
}
y++;
}
}
#define LED_NUM 8//定义led灯的数量,可快速实现不同用途的修改;
void main()
{
unsigned char k;
unsigned char j;
unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};//led灯亮灭的十六进制数组;
unsigned char LED_ALL_2[] = {0XFC,0XF3,0XCF,0X3F};
while(1)
{
for(k=0;k<3;k++)//第一个for实现奇偶灯交叉闪烁三次,想闪烁几次就修改(K<3)中的数值;
{
LED_A = 0xAA;
delayms();
LED_A = 0x55;
delayms();
}
for(k=3;k>0;k--)//实现一个流水灯左右三次(从左到右再从右到左算一次);
{
for(j=0;j<LED_NUM;j++)
{
LED_A = LED_ALL[j];
delayms();
}
for(j=6;j>0;j--)
{
LED_A = LED_ALL[j];
delayms();
}
}
for(k=0;k<3;k++)//实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上;
{
LED_A = 0xf0;
delayms();
LED_A = 0xf;
delayms();
}
for(k=3;k>0;k--)//实现两个灯依次流水3次;
{
for(j=0;j<4;j++)
{
LED_A = LED_ALL_2[j];
delayms();
}
for(j=2;j>0;j--)
{
LED_A = LED_ALL_2[j];
delayms();
}
}
}
} 

2.实现第一个灯呼吸,由暗变亮,再由亮变暗,程序如下;

 1 #include <reg52.h>
 2 sbit LED1 = P3^0;
 3 void delay(unsigned int a)//定义一个延时函数
 4 {
 5 while(--a);
 6 }
 7 void main()
 8 {
 9 unsigned int t,circle=800;//定义变量,circle=800为led灯呼吸的间隔长短,数值越小,间隔越短。
10 while(1)
11 {
12 LED1 = 1;
13 for(t=1;t<circle;t++)
14 {
15 LED1 = 0;
16 delay(t);
17 LED1 = 1;
18 delay(circle-t);
19 }
20 LED1 = 0;
21 for(t=circle-1;t>0;t--)
22 {
23 LED1 = 0;
24 delay(t);
25 LED1 = 1;
26 delay(circle-t);
27 }
28 }
29 }