PWM演示.zip
(37.74 KB, 下载次数: 218)
- ///////////////////////////////////////////////////////////
- //呼吸灯演示程序(PWM脉宽调制模型)
- ///////////////////////////////////////////////////////////
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uint cycle=500; //PWM周期
- uint pwm=0; //高电平持续时间
- sbit led=P1^0; //LED端口
- sbit sw=P2^5; //74HC573锁存端口
- void delay(uint t)
- {
- unsigned int i;
- for(i=0;i<t;i++); //之前演示时灯闪烁的原因是此处延时太大
- }
- void pwm_demo(void)
- {
- sw=1; //数据不锁存
-
- led=1;
- delay(60000);
- for(pwm=1;pwm<cycle;pwm++)//在这个循环里pwm的值逐渐升高(pwm的值代表高电平持续时间),占空比增大,灯由暗变亮。
- {
- led=0;
- delay(pwm);
- led=1;
- delay(cycle-pwm);
- }
-
- led=0;
- delay(60000);
- for(pwm=cycle-1;pwm>0;pwm--)//在这个循环里pwm的值逐渐减小(pwm的值代表高电平持续时间),占空比减小,灯由亮变暗。
- {
- led=0;
- delay(pwm);
- led=1;
- delay(cycle-pwm);
- }
- }
复制代码
|