51小程序--流水灯+花样灯
#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define PORT P1
void delay(unsigned char time)
{
unsigned int j = 100000;
for(; time > 0; time--)
for(;j > 0; j--);
}
void main(void)
{
PORT = 0xff;
temp = 0xff;
while(1)
{
delay(200000);
temp = temp << 1;
if(PORT == 0)
{
PORT = 0xff;
}
}
}
//该程序为灯一个一个亮
void main(void)
{
u8 w,i;
while(1)
{
for(i = 0, w = 0x01; i < 8; i++)
{
PORT = ~w;
w <<= 1;
delay(2000);
}
}
}
//只有一个灯进行流水
//花样流水灯
/*-----------------------------------------------
名称:花样流水灯
编写:Jam
日期:2018.7.21
修改:无
功能:花样灯
第一遍:LED1~LED8一个灯流水一遍
第二遍:LED8~LED1一个灯流水一遍
第三遍:LED1~LED8依次点亮所有灯
第四遍:LED8~LED1依次熄灭所有灯
第五遍:通过查表将预存的花式灯点亮
------------------------------------------------*/
#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define PORT P1
u8 F_led[] = {0x7e,0x3c,0x18,0x00,
0x55,0xaa,0xdb,0x99};
void Delay(u16 t)
{
while(--t);
}
void main(void)
{
u8 i;
u8 temp;
PORT = 0xff;
while(1)
{
//从第一个灯开始亮
for(i = 0, temp = 0x01; i < 8; i++)
{
PORT = ~temp;
temp <<= 1;
Delay(20000);
}
for(i = 0, temp = 0x80; i < 8; i++)
{
PORT = ~temp;
temp >>= 1;
Delay(20000);
}
for(i = 0; i < 8; i++)
{
PORT <<= 1;
Delay(20000);
}
PORT = 0x80;
for(i = 0,temp = 0x80; i < 8; i++)
{
PORT |=(temp >>= 1);
Delay(20000);
}
for(i= 0; i < 8; i++)
{
PORT = F_led[i];
Delay(20000);
}
}
}