標(biāo)題:
求指導(dǎo)下實(shí)現(xiàn)思路 基于PWM的呼吸燈設(shè)計(jì)
[打印本頁(yè)]
作者:
sun小胖
時(shí)間:
2021-12-1 19:52
標(biāo)題:
求指導(dǎo)下實(shí)現(xiàn)思路 基于PWM的呼吸燈設(shè)計(jì)
51hei圖片20211201195750.png
(38.27 KB, 下載次數(shù): 28)
下載附件
PWM調(diào)光
2021-12-1 19:51 上傳
作者:
田賀
時(shí)間:
2021-12-3 16:39
T0負(fù)責(zé)產(chǎn)生1000HZ的PWM,通過(guò)控制T0的定時(shí)時(shí)間影響端口電平翻轉(zhuǎn),達(dá)到控制正向脈沖寬度的作用;
T1負(fù)責(zé)控制T0的定時(shí)時(shí)間,每隔50ms影響一次T0設(shè)置,達(dá)到亮度切換的作用
作者:
rayin
時(shí)間:
2021-12-7 08:33
控制PWM產(chǎn)生呼吸燈效果,就是將占空比由0調(diào)到最大,再由最大跳到0, 這個(gè)過(guò)程的周期決定閃爍頻率。
作者:
cheney03
時(shí)間:
2021-12-7 08:48
/***********************
PWM-呼吸燈
*************************/
#include<reg52.h>
#define led P2
unsigned char t_count ; //累計(jì)每個(gè)周期中斷次數(shù)的個(gè)數(shù),滿20清零,20*100us=2ms(pwm的周期)
unsigned int count ; //累計(jì)占空比需要修改(增加還是減少)的中斷次數(shù)的個(gè)數(shù) 1200*100us=120ms
unsigned char t ; //累計(jì)高電平的個(gè)數(shù)
bit flag ; //標(biāo)志位 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%開(kāi)始
// led = 1;
timer0init();
while(1);
}
/*每100us進(jìn)入一次中斷*/
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;
}
}
}
復(fù)制代碼
作者:
996256177
時(shí)間:
2021-12-7 10:19
設(shè)置PWM為變量,往上增加就行了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1