可驅(qū)動(dòng)20個(gè)LED對(duì)數(shù)/點(diǎn)狀/條狀的微控制器
美國國家半導(dǎo)體公司的LM3914點(diǎn)狀/條狀顯示驅(qū)動(dòng)器已經(jīng)面市20多年了,但仍然在設(shè)計(jì)者中廣泛流行。LM3914可以檢測(cè)模擬電壓,并使10個(gè) LED顯示,方法是以點(diǎn)狀模式點(diǎn)亮10個(gè)LED中的一個(gè),或以條形圖模式逐個(gè)點(diǎn)亮LED。最近,一種模擬輸入電壓顯示器的一項(xiàng)應(yīng)用,要求能夠以線性或?qū)?shù)級(jí)格式實(shí)現(xiàn)10個(gè)以上LED的顯示。根據(jù) LM3914的數(shù)據(jù)資料,可以將多支3914級(jí)聯(lián)起來,獲得10個(gè)以上LED的顯示(參考文獻(xiàn)1),但即使這么做,LM3914也只能線性地顯示輸入電壓。(編輯注:美國國家半導(dǎo)體還提供 LM3915,這是一款對(duì)數(shù)型3dB步長版,而LM3916則適合音頻應(yīng)用,以音量單位顯示輸入。)
本文應(yīng)用要求超出了LM3914提供的靈活性,它使用了一個(gè)基于Atmel AVR系列ATTiny13微控制器的電路,有1kB程序內(nèi)存、一個(gè)四通道10位ADC,以及6個(gè)通用I/O 腳。調(diào)整電路的固件就可以實(shí)現(xiàn)0 V ~ 5V輸入電壓范圍內(nèi)的線性或?qū)?shù)型縮放。
圖1中的電路以20個(gè)連續(xù)顯示輸入電壓。當(dāng)開關(guān)S1關(guān)閉時(shí),即將顯示凍結(jié)在當(dāng)時(shí)的電流水平讀數(shù)。微控制器6個(gè)I/O腳中的5個(gè)控制著所有20個(gè)LE D和開關(guān)。剩下的I/O腳配置為一個(gè) ADC 輸入通道,負(fù)責(zé)接收模擬輸入電壓。微控制器采用 Charlieplexing,這是一種用I/O線驅(qū)動(dòng)多達(dá)N×(N-1)個(gè)LED的方法,這樣只用5個(gè)I/O腳就可以驅(qū)動(dòng)20個(gè) LED(參考文獻(xiàn)2 ~ 4)。
固件以C語言編寫,并用AVR-GCC編譯,這是一個(gè)以Windows和Linux版提供的免費(fèi)C編譯器和匯編器。它使用運(yùn)行在中斷驅(qū)動(dòng)自由模式的 Tiny13內(nèi)部 10 位 ADC,將模擬輸入電壓轉(zhuǎn)換為一個(gè)數(shù)字值。每次轉(zhuǎn)換完成時(shí),ADC 產(chǎn)生一個(gè)由子程序讀出的中斷,中斷將 ADC 轉(zhuǎn)換輸出保存在一個(gè)共享變量中。
為了產(chǎn)生無閃爍的顯示,一個(gè)內(nèi)部定時(shí)器從一個(gè)9.6MHz系統(tǒng)時(shí)鐘產(chǎn)生一個(gè)1875Hz中斷,以大于90Hz的速率驅(qū)動(dòng)多路輸出的 LED。將ADC計(jì)數(shù)除以一個(gè)常數(shù)即得到輸入電壓的一個(gè)線性顯示。用一個(gè)查找表縮放ADC計(jì)數(shù)就產(chǎn)生一個(gè)對(duì)數(shù)顯示。圖2表示確定該查找表值的對(duì)數(shù)轉(zhuǎn)換曲線。用于線性和對(duì)數(shù)縮放的 ATTiny13控制程序版本都可以從本設(shè)計(jì)實(shí)例處下載??梢詫?duì)這些源碼作修改,而只顯示0V ~ 5V輸入電壓中的某個(gè)子區(qū)間。例如,可以設(shè)定1V ~ 3V的線性顯示范圍,或2V ~ 3V輸入電壓的對(duì)數(shù)縮放。
參考文獻(xiàn)
1. LM3914 data sheet.
2. Lancaster, Don, "Tech Musings," August 2001.
3. "Charlieplexing: Reduced Pin-Count LED Multiplexing," Maxim Application Note 1880, Feb 10, 2003.
4. Benabadji, Noureddine, "PIC microprocessor drives 20-LED dot- or bar-graph display," EDN, Sept 1, 2006, pg 71.
評(píng)論