本課以AT89S51單片機(jī)最小系統(tǒng)來教你如何實(shí)現(xiàn)單片機(jī)編程,該程序驅(qū)動(dòng)單片機(jī)P1.7端口上的發(fā)光二極管不停閃爍,系統(tǒng)程序用keil 匯編語(yǔ)言編寫,電路參考下圖1所示。
首先來認(rèn)識(shí)一下發(fā)光二極管(LED),發(fā)光二極管實(shí)物如下圖2所示,發(fā)光二極管具有單項(xiàng)導(dǎo)電,體積小、耗電省、壽命長(zhǎng)、響應(yīng)速度快、顯示清晰等特點(diǎn),廣泛用于電子電路中當(dāng)作LED數(shù)碼管、LED指示燈、LED電子顯示屏,既然是51單片機(jī)最小系統(tǒng)我們當(dāng)然只進(jìn)行了最簡(jiǎn)單的電路設(shè)計(jì)與編程
圖2: 《發(fā)光二極管介紹》 |
發(fā)光二極管導(dǎo)通時(shí),產(chǎn)生一個(gè)正向的工作電流IF,工作電流根據(jù)發(fā)光二極管的材料、功率等不同,額定電流一般在10~40mA左右,發(fā)光二極管導(dǎo)通時(shí)的正向壓降VF比較大,一般為1.5~3V(普通硅二極管約為0.7V)。因此在正常使用中,為了保證發(fā)光二極管在電源電壓V的作用下管子的工作電流不超過額定值,必須給發(fā)光二極管串聯(lián)一只限流電阻R,R的阻值可由下式算出:R=(V-VF)/IF。其中V為工作電源電壓,VF為發(fā)光二極管的正向壓降,IF為額定工作電流。
從上面原理圖1可知,當(dāng)單片機(jī)的P1.7輸出低電平(0V)時(shí),有正向工作電流流過發(fā)光二極管,發(fā)光二極管就亮;相反,當(dāng)P1.7輸出高電平(5V)時(shí),發(fā)光二極管沒有足夠電壓差產(chǎn)生工作電流,此時(shí)發(fā)光二極管不亮。因此,程序中只需交替讓單片機(jī)的P1.7輸出低電平“0”和高電平“1”就可以讓發(fā)光二極管閃爍發(fā)光。
下面以51單片機(jī)匯編語(yǔ)言來編程,讓某個(gè)端口輸出高電平語(yǔ)句是SETB,讓端口輸出低電平的語(yǔ)句是CLR語(yǔ)句,讓P1.7端口輸出高電平的語(yǔ)句是: SETBP1.7; 讓P1.7端口輸出低電平的語(yǔ)句是: CLRP1.7,實(shí)現(xiàn)發(fā)光二極管LED閃爍的編程思路如下圖3所示。
圖3: 《51單片機(jī)最小系統(tǒng)原理編程框圖》 |
完整的源程序如下:
;******** 51單片機(jī)最小系統(tǒng)原理及編程電路設(shè)計(jì)主程序 ********
MAIN: CLRP1.7;主程序開始,P1.7輸出低電平"0",讓點(diǎn)亮發(fā)光二極管
ACALLDELAY ;調(diào)用延時(shí)子程序延時(shí)一段時(shí)間,讓發(fā)光二極管亮一段時(shí)間
SETB P1.7;P1.7輸出高電平"1",熄滅發(fā)光二極管
ACALLDELAY ;調(diào)用延時(shí)子程序延時(shí)一段時(shí)間,讓發(fā)光二極管熄滅一段時(shí)間
AJMP MAIN;跳轉(zhuǎn)到程序開頭重復(fù)執(zhí)行
;******** 下面是延時(shí)子程序 ********
DELAY:MOVR7,#255
Y1: MOVR6,#255
DJNZ R6,$
DJNZ R7,Y1
RET;延時(shí)子程序返回
END;程序結(jié)束
啟動(dòng)“Keil uVision2”單片機(jī)集成開發(fā)環(huán)境,如沒有請(qǐng)?jiān)龠@里下載 keil下載 建立一個(gè)新工程,輸入上面的源程序,最后編譯得到一個(gè)lich1.hex目標(biāo)文件,用編程器把lich1.hex寫入單片機(jī)AT89S51中,插到實(shí)驗(yàn)板上就可以看到第一個(gè)程序的運(yùn)行效果了(P1.7端口的發(fā)光二極管不停閃爍)。這就是我們學(xué)習(xí)的第一個(gè)最簡(jiǎn)單的程序,是一個(gè)完整的單片機(jī)開發(fā)過程,再?gòu)?fù)雜龐大的程序都是由簡(jiǎn)單的語(yǔ)句、程序構(gòu)成的,希望該教程能給初學(xué)者對(duì)單片機(jī)開發(fā)有一個(gè)感性的認(rèn)識(shí)。不懂如何在Keil中編輯源程序的初學(xué)者請(qǐng)看 keil教程
圖4:ISP編程器將產(chǎn)生的目標(biāo)程序lich1.hex寫入AT89S51單片機(jī) |
圖5:?jiǎn)纹瑱C(jī)插入實(shí)驗(yàn)板上程序的運(yùn)行效果 |
單片機(jī)的學(xué)習(xí)是一個(gè)循序漸進(jìn)的過程,制作單片機(jī)最小系統(tǒng),并徹底了解其原理,能把你快速帶入單片機(jī)世界的大門,這只是一個(gè)最簡(jiǎn)單的制作,有什么問題請(qǐng)聯(lián)系我