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