用8引腳的微控制器控制帶多個LED的兩位數(shù)字顯示
8引腳微控制器能支持豐富的外設(shè)功能。不過,由于芯片電源需要占用兩個引腳,所以,最多可用I/O引腳數(shù)目常常只有6個。這樣以來,采用這些器件設(shè)計系統(tǒng)的難度就可能比較大,特別是如果這些系統(tǒng)所包含的顯示要求很高時。
一般地,Charlieplexing方法可使N個I/O引腳控制N*(N1)倍的LED。例如,圖1示出了微控制器的5個引腳接了20個LED。在上述Charlieplexed表示中,其中一個引腳被設(shè)置為邏輯“1”輸出引腳,另一個腳被設(shè)置為邏輯“0”輸出引腳。其余引腳設(shè)置為高阻態(tài)輸入。
因此,在任何給定的時間內(nèi),只有一個LED導(dǎo)通。在適當(dāng)?shù)难舆t后,通過改變引腳配置,使該LED截止,下一個LED導(dǎo)通。每個LED導(dǎo)通的速率必須大于50Hz,以避免出現(xiàn)看得見的閃爍。所以,對20個LED,總顯示刷新率應(yīng)該至少為1,000Hz。
圖1:微控制器的5個引腳接了20個LED。
我們的應(yīng)用需要一個最大計數(shù)為200的計數(shù)器。本來可簡單地使用一個相稱的復(fù)雜微控制器,但是我們最后還是決定嘗試采用最廉價而現(xiàn)成的8引腳微控制器,最終選擇了AtmelAVRATtiny15。計數(shù)器的輸入來自一個按扭開關(guān),因此6個I/O引腳中只有5個可用于顯示。因?yàn)橛嫈?shù)器是面向?qū)κM(jìn)制熟悉的工程師,所以,我們決定采用兩位數(shù)字顯示,顯示范圍為00~FF(Hex),即便如此,裝好兩位數(shù)字顯示似乎也很難。
我們采用Charlieplexed顯示,按需要的兩位數(shù)字,7段格式排列LED,以實(shí)現(xiàn)設(shè)計目的(圖2)。我們選擇了3mm的高亮度LED,7段顯示的每一段都由3個LED組并聯(lián)而成。
圖2:采用Charlieplexed顯示,按需要的兩位數(shù)字,7段格式排列LED。
所有電阻都是100Ω、1/4WCFR。通過LED的峰值電流大約是30mA(5V電源),而系統(tǒng)能在3V~6V電源電壓范圍任意電壓下工作。刷新率設(shè)置為1,000Hz,由ATtiny15的1.6MHz內(nèi)部系統(tǒng)時鐘產(chǎn)生。該電路也適合與許多ATtiny器件或者8引腳PIC微控制器結(jié)合使用。
雖然我們的方案是針對一個簡單計數(shù)器,但系統(tǒng)是可擴(kuò)展的,可將顯示增加到2-1/2位格式。此外,很多8引腳微控制器都內(nèi)置有一個模-數(shù)轉(zhuǎn)換器通道,該通道可與2-1/2位顯示一起使用,構(gòu)成電壓表。同樣地,利用該技術(shù)也能實(shí)現(xiàn)具有自動量程修正功能的頻率計數(shù)器。
Charlieplexing的不足之處是流過每個LED的電流占空周期低。由于在任意給定的時間內(nèi)只有一個LED導(dǎo)通,所以占空周期是1/[N*(N1)]。對于20個LED,流過每個LED電流的占空周期將只有5%。隨著LED數(shù)目的增加,占空周期縮短。因此,要保持流過LED的平均電流一定,峰值電流必須按比例增大。在某些點(diǎn)上,峰值電流將超過LED的額定值,不能再用Charlieplexing。
另一個需要考慮的是,只能使用那些每個引腳都能配置為輸出及高阻輸入的微控制器。因此,典型的8051不適合控制CharlieplexedLED顯示。