#include<>#define uchar unsigned charuchar led1,led2,led3,led4;void delay(uchar a){uchar i,j;for(i=0;i>24;led2=(led<>16;led3=(led<>8;led4=led<
这个是比较简单的了。都很容易,不过就写起来有一定代码量,有确有需要帮你写出源码,请追问。
这个相对来说是比较简单的,可以考虑用数字芯片,要是单片机IO口足够的话,可以不用数字芯片。我这里有一些资料,需要可以来找我,随时都在线,等待回复。
#include<>#define uchar unsigned charuchar led1,led2,led3,led4;void delay(uchar a){ uchar i,j; for(i=0;i>24; led2=(led<>16; led3=(led<>8; led4=led<
/***32灯流水——火柴天堂作品-20130520***//***52单片机,12MHz晶振,P0-P3 接32颗LED,低电平驱动***/#include""//包含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 32bit 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();}}
321 浏览 3 回答
195 浏览 8 回答
96 浏览 4 回答
219 浏览 4 回答
229 浏览 5 回答
211 浏览 6 回答
247 浏览 3 回答
201 浏览 3 回答
82 浏览 4 回答
299 浏览 3 回答
277 浏览 4 回答
161 浏览 2 回答
310 浏览 6 回答
262 浏览 4 回答
206 浏览 5 回答
297 浏览 4 回答
154 浏览 4 回答
255 浏览 3 回答
109 浏览 3 回答
82 浏览 7 回答
188 浏览 4 回答
282 浏览 5 回答
228 浏览 3 回答
88 浏览 9 回答
152 浏览 4 回答