為產(chǎn)生調(diào)節(jié) LED 燈光亮度的PWM 信號(hào),定時(shí)器T0 設(shè)置為工作方式0,即13 位計(jì)數(shù)器定時(shí),最多裝載數(shù)值為213=8192 個(gè)。因?yàn)橄到y(tǒng)晶振采用12MHz,賦值使TH0=(8192-400)/ 32 與 TL0=(8192-400)%32,即可實(shí)現(xiàn)400μ S 的定時(shí)中斷。10 次中斷(即4mS)作為一個(gè)周期,通過(guò)調(diào)節(jié)每個(gè)周期內(nèi)單片機(jī)P1.1(該控制口名稱定義為L(zhǎng)ED_PWM)輸出的占空比來(lái)產(chǎn)生PWM 脈沖信號(hào),以控制PT4115 恒流驅(qū)動(dòng)芯片實(shí)現(xiàn)LED 燈的10 級(jí)亮度調(diào)節(jié)。
程序設(shè)置對(duì)T0 中斷次數(shù)(即定義為T(mén)0_num)進(jìn)行計(jì)數(shù),以便判斷一個(gè)周期到否;同時(shí)判斷比較高電平脈沖個(gè)數(shù)(即定義為scale 值,由調(diào)光鍵S6 按下次數(shù)設(shè)置)用于實(shí)現(xiàn)不同亮度等級(jí)的調(diào)節(jié)。在定時(shí)器T0 中斷服務(wù)程序中,首先T0 重新裝入定時(shí)為400μ S 的初值;定時(shí)器中斷次數(shù)T0_num 加1,判斷一個(gè)方波周期到否,若到達(dá),令T0_num 歸零,并將P1.1口輸出電平置高(即LED_PWM=1);如果一個(gè)方波周期還沒(méi)到,則與亮度等級(jí)scale 值作比較,判斷高電平脈沖個(gè)數(shù)scale 到否,若到達(dá),令P1.1 口輸出電平置低(即LED_PWM=0),否則繼續(xù)保持P1.1 口輸出高電平(即LED_PWM=1);而后中斷返回,等待下一次定時(shí)中斷。
這樣,P1.1 口就產(chǎn)生了所需的PWM 調(diào)光信號(hào)。定時(shí)器生成PWM 流程圖如圖13所示。

?
圖13 定時(shí)器生成PWM流程圖
3 實(shí)驗(yàn)結(jié)果
根據(jù)以上設(shè)計(jì)方案,本文制作了該款基于PWM 調(diào)光的多功能LED 臺(tái)燈。經(jīng)調(diào)試后系統(tǒng)運(yùn)行穩(wěn)定可靠,基本可以滿足家庭生活的使用要求。系統(tǒng)工作時(shí),最低功率(即LED 熄滅狀態(tài))為0.28W;最大功率(即LED 最高亮度狀態(tài))約為1.52W;同時(shí),液晶顯示時(shí)間、日歷與溫度數(shù)據(jù)準(zhǔn)確,鬧鐘功能穩(wěn)定。實(shí)物照片如圖14 所示。
?
圖 14 實(shí)物照片