利用單片計(jì)算機(jī)實(shí)現(xiàn)彩燈控制
(作者未知) 2010/3/21
利用單片計(jì)算機(jī)實(shí)現(xiàn)彩燈控制
1設(shè)計(jì)要求
利用彩燈的各種閃爍的變換作為裝飾在生活中處處都能夠看到。彩燈的閃爍變換可以用簡(jiǎn)易的數(shù)字電路等來(lái)實(shí)現(xiàn),在學(xué)習(xí)了單片計(jì)算機(jī)之后試著利用單片機(jī)的功能來(lái)控制其閃爍變換。
2硬件設(shè)計(jì)方案
電路元器件:面包板;
普通的發(fā)光二極管,導(dǎo)通電壓0.5V;
芯片插座;
晶振;
時(shí)鐘電容:22pF*2;
限流電阻:220Ω*8
限流電阻:1K*1;
復(fù)位電路電容:30uF;
點(diǎn)觸式開(kāi)關(guān):1;
2.1 二極管發(fā)光的實(shí)現(xiàn)
由于單片機(jī)P1.口的輸出電流僅有十幾到幾十uF,這樣小的電流不能使發(fā)光二極管發(fā)光,于是采用了“灌電流”的方法,如圖1所示——
圖1 二極管發(fā)光的實(shí)現(xiàn)
選用的外加電源Vcc=5V,根據(jù)二極管的導(dǎo)通電壓是0.5V的性質(zhì),可以求的限流電阻的阻值,在實(shí)驗(yàn)中選用220Ω的電阻即可。
2.2時(shí)鐘電路的組成
在實(shí)驗(yàn)用采用了12M的晶振,與之配合使用的是22pF的陶瓷電容。如圖2所示
圖2 時(shí)鐘電路的組成
2.3 復(fù)位電路的設(shè)計(jì)
所謂復(fù)位,就是在單片機(jī)MPU的RESET引腳上出現(xiàn)3-5個(gè)時(shí)鐘周期的高電平。當(dāng)MPU被復(fù)位以后,其內(nèi)部的寄存器的各項(xiàng)數(shù)值將會(huì)被恢復(fù)成硬件電路規(guī)定的初值。
復(fù)位有上電復(fù)位和自動(dòng)復(fù)位兩種,根據(jù)實(shí)際用途的需要,在本實(shí)驗(yàn)中采用的上電復(fù)位,如圖3所示——
圖3 復(fù)位電路的組成
2.4 硬件電路其他部分的安排
考慮到本實(shí)驗(yàn)的特點(diǎn),MPU的EA/VPP引腳,即程序存儲(chǔ)器選擇信號(hào)端和編程電源輸入端不能懸空,應(yīng)長(zhǎng)置為“1”,這點(diǎn)在芯片插座引腳和外電路的連接上可以體現(xiàn)出來(lái)。
2.5 整體的電路圖
綜上,可以得到總體上的電路原理圖。
3軟件實(shí)現(xiàn)
人眼能看到發(fā)光二極管的閃爍是因?yàn)槠溟W爍的時(shí)間間隔大于一個(gè)特定的值,低于這個(gè)值我們將無(wú)法看到其閃爍變換,為此,確定二極管的閃爍間隔為0.2s 。這種延時(shí)的功能可以用調(diào)用延時(shí)子程序或者中段服務(wù)程序來(lái)實(shí)現(xiàn)。以下討論兩種方法及其實(shí)現(xiàn):
3.1延時(shí)子程序?qū)崿F(xiàn)延時(shí)
單片計(jì)算機(jī)運(yùn)行每條程序?qū)⒄加?個(gè)、2個(gè)或4個(gè)機(jī)器周期。為此,可以用一定數(shù)量的程序的執(zhí)行來(lái)實(shí)現(xiàn)延時(shí)。
總延時(shí) ,其中N為指令總數(shù),t為一個(gè)周期的時(shí)間。
以下是延時(shí)程序的代碼——
ORG 0000H
AJMP START
ORG 0040H
START:MOV P1,#0FFH ;燈全滅
LCALL DELAY ;調(diào)用延時(shí)子程序
MOV P1,#000H ;燈全亮
LCALL DELAY
MOV P1,#0FFH ;等全滅
LCALL DELAY
MOV P1,#07EH ;第8、第1燈亮
LCALL DELAY
MOV P1,#03CH ;第7、8,第1、2燈亮
DALAY:MOV R5,#20 ;延時(shí)子程序,延時(shí)0.2s
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
3.2中斷實(shí)現(xiàn)延時(shí)的程序
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP INT0
ORG 0030H
MAIN:MOV P1,#03CH ;第7、8和第1、2燈亮
MOV R7,#00H
MOV TMOD,#010H
MOV TL0,(未完,下一頁(yè))
|