您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子元器件>發(fā)光二極管>

1路模擬輸出 - DAC0832實(shí)現(xiàn)LED亮度控制系統(tǒng)

2011年10月12日 17:47 本站整理 作者:李永,李芙玲 用戶評(píng)論(0
關(guān)鍵字:led(642741)DAC0832(31983)
DAC0832只有1路模擬輸出,必須采用分時(shí)控制的方式循環(huán)控制三個(gè)發(fā)光二極管的亮度,實(shí)現(xiàn)接通某一個(gè)LED 時(shí),其它LED 保持要原有亮度不能熄滅,為了達(dá)到這個(gè)目的,這里采用了運(yùn)算放大器接成電壓跟隨器的形式控制LED的亮度,即多路電子開(kāi)關(guān)的每個(gè)輸出與發(fā)光二極管間都接一個(gè)電壓跟隨器,而且在運(yùn)算放大器的正向輸入端接了一個(gè)保持電容,使輸入電壓能夠保持一段時(shí)間,其接線如下:

  

?

  由于運(yùn)算放大器的輸入阻抗很大,所以Ch2上的電壓能夠保持一段時(shí)間,在數(shù)模轉(zhuǎn)換器輸出電壓控制其它發(fā)光二極管期間,該運(yùn)算放大器的輸出電壓能夠保持不變。

  裝置硬件原理圖如圖5。

  

?

  2 軟件設(shè)計(jì)

  軟件主要完成兩個(gè)功能, 第一, 完成各個(gè)LED的循環(huán)點(diǎn)亮; 第二,通過(guò)程序控制各個(gè)LED亮度的變化。本例中要實(shí)現(xiàn)燈光旋轉(zhuǎn)的效果,所以每個(gè)LED都按三角波的型式亮度變化,先逐漸變亮,達(dá)到最亮?xí)r再由最亮逐漸變暗,如此反復(fù)進(jìn)行;三個(gè)LED的亮度變化要有一個(gè)時(shí)差,如果一個(gè)LED從暗到亮再到暗作為一個(gè)周期的話,則D2比D1 滯后1/3 周期, D3 比D2 滯后1/3 個(gè)周期。

  2.1 主程序設(shè)計(jì)

  使各個(gè)LED循環(huán)點(diǎn)亮通過(guò)主程序循環(huán)實(shí)現(xiàn),將表示三個(gè)LED亮度的三個(gè)數(shù)據(jù)放到連續(xù)的三個(gè)RAM單元30H、31H、32H中,主程序中循環(huán)讀取這三個(gè)單元的數(shù)據(jù)送到DAC0832 轉(zhuǎn)換,根據(jù)30H、31H、32H中數(shù)值的不同,轉(zhuǎn)換輸出的模擬電壓也不同,單片機(jī)控制多路電子開(kāi)關(guān)將不同的模擬電壓送給不同的LED,從而實(shí)現(xiàn)各個(gè)LED具有不同的亮度。由于本例中用P2口控制ADC0832的選通和電子開(kāi)關(guān)的選通,根據(jù)原理圖接線可知,點(diǎn)亮發(fā)光二極管D0、D1、D2對(duì)應(yīng)的P2口數(shù)據(jù)分別為00H、01H、02H。

  2.2 中斷程序設(shè)計(jì)

  控制LED亮度變化通過(guò)定時(shí)器T0定時(shí)中斷程序?qū)崿F(xiàn), T0中斷改變30H、31H和32H的數(shù)值就可以改變LED 亮度了,若實(shí)現(xiàn)燈光旋轉(zhuǎn)的效果,則三個(gè)LED的亮度應(yīng)按圖6曲線變化。

  

?

  圖中橫坐標(biāo)表示時(shí)間,在一個(gè)周期內(nèi)發(fā)光二極管的亮度會(huì)按三角形規(guī)律變化,設(shè)每個(gè)變化周期為T,第二個(gè)發(fā)光二極管D1的變化滯后第一個(gè)發(fā)光二極管D0三分之一周期,同樣D2滯后D1三分之一周期。

  圖6中的橫坐標(biāo)表示亮度,也就是對(duì)應(yīng)的要轉(zhuǎn)換成模擬量的數(shù)字量的數(shù)值。在主程序中三個(gè)字節(jié)30H、31H、32H中數(shù)值對(duì)應(yīng)三個(gè)發(fā)光二極管的亮度,設(shè)定三個(gè)字節(jié)33H、34H和35H 的值控制三個(gè)二極管亮度增加還是減弱( 1 增強(qiáng), 0 減弱) 。假設(shè)開(kāi)始時(shí)D1對(duì)應(yīng)亮度為0,D0、D2對(duì)應(yīng)亮度均為170,則三個(gè)二極管的亮度變化應(yīng)該是D0和D2亮度增加,D2亮度減弱,則三個(gè)亮度控制字節(jié)的值分別為33H、35H中為1, 35H中為0。

  采用T0中斷實(shí)現(xiàn)三個(gè)發(fā)光二極管亮度的改變,則每到一次定時(shí)中斷將完成如下功能:

  1) 根據(jù)三個(gè)字節(jié)33H、34H和35H的值,分別對(duì)30H、31H和32H的值進(jìn)行增1或減1操作。

  2) 當(dāng)亮度字節(jié)的數(shù)值增加到255時(shí)對(duì)應(yīng)控制字節(jié)數(shù)值清零,亮度字節(jié)數(shù)值減到0時(shí),對(duì)應(yīng)控制字節(jié)數(shù)值置1。

  由于在主程序中和中斷子程序同時(shí)使用工作寄存器R0,所以在中斷程序的開(kāi)始和結(jié)束有一個(gè)保存和恢復(fù)R0中數(shù)值的過(guò)程。

  

非常好我支持^.^

(5) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:小蘭 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?