32爱心流水灯的程序代码(心形流水灯程序汇编语言32个灯)
用89C52单片机控制32个LED流水灯的C语言程序,
/***32灯流水——火柴天堂作品-20130520***/
/***52单片机,12MHz晶振,P0-P3 接32颗LED,低电平驱动***/
#include"REG52.h"//包含52头文件
#define TRUE 1//定义布尔量'1':真
#define FALSE 0//定义布尔量'0':假
#define uchar unsigned char//定义 无符号字符型数据 简称
#define uint unsigned int//定义 无符号整型数据 简称
#define th0 0xb1
#define tl0 0xe0//20ms at 12MHz Fosc in Model 1
#define LED_Port1 P0
#define LED_Port2 P1
#define LED_Port3 P2
#define LED_Port4 P3
#define LED_AllOff LED_Port1=LED_Port2=LED_Port3=LED_Port4=0xff
#define LED_AllOn LED_Port1=LED_Port2=LED_Port3=LED_Port4=0
#define LED_Status 43//1步全亮+32步单亮+10步闪烁
#define LED_Marquee 32
bit T20msFlag=0;
void Timer0() interrupt 1
{
TL0=tl0;
TH0=th0;
T20msFlag=TRUE;
}
void TimerInit()
{
TMOD=0x01;
TH0=th0;
TL0=tl0;
TR0=1;
ET0=1;
EA=1;
}
void LED_Out()
{
static uchar led_status=0;
if(T20msFlag)
{
T20msFlag=FALSE;
led_status=++led_status%LED_Status;
}
if(led_status led_status=LED_Marquee)
{
LED_AllOn;
switch((led_status-1)3)
{
case 0:LED_Port1=1((led_status-1)%8);break;
case 1:LED_Port2=1((led_status-1)%8);break;
case 2:LED_Port3=1((led_status-1)%8);break;
case 3:LED_Port4=1((led_status-1)%8);break;
default:led_status=0;break;
}
}
else
{
if(!led_status led_status%2) LED_AllOn;
else LED_AllOff;
}
}
void main()
{
TimerInit();
while(1)
{
LED_Out();
}
}
stm32 流水灯代码问题
初始化就不说了,main函数中的While是一个死循环,LED0,1,2,3低电平有效,
LED0=0;
LED1=1;
LED2=1;
LED3=1;
这几行表示点亮LED0.而熄灭LED1,2,3,
所以进入while循环后,首先点亮LED0,然后系统等待0.5s,然后再依次点亮LED1,LED2,LED3,间隔都是0.5s,依次点亮以后进入下一次while循环。
单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
单片机流水灯C语言程序的源代码如下:
#include //51系列单片机定义文件
#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint); //声明延时函数
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i8;i++) //8个流水灯逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp=1;
}
temp=0x80;
for(i=0;i8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp=1;
}
temp=0xFE;
for(i=0;i8;i++) //8个流水灯依次全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp=1;
}
temp=0x7F;
for(i=0;i8;i++) //8个流水灯依次反向全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp=1;
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt255;bt++);
}
扩展资料
51单片机流水灯的源代码如下
#includereg51.h
#includeintrins.h
void?delay(int?a)
{
int?i;
while(a--)for(i=0;i110;i++);
}
main()
{
int?i;
while(1)
{
P0=0xfe;
for(i=0;i8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}