在我們的現在生活中,LED燈照明已經在到處都能看到。LED燈具有節能、耐用、可調光等特點,取代了過去落后的白熾燈。那么,為什么LED的燈光可調呢?
下面我就向大家介紹LED調光的基本原理-脈寬調制,也就PWM。
在我們的本節內容中,我還是利用之前的電路來展示PWM的基本工作原理。
一、STC15W408AS控制LED燈電路
二、脈寬調制(PWM)基本原理
所謂脈寬調制,就是利用電路中的開關器件的通斷來進行控制,使輸出端得到一系列幅值相等但寬度不一致的脈沖,用這些脈沖來代替正弦波或者所需要的波形。
從下圖中,我們可以看出,這里有三種不同的波形。這些波形具有重復性,也就是我們通常所說的周期。在專業術語中,一個周期所占用的時間,就叫做一個脈寬。其中,高電平所占整個脈寬的比例,就叫做占寬比。下圖中,就是占空比分別為75%、50%和20%的波形。
三、利用定時器來生成PWM波形的方法
我們在了解了PWM波形的基本概念后,就可以利用單片機的定時器來生成PWM波形。
如果要利用定時器來生成PWM,則首先要確定PWM波形的脈沖寬度(比如10MS),然后確定在這個脈沖中,高電平所占的時間寬度(比如2MS),則剩下的時間就是低電平時間(比如8MS),也就是占空比為20%,如上圖中的第三種波形。
現在假設我們使用的定時器是1MS中斷一次,那么要得到10MS的脈沖寬度,就需要計數10次,也就中斷10次。基中高電平計數4次,低電平計數6次。
也就是開始計數時讓輸出為高電平,當計數到4次后,再讓輸出變為低電平,直到計數到10次,再重復這個過程。
這樣,我們就得到了一系列寬度為10MS,占空比是是40%的脈沖。
四、利用定時器生成PWM波形相關代碼
int mPulseCnt=0;
// 1ms
void Timer0_ISR (void) interrupt 1
{
mPulseCnt=mPulseCnt+1;
if(mPulseCnt<=4)
{
PinLed_High();
}else{
PinLed_Low();
}
if(mPulseCnt==10)
{
mPulseCnt=0;
}
}
五、利用定時器來生成PWM波形的完整代碼
#define FOSC 11059200L
#define T1MS (65536-FOSC/1000) // 1 T模式
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
#define TRUE 1
#define FALSE 0
#define Pin_LED P32
#define Pin_LED_M1 P3M1
#define Pin_LED_M0 P3M0
#define Pin_LED_BIT BIT2
#define PinLed_High() Pin_LED=1
#define PinLed_Low() Pin_LED=0
#define BOOL unsigned char
#define UINT unsigned int
UINT mTimer500ms=0;
void PinLED_DirOut(void);
void Timer0_Init(void);
BOOL bLedon=FALSE;
int mPulseCnt=0;
void main(void)
{
PinLED_DirOut();
PinLed_High();
Timer0_Init();
while(TRUE)
{
}
}
void PinLED_DirOut(void)
{
Pin_LED_M1 &=~Pin_LED_BIT;
Pin_LED_M0 |=Pin_LED_BIT;
}
void Timer0_Init(void)
{
AUXR |= 0x80; //定時器0為1T模式
TMOD = 0x00; //設置定時器為模式0(16位自動重裝載)
TL0 = T1MS; //初始化計時值
TH0 = T1MS > > 8;
TR0 = 1; //定時器0開始計時
ET0 = 1; //使能定時器0中斷
EA = 1;
}
// 1ms
void Timer0_ISR (void) interrupt 1
{
mPulseCnt=mPulseCnt+1;
if(mPulseCnt<=4)
{
PinLed_High();
}else{
PinLed_Low();
}
if(mPulseCnt==10)
{
mPulseCnt=0;
}
}
-
單片機
+關注
關注
6032文章
44514瀏覽量
632962 -
led燈
+關注
關注
22文章
1592瀏覽量
107836 -
PWM
+關注
關注
114文章
5141瀏覽量
213393 -
脈寬調制
+關注
關注
3文章
215瀏覽量
38282 -
LED調光
+關注
關注
0文章
59瀏覽量
16287
發布評論請先 登錄
相關推薦
評論