基于單片機(jī)的LED流水燈設(shè)計_第1頁
基于單片機(jī)的LED流水燈設(shè)計_第2頁
基于單片機(jī)的LED流水燈設(shè)計_第3頁
基于單片機(jī)的LED流水燈設(shè)計_第4頁
基于單片機(jī)的LED流水燈設(shè)計_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于單片機(jī)的LED流水燈設(shè)計基于單片機(jī)的LED流水燈設(shè)計基于單片機(jī)的LED流水燈設(shè)計基于單片機(jī)的LED流水燈設(shè)計設(shè)計任務(wù)1掌握MCS-51系列8051、8255的最小電路及外圍擴(kuò)展電路的設(shè)計方法2了解單片機(jī)數(shù)據(jù)轉(zhuǎn)換功能及工作過程

3設(shè)計LED流水燈系統(tǒng),實現(xiàn)8個LED霓虹燈的左、右循環(huán)顯示4完成主要功能模塊的硬件電路設(shè)計5用proteus軟件完成原理電路圖的繪制一

設(shè)計方法

本課題使用AT89C51單片機(jī)時無須外擴(kuò)存儲器。因此,本流水燈實際上就就是一個帶有八個發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路與必要的軟件組成的單個單片機(jī)。

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第1頁。如果要讓接在P1、0口的LED1亮起來,那么只要把P1、0口的電平變?yōu)榈碗娖骄涂梢粤?相反,如果要接在P1、0口的LED1熄滅,就要把P1、0口的電平變?yōu)楦唠娖?同理,接在P1、1~P1、7口的其她7個LED的點亮與熄滅的方法同LED1。因此,要實現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1~LED8依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。

由于人眼的視覺暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應(yīng)該延時一段時間,否則我們就瞧不到“流水”效果了?;趩纹瑱C(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第1頁。二方案論證與比較

2、1循環(huán)移位法

在上個程序中我們就是逐個控制P1端口的每個位來實現(xiàn)的,因此程序顯得有點復(fù)雜,下面我們利用循環(huán)移位指令,采用循環(huán)程序結(jié)構(gòu)進(jìn)行編程。我們在程序一開始就給P1口送一個數(shù),這個數(shù)本身就讓P1、0先低,其她位為高,然后延時一段時間,再讓這個數(shù)據(jù)向高位移動,然后再輸出至P1口,這樣就實現(xiàn)“流水”效果啦。由于8051系列單片機(jī)的指令中只有對累加器ACC中數(shù)據(jù)左移或右移的指令,因此實際編程中我們應(yīng)把需移動的數(shù)據(jù)先放到ACC中,讓其移動,然后將ACC移動后的數(shù)據(jù)再轉(zhuǎn)送到P1口,這樣同樣可以實現(xiàn)“流水”效果。具體編程如下所示,程序結(jié)構(gòu)確實簡單了很多。

2、2查表法

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第2頁。

上面的兩個程序都就是比較簡單的流水燈程序,“流水”花樣只能實現(xiàn)單一的“從左到右”流方式。運(yùn)用查表法所編寫的流水燈程序,能夠?qū)崿F(xiàn)任意方式流水,而且流水花樣無限,只要更改流水花樣數(shù)據(jù)表的流水?dāng)?shù)據(jù)就可以隨意添加或改變流水花樣,真正實現(xiàn)隨心所欲的流水燈效果。我們首先把要顯示流水花樣的數(shù)據(jù)建在一個以TAB為標(biāo)號的數(shù)據(jù)表中,然后通過查表指令“MOVC

A,@A+DPTR”把數(shù)據(jù)取到累加器A中,然后再送到P1口進(jìn)行顯示。具體源程序如下,TAB標(biāo)號處的數(shù)據(jù)表可以根據(jù)實現(xiàn)效果的要求任意修改。

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第2頁。2、3位控法

這就是一種比較笨但又最易理解的方法,采用順序程序結(jié)構(gòu),用位指令控制P1口的每一個位輸出高低電平,從而來控制相應(yīng)LED燈的亮滅。

本次實驗我們采用的就是查表法與循環(huán)移位法,這兩個方法要比位控法要復(fù)雜些,但就是程序要簡略的多三硬件設(shè)計1單片機(jī)時鐘電路

時鐘電路用于產(chǎn)生單片機(jī)工作所需要的時鐘信號,單片機(jī)本身就就是一個復(fù)雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴(yán)格地按時序進(jìn)行工作?;趩纹瑱C(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第3頁。在MCS-51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳X1,輸出端為引腳X2,在芯片的外部跨接晶體振蕩器與微調(diào)電容,形成反饋電路,就構(gòu)成了一個穩(wěn)定的自激振蕩器。

此電路采用12MHz的石英晶體。時鐘電路如下圖:基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第3頁。

2復(fù)位電路電阻的作用就是用于上電復(fù)位的,VCC以上電,由于電容兩端電壓不能突變,所以RST上為高電平,然后電容放電,RST就為低電平了,還可以用手動復(fù)位,此電路應(yīng)用自動復(fù)位。

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第4頁?;趩纹瑱C(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第4頁。3工作電路

工作電路就就是根據(jù)總的電路的指令,來反應(yīng)工作情況。本電路的流水燈電路具體的如下:根據(jù)各個模塊的功能及她們的信號傳輸,連接電路如下:基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第5頁?;趩纹瑱C(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第5頁。四軟件設(shè)計匯編語言與C語言的特點及選擇

本設(shè)計就是硬件電路與軟件編程相結(jié)合的設(shè)計方案,選擇合適的編程語言就是一個重要的環(huán)節(jié)。在單片機(jī)的應(yīng)用系統(tǒng)程序設(shè)計時,常用的就是匯編語言與C語言。機(jī)硬件,程序可讀性與可移植性比較差。而C語言雖然執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便,靈活,運(yùn)算豐富,表達(dá)化類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語句,程序設(shè)計自由度大,有很好的可重用性,可移植性等特點。在本設(shè)計中采用C語言編寫軟件程序。C語言程序設(shè)計特殊功能寄存器P0一共八位,因此P0寄存器可一次存放一字節(jié)數(shù)據(jù),寄存器的每位的輸出對應(yīng)P0、0~P0、7引腳,其中P0、0為P0的低位引腳,P0、7為高位引腳。P0引腳輸出高低電平與寄存器P0存放數(shù)據(jù)一致,如程序中,P0

=

0x01時,則只有P0、0輸出高電平,其它引腳輸出低電平。為了實現(xiàn)流水燈效果,程序設(shè)計讓P0的八個引腳依次輸出高電平即可。如先讓P0

=

0x01,LED1點亮,然后讓P0

=

0x02,LED2點亮,依次往下操作,P0

=

0x80時,LED8被點亮。每次點亮一只LED后,通過延時函數(shù)調(diào)整下一個LED被點亮的時間間隔。程序清單如下#include<reg51、h>基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第6頁。/*延時函數(shù)*/基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第6頁。voiddelay(unsignedintx){while(x--);}/*主函數(shù)*/voidmain(void){P0=0x01;delay(30000);P0=0x02;delay(30000);P0=0x04;delay(30000);P0=0x08;delay(30000);P0=0x10;delay(30000);P0=0x20;delay(30000);P0=0x40;delay(30000);P0=0x80;delay(30000);}通過電路仿真,LED可以實現(xiàn)從右到左的一次點亮,但此程序瞧起來很笨,并且功能單一,我們可以考慮采用數(shù)組實現(xiàn),如把P0的八個取值放在一個數(shù)組里,這樣就可以通過數(shù)組取值達(dá)到LED流水燈顯示效果。程序修改為:

/*預(yù)處理*/

#include<reg51、h>

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第7頁。unsigned

char

code

LED[]

=

{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

/*延時函數(shù)*/

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第7頁。void

delay(unsigned

int

x)

{

while(x--);

}

/*主函數(shù)*/

void

main(void)

{

while(1)

{

P0

=

LED[i];

delay(30000);

i++;

if(i

>=

9)i

=

0;

}

}

該程序與原程序仿真運(yùn)行結(jié)果就是一樣的,但利用數(shù)組精簡了程序的冗余項,更加符合軟件的編程思想。

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第8頁。五

軟件調(diào)試

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第8頁。軟件調(diào)試一般分為以下四個階段:1、

編寫程序并查錯;2、在匯編語言的編譯系統(tǒng)中編譯源程序3、對程序進(jìn)行編譯連接,并及時發(fā)現(xiàn)程序中存在的錯誤;4、改正錯誤。

在軟件調(diào)試過程中,對出現(xiàn)的錯誤進(jìn)行了認(rèn)真的分析與修改,多次調(diào)試成功后,能夠很好的達(dá)到既定的設(shè)計效果。

六運(yùn)行結(jié)果如下基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第9頁。Led燈從左至右依次熄滅基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第9頁。七體會1通過本次的實驗,熟悉keil仿真軟件、proteus仿真軟件的使用。了解并熟悉單片機(jī)I/O口與LED燈電路結(jié)構(gòu),學(xué)會構(gòu)建簡單的流水燈電路。掌握C51中單片機(jī)I/O口的編程方法與使用I/O口進(jìn)行輸入輸出的注意事項。2最開始從課題的選擇,計算器的設(shè)計、硬件與軟件系統(tǒng)的設(shè)計、到最后的Proteus軟件仿真完成,這其中經(jīng)歷了很多困難,但就是更重要的就是在這個過程中我得到了很大的鍛煉。通過C51單片機(jī)等一些器件的設(shè)計讓我學(xué)習(xí)與掌握了單片機(jī)技術(shù)的基礎(chǔ)知識與技術(shù)要點,也使現(xiàn)在正在學(xué)的很多知識都得到了運(yùn)用。

基于單片機(jī)的LED流水燈設(shè)計全文共11頁,當(dāng)前為第10頁。3對于這次單片機(jī)課程設(shè)計不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上沒有學(xué)到過的知識,掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡單的編程。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合就是很重要的,只有理論知識就是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,從而提高自己的實際動手能力與獨立思考的能力。同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,例如對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,學(xué)習(xí)了單片機(jī)C語言?;趩纹瑱C(jī)的LED流水燈設(shè)計全文共11頁,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論