C51PWM波做呼吸灯
时间: 2023-11-26 16:05:04 浏览: 82
PWM.zip_51pwm波控制LED_51控制pwn_PWN波_pwm中断_pwn呼吸灯设计
C51单片机可以通过定时器实现PWM波,从而实现呼吸灯效果。具体步骤如下:
1.设置定时器的工作模式为PWM输出模式,同时设置PWM的占空比和频率。
```c
TMOD = 0x01; // 设置定时器1为模式1
TH1 = 0xF3; // 设置定时器初值
TL1 = 0xF3;
P1 = 0x00; // 初始化P1口输出为低电平
TR1 = 1; // 启动定时器1
```
2.在定时器中断服务函数中,改变PWM的占空比,从而实现呼吸灯效果。
```c
void timer1() interrupt 3 // 定时器1中断服务函数
{
static unsigned char pwm = 0; // 定义PWM占空比变量
static unsigned char dir = 0; // 定义PWM占空比变化方向变量
TH1 = 0xF3; // 重新赋初值
TL1 = 0xF3;
if (dir == 0) // PWM占空比递增
{
pwm++;
if (pwm >= 100) // 达到最大值,改变方向
{
dir = 1;
}
}
else // PWM占空比递减
{
pwm--;
if (pwm == 0) // 达到最小值,改变方向
{
dir = 0;
}
}
if (pwm > 50) // 根据PWM占空比改变P1口输出电平
{
P1 = 0x01;
}
else
{
P1 = 0x00;
}
}
```
3.在主函数中开启定时器中断。
```c
EA = 1; // 开启总中断
ET1 = 1; // 开启定时器1中断
```
阅读全文