以前我根据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--);
- }
- }
复制代码
开始找到都没注释,还有些看不懂了,稍微加了点注释。
程序注释还是挺重要的!!! |