基于DAC0832的LED亮度控制系統(tǒng)設(shè)計(jì)
圖中橫坐標(biāo)表示時(shí)間,在一個(gè)周期內(nèi)發(fā)光二極管的亮度會(huì)按三角形規(guī)律變化,設(shè)每個(gè)變化周期為T(mén),第二個(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ò)程。
中斷程序的程序框圖為:
即: TH0 = F0H, TL0 =BEH3
3 結(jié)語(yǔ)
文中設(shè)計(jì)了基于DAC0832實(shí)現(xiàn)對(duì)LED控制的系統(tǒng),在單片機(jī)的控制下,利用多路開(kāi)關(guān)和電壓保持電路實(shí)現(xiàn)了對(duì)多個(gè)發(fā)光二極管亮度的變化控制,實(shí)現(xiàn)了LED燈的燈光旋轉(zhuǎn)的效果。如果將此電路擴(kuò)展,接更多的模數(shù)轉(zhuǎn)換器和多路開(kāi)關(guān),就可以實(shí)現(xiàn)各種復(fù)雜圖案的變化。采用電壓保持電路的辦法也可以應(yīng)用到其它領(lǐng)域的模擬控制中。
評(píng)論