标题:
求指导下实现思路 基于PWM的呼吸灯设计
[打印本页]
作者:
sun小胖
时间:
2021-12-1 19:52
标题:
求指导下实现思路 基于PWM的呼吸灯设计
51hei图片20211201195750.png
(38.27 KB, 下载次数: 28)
下载附件
PWM调光
2021-12-1 19:51 上传
作者:
田贺
时间:
2021-12-3 16:39
T0负责产生1000HZ的PWM,通过控制T0的定时时间影响端口电平翻转,达到控制正向脉冲宽度的作用;
T1负责控制T0的定时时间,每隔50ms影响一次T0设置,达到亮度切换的作用
作者:
rayin
时间:
2021-12-7 08:33
控制PWM产生呼吸灯效果,就是将占空比由0调到最大,再由最大跳到0, 这个过程的周期决定闪烁频率。
作者:
cheney03
时间:
2021-12-7 08:48
/***********************
PWM-呼吸灯
*************************/
#include<reg52.h>
#define led P2
unsigned char t_count ; //累计每个周期中断次数的个数,满20清零,20*100us=2ms(pwm的周期)
unsigned int count ; //累计占空比需要修改(增加还是减少)的中断次数的个数 1200*100us=120ms
unsigned char t ; //累计高电平的个数
bit flag ; //标志位 0增加,1减少
void timer0init(void)
{
EA = 1;
TMOD = 0X02;
TH0 = 0Xa3;
TL0 = 0Xa3;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
t_count = 0;
count = 0;
t =10; //占空比总50%开始
// led = 1;
timer0init();
while(1);
}
/*每100us进入一次中断*/
void timer0() interrupt 1
{
t_count++;
count++;
if(t_count == t)
{
P2 = 0x00;
}
if(t_count == 19)
{
t_count = 0;
P2 = 0xff;
}
if((count == 1200)&&(flag == 0))
{
count = 0;
t++;
if(t == 19) //增加最大占空比 95%
{
flag = 1;
}
}
if((count ==1200)&&(flag == 1))
{
count = 0;
t--;
if(t ==10) //减小到最低占空比 50%
{
flag = 0;
}
}
}
复制代码
作者:
996256177
时间:
2021-12-7 10:19
设置PWM为变量,往上增加就行了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1