1.用C51單片機實現花樣流水燈,代碼以下:數組
#include <reg52.h>
#define LED_All P1 //led燈所用的接口,單片機接口不一樣,led燈不一樣
void delayms()
{
unsigned char x = 0;
unsigned char i;
unsigned char y = 0;
while(y < 0.001) //定義led燈的切換的延時時間,越小越快
{ //i,x,y都可以修改
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_ALL1[] = {0XFC,0XF3,0XCF,0X3F};
while(1)
{
for(k=0;k<3;k++) //第一個for實現奇偶燈交叉閃爍三次,k的值決定了燈的閃爍次數
{
LED_All = 0xAA;
delayms();
LED_All = 0x55;
delayms();
}
for(k=3;k>0;k--) //實現一個流水燈左右三次(左右來回爲一次)
{
for(j=0;j<LED_NUM;j++)
{
LED_All = LED_ALL[j];
delayms();
}
for(j=6;j>0;j--)
{
LED_All = LED_ALL[j];
delayms();
}
}
for(k=0;k<3;k++) //實現前四個燈亮後四個燈滅,交叉閃爍3次,修改次數同上
{
LED_All = 0xf0;
delayms();
LED_All = 0xf;
delayms();
}
for(k=3;k>0;k--) //實現兩個燈依次流水3次
{
for(j=0;j<4;j++)
{
LED_All = LED_ALL1[j];
delayms();
}
for(j=2;j>0;j--)
{
LED_All = LED_ALL1[j];
delayms();
}
}
}
}函數
2.實現第一個燈爲燈呼吸,程序以下;接口
#include <reg52.h>
sbit LED1 = P3^0;
void delay(unsigned int a) //定義一個延時函數
{
while(--a);
}
void main()
{
unsigned int t,T=800; //定義變量,T=800爲led燈呼吸的呼吸頻率,數值越小,頻率越小
while(1)
{
LED1 = 1;
for(t=1;t<T;t++)
{
LED1 = 0;
delay(t);
LED1 = 1;
delay(T-t);
}
LED1 = 0;
for(t=T-1;t>0;t--)
{
LED1 = 0;
delay(t);
LED1 = 1;
delay(T-t);
}
}
}it