使用STC89C51输出pwm调节LED亮度
时间: 2023-11-11 17:05:50 浏览: 211
下面是使用STC89C51输出pwm调节LED亮度的代码:
```c
#include <STC89C5xRC.H>
sbit LED = P1^0; //定义LED引脚
void Timer0Init()
{
TMOD |= 0x01; //设置为16位定时器模式
TH0 = 0xFC; //计数初值,定时1ms
TL0 = 0x18;
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
EA = 1; //打开总中断
}
void main()
{
Timer0Init();
while(1)
{
for(int i = 0; i <= 100; i++) //从0-100递增调节LED亮度
{
P1 = i; //设置PWM占空比
delay(10); //延时10ms
}
for(int i = 100; i >= 0; i--) //从100-0递减调节LED亮度
{
P1 = i; //设置PWM占空比
delay(10); //延时10ms
}
}
}
void timer0() interrupt 1
{
TH0 = 0xFC; //重装初值
TL0 = 0x18;
LED = ~LED; //LED闪烁
}
void delay(unsigned int i)
{
for(; i > 0; i--)
for(int j = 0; j < 110; j++);
}
```
代码中使用定时器0输出PWM信号,通过改变PWM占空比来调节LED的亮度。定时器0的中断周期为1ms,通过改变PWM占空比的值来改变LED的亮度。其中,通过for循环递增和递减PWM占空比,实现LED的渐变效果。在定时器0中断中,通过LED引脚取反来实现LED的闪烁效果。
阅读全文