自做模擬電路到LM3914顯示驅(qū)動為用戶提供可編程性。
美國國家半導(dǎo)體公司的老產(chǎn)品LM3914點(diǎn)/柱狀顯示驅(qū)動器已面市20多年了,但仍被廣泛應(yīng)用。LM3914可以感知模擬電壓,并通過點(diǎn)狀模式點(diǎn)亮10個LED中的一個,或以柱形圖模式逐個點(diǎn)亮LED的方法,顯示電壓大小。最近,有個應(yīng)用需要顯示模擬輸入電壓,要求具有線性或?qū)?shù)刻度格式下10個以上等級的LED顯示。根據(jù) LM3914的數(shù)據(jù)手冊,可以將多個3914級聯(lián),從而獲得10個以上LED的顯示(參考文獻(xiàn)1),但即使這么做,LM3914也只能線性顯示輸入電壓。(編輯注:美國國家半導(dǎo)體還提供 LM3915,這是一款對數(shù)型3dB步長版,而LM3916適于音頻應(yīng)用,以音量單位顯示輸入。)
本應(yīng)用的要求超出LM3914提供的靈活性,使用一個基于Atmel AVR系列ATTiny13微控制器電路,其具有1kB程序存儲器、一個四通道10位ADC,以及6個通用I/O 口。調(diào)整電路固件就可以實(shí)現(xiàn)0~5V輸入電壓范圍內(nèi)的線性或?qū)?shù)型轉(zhuǎn)換。
圖1中電路以20個LED連續(xù)顯示輸入電壓。當(dāng)開關(guān)S1關(guān)閉時,將顯示凍結(jié)在其后電流水平的讀數(shù)上。微控制器6個I/O口中的5個控制著所有20個LED和開關(guān)。剩下的I/O口配置成ADC輸入通道,接收模擬輸入電壓。微控制器采用 Charlieplexing的方法(這是一種用I/O口線驅(qū)動多達(dá)N×(N-1)個LED的方法),只用5個I/O口就可以驅(qū)動20個 LED(參考文獻(xiàn)2 ~ 4)。

固件用C語言編寫,并用AVR-GCC編譯,這是Windows和Linux版本下C和匯編編譯器的免費(fèi)軟件。它使用可自由運(yùn) 行在中斷驅(qū)動模式的Tiny13的內(nèi)部10位ADC,將模擬輸入電壓轉(zhuǎn)換成數(shù)字量。每次轉(zhuǎn)換完成時,ADC 產(chǎn)生一個由子程序讀的中斷,這個中斷將 ADC轉(zhuǎn)換輸出結(jié)果保存在一個共享變量中。
為產(chǎn)生無閃爍的顯示,一個內(nèi)部定時器由9.6MHz系統(tǒng)時鐘產(chǎn)生一個1875Hz的中斷,以大于90Hz的速率驅(qū)動多路LED。將ADC計數(shù)值除以一個常數(shù)得到輸入電壓的線性顯示。用查找表衡量ADC計數(shù)產(chǎn)生對數(shù)顯示。圖2表示確定該查找表值的對數(shù)轉(zhuǎn)換曲線。用于線性和對數(shù)顯示的 ATTiny13控制程序版本都可從本設(shè)計實(shí)例處下載。可對源代碼做修改,而只顯示0V~5V輸入電壓中的某個子區(qū)間。例如,可以設(shè)定1V~3V為線性顯示范圍,或2V ~ 3V輸入電壓為對數(shù)顯示。

|