標題: 我制作的單片機呼吸燈程序 [打印本頁]
作者: lth977 時間: 2017-12-8 18:16
標題: 我制作的單片機呼吸燈程序
參考了51hei論壇 hongru的作品,做出了一點修改
呼吸燈就是讓LED燈的閃爍像呼吸一樣,時呼時吸,時亮時暗,利用LED的余輝和人眼的暫留效應,看上去和人的呼吸一樣。
用C語言編程實現PWM(脈寬調制)輸出驅動LED,逐漸增加PWM的占空比從而實現LED模擬呼吸的過程,即漸亮再漸暗再漸亮再漸暗……如此往復,再利用LED的余輝和人眼的暫留效應,看上去就和人的呼吸一樣。
我認為這個程序不需要先拉低P1口,如果拉低了,燈會有卡頓的感覺。
單片機源程序如下:
- #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);
- }
- //函數聲明
- unsigned int z,y;
- void main (void)//主函數
- {
- unsigned int CYCLE=400,PWM_LOW=0;//定義周期并賦值
- while (1) //主循環
- {
- /*--------整排LED燈呼吸---------*/
-
- Delay1(100); //加延時,可以看到熄滅的過程(下面程序同理)
- 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--) //與逐漸變亮相反的過程
- {
- P1=0x00; //點亮LED
- Delay(PWM_LOW);
- P1=0xff; //熄滅LED
- Delay(CYCLE-PWM_LOW); //主循環中添加其他需要一直工作的程序,延時長度,600次循環中從599減至1
- }
- }
- }
復制代碼
所有資料51hei提供下載:
呼吸燈.zip
(13.83 KB, 下載次數: 156)
2017-12-8 18:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: 6010010 時間: 2019-3-3 09:25
有用,有用,有用
作者: jxchen 時間: 2019-3-3 19:18
不錯~~~~~~~~~~~~~~~
作者: tigerzq 時間: 2019-3-30 11:51
硬件連接呢?也順便公布一下呀!
作者: 明海科技 時間: 2019-9-22 10:50
好用,學習了。
作者: 代碼搞不會 時間: 2020-5-5 19:29
tigerzq 發表于 2019-3-30 11:51
硬件連接呢?也順便公布一下呀!
led接p1
作者: qwertyuiop_zsq 時間: 2020-6-12 20:11
我led接P1口,可是二極管沒反應,求解答

作者: 大漠游民 時間: 2020-10-4 18:34
你怎么接的?按我的理解,發光二極管的A極接+5V,K極接P1口,你這樣試試。
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |