以前我根據PWM波的原理寫過一個呼吸燈,效果還行吧,可以改一些參數來調整呼吸頻率。
我的沒有用定時器,就用的延時不是很準確,程序僅供參考  ,還是剛學不就時候編的,希望能有點幫助:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit LED=P0^7;
- bit DIR=1;
- void main()
- {
- uint i,j,H,L;
- // H 表示一個周期內高電平時間
- // L 表示一個周期內低電平時間
- // i 高低電平時間的延時變量
- // j 是逐漸變亮或變暗的周期個數
- while(1)
- {
- H= 1,L= 1000;
- while(1) // 逐漸變亮
- {
- // 高電平時間
- LED = 1;
- i = H;
- while( i--);
- //低電平時間
- LED = 0;
- i = L;
- while( i--);
- H = H+3; //改變亮的時間
- L = L-3; //改變暗的時間
- if(H > 1000)
- break;
- if(L < 1)
- break;
- }
- H= 1000,L= 1;
- while(1) // 逐漸變暗
- {
- LED = 1;
- i = H;
- while( i--);
- LED =0;
- i = L;
- while( i--);
- H = H-5;
- L = L+5;
- if(H < 1)
- break;
- if(L > 1000)
- break;
- }
- j=15000; //使效果好一些
- while(j--);
- }
- }
復制代碼
開始找到都沒注釋,還有些看不懂了,稍微加了點注釋。
程序注釋還是挺重要的!!! |