畢業(yè)設(shè)計(jì)(論文)可控多顯示智能節(jié)日彩燈系統(tǒng)基于51單片機(jī)的32路流水燈_第1頁
畢業(yè)設(shè)計(jì)(論文)可控多顯示智能節(jié)日彩燈系統(tǒng)基于51單片機(jī)的32路流水燈_第2頁
畢業(yè)設(shè)計(jì)(論文)可控多顯示智能節(jié)日彩燈系統(tǒng)基于51單片機(jī)的32路流水燈_第3頁
畢業(yè)設(shè)計(jì)(論文)可控多顯示智能節(jié)日彩燈系統(tǒng)基于51單片機(jī)的32路流水燈_第4頁
畢業(yè)設(shè)計(jì)(論文)可控多顯示智能節(jié)日彩燈系統(tǒng)基于51單片機(jī)的32路流水燈_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、_ 大 學(xué)畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)(論文)題目: 可控多顯示智能節(jié)日彩燈系統(tǒng)系 別: 電子工程系 1專 業(yè): 應(yīng)用電子技術(shù) 1班 級: 1姓 名: 1學(xué) 號: 1指導(dǎo)教師: 完成時(shí)間: 年月 目錄摘要3關(guān)鍵字4第一章 課題概述41.1 課題簡介41.2 設(shè)計(jì)任務(wù)4 1.3 系統(tǒng)的主要功能4 1.4 流水燈的5種狀態(tài)5 1.5流水燈的工作流程5第二章 硬件電路的設(shè)計(jì)52.1芯片的選擇52.2 晶振電路的設(shè)計(jì)122.3 顯示電路的設(shè)計(jì)122.4 輸入電路的設(shè)計(jì)142.5復(fù)位電路的設(shè)計(jì)142.6 擴(kuò)展電路的設(shè)計(jì)15 2.7 74ls373譯碼電路的設(shè)計(jì)16 2.8原理圖17第三章 軟件系統(tǒng)的設(shè)計(jì)18 3

2、.1 主程序的程序流程圖18 3.2 40ms延時(shí)子程序設(shè)計(jì)183.3 時(shí)間調(diào)整子程序流程圖193.4狀態(tài)調(diào)整子程序流程圖下203.5 匯編語言程序20第四章 系統(tǒng)仿真28proteus軟件簡介28第五章 畢業(yè)設(shè)計(jì)總結(jié) 29 心得體會 29附錄311、參考文獻(xiàn)312、元器件清單323、電路原理圖33可控多顯示智能節(jié)日彩燈系統(tǒng) -基于51單片機(jī)的32路流水燈【摘要】科技發(fā)展日新月異,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未見的速度被單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動控制的核心就是單片

3、機(jī)。有關(guān)led技術(shù)領(lǐng)域的發(fā)展,如今的led已經(jīng)成為了顯示領(lǐng)域的熱門關(guān)鍵詞,優(yōu)越的技術(shù)特性和下降的成本讓它的普及之路越發(fā)光明,商業(yè)展示、體育場館、戶外廣告乃至日常應(yīng)用都將成為led設(shè)備展示自己的舞臺。本設(shè)計(jì)是利用at89c51單片機(jī)及外圍接口實(shí)現(xiàn)的32路流水燈顯示系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器的定時(shí)和計(jì)數(shù)的原理,將軟件和硬件有機(jī)的結(jié)合起來,使得系統(tǒng)能夠正確的進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確的狀態(tài),用開關(guān)做鍵盤輸出,led燈顯示使系統(tǒng)能夠?qū)崿F(xiàn)32路流水燈的幾種種不同的顯示狀態(tài)。【關(guān)鍵詞】 單片機(jī),自動化,智能控制,led, 流水燈第一章 課題概述1.1課題簡介早期單片機(jī)開發(fā)人員就是使用人工編寫的二

4、進(jìn)制代碼交給單片機(jī)去工作的。今天,我們不必用煩人的二進(jìn)制去編寫程序,完全可以將我們?nèi)菀桌斫獾摹俺绦蛘Z言”通過“翻譯”軟件“翻譯”成單片機(jī)所需的二進(jìn)制代碼,然后交給單片機(jī)去執(zhí)行。這里的“程序語言”目前主要有匯編語言和c語言兩種;在這里我們所說的“翻譯”軟件,同行們都叫它為“編譯器”,將“程序語言”通過編譯器產(chǎn)生單片機(jī)的二進(jìn)制代碼的過程叫編譯。我們將流水燈實(shí)驗(yàn)寫為匯編語言程序。 單片機(jī)的應(yīng)用系統(tǒng)由硬件和軟件組成,硬件原理圖搭建完成上電之后,我們還不能看到流水燈循環(huán)點(diǎn)亮的現(xiàn)象,我們還需要告訴單片機(jī)怎么來進(jìn)行工作,即編寫程序控制單片機(jī)管腳電平的高低變化,來實(shí)現(xiàn)發(fā)光二極管的一亮一滅。使系統(tǒng)能夠?qū)崿F(xiàn):32

5、路流水燈4種不同的顯示狀態(tài)。1.2設(shè)計(jì)任務(wù)每當(dāng)夜幕降臨,我們可以看到大街各式各樣廣告牌上漂亮的霓虹燈,看起來令人賞心悅目,為夜幕中的城市增添了不少亮麗色彩。其實(shí)這些霓虹燈的工作原理和單片機(jī)流水燈是一樣的,只不過霓虹燈的花樣更多,看起來更漂亮一些。本課題詳細(xì)地介紹了一種由at89c51集成塊編程實(shí)現(xiàn)的控制電路,它完成了單片機(jī)流水燈控制功能,并給出了具體的硬件電路和相應(yīng)的程序。通過這次設(shè)計(jì)掌握51單片機(jī)的原理, 鞏固已學(xué)的理論知識,建立單片機(jī)理論和實(shí)踐的結(jié)合。1.3系統(tǒng)的主要功能 本系統(tǒng)是利用單片機(jī)采用模塊化設(shè)計(jì)的32路流水燈,p0,p2口作為輸出口,控制32個(gè)led燈,p1口作為led數(shù)碼管顯示

6、輸出,用于顯示流水燈的5個(gè)狀態(tài),p3.2,p3.3外接兩個(gè)按鍵s2,s3,其中s2調(diào)整功能,s3調(diào)整時(shí)間。 1.4流水燈的5種的狀態(tài)狀態(tài)0:數(shù)碼管顯示0,燈不亮。狀態(tài)1: 數(shù)碼管顯示1,燈一位暗點(diǎn)左移32次,再一位亮點(diǎn)右移32次,依次循環(huán)。狀態(tài)2:數(shù)碼管顯示2,先pb,pa口依次向右移動,pc,pa2依次向左移動;再pa,pb口依次向左移動,pa2,pc口依次向右移動。狀態(tài)3:數(shù)碼管顯示3,燈2位點(diǎn)亮左移31次,再右移31次,依次循環(huán)狀態(tài)4:數(shù)碼管顯示4,循環(huán)上述狀態(tài)1到狀態(tài)3。1.5流水燈的工作流程流水燈的工基本作原理:在系統(tǒng)運(yùn)行過程中,主要是通過外接的2個(gè)按鍵來分別改變顯示狀態(tài)和控制led

7、燈點(diǎn)亮的速度,2個(gè)按鍵在使用時(shí),設(shè)定為下降沿觸發(fā),當(dāng)有按鍵按下,響應(yīng)中斷一次。第二章 硬件電路的設(shè)計(jì)2.1芯片的選擇(簡介)芯片的選擇按照單片機(jī)系統(tǒng)擴(kuò)展與系統(tǒng)配置狀況,單片機(jī)應(yīng)用系統(tǒng)可分為最小系統(tǒng)、最小功耗系統(tǒng)及典型系統(tǒng)等。at89c51簡介:at89c51單片機(jī)是美國atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī),具有豐富的內(nèi)部資源:4kb閃存、128bram、32根i/o口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、5個(gè)向量兩級中斷結(jié)構(gòu)、2個(gè)全雙工的串行口,具有4.255.50v的電壓工作范圍和024mhz工作頻率。是一種帶4k字節(jié)閃存可編程可擦除只讀存儲器(fperomflash program

8、mable and erasable read only memory)的低電壓、高性能cmos 8位微處理器, at89c2051是一種帶2k字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個(gè)芯片中,atmel的at89c51是一種高效微控制器,at89c2051是它的一種精簡版本。at89c單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖所示主要特性:與mcs-51 兼容4k字節(jié)可編

9、程閃爍存儲器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時(shí)間:10年全靜態(tài)工作:0hz-24mhz三級程序存儲器鎖定1288位內(nèi)部ram32可編程i/o線兩個(gè)16位定時(shí)器/計(jì)數(shù)器5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路管腳說明:vcc:供電電壓。gnd:接地。p0口:p0口為一個(gè)8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p0口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。p1口:p1口是一個(gè)內(nèi)部提供上拉電阻

10、的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)

11、據(jù)存儲器進(jìn)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3口也可作為at89c51的一些特殊功能口,如下表所示:口管腳 備選功能p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 /int0(外部中斷0)p3.3 /int1(外部中斷1)p3.4 t0(記時(shí)器0外部輸入)p3.5 t1(記時(shí)器1外部輸入

12、)p3.6 /wr(外部數(shù)據(jù)存儲器寫選通)p3.7 /rd(外部數(shù)據(jù)存儲器讀選通)p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。ale/prog:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行mov

13、x,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。/psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/psen信號將不出現(xiàn)。/ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。xt

14、al2:來自反向振蕩器的輸出。振蕩器特性:xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號要通過一個(gè)二分頻觸發(fā)器,因此對外部時(shí)鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。芯片擦除:整個(gè)perom陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號組合,并保持ale管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,at89c51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩

15、種軟件可選的掉電模式。在閑置模式下,cpu停止工作。但ram,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存ram的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。串口通訊單片機(jī)的結(jié)構(gòu)和特殊寄存器,這是你編寫軟件的關(guān)鍵。至于串口通信需要用到那些特殊功能寄存器呢,它們是scon,tcon,tmod,scon等,各代表什么含義呢?sbuf數(shù)據(jù)緩沖寄存器這是一個(gè)可以直接尋址的串行口專用寄存器。有朋友這樣問起過“為何在串行口收發(fā)中,都只是使用到同一個(gè)寄存器sbuf?而不是收發(fā)各用一個(gè)寄存器。”實(shí)際上sbuf 包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它

16、們都共同使用同一個(gè)尋址地址99h。cpu 在讀sbuf 時(shí)會指到接收寄存器,在寫時(shí)會指到發(fā)送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒有及時(shí)的被響應(yīng),數(shù)據(jù)沒有被取走,下一幀數(shù)據(jù)已到來,而造成的數(shù)據(jù)重疊問題。發(fā)送器則不需要用到雙緩沖,一般情況下我們在寫發(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。操作sbuf寄存器的方法則很簡單,只要把這個(gè)99h 地址用關(guān)鍵字sfr定義為一個(gè)變量就可以對其進(jìn)行讀寫操作了,如sfr sbuf = 0x99;當(dāng)然你也可以用其它的名稱。通常在標(biāo)準(zhǔn)的reg51.h 或at89x51.h 等頭文件中已對其做了定義,只要用#include 引用就可以了。sc

17、on 串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會引用到接口控制寄存器。scon 就是51 芯片的串行口控制寄存器。它的尋址地址是98h,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制51 芯片串行口的工作狀態(tài)。51 芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用scon 寄存器。它的各個(gè)位的具體定義如下:sm0 sm1 sm2 ren tb8 rb8 ti rism0、sm1 為串行口工作模式設(shè)置位,這樣兩位可以對應(yīng)進(jìn)行四種模式的設(shè)置。串行口工作模式設(shè)置。sm0 sm1 模式 功能波特率0 0 0 同步移位寄存器 fosc/120 1 1 8位uart 可

18、變1 0 2 9位uart fosc/32 或fosc/641 1 3 9位uart 可變在這里只說明最常用的模式1,其它的模式也就一一略過,有興趣的朋友可以找相關(guān)的硬件資料查看。表中的fosc 代表振蕩器的頻率,也就是晶振的頻率。uart 為(universal asynchronous receiver)的英文縮寫。sm2 在模式2、模式3 中為多處理機(jī)通信使能位。在模式0 中要求該位為0。rem 為允許接收位,rem 置1 時(shí)串口允許接收,置0 時(shí)禁止接收。rem 是由軟件置位或清零。如果在一個(gè)電路中接收和發(fā)送引腳p3.0,p3.1 都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處

19、理某個(gè)子程序時(shí)不允許串口被上位機(jī)來的控制字符產(chǎn)生中斷,那么可以在這個(gè)子程序的開始處加入rem=0 來禁止接收,在子程序結(jié)束處加入rem=1 再次打開串口接收。大家也可以用上面的實(shí)際源碼加入rem=0 來進(jìn)行實(shí)驗(yàn)。tb8 發(fā)送數(shù)據(jù)位8,在模式2 和3 是要發(fā)送的第9 位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機(jī)通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。rb8 接收數(shù)據(jù)位8,在模式2 和3 是已接收數(shù)據(jù)的第9 位。該位可能是奇偶位,地址/數(shù)據(jù)標(biāo)識位。在模式0 中,rb8 為保留位沒有被使用。在模式1 中,當(dāng)sm2=0,rb8 是已接收數(shù)據(jù)的停止位。ti 發(fā)送中斷標(biāo)

20、識位。在模式0,發(fā)送完第8 位數(shù)據(jù)時(shí),由硬件置位。其它模式中則是在發(fā)送停止位之初,由硬件置位。ti 置位后,申請中斷,cpu 響應(yīng)中斷后,發(fā)送下一幀數(shù)據(jù)。在任何模式下,ti 都必須由軟件來清除,也就是說在數(shù)據(jù)寫入到sbuf 后,硬件發(fā)送數(shù)據(jù),中斷響應(yīng)(如中斷打開),這時(shí)ti=1,表明發(fā)送已完成,ti 不會由硬件清除,所以這時(shí)必須用軟件對其清零。ri 接收中斷標(biāo)識位。在模式0,接收第8 位結(jié)束時(shí),由硬件置位。其它模式中則是在接收停止位的半中間,由硬件置位。ri=1,申請中斷,要求cpu 取走數(shù)據(jù)。但在模式1 中,sm2=1時(shí),當(dāng)未收到有效的停止位,則不會對ri 置位。同樣ri 也必須要靠軟件清除

21、。常用的串口模式1 是傳輸10 個(gè)位的,1 位起始位為0,8 位數(shù)據(jù)位,低位在先,1 位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1 或定時(shí)器2 的定時(shí)值(溢出速率)。at89c51 和at89c2051 等51 系列芯片只有兩個(gè)定時(shí)器,定時(shí)器0 和定時(shí)器1,而定時(shí)器2是89c52 系列芯片才有的。波特率在使用串口做通訊時(shí),一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)牟ㄌ匚粩?shù)。有一些初學(xué)的朋友認(rèn)為波特率是指每秒傳輸?shù)淖止?jié)數(shù),如標(biāo)準(zhǔn)9600 會被誤認(rèn)為每秒種可以傳送9600個(gè)字節(jié),而實(shí)際上它是指每秒可以傳送9600 個(gè)二進(jìn)

22、位,而一個(gè)字節(jié)要8 個(gè)二進(jìn)位,如用串口模式1 來傳輸那么加上起始位和停止位,每個(gè)數(shù)據(jù)字節(jié)就要占用10 個(gè)二進(jìn)位,9600 波特率用模式1 傳輸時(shí),每秒傳輸?shù)淖止?jié)數(shù)是960010960 字節(jié)。51 芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12m 的晶振來計(jì)算,那么它的波特率可以達(dá)到1m。模式2 的波特率是固定在fosc/64 或fosc/32,具體用那一種就取決于pcon 寄存器中的smod位,如smod 為0,波特率為focs/64,smod 為1,波特率為focs/32。模式1 和模式3 的波特率是可變的,取決于定時(shí)器1 或2(52 芯片)的溢出速率。那么我們怎么去計(jì)算

23、這兩個(gè)模式的波特率設(shè)置時(shí)相關(guān)的寄存器的值呢?可以用以下的公式去計(jì)算。波特率(2smod32)定時(shí)器1 溢出速率上式中如設(shè)置了pcon 寄存器中的smod 位為1 時(shí)就可以把波特率提升2 倍。通常會使用定時(shí)器1 工作在定時(shí)器工作模式2 下,這時(shí)定時(shí)值中的tl1 做為計(jì)數(shù),th1 做為自動重裝值 ,這個(gè)定時(shí)模式下,定時(shí)器溢出后,th1 的值會自動裝載到tl1,再次開始計(jì)數(shù),這樣可以不用軟件去干預(yù),使得定時(shí)更準(zhǔn)確。在這個(gè)定時(shí)模式2 下定時(shí)器1 溢出速率的計(jì)算公式如下:溢出速率(計(jì)數(shù)速率)/(256th1)上式中的“計(jì)數(shù)速率”與所使用的晶體振蕩器頻率有關(guān),在51 芯片中定時(shí)器啟動后會在每一個(gè)機(jī)器周期使

24、定時(shí)寄存器th 的值增加一,一個(gè)機(jī)器周期等于十二個(gè)振蕩周期,所以可以得知51 芯片的計(jì)數(shù)速率為晶體振蕩器頻率的1/12,一個(gè)12m 的晶振用在51 芯片上,那么51 的計(jì)數(shù)速率就為1m。通常用11.0592m 晶體是為了得到標(biāo)準(zhǔn)的無誤差的波特率,那么為何呢?計(jì)算一下就知道了。如我們要得到9600 的波特率,晶振為11.0592m 和12m,定時(shí)器1 為模式2,smod 設(shè)為1,分別看看那所要求的th1 為何值。代入公式:11.0592m9600(232)(11.0592m/12)/(256-th1)th125012m9600(232)(12m/12)/(256-th1)th1249.49上面的

25、計(jì)算可以看出使用12m 晶體的時(shí)候計(jì)算出來的th1 不為整數(shù),而th1 的值只能取整數(shù),這樣它就會有一定的誤差存在不能產(chǎn)生精確的9600 波特率。當(dāng)然一定的誤差是可以在使用中被接受的,就算使用11.0592m 的晶體振蕩器也會因晶體本身所存在的誤差使波特率產(chǎn)生誤差,但晶體本身的誤差對波特率的影響是十分之小的,可以忽略不計(jì)。at89c51單片機(jī)是美國atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī),具有豐富的內(nèi)部資源:4kb閃存、128bram、32根i/o口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、5個(gè)向量兩級中斷結(jié)構(gòu)、2個(gè)全雙工的串行口,具有4.255.50v的電壓工作范圍和024mhz工作頻率,使

26、用at89c51單片機(jī)時(shí)無須外擴(kuò)存儲器。因此,本流水燈實(shí)際上就是一個(gè)帶有32個(gè)發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成的單個(gè)單片機(jī)。單片機(jī)內(nèi)部最核心的部分是cpu,cpu主要功能是產(chǎn)生各種控制信號,控制存儲器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算以及位操作處理等,cpu按期功能可分為運(yùn)算器和控制器兩部分??刂破饔沙绦蛴?jì)數(shù)器 pc、指令存儲器、指令譯碼器、實(shí)時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進(jìn)行譯碼,通過實(shí)時(shí)控制電路在規(guī)定的時(shí)刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號,是各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。

27、運(yùn)算器由累加器acc、程序狀態(tài)字寄存器psw、bcd碼運(yùn)算調(diào)整電路等組成。為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個(gè)通用寄存器b和一些專用寄存器,還增加了位處理邏輯電路的功能。2.2 晶振電路的設(shè)計(jì)單片機(jī)必須在時(shí)鐘的驅(qū)動下才能工作,單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外界一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號送到單片機(jī)內(nèi)部的各個(gè)單元,為整個(gè)系統(tǒng)提供一個(gè)時(shí)間基準(zhǔn),根據(jù)硬件電路的的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式,本設(shè)計(jì)采用內(nèi)部始終方式,時(shí)鐘電路如圖所示:選用石英晶體振蕩器,其振蕩頻率主要由石英晶振的頻率決定,電路中兩個(gè)電容c1、c2的作用有

28、兩個(gè):一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。典型值為20pf。時(shí)鐘周期是指單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接的送至內(nèi)部控制邏輯單元的時(shí)鐘信號的周期。其大小是時(shí)鐘信號頻率的倒數(shù),用fosc表示,圖中時(shí)鐘頻率為12mhz,即fosc=1/12 us2.3顯示電路的設(shè)計(jì) 32個(gè)led燈的顯示早在幾年以前l(fā)ed就以低功耗、超常使用壽命被廣泛應(yīng)用到信號指示、數(shù)碼顯示等弱電領(lǐng)域,如今超高亮led的研制成功,才使它越來越多的用在戶外招牌、彩燈裝飾、甚至照明領(lǐng)域。目前大部分的指示燈及部分原來使用霓虹燈等裝飾照明的已經(jīng)改用了。 同時(shí),隨著城市夜景亮化的擴(kuò)大,尤其國家倡導(dǎo)大力發(fā)展環(huán)保節(jié)能的綠色照

29、明后,具有非常廣闊的市場。普通的led發(fā)光二極管發(fā)光時(shí)的壓降位1.8v,發(fā)光電流為3-12ma,故限流電阻取300歐姆,如下圖所示1位的七段數(shù)碼管本次設(shè)計(jì)采用1位七段數(shù)碼管顯示,顯示方式有兩種:一種是靜態(tài)顯示,一種是動態(tài)顯示。靜態(tài)顯示的特點(diǎn)是顯示效果穩(wěn)定不閃爍,程序編寫簡單,但占用端口資源多;動態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,相對于靜態(tài)顯示而言占用端口資源較少,在本次設(shè)計(jì)中考慮到實(shí)際情況采用靜態(tài)方式,顯示電路如圖所示:因?yàn)椴捎玫氖枪碴柦臃ǖ乃奈粩?shù)碼管所以低電平才能點(diǎn)亮,在編寫程序時(shí)送0才能亮2.4 輸入電路的設(shè)計(jì)本設(shè)計(jì)采用獨(dú)立式鍵盤的方法,有2個(gè)控制按鍵,如圖所示: 在單片機(jī)應(yīng)

30、用中鍵盤用得最多的形式是獨(dú)立式鍵盤和行列式鍵盤,各有自己的特點(diǎn)。獨(dú)立式鍵盤硬件電路簡單,在程序設(shè)計(jì)上也不復(fù)雜,一般用在對硬件電路要求不高的電路中;行列式鍵盤在硬件電路上比獨(dú)立式鍵盤復(fù)雜的多,二屆在程序算法上也比較繁瑣,但是在節(jié)省端口資源上有優(yōu)勢,更適用于多按鍵電路。2.5復(fù)位電路的設(shè)計(jì)為確保微機(jī)系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分,復(fù)位電路的第一功能是上電復(fù)位。一般微機(jī)電路正常工作需要供電電源為5v5%,即4.755.25v。由于微機(jī)電路是時(shí)序數(shù)字電路,它需要穩(wěn)定的時(shí)鐘信號,因此在電源上電時(shí),只有當(dāng)vcc超過4.75v低于5.25v以及晶體振蕩器穩(wěn)定工作時(shí),復(fù)位信號才被撤除,微機(jī)

31、電路開始正常工作。目前為止,單片機(jī)復(fù)位電路主要有四種類型:(1)微分型復(fù)位電路;(2)積分型復(fù)位電路;(3)比較器型復(fù)位電路;(4)看門狗型復(fù)位電路。 isa總線的復(fù)位信號到南橋之間會有一個(gè)非門,跟隨器或電子開關(guān),常態(tài)時(shí)為低電平,復(fù)位時(shí)為高電平。ide的復(fù)位和isa總線正好相反,通常兩者之間會有一個(gè)非門或是一個(gè)反向電子開關(guān),也就是說ide常態(tài)時(shí)為高電平,復(fù)位時(shí)為低電平,這里的高電平為5v或3.3v,低電平為0.5v以下的電位。復(fù)位時(shí)計(jì)算機(jī)的一個(gè)重要工作狀態(tài),以便中央處理器cpu和其他功能部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。單片機(jī)的復(fù)位引腳rst為第9引腳,只要將該引腳連續(xù)保持兩

32、個(gè)機(jī)器周期以上的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),電路如圖所示:由于單片機(jī)是高電平復(fù)位,所以當(dāng)按鍵按下時(shí),單片機(jī)的9腳reset管腳處于高電平,此時(shí)單片機(jī)處于復(fù)位狀態(tài)。在設(shè)計(jì)中由于存在倒計(jì)時(shí)時(shí)間的記憶功能還是用到了軟復(fù)位,就是當(dāng)程序執(zhí)行完畢后將程序指針通過一條跳轉(zhuǎn)指令跳到程序執(zhí)行的的起始地址。 2.6擴(kuò)展電路的設(shè)計(jì) 本次設(shè)計(jì)采用了2片8255擴(kuò)展口芯片,8255是一種可編程的并行i/o口接口芯片,它的內(nèi)部由端口、端口控制電路、數(shù)據(jù)總線緩沖器、讀/寫控制邏輯電路組成。該芯片的外部接口部分有3個(gè)8位并行i/o口,即a口、b口、c口,可由編程器決定這3個(gè)端口的功能。a組和b

33、組的控制電路合在一起構(gòu)成一個(gè)8位控制寄存器,每組控制電路既接受來自讀/寫控制邏輯電路的讀/寫命令,也從數(shù)據(jù)線接受來自cpu的控制字,并發(fā)出相應(yīng)的命令到各自管理的外設(shè)備接口通道,或?qū)Χ丝赾按位清0,置1。通,也也從數(shù)據(jù)線接受來自cpu的控制字,并發(fā)出過對8255可編程的并行i/o接口芯片和80c51單片機(jī)的可編程實(shí)現(xiàn)流水燈的正向逐個(gè)點(diǎn)亮,反向逐個(gè)點(diǎn)亮,間隔逐個(gè)點(diǎn)亮等。一位8255擴(kuò)展口芯片可擴(kuò)展24個(gè)口,故總共可以擴(kuò)展48個(gè)口,但本次只采用了32個(gè)口,如下圖所示2.7 74ls373譯碼電路的設(shè)計(jì)首先說74ls373不是單片機(jī),而是一個(gè)邏輯芯片,看下面:74ls373是常用的地址鎖存器芯片,它實(shí)

34、質(zhì)是一個(gè)是帶三態(tài)緩沖輸出的8d觸發(fā)器,在單片機(jī)系統(tǒng)中為了擴(kuò)展外部存儲器,通常需要一塊74ls373芯片。(1).1腳是輸出使能(oe),是低電平有效,當(dāng)1腳是高電平時(shí),不管輸入3、4、7、8、13、14、17、18如何,也不管11腳(鎖存控制端,g)如何,輸出2(q0)、5(q1)、6(q2)、9(q3)、12(q4)、15(q5)、16(q6)、19(q7)全部呈現(xiàn)高阻狀態(tài)(或者叫浮空狀態(tài));(2).當(dāng)1腳是低電平時(shí),只要11腳(鎖存控制端,g)上出現(xiàn)一個(gè)下降沿,輸出2(q0)、5(q1)、6(q2)、9(q3)、12(q4)、15(q5)、16(q6)、19(q7)立即呈現(xiàn)輸入腳3、4、7

35、、8、13、14、17、18的狀態(tài). 鎖存端le 由高變低時(shí),輸出端8 位信息被鎖存,直到le 端再次有效。 當(dāng)三態(tài)門使能信號oe為低電平時(shí),三態(tài)門導(dǎo)通,允許q0q7輸出,oe為高電平時(shí),輸出懸空。當(dāng)74ls373用作地址鎖存器時(shí),應(yīng)使oe為低電平,此時(shí)鎖存使能端c為高電平時(shí),輸出q0q7 狀態(tài)與輸入端d1d7狀態(tài)相同;當(dāng)c發(fā)生負(fù)的跳變時(shí),輸入端d0d7 數(shù)據(jù)鎖入q0q7。51單片機(jī)的ale信號可以直接與74ls373的c連接。 2.8原理圖第三章軟件系統(tǒng)的設(shè)計(jì) 3.1 主程序的程序流程圖 主程序的功能是各功能單元的初始化,再根據(jù)r1的值,分別去執(zhí)行8個(gè)燈亮的狀態(tài),利用散轉(zhuǎn)指令 jmp a+d

36、ptr 和轉(zhuǎn)移指令 ljmp 或ajmp 來實(shí)現(xiàn)??驁D如下說明:r1中的值由按鍵s3按下的次數(shù)決定,范圍是00h04h共5個(gè)狀態(tài) 3.2 40ms延時(shí)子程序設(shè)計(jì)如下del: mov 20h, r2 ;時(shí)鐘頻率為6mhz mov r4, 20h del1: mov r5, #40 del2: mov r6, #250 del3: djnz r6, del3 djnz r5, del2 djnz r4,del1 ret延時(shí)子程序調(diào)用說明: r2為01h時(shí),該延時(shí)子程序調(diào)用一次為40ms; r2為02h時(shí),該延時(shí)子程序調(diào)用一次為80ms; r2為04h時(shí),該延時(shí)子程序調(diào)用一次為160ms; r2為0

37、8h時(shí),該延時(shí)子程序調(diào)用一次為320ms; r2為10h時(shí),該延時(shí)子程序調(diào)用一次為640ms;3.3 時(shí)間調(diào)整子程序流程圖 每位燈亮?xí)r間的長短,是通過外中斷1外接按鍵s3來實(shí)現(xiàn),r2的初始值為10h(16d),當(dāng)按鍵s3每按下一次(下降沿),r2的值除以2,若為00h,r2重新賦10h。這樣得到r2的值分別是10h,08h,04h,02h,01h。這些值決定調(diào)用40ms子程序的次數(shù)??驁D如下 3.4狀態(tài)調(diào)整子程序流程圖 狀態(tài)值的調(diào)整時(shí)通過外中斷0外接按鍵s2來實(shí)現(xiàn),r1的初始值為00h,當(dāng)按鍵s2每按下一次(下降沿),r1的值加1,并向p1口送顯示的字型碼,若超出08h,r1重新賦00h??驁D

38、如下:3.5匯編語言程序 - 34 -org 0000h ljmp main0 org 0003h ljmp int0s org 0013h ljmp int1s org 0030h main0: mov r1,#00h mov r2, #10h mov ie, #85h mov ip, #01h mov tcon, #05h mov dptr, #7fffh mov a, #80h movx dptr, a mov dptr, #0ffffh movx dptr, a mov a,#00h mov dptr,#0fffch movx dptr,a mov r6,#3 mov dptr,#7f

39、fch loop0:movx dptr,a inc dptr djnz r6,loop0 mov p1,#00h lcall del lcall del lcall del lcall del mov a,#0ffh mov dptr ,#0fffch movx dptr,a mov dptr,#7ffch mov r6,#3 loop1:movx dptr,a inc dptr djnz r6,loop1 mov p1,#0c0h main: mov a,r1 rl a mov dptr,#table jmp a+dptr table:ajmp tab0 ajmp tab1 ajmp tab

40、2 ajmp tab3 ajmp tab4 ajmp main tab0:lcall del sjmp main tab1:lcall ml10 sjmp main tab2:lcall ml20 sjmp main tab3:lcall ml30 sjmp main tab4:lcall ml10 lcall ml20 lcall ml30 sjmp main sjmp main ml10:mov r7,#08h mov a,#00h mov dptr,#0fffch movx dptr,a mov dptr,#7ffch mov r6,#3 loop3:movx dptr,a inc dp

41、tr djnz r6,loop3 mov a,#01h mov dptr,#7ffch ml21:movx dptr,a lcall del rl a djnz r7,ml21 mov a,#00h movx dptr,a mov r7,#08h mov a,#01h inc dptr ml22:movx dptr,a lcall del rl a djnz r7,ml22 mov a,#00h movx dptr,a mov r7,#08h mov a,#01h inc dptr ml23:movx dptr,a lcall del rl a djnz r7,ml23 mov a,#00h

42、movx dptr,a mov r7,#08h mov a,#01h mov dptr,#0fffch ml24:movx dptr,a lcall del rl a djnz r7,ml24 mov a,#00h movx dptr,a mov r7,#08h mov a,#80h ml25:movx dptr,a lcall del rr a djnz r7,ml25 mov a,#00h movx dptr,a mov r7,#08h mov a,#80h mov dptr,#7ffeh ml26:movx dptr,a lcall del rr a djnz r7,ml26 mov a

43、,#00h movx dptr,a mov r7,#08h mov a,#80h mov dptr,#7ffdh ml27: movx dptr,a lcall del rr a djnz r7,ml27 mov a,#00h movx dptr,a mov r7,#08h mov a,#80h mov dptr,#7ffch ml28: movx dptr,a lcall del rr a djnz r7,ml28 mov a,#00h movx dptr,a ret ml20: mov r7,#08h mov a,#0ffh mov dptr,#0fffch movx dptr,a mov

44、 dptr,#7ffch mov r6,#3 loop5: movx dptr,a inc dptr djnz r6,loop5 mov 30h,#0feh mov 32h,#7fh ml41: mov a,30h mov dptr,#7ffeh movx dptr,a rl a mov 30h, a mov a,32h mov dptr,#7ffdh movx dptr,a rr a mov 32h,a lcall del djnz r7,ml41 mov a,#0ffh movx dptr,a mov dptr,#7ffeh movx dptr,a mov r7,#08h mov 30h,

45、#0feh mov 32h,#7fh ml42: mov a,30h mov dptr,#0fffch movx dptr,a rl a mov 30h,a mov a,32h mov dptr,#7ffch movx dptr,a rr a mov 32h,a lcall del djnz r7,ml42 mov a,#0ffh movx dptr,a mov dptr,#0fffch movx dptr,a mov r7,#08h mov 30h,#7fh mov 32h,#0feh ml43: mov a,30h mov dptr,#0fffch movx dptr,a rr a mov 30h,a mov a,32h mov dptr,#7ffch movx dptr,a rl a mov 32h,a lcall del djnz r7,ml43 mov a,#0ffh mov

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論