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

下載本文檔

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

文檔簡介

1、微機(jī)應(yīng)用系統(tǒng)設(shè)計與綜合實(shí)驗(yàn)(實(shí)踐)課程設(shè)計實(shí)驗(yàn)報告實(shí)驗(yàn)課題 LED霓虹燈設(shè)計 姓名 學(xué)號 班級 指導(dǎo)老師 目 錄第一章 設(shè)計概述31.1 設(shè)計任務(wù)31.2 設(shè)備器材3第二章 硬件設(shè)計方案32.1 設(shè)計思想32.2 硬件選擇42.3 AT89C52單片機(jī)介紹42.4 硬件邏輯圖72.5 設(shè)計連線82.6 仿真電路圖8第三章 軟件設(shè)計方案83.1 軟件設(shè)計思想83.2 程序流程圖9第四章 調(diào)試及運(yùn)行結(jié)果10第五章 設(shè)計心得與體會10參考資料11源程序清單11第一章 設(shè)計概述1.1 設(shè)計任務(wù)設(shè)計內(nèi)容:利用匯編語言(或C語言),實(shí)現(xiàn)8個單色LED燈的左、右循環(huán)顯示,并實(shí)現(xiàn)循環(huán)的速度可調(diào)。選用芯片: 8

2、255 等注:由于實(shí)驗(yàn)室的沒有提供8255芯片,所以改用單片機(jī)完成此實(shí)驗(yàn),并且添加了調(diào)節(jié)燈明暗的功能,以實(shí)現(xiàn)明暗可調(diào)。1.2 設(shè)備器材在本設(shè)計中,所用到的設(shè)備器材如下所示:(1)計算機(jī)一臺;(2)唐都儀器實(shí)驗(yàn)箱一臺;(3) AT89C52單片機(jī)一片;(4)導(dǎo)線若干。第二章 硬件設(shè)計方案2.1 設(shè)計思路本課題需要用按鈕開關(guān)實(shí)現(xiàn)流水燈的左右循環(huán)顯示、調(diào)速、控制亮度的功能??梢赃x用五個開關(guān)來實(shí)現(xiàn)這些操作。單片機(jī)正在軟件運(yùn)行下通過不斷掃描開關(guān)狀態(tài),來將相關(guān)操作對應(yīng)量送入單片機(jī)的輸入端口,然后判斷屬于哪一類操作。五個開關(guān)分別為K1,K2,K3,K4,K5,分別控制流水燈的調(diào)向、加速、減速、變亮、變暗。在

3、設(shè)計過程中,接開關(guān)的端口要全部保持高電平,當(dāng)按下一個開關(guān)時,輸入一個低電平,即為狀態(tài)改變信號。不能同時有兩個端口同為高電平。在設(shè)計中我主要負(fù)責(zé)了用云脈沖寬度調(diào)制(PWM)波控制LED燈的亮度環(huán)節(jié),開始對PWM并不是很了解,通過請教同學(xué)和查閱相關(guān)資料,漸漸明白了其中的原理。在主程序運(yùn)行時通過中斷方式調(diào)整其輸出電壓的占空比,從而改變燈泡的亮度。原理是這樣的,主程序的始終頻率和中斷的始終頻率并不相同,大約是中斷的一千倍,LED燈在移動時如果響應(yīng)了中斷,則在執(zhí)行中斷程序時,LED燈近似看做沒有移動,此時在中斷程序中設(shè)計一個初值和一個上限,當(dāng)計數(shù)到初值時置燈泡滅掉,在計數(shù)到上限之前小燈泡都是熄滅的,到達(dá)

4、上限后回0,并置燈泡為亮,繼續(xù)計數(shù),在到設(shè)定的初值時置小燈泡為滅掉。這樣在主程序的一個周期內(nèi),中斷程序?qū)⑿襞葜妹髦冒盗私磺Т危ㄟ^改變設(shè)定的初值可以改變小燈泡的亮度。2.2 硬件選擇本實(shí)驗(yàn)選用AT89C52單片機(jī)、五個按鍵開關(guān)和8個發(fā)光二極管。其中AT89C52為控制核心,當(dāng)5個開關(guān)的狀態(tài)改變時,單片機(jī)檢測到開關(guān)信號后就通過軟件輸出控制發(fā)光二極管。2.3 AT89C52單片機(jī)介紹AT89C52是一個低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技

5、術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強(qiáng)大的AT89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線。AT89C52的內(nèi)部結(jié)構(gòu)圖如下:引腳圖如下: 引腳功能說明:P0 口:P0 口是一組8 位漏極開路型雙向I/O 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8 個TTL邏輯門電路,對端口P0 寫“1”時,可作為高阻抗輸入端用。 訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組

6、口線分時轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 在Flash 編程時,P0 口接收指令字節(jié),而在程序校驗(yàn)時,輸出指令字節(jié),校驗(yàn)時,要求外接上拉電阻。 P1 口:P1 是一個帶內(nèi)部上拉電阻的8 位雙向I/O 口,P1 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX), 參

7、見表1。 Flash 編程和程序校驗(yàn)期間,P1 接收低8 位地址。 表.P1.0和P1.1的第二功能 引腳號功能特性P1.0T2,時鐘輸出P1.1T2EX(定時/計數(shù)器2) P2 口:P2 是一個帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL邏輯門電路。對端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR 指令)時,P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址

8、的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX RI 指令)時,P2 口輸出P2 鎖存器的內(nèi)容。 Flash 編程或校驗(yàn)時,P2亦接收高位地址和一些控制信號。 P3 口:P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對P3 口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能 。P3 口還接收一些用于Flash 閃速存儲器編程和程序校驗(yàn)的控制信號。 RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期

9、以上高電平將使單片機(jī)復(fù)位。 ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE 脈沖。 對Flash 存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE 禁止位

10、無效。 PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次PSEN 有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP:外部訪問允許。欲使CPU 僅訪問外部程序存儲器(地址為0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲器中的指令。 Flash 存儲器編程時,該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V 編

11、程電壓Vpp。 XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。2.4硬件連接框圖單片機(jī)從開關(guān)上提取不同輸入信號,進(jìn)行相應(yīng)的軟件操作,反映輸出在發(fā)光二極管上。開關(guān)輸入AT89C52單片機(jī)流水燈2.5設(shè)計連線本實(shí)驗(yàn)的連線為:開關(guān)使用唐都試驗(yàn)箱上的5個開關(guān),分別接到單片機(jī)的P2.0P2.4口,然后發(fā)光二極管分別接到單片機(jī)的P1.0P1.7口。2.6實(shí)驗(yàn)仿真電路圖第三章軟件設(shè)計方案3.1 軟件設(shè)計思想一個完整的系統(tǒng)僅有硬件是不夠的,還要有軟件的配合。軟件和硬件對一個系統(tǒng)來說都是不可或缺的。本實(shí)驗(yàn)采用C語言編程,在具體設(shè)計中,通過GetKey()函數(shù)來不

12、停的掃描開關(guān)的狀態(tài),通過KeyProcess()來確定輸入的信號,即按鍵的位置,從而執(zhí)行不同的子程序內(nèi)容,實(shí)現(xiàn)LED燈的控制。3.2程序流程圖第四章 調(diào)試及運(yùn)行結(jié)果通過設(shè)計和編寫程序代碼,講程序通過Keil軟件編譯后生成的hex文件寫進(jìn)AT89C52中,便可操作。為當(dāng)撥動相應(yīng)的開關(guān)時,看LED燈的變化。調(diào)試過程中問題很多,主要原因是對單片機(jī)結(jié)構(gòu)的不熟悉,其次就是程序中的一些問題。但通過努力,都被一一解決。實(shí)際接線前我們先用protues仿真了一下實(shí)驗(yàn)結(jié)果,確認(rèn)無誤后接線,這樣提高了調(diào)試的時間。第五章 心得體會經(jīng)過四次的上機(jī)課程設(shè)計,在我和*同學(xué)的共同努力下,順利的完成了任務(wù),并在其中體現(xiàn)了自己

13、的獨(dú)創(chuàng)部分。同時我感覺自己學(xué)到了很多。首先是要把理論和實(shí)際相結(jié)合起來,從理論中得出結(jié)論,然后再實(shí)踐,從而提高自己的實(shí)際動手能力和獨(dú)立思考問題的能力。在設(shè)計的過程中遇到了很多的問題,也發(fā)現(xiàn)了自己的不足之處。首先是之前對單片機(jī)并不十分了解,通過借閱書籍,找同學(xué)咨詢慢慢的開始對其有了初步的認(rèn)識。其次是一些相關(guān)軟件的用法,這個通過自己慢慢的摸索也逐漸熟悉了起來。特別是protues的使用,它給了我們很大的幫助,幫助我們解決了很多調(diào)試過程中的問題。在者是對PWM波的使用,這個問題很是傷到筋,因?yàn)橹皩ζ洳⒉涣私猓瑥氖煜さ绞褂梦覀儾殚喠撕芏噘Y料,請教了同學(xué),最后終于掌握了。同時也是設(shè)計更完善。此課程設(shè)計讓

14、我加深理解了所學(xué)的理論知識,并進(jìn)一步建立了計算機(jī)應(yīng)用系統(tǒng)的整體概念,初步掌握了單片機(jī)軟、硬件開發(fā)方法,為以后進(jìn)行實(shí)際的單片機(jī)軟、硬件應(yīng)用開發(fā)奠定了良好的基礎(chǔ)。這對下學(xué)期單片機(jī)的學(xué)習(xí)會有很大的幫助,也使我對單片機(jī)產(chǎn)生了興趣。這次課程設(shè)計的順利完成,離不開學(xué)長,同學(xué)和知道老師的幫助,特別是PWM波的運(yùn)用,也是學(xué)長給我們提出的建議。在此感謝老師和學(xué)長的無私幫助。附錄一 參考文獻(xiàn)1單片機(jī)原理及其接口技術(shù) 胡漢才 編著 北京:清華大學(xué)出版社2MCS-51單片機(jī)原理及應(yīng)用張毅剛 編著 哈爾濱:哈爾濱工業(yè)大學(xué)出版社351單片機(jī)C語言應(yīng)用程序設(shè)計 實(shí)例精講(第二版) 戴佳 劉博文 編著 電子工業(yè)出版社附錄一

15、C語言程序清單/*/* 程序名:可控流水燈*/* 功能:實(shí)現(xiàn)流水燈的方向、速度、亮度控制 */* 硬件:P2接開關(guān),P1接LED */*/#include<reg52.h>#include <intrins.h>sbit K1=P20; /方向sbit K2=P21; /加速sbit K3=P22; /減速sbit K4=P23; /加亮sbit K5=P24; /變暗unsigned char Speed,LED;unsigned int tCount=0;unsigned char Idx; /速度取值索引bit Dirtect=1; /滾動方向char duty=

16、10; /占空比unsigned int code sTable=0,1,3,7,9,15,30,50,100,200,230,280,300,350; /調(diào)速表void InitTimer0_Timer1(void);void delay(unsigned int x) unsigned char i; while(x-) for(i=0;i<20;i+);unsigned char GetKey(void) unsigned char K; if(P2=0xFF) return 0; delay(10); switch(P2) case 0xFE:K=1;break; case 0x

17、FD:K=2;break; case 0xFB:K=3;break; case 0xF7:K=4;break; case 0xEF:K=5;break; default: K=0;break; while(P2!=0xFF); /等待釋放按鍵 return K;void KeyProcess(unsigned char Key) switch(Key) case 1:Dirtect=Dirtect;break; /方向 case 2:if(Idx>1) Speed=sTable-Idx;break;/加速 case 3:if(Idx<15) Speed=sTable+Idx;bre

18、ak;/減速 case 4:duty+;if(duty>=20) duty=20;break; /加亮 case 5:duty-;if(duty<=0) duty=1; break; /變暗 void main(void) unsigned char Key; P1=P2=0xFF; Idx=4; Speed=sTableIdx;IP=0x02; /中斷優(yōu)先級 InitTimer0_Timer1(); LED = 0xfe; P1 = LED; while(1) Key=GetKey(); if(Key!=0) KeyProcess(Key); /*/* 定時器0和定時器1初始化 */*/void InitTimer0_Timer1(void) TMOD = 0x20; TH1 = 0x06; TL1 = 0x06; EA = 1; ET0 = 1; TR0 = 1

溫馨提示

  • 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

提交評論