PWM
PulseWidthModulation脈沖寬度調(diào)制,簡(jiǎn)稱(chēng)PWM。
PWM(脈沖寬度調(diào)制)對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,計(jì)算機(jī)只能輸出0或5V的數(shù)字電壓值而不能輸出模擬電壓,而我們?nèi)绻氆@得一個(gè)模擬電壓值,則需通過(guò)使用高分辨率計(jì)數(shù)器,改變方波的占空比來(lái)對(duì)一個(gè)模擬信號(hào)的電平進(jìn)行編碼。
仍輸出數(shù)字信號(hào),因?yàn)闈M(mǎn)幅值的直流供電只有5V(1)和0V(0)兩種。電壓是以一種連接(1)或斷開(kāi)(0)的重復(fù)脈沖序列被夾到模擬負(fù)載上去的,連接即是直流供電輸出,斷開(kāi)即是直流供電斷開(kāi)。通過(guò)對(duì)連接和斷開(kāi)時(shí)間的控制,只要帶寬足夠,可以輸出任意不大于最大電壓值的模擬電壓。
51單片機(jī)的Timer
用的單片機(jī)是STC89C52,其內(nèi)部有3個(gè)16位Timer,分別為T(mén)/C0,T/C1,T/C2,通過(guò)配置相關(guān)寄存器即可實(shí)現(xiàn)Timer的功能控制。
控制PWM需要用到定時(shí)器來(lái)生成不同占空比的波形,采用定時(shí)器中斷的方式。
相關(guān)寄存器:
1.IE寄存器
2. TCON寄存器
3. TMOD寄存器
控制Timer0/1的工作方式
4. Timer0/1計(jì)數(shù)寄存器
TL0
TL1
TH0
TH1
當(dāng)定時(shí)開(kāi)啟后,TL0(TL1)自動(dòng)跟隨機(jī)器周期加一。當(dāng)TL0(TL1)滿(mǎn)了后,自動(dòng)清零同時(shí)向TH0(TH1)進(jìn)一位,不需要手動(dòng)操作。
而當(dāng)TL0(TL1)和TH0(TH1)都滿(mǎn)了以后,此時(shí)如果定時(shí)中斷和總中斷都已經(jīng)打開(kāi),那么就會(huì)發(fā)生溢出中斷,同時(shí)這兩個(gè)寄存器清零。
運(yùn)用PWM完成呼吸燈硬件電路
程序設(shè)計(jì):
unsigned char PWM_COUNT; //計(jì)數(shù)
unsigned int HUXI_COUNT; //占空比更新時(shí)間
unsigned char PWM_VLAUE; //占空比比對(duì)值
bit direc_flag; //占空比更新方向
void timer0_init()
{ TMOD=0x02; //模式設(shè)置,00010000,定時(shí)器0,工作于模式2(M1=1,M0=0)
TH0=0x47; //定時(shí)器溢出值設(shè)置,每隔200us發(fā)起一次中斷。
TL0=0X47; TR0=1; //定時(shí)器0開(kāi)始計(jì)時(shí)
ET0=1; //開(kāi)定時(shí)器0中斷
EA=1; //開(kāi)總中斷
PWM_COUNT =0; }
void time0() interrupt 1
{ PWM_COUNT++; HUXI_COUNT++;
if(PWM_COUNT == PWM_VLAUE) //判斷是否到了點(diǎn)亮LED的時(shí)候
LED = 1; //點(diǎn)亮LED
if(PWM_COUNT == 10) //當(dāng)前周期結(jié)束
{ LED = 0; //熄滅LED
PWM_COUNT = 0; //重新計(jì)時(shí) }
if((HUXI_COUNT == 600) && (direc_flag == 0)) { //占空比增加10%
HUXI_COUNT = 0;
PWM_VLAUE++; if(PWM_VLAUE == 9) //占空比更改方向
direc_flag = 1;
}
if((HUXI_COUNT == 600) && (direc_flag == 1))
{ //占空比減少10%
HUXI_COUNT = 0;
PWM_VLAUE--;
if(PWM_VLAUE == 1) //占空比更改方向
direc_flag = 0;
}
}
void main()
{ HUXI_COUNT = 0;
PWM_COUNT = 0;
PWM_VLAUE = 5;
direc_flag = 0;
LED = 1; //默認(rèn)LED熄滅
timer0_init(); //定時(shí)器0初始化
while(1);
}
-
PWM
+關(guān)注
關(guān)注
116文章
5315瀏覽量
217332 -
呼吸燈
+關(guān)注
關(guān)注
10文章
112瀏覽量
43035
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
自己寫(xiě)的io口輸出pwm呼吸燈程序,基于stc89c52RC
基于stm32的PWM呼吸燈工程分享
基于stm32的PWM呼吸燈工程分享
一文分享pwm呼吸燈原理及程序
關(guān)于PWM呼吸燈的幾個(gè)問(wèn)題,求解答
PWM實(shí)現(xiàn)呼吸燈的應(yīng)用
使用單片機(jī)的定時(shí)器模擬PWM輸出實(shí)現(xiàn)呼吸燈的程序免費(fèi)下載

STM32實(shí)現(xiàn)PWM呼吸燈的程序合集免費(fèi)下載

STM32_PWM呼吸燈

STM32 使用PWM實(shí)現(xiàn)呼吸燈

通過(guò)STM32實(shí)現(xiàn)PWM呼吸燈的教程

評(píng)論