|
參考了51hei論壇 hongru的作品,做出了一點(diǎn)修改 呼吸燈就是讓LED燈的閃爍像呼吸一樣,時(shí)呼時(shí)吸,時(shí)亮?xí)r暗,利用LED的余輝和人眼的暫留效應(yīng),看上去和人的呼吸一樣。 用C語(yǔ)言編程實(shí)現(xiàn)PWM(脈寬調(diào)制)輸出驅(qū)動(dòng)LED,逐漸增加PWM的占空比從而實(shí)現(xiàn)LED模擬呼吸的過(guò)程,即漸亮再漸暗再漸亮再漸暗……如此往復(fù),再利用LED的余輝和人眼的暫留效應(yīng),看上去就和人的呼吸一樣。 我認(rèn)為這個(gè)程序不需要先拉低P1口,如果拉低了,燈會(huì)有卡頓的感覺(jué)。
單片機(jī)源程序如下:
- #include<reg51.h>
- void Delay1(int del)
- {
- int i,j;
- for(i=0; i<del; i++)
- for(j=0; j<1827; j++)
- ;
- }
- void Delay(unsigned int t)
- {
- while(--t);
- }
- //函數(shù)聲明
- unsigned int z,y;
- void main (void)//主函數(shù)
- {
- unsigned int CYCLE=400,PWM_LOW=0;//定義周期并賦值
- while (1) //主循環(huán)
- {
- /*--------整排LED燈呼吸---------*/
-
- Delay1(100); //加延時(shí),可以看到熄滅的過(guò)程(下面程序同理)
- for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++) //PWM_LOW表示低
- {
- P1=0x00;
- Delay(PWM_LOW);
- P1=0xff;
- Delay(CYCLE-PWM_LOW);
- }
- P1=0xff;
- for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) //與逐漸變亮相反的過(guò)程
- {
- P1=0x00; //點(diǎn)亮LED
- Delay(PWM_LOW);
- P1=0xff; //熄滅LED
- Delay(CYCLE-PWM_LOW); //主循環(huán)中添加其他需要一直工作的程序,延時(shí)長(zhǎng)度,600次循環(huán)中從599減至1
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
呼吸燈.zip
(13.83 KB, 下載次數(shù): 156)
2017-12-8 18:10 上傳
點(diǎn)擊文件名下載附件
|