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

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

|