微控制器MCU處理LED亮度控制
微控制器MCU通常被認(rèn)為是數(shù)字器件。在缺省情況下,其輸出電壓電平要么是高,要么就是低,不會(huì)是一個(gè)不高不低值。為了實(shí)現(xiàn)LED亮度控制這一要求,首先浮現(xiàn)在腦海中的方法就是使用一個(gè)標(biāo)準(zhǔn)的數(shù)模轉(zhuǎn)換器或者設(shè)計(jì)一個(gè)受控的電阻網(wǎng)絡(luò)。值得慶幸的是,大多數(shù)現(xiàn)代MCU都具有內(nèi)置的脈沖寬度調(diào)制(PWM)單元,這是解決該問題的最容易和成本最低的方法。
根據(jù)我們的項(xiàng)目要求,兩個(gè)LED的亮度必須在幾秒鐘的時(shí)間內(nèi)以相反的順序逐漸從最暗調(diào)整到最亮,再從最亮逐漸調(diào)整到最暗。在"勻變1"時(shí)間內(nèi),針對LED 1的PWM信號(hào)的脈沖寬度逐漸增大,而針對LED 2的PWM信號(hào)的脈沖寬度逐漸減小。例如,假設(shè)勻變時(shí)間等于2秒并由128個(gè)向上/向下步長組成。因此,每個(gè)步長持續(xù)大約16ms。請注意,脈沖寬度應(yīng)當(dāng)在一個(gè)PWM周期內(nèi)僅改變一次。因此,PWM周期也應(yīng)該等于16ms。
我們使用了低端8位摩托羅拉MC68HC908-QT2 Flash MCU,該器件內(nèi)嵌有振蕩器。其振蕩頻率為12.8MHz,并且預(yù)分頻器的分頻比在程序中設(shè)定為1:64,定時(shí)器時(shí)鐘周期為0.02 ms。那么,為了生成周期為16ms的PWM,要載入定時(shí)器/計(jì)數(shù)器方式寄存器(Tmod)的時(shí)鐘數(shù)應(yīng)等于16/0.02 = 800(等于十六進(jìn)制的$0320)。
最大脈沖寬度(PWmax)可以小于或等于PWM周期??紤]PWmax大約等于15ms的情況。對于128個(gè)步長的情況,要從零獲得此最大值,每個(gè)步長值應(yīng)為15/128 = 0.117ms,舍入之后為0.12ms。由此我們可以得出PWmax = 15.36 ms,相當(dāng)于PWM周期的96%。因此在每一步長中,PW應(yīng)以0.12ms(等于0.12/0.02 = 6個(gè)定時(shí)器時(shí)鐘)的增量向上/向下勻變。
任何一種帶有PWM的MCU和任何一種定時(shí)考慮方法可用來實(shí)現(xiàn)這一技術(shù)。應(yīng)根據(jù)使用的LED來選擇電阻R1 和 R2。管腳pA2 =1時(shí)用來激活亮度控制,管腳pA2 =0時(shí)用來關(guān)閉亮度控制。
評(píng)論