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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

17、on 串行口控制寄存器通常在芯片或設備中為了監(jiān)視或控制接口狀態(tài),都會引用到接口控制寄存器。scon 就是51 芯片的串行口控制寄存器。它的尋址地址是98h,是一個可以位尋址的寄存器,作用就是監(jiān)視和控制51 芯片串行口的工作狀態(tài)。51 芯片的串口可以工作在幾個不同的工作模式下,其工作模式的設置就是使用scon 寄存器。它的各個位的具體定義如下:sm0 sm1 sm2 ren tb8 rb8 ti rism0、sm1 為串行口工作模式設置位,這樣兩位可以對應進行四種模式的設置。串行口工作模式設置。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,其它的模式也就一一略過,有興趣的朋友可以找相關的硬件資料查看。表中的fosc 代表振蕩器的頻率,也就是晶振的頻率。uart 為(universal asynchronous receiver)的英文縮寫。sm2 在模式2、模式3 中為多處理機通信使能位。在模式0 中要求該位為0。rem 為允許接收位,rem 置1 時串口允許接收,置0 時禁止接收。rem 是由軟件置位或清零。如果在一個電路中接收和發(fā)送引腳p3.0,p3.1 都和上位機相連,在軟件上有串口中斷處理程序,當要求在處

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

37、8h時,該延時子程序調用一次為320ms; r2為10h時,該延時子程序調用一次為640ms;3.3 時間調整子程序流程圖 每位燈亮時間的長短,是通過外中斷1外接按鍵s3來實現,r2的初始值為10h(16d),當按鍵s3每按下一次(下降沿),r2的值除以2,若為00h,r2重新賦10h。這樣得到r2的值分別是10h,08h,04h,02h,01h。這些值決定調用40ms子程序的次數。框圖如下 3.4狀態(tài)調整子程序流程圖 狀態(tài)值的調整時通過外中斷0外接按鍵s2來實現,r1的初始值為00h,當按鍵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 movx

溫馨提示

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

評論

0/150

提交評論