




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 畢畢 業(yè)業(yè) 設(shè)設(shè) 計(論文)計(論文)題題 目目: 多變流水燈控制電路的設(shè)計多變流水燈控制電路的設(shè)計 學學 院:院:電氣與電子信息工程學院電氣與電子信息工程學院 專業(yè)名稱:專業(yè)名稱: 電氣自動化技術(shù)電氣自動化技術(shù) 學學 號:號: 05302201110530220111 2008 年年 5 月月 20 日日摘摘 要要本設(shè)計是一 led 流水燈的設(shè)計。整機以美國 atmel 公司生產(chǎn)的 40 腳單片機 at89c51 為核心,介紹了以它為控制系統(tǒng)的 led 燈的動態(tài)設(shè)計和開發(fā)過程。通過該芯片控制一個行 led 燈按一定順序亮,文中詳細介紹了 led 顯示的設(shè)計思路。單片機控制系統(tǒng)程序采用單片機
2、匯編語言進行編輯,通過編程控制各顯示點對應(yīng) led 陽極和陰極端的電平,就可以有效的控制各顯示點的亮滅。當然流水燈一般只是在用芯片做控制時起修飾作用,若只用單片機做流水燈,就不能很好體現(xiàn)單片機的強大功能。這里的流水燈只是單片機應(yīng)用中的最基礎(chǔ)的一方面。led 顯示以其組構(gòu)方式靈活、顯示穩(wěn)定、功耗低、壽命長、技術(shù)成熟、成本低廉等特點在車站、證券所、運動場館、交通干道及各種室內(nèi)/外顯示場合的信息發(fā)布,公益宣傳,環(huán)境參數(shù)實時,重大活動倒計時等等得到廣泛的應(yīng)用。經(jīng)實踐證明,該系統(tǒng)顯示誤差小,性能穩(wěn)定,結(jié)構(gòu)合理,擴展能力強。關(guān)鍵詞:匯編語言;at89c51 單片機;動態(tài)顯示;led abstractthi
3、s design is led flows the lantern floated down river the design. complete machine 40 foot monolithic integrated circuit at89c51 which produces by american atmel corporation is a core, introduced take it as the control system led lamp dynamic design and the performance history. controls a line of led
4、 lamp through this chip to be bright according to certain order, in the article in detail introduced the led demonstrationdesignmentality. the monolithic integrated circuit control system procedure uses the monolithic integrated circuit assembly language to carry on the edition, controls each demons
5、tration point correspondence led anode and the cloudy extreme level through the programming, may effective control each demonstration extinguish brightly. certainly flows the lantern floated down river only is generally when uses the chip makes the control the beautification function, if only uses t
6、he monolithic integrated circuit to do flows the lantern floated down river, cannot very good manifest the monolithic integrated circuit the formidable function.on the one hand here class lantern floated down river only is in the monolithic integrated circuit application most foundation. led demonst
7、rated by its fabric way nimble, the demonstration stable, the power loss low, the life long, the technology mature, the cost inexpensive and so on the characteristics in the station, the negotiable securities, the movement facility, in the transportation yang or male principle and each kind of room/
8、outside the demonstration situation information issued, public welfare propaganda, environment parameter real-time, moves the countdown and so on to obtain the widespread application significantly. after the practice proof, this system demonstration error is small, the performance is stable, the str
9、ucture is reasonable, expansion ability.key word:assembly language ;at89c51 monolithic integrated circuit;dynamic demonstration;led 目目 錄錄1 1 緒論1 12 整體設(shè)計描述. 321 需要體現(xiàn)功能與特點322 設(shè)計方案論證 33 電路的硬件設(shè)計 5 531 電源設(shè)計 532 單片機系統(tǒng)及外圍電路 6321 選用單片機.6322 at89c51 芯片介紹6323 單片機系統(tǒng)外圍電路94 程序設(shè)計.111141 用位控法的程序設(shè)計 1242 用循環(huán)位移法的程序設(shè)計
10、1443 用查表法的程序設(shè)計155 5 調(diào)整測試工作狀態(tài)191951 程序分析 19511 程序一19512 程序二.20513 軟件調(diào)試.226 工作性能分析2361 運行分析2362 性能分析24結(jié)論結(jié)論2525致謝致謝2626參考文獻2727附錄 128附錄 229附錄 3 30 附錄 4 311 1 緒緒 論論 單片機一詞最初源于“single chip microcomputer”,它忠實地反映了早期單片機的形態(tài)和本質(zhì)。隨后按照面向?qū)ο?,突出控制功能,在片?nèi)集成了許多外圍叫路及外設(shè)接口,突破了傳統(tǒng)意義的計算機結(jié)構(gòu),發(fā)展成 microcontroller 的體系結(jié)構(gòu),目前國外已普遍稱之
11、為微控制器 mcu(micro controller unit) 。鑒于它完全作為嵌入式微控制器。由于國內(nèi)對單片機一詞已約定成俗,因此仍沿用至今。但對“單片機”一詞的理解,不應(yīng)現(xiàn)限于“single chip microcomputer”,而應(yīng)接軌于國際上對單片機的標準稱呼“micro controller unit”(mcu) 。單片機的發(fā)展大致可分為四個階段:第一階段:單片機探索階段。以 intel 公司 mcs-48,motorola 公司 6801為代表,屬低檔型 8 位機。第二階段:單片機完善階段。以 intel 公司 mcs-51,motorola 公司68hc05 為代表,屬高檔型
12、 8 位機。此階段,8 位單片機體系進一步完善,特別是 mcs-51 系列單片機在世界和我國得到了廣泛的應(yīng)用,奠定了它在單片機領(lǐng)域的經(jīng)典地位,形成了事實上的 8 位單片機標準結(jié)構(gòu)。第三階段:8 位機和 16 位機爭艷階段,也是單片機向微控制器發(fā)展的階段。此階段 intel 公司推出了 16 位的 mcs-96 系列單片機,世界其他芯片制造商也紛紛推出了性能優(yōu)異的 16 位單片機,但由于價格不菲,其應(yīng)用面受到一定的限制。相反 mcs-51 系列單片機,由于其性能價格比高,卻得到了廣泛的應(yīng)用,并吸引了世界許多知名制造廠商,竟相使用以 80c51 為內(nèi)核,擴展部分測控系統(tǒng)中使用的電路技術(shù)、接口技術(shù)、
13、a/d、d/a 和看門狗等功能部件,推出了許多與 80c51 兼容的 8 位單片機。強化了微控制器的特征,進一步鞏固和發(fā)展了 8 位單片機的主流地位。第四階段:微控制器全面發(fā)展階段。隨著單片機在各個領(lǐng)域全面深入地發(fā)展和應(yīng)用,世界各大電氣、半導(dǎo)體廠商普遍投入,出現(xiàn)了高速、大尋址范圍、強運算能力的 8 位/16 位/32 位通用型單片機以及小型廉價的專用型單片機,百花齊放,全面發(fā)展,單片機已進入一個可廣泛選擇和全面發(fā)展的應(yīng)用時代。mcs-51 系列單片機最初是 hmos 制造工藝,其芯片根據(jù)片內(nèi) rom 結(jié)構(gòu)可分為 8031(片內(nèi)無 rom) ,8051(片內(nèi)有 4kb 掩膜 rom) ,8751
14、(片內(nèi)有4kb eprom) ,統(tǒng)稱為 51 系列單片機。其后又有增強型 52 系列,包括8032、8052、8752 等。hmos 工藝的缺點是功耗較大,隨著 cmos 工藝的發(fā)展,inter 公司生產(chǎn)了chmos 工藝的 80c51 芯片,大大降低了功耗,并引入了低功耗管理模式,使低功耗具在可控性。chmos 工藝的 80c51 芯片,根據(jù)片內(nèi) rom 結(jié)構(gòu),也有80c31、80c51、87c51 三種類型,引腳與 51 系列兼容,指令相同。隨后,intel 公司將 80c51 內(nèi)核使用權(quán)以專利互換或出售形式轉(zhuǎn)讓給世界許多著名 ic 制造廠商,如philips、nec、amd、dallas
15、、siemens、fujutsu、oki、華邦、lg 等。在保持與 80c51 單片機兼容的基礎(chǔ)上,這些公司融入了自身的優(yōu)勢,擴展了針對滿足不同測控對象要求的外圍電路。這樣,80c51 單片機就被眾多芯片制造廠商支持,成了事實上標準的 msu 芯片。 2 整體程序設(shè)計概述21 需要體現(xiàn)的功能與特點 利用 51 芯片和 led 燈設(shè)計一個流水燈電路,要求流水燈工作穩(wěn)定,有較好的視覺效果。要求用不同方案,實現(xiàn)同樣的功能,由淺入深,使這個系統(tǒng)既能實現(xiàn)單純的流水燈效果,又能實現(xiàn)稍微復(fù)雜的流水燈效果。雖然變化是無窮的,但要利用這個方案讓人們了解它所用到的各個部分工作原理。22 設(shè)計方案論證 由于用 51
16、 芯片控制一組 led 等,還有多余的 i/o 口空余,led 功率不大,不需要用驅(qū)動電路,只需要簡單的排布就可以。按照單片機系統(tǒng)擴展與系統(tǒng)配置狀況,單片機應(yīng)用系統(tǒng)可分為最小系統(tǒng)、最小功耗系統(tǒng)及典型系統(tǒng)等。at89c51 單片機是美國 atmel 公司生產(chǎn)的低電壓、高性能 cmos 8 位單片機,具有豐富的內(nèi)部資源:4kb 閃存、128bram、32 根 i/o 口線、2 個 16 位定時/計數(shù)器、5 個向量兩級中斷結(jié)構(gòu)、2個全雙工的串行口,具有 4.255.50v 的電壓工作范圍和 024mhz 工作頻率,使用 at89c51 單片機時無須外擴存儲器。因此,本流水燈實際上就是一個帶有八個發(fā)光
17、二極管的單片機最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成的單個單片機。其具體硬件組成如圖 2-1 所示。圖圖 2-12-1 硬件組成硬件組成3 3 電路的硬件設(shè)計3.1 電源設(shè)計穩(wěn)壓電源的功能是把來自電網(wǎng)的 220v 交流電壓轉(zhuǎn)變?yōu)樗璧?、穩(wěn)定的直流電壓。它由電源變壓器、整流電路、濾波電路和穩(wěn)壓電路四個部分組成,如圖 3-1 所示:u2-+u4u3u1圖 3-2 電源電路圖u1 u2 u3 u4 u5 o t o t o t o t o t變壓器整流電路濾波電路穩(wěn) 壓電路圖 3-1 穩(wěn)壓電源的組成框圖及工作過程t220v7.5vc3104c2104vin1gnd2v
18、out3ic1 7805r1100vcc1234d1bridgec11000ussw d2led根據(jù)要求所確定的穩(wěn)壓電源的電路形式如圖 3-2 所示。圖中變壓器 t 將來自電網(wǎng)的 220v 交流電壓變換為整流電路所需要的 7.5v 交流電壓,再經(jīng)整流電橋(4 個二極管)d1 將交流電壓變換成脈動的直流電壓,隨后電解電容器 c1將脈動直流電壓中的大部分紋波加以濾除,以得到較為平滑的直流電壓。為了得到改善的紋波電壓,再將直流電壓通過電容 c2,然后經(jīng)集成穩(wěn)壓器 ic1 穩(wěn)壓,在輸出端得到穩(wěn)定的 5v 直流電壓。這時,在輸出端接上電容 c3,用以濾除輸出端的高頻信號,改善負載的瞬態(tài)響應(yīng),最后即可得到
19、所需的、穩(wěn)定的直流電壓。電路最后接入的發(fā)光二極管用做電源指示燈。3.2 單片機系統(tǒng)及外圍電路3.2.13.2.1 單片機的選擇單片機的選擇單片機采用 89c51 或其兼容系列的芯片進行控制,它負責控制整個電路以及相應(yīng)的程序的運行、以及給屏體電路部分發(fā)送命令。這里我們選擇了內(nèi)含 4k字節(jié) flash 的 at89c51,因為我們只需要顯示特定的圖形和文字,無需龐大的字庫,因此 4k flash 已經(jīng)可以滿足字庫儲存的需求,不需要擴展外存儲器。3.2.2at89c513.2.2at89c51 芯片介紹芯片介紹at89c51 是美國 atmel 公司生產(chǎn)的 8 位 flash rom 單片機。其最突
20、出的優(yōu)點是片內(nèi) rom 為 flash rom,可擦寫 1000 次以上,應(yīng)用并不復(fù)雜的通用rom 寫入器就能方便的擦寫,讀取也很方便,價格低廉,具有在片程序 rom二級保密系統(tǒng)。因此可靈活應(yīng)用于各種控制領(lǐng)域。at89c51 包含以下一些功能部件:(1)一個 8 位 cpu ;(2)一個片內(nèi)振蕩器和時鐘電路;(3)4kb flash rom ;(4)128b 內(nèi) ram;(5)可尋址 64kb 的外 rom 和外 ram 控制電路;(6)兩個 16 位定時/計數(shù)器;(7)21 個特殊功能寄存器 ;(8)4 個 8 位并行 i/o 口;(9)一個可編程全雙工串行口 ;(10)5 個中斷源,可設(shè)置
21、成 2 個優(yōu)先級。at89c51 單片機一般采用雙列直插 dip 封裝,共 40 個引腳,圖 3-3 為其引腳排列圖。40 個引腳大致可分為 4 類:電源、時鐘、控制各 i/o 引腳。 一 電源vcc芯片電源,接+5v;gnd接地端。二 時鐘xtal1、xtal2晶體振蕩電路反相輸入端和輸出端。三 控制線控制線共有 4 根,其中 3 根是復(fù)用線。所謂復(fù)用線是指具有兩種功能,正常使用時是一種功能,在某種條件下是另一種功能。1ale/地址鎖存允許/片內(nèi) eprom 編程脈沖。prog(1)ale 功能:用來鎖存 p0 口送出的低八位地址。at89c51 在并行擴展外存儲器時,p0 口用于分時傳送低
22、 8 位地址和數(shù)據(jù)信號,且均為二進制數(shù)。當 ale 信號有效時,p0 口傳送的是低 8 位地址信號;ale 信號無效時,p0 口傳送的是低 8 位地址信號。在 ale 信號的下降沿,鎖定 p0 口傳送的內(nèi)容,即低 8 位地址信號。需要指出的是,當 cpu 不執(zhí)行訪問外 ram 指令,ale 以時鐘振蕩頻率1/6 的固定頻率輸出,因此 ale 信號也可作為外部芯片 clk 時鐘或其他需要。但是,當 cpu 執(zhí)行 movx 指令時,ale 將跳過一個 ale 脈沖。(2)功能:片內(nèi) eprom 的芯片,在 eprom 編程期間,此引腳輸prog圖 3-3 at89c51 引腳圖p1.01p1.12
23、p1.23p1.34p1.45p1.56p1.67p1.78rst /vpd9p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.5/t115p3.6/wr16p3.7/rd17xtal 218xtal 119gnd20p2.021p2.122p2.223p2.324p2.425p2.526p2.627p2.728psen29ale /prog30ea/vpp31p0.732p0.633p0.534p0.435p0.336p0.237p0.138p0.039vcc40u1at89c51入編程脈沖。2 外 rom 讀選通信號。psen89c
24、51 讀外 rom 時,每個機器周期內(nèi)兩次有效輸出。可作為psenpsen外 rom 芯片輸出允許的選通信號。在讀內(nèi) rom 或讀外 ram 時,oe無效。psen3rst/vpd復(fù)位/備用電源。(1)正常工作時,rst 端為復(fù)位信號輸入端,只要在該引腳上連續(xù)保持兩個機器周期以上高電平,at89c51 芯片即實現(xiàn)復(fù)位操作,復(fù)位后一切從頭開始,cpu 從 0000h 開始執(zhí)行指令。(2)vpd功能:在 vcc掉電情況下,該引腳可接上備用電源,由 vpd向片內(nèi) ram 供電,以保持片內(nèi) ram 中的數(shù)據(jù)不丟失。4/vpp內(nèi)外 rom 選擇/片內(nèi) eprom 編程電源。ea(1)功能:正常工作時,為
25、內(nèi)外 rom 選擇端。at89c51 單片機eaearom 尋址范圍為 64kb,其中 4kb 在片內(nèi),60kb 在片外。當保持高電平ea時,先訪問內(nèi) rom,但當 pc 值超過 4kb 時,將自動轉(zhuǎn)向執(zhí)行外 rom 中的程序。當保持低電平時,則只訪問外 rom,不管芯片內(nèi)有否內(nèi) rom。ea(2)vpp功能:片內(nèi)有 eprom 的芯片,在 eprom 編程期間,此引腳用于施加編程電源。四 i/o 引腳at89c51 有 p0、p1、p2、p3 4 個 8 位并行 i/o 端口,共 32 個引腳。p0 口是一組 8 位漏級開路型雙向 i/o 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能
26、以吸收電流的方式驅(qū)動 8 個 ttl 邏輯門電路,對端口寫 1時,又可作高阻抗輸入端用。在訪問外部程序和數(shù)據(jù)存儲器時,它是分時多路轉(zhuǎn)換的地址(低 8 位)/數(shù)據(jù)總線,在訪問期間激活了內(nèi)部的上拉電阻。在 flash編程時,p0 端口接收指令字節(jié);而在驗證程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。p1 口是帶內(nèi)部上拉電阻的雙向i/o口,向p1口寫入1時p1口被內(nèi)部上拉為高電平,可用作輸入口。當作為輸入腳時被外部信號拉低的p1口會因為內(nèi)部上拉而輸出一個電流。flash編程和程序校驗期間,p1接收低8位地址。p2 口是帶內(nèi)部上拉電阻的雙向i/o口,向p2口寫入1時p2口被內(nèi)部上拉為高電平可用作
27、輸入口,當作為輸入腳時被外部拉低的p2口會因為內(nèi)部上拉而輸出表 3-1 p3 各端口第二功能電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movx dptr指令)時,p2口送出高8位地址數(shù)據(jù),當使用8位尋址方式(movxri)訪問外部數(shù)據(jù)存儲器時,p2口發(fā)送p2特殊功能寄存器的內(nèi)容,在整個訪問期間不改變。flash編程和程序校驗時,p2也接收高位地址和一些控制信號。p3 口是帶內(nèi)部上拉電阻的雙向i/o口,向p3口寫入1時p3口被內(nèi)部上拉為高電平可用作輸入口,當作為輸入腳時被外部拉低的p3口會因為內(nèi)部上拉而輸出電流。p3口除了作為一般的i/o口線外,更重要的是它的第二功能,如表
28、3-1所示:端口引腳第二功能p3.0rxd串行口輸入端p3.1txd串行口輸出端p3.20int外部中斷0請求輸入端p3.31int外部中斷1請求輸入端p3.4t0定時/計數(shù)器0外部信號輸入端p3.5t1定時/計數(shù)器1外部信號輸入端p3.6wr外ram寫選通信號輸出端p3.7rd外ram讀選通信號輸出端3.2.33.2.3 單片機系統(tǒng)外圍電路單片機系統(tǒng)外圍電路單片機系統(tǒng)外圍電路形式如圖 3-4 所示。單片機振蕩器反相放大器的輸入端(xtal1)和輸出端(xtal2)之間接上 12mhz 或更高頻率的晶振,以獲得較高的刷新頻率,使顯示更穩(wěn)定。電容 c4、c5 是晶振的負載電容,主要起頻率微調(diào)和穩(wěn)
29、定的作用。單片機的串行口工作在方式 0 下,作為同步移位寄存器使用,端口 rxd(p3.0)作為數(shù)據(jù)移位的輸入/輸出端,而由 txd(p3.1)端輸出移位時鐘脈沖。移位數(shù)據(jù)的發(fā)送和接收均以 8 位為一幀,不設(shè)起始位和停止位,無論輸入/輸出,均低位在前高位在后。89c51 的通用 i/o 口 p1 作為顯示數(shù)據(jù)和二進制行號的公用輸出口。兩種數(shù)據(jù)的輸出在時間上是錯開的。p1 口的低 4 位與行驅(qū)動器相連,送出二進制的行選信號;p1.5p1.7 口則用來發(fā)送控制信號。p0 和 p2 口空著,在有必要的時候可以擴展系統(tǒng)的 rom 和 ram。gndc433pfc533pfvccy112mhzr28.2
30、 kgndvccp1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78rst/vpd9p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.5/t115p3.6/wr16p3.7/rd17xtal218xtal119gnd20p2.021p2.122p2.223p2.324p2.425p2.526p2.627p2.728psen29ale/prog30ea/vpp31p0.732p0.633p0.534p0.435p0.336p0.237p0.138p0.039vcc40u1at89c51+c610uabcdg1g
31、ndtxdsckrxdsisclrrck圖 3-4 單片機系統(tǒng)外圍電路圖4 程序設(shè)計 從原理圖 4-1 中可以看出,如果要讓接在 p1.0 口的 led1 亮起來,那么只要把 p1.0 口的電平變?yōu)榈碗娖骄涂梢粤耍幌喾矗?如果要接在 p1.0 口的 led1熄滅,就要把 p1.0 口的電平變?yōu)楦唠娖剑煌?,接?p1.1p1.7 口的其他 7個 led 的點亮和熄滅的方法同 led1。因此,要實現(xiàn)流水燈功能,我們只要將發(fā)光二極管 led1led8 依次點亮、熄滅,8 只 led 燈便會一亮一暗的做流水燈了。在此我們還應(yīng)注意一點,由于人眼的視覺暫留效應(yīng)以及單片機執(zhí)行每條指令的時間很短,我們在控制
32、二極管亮滅的時候應(yīng)該延時一段時間,否則我們就看不到“流水”效果了。 我們知道,目前所有的計算機只能執(zhí)行二進制代碼,即高低電平的信號“語言”,不可能識別其他我們熟知的語言,計算機的 cpu 在設(shè)計時就將其所有“功能”都定義有特定的一串二進制代碼,這些代碼的集合就是該計算機的“語言”,這種語言在早期計算機開發(fā)中無可替代的被人們使用。由于一串串的“01”代碼不但難記,也極易出錯。后來人們將這種一串串特定的代碼一一的用人們可以理解并好記憶的字母助記符給予命名,這樣,在開發(fā)計算機程序時先用助記符將其邏輯功能寫出來,當邏輯無問題時,再將助記符逐句“翻譯”成對應(yīng)的一串串二進制代碼交計算機運行。這種用助記符臨
33、時替代二進制代碼的助記符集合,就是我們現(xiàn)在的“匯編語言”。圖 4-1 原理圖 現(xiàn)在我們雖仍然使用匯編語言,但最后已經(jīng)不用人工去“翻譯”成二進制代碼啦,而是交給已有翻譯功能的計算機去“翻譯”。對于 8051 系列單片機來說,其匯編助記符只有 111 條,這 111 條助記符是被匯編器(“翻譯軟件”)認可的,你不能自創(chuàng)助記符來編寫單片機程序,若你書寫的 8051 單片機程序中有不符合這 111 條語句,在最后匯編時就會報錯。再著,匯編語言也象我們使用的語言一樣有其必須的語法,不能違背。單片機的應(yīng)用系統(tǒng)由硬件和軟件組成,上述硬件原理圖搭建完成上電之后,我們還不能看到流水燈循環(huán)點亮的現(xiàn)象,我們還需要告
34、訴單片機怎么來進行工作,即編寫程序控制單片機管腳電平的高低變化,來實現(xiàn)發(fā)光二極管的一亮一滅。軟件編程是單片機應(yīng)用系統(tǒng)中的一個重要的組成部分,是單片機學習的重點和難點。下面我們以最簡單的流水燈控制功能即實現(xiàn) 8 個 led 燈的循環(huán)點亮,來介紹實現(xiàn)流水燈控制的幾種軟件編程方法(各流程圖見附錄) 。4.1 用位控法的程序設(shè)計這是一種最易理解的方法,采用順序程序結(jié)構(gòu),用位指令控制 p1 口的每一個位輸出高低電平,從而來控制相應(yīng) led 燈的亮滅。程序如下:org 0000h ;單片機上電后從 0000h 地址執(zhí)行ajmp start ;跳轉(zhuǎn)到主程序存放地址處org 0030h ;設(shè)置主程序開始地址s
35、tart:mov sp,#60h ;設(shè)置堆棧起始地址為 60hclr p1.0 ;p1.0 輸出低電平,使 led1 點亮acall delay ;調(diào)用延時子程序setb p1.0 ;p1.0 輸出高電平,使 led1 熄滅clr p1.1 ;p1.1 輸出低電平,使 led2 點亮 acall delay ;調(diào)用延時子程序setb p1.1 ;p1.1 輸出高電平,使 led2 熄滅clr p1.2 ;p1.2 輸出低電平,使 led3 點亮acall delay ;調(diào)用延時子程序setb p1.2 ;p1.2 輸出高電平,使 led3 熄滅clr p1.3 ;p1.3 輸出低電平,使 le
36、d4 點亮acall delay ;調(diào)用延時子程序setb p1.3 ;p1.3 輸出高電平,使 led4 熄滅clr p1.4 ;p1.4 輸出低電平,使 led5 點亮acall delay ;調(diào)用延時子程序setb p1.4 ;p1.4 輸出高電平,使 led5 熄滅clr p1.5 ;p1.5 輸出低電平,使 led6 點亮acall delay ;調(diào)用延時子程序setb p1.5 ;p1.5 輸出高電平,使 led6 熄滅clr p1.6 ;p1.6 輸出低電平,使 led7 點亮acall delay ;調(diào)用延時子程序setb p1.6 ;p1.6 輸出高電平,使 led7 熄滅c
37、lr p1.7 ;p1.7 輸出低電平,使 led8 點亮acall delay ;調(diào)用延時子程序setb p1.7 ;p1.7 輸出高電平,使 led8 熄滅acall delay ;調(diào)用延時子程序 ajmp start ;8 個 led 流了一遍后返回到標號 start 處再循環(huán)delay: ;延時子程序mov r0,#255;延時一段時間d1: mov r1,#255djnz r1,$djnz r0,d1ret ;子程序返回end ;程序結(jié)束4.2 用循環(huán)移位法的設(shè)計在上個程序中我們是逐個控制 p1 端口的每個位來實現(xiàn)的,因此程序顯得有點復(fù)雜,下面我們利用循環(huán)移位指令,采用循環(huán)程序結(jié)構(gòu)進
38、行編程。我們在程序一開始就給 p1 口送一個數(shù),這個數(shù)本身就讓 p1.0 先低,其他位為高,然后延時一段時間,再讓這個數(shù)據(jù)向高位移動,然后再輸出至 p1 口,這樣就實現(xiàn)“流水”效果啦。由于 8051 系列單片機的指令中只有對累加器 acc 中數(shù)據(jù)左移或右移的指令,因此實際編程中我們應(yīng)把需移動的數(shù)據(jù)先放到 acc 中,讓其移動,然后將 acc 移動后的數(shù)據(jù)再轉(zhuǎn)送到 p1 口,這樣同樣可以實現(xiàn)“流水”效果。具體編程如下所示,程序結(jié)構(gòu)確實簡單了很多。org 0000h ;單片機上電后從 0000h 地址執(zhí)行ajmp start ;跳轉(zhuǎn)到主程序存放地址處org 0030h ;設(shè)置主程序開始地址star
39、t:mov sp,#60h ;設(shè)置堆棧起始地址為 60h mov a,#0feh ;acc 中先裝入 led1 亮的數(shù)據(jù)(二進制的11111110)mov p1,a ;將 acc 的數(shù)據(jù)送 p1 口mov r0,#7 ;將數(shù)據(jù)再移動 7 次就完成一個 8 位流水過程loop: rl a ;將 acc 中的數(shù)據(jù)左移一位mov p1,a ;把 acc 移動過的數(shù)據(jù)送 p1 口顯示acall delay ;調(diào)用延時子程序djnz r0,loop ;沒有移動夠 7 次繼續(xù)移動 ajmp start ;移動完 7 次后跳到開始重來,以達到循環(huán)流動效果delay: ;延時子程序mov r0,#255 ;延
40、時一段時間d1: mov r1,#255djnz r1,$djnz r0,d1ret ;子程序返回end ;程序結(jié)束4.3 用查表法的設(shè)計上面的兩個程序都是比較簡單的流水燈程序,“流水”花樣只能實現(xiàn)單一的“從左到右”流方式。運用查表法所編寫的流水燈程序,能夠?qū)崿F(xiàn)任意方式流水,而且流水花樣無限,只要更改流水花樣數(shù)據(jù)表的流水數(shù)據(jù)就可以隨意添加或改變流水花樣,真正實現(xiàn)隨心所欲的流水燈效果。我們首先把要顯示流水花樣的數(shù)據(jù)建在一個以 tab 為標號的數(shù)據(jù)表中,然后通過查表指令“movca,a+dptr”把數(shù)據(jù)取到累加器 a 中,然后再送到 p1 口進行顯示。具體源程序如下,tab 標號處的數(shù)據(jù)表可以根據(jù)
41、實現(xiàn)效果的要求任意修改。org 0000h ;單片機上電后從 0000h 地址執(zhí)行ajmp start ;跳轉(zhuǎn)到主程序存放地址處org 0030h ;設(shè)置主程序開始地址start:mov sp,#60h ;設(shè)置堆棧起始地址為 60hmov dptr,# tab ;流水花樣表首地址送 dptrloop: clr a ;累加器清零movc a,a+dptr ;取數(shù)據(jù)表中的值cjne a,#0ffh,show ;檢查流水結(jié)束標志ajmp start ;所有花樣流完,則從頭開始重復(fù)流show: mov p1,a ;將數(shù)據(jù)送到 p1 口acall delay ;調(diào)用延時子程序inc dptr ;取數(shù)據(jù)表
42、指針指向下一數(shù)據(jù)ajmp loop ;繼續(xù)查表取數(shù)據(jù)delay: ;延時子程序mov r0,#255 ;延時一段時間d1: mov r1,#255djnz r1,$djnz r0,d1ret ;子程序返回tab: ;下面是流水花樣數(shù)據(jù)表,用戶可據(jù)要求任意編寫db 11111110b ;二進制表示的流水花樣數(shù)據(jù),從低到高左移db 11111101bdb 11111011bdb 11110111bdb 11101111bdb 11011111bdb 10111111bdb 01111111bdb 01111111b ;二進制表示的流水花樣數(shù)據(jù),從高到低右移db 10111111bdb 110111
43、11bdb 11101111bdb 11110111bdb 11111011bdb 11111101bdb 11111110bdb 0feh,0fdh,0fbh,0f7h ;十六進制表示的流水花樣數(shù)據(jù)db 0efh,0dfh,0bfh,7fhdb 7fh,0bfh,0dfh,0efhdb 0f7h,0fbh,0fdh,0fehdb 0ffh ;流水花樣結(jié)束標志 0ffhend ;程序結(jié)束當上述程序之一編寫好以后,我們需要使用編譯軟件對其編譯,得到單片機所能識別的二進制代碼,然后再用編程器將二進制代碼燒寫到 at89c51 單片機中,最后連接好電路通電,我們就看到 led1led8 的“流水”效
44、果了。390+5v8.2krstvcc+5v+5v+5v40 31 89c511 8 9 181920ea10f6mhz20p流水燈電路原理圖如圖 4-2 所示。用 p1 口的 8 位分別驅(qū)動一個發(fā)光二極管,從圖上可見,某位口上輸出 0(低電平)對應(yīng)的發(fā)光二極管就亮,反之某位口上輸出 1(高電平)對應(yīng)的發(fā)光二極管就熄滅。我們可以根據(jù)自己的思路設(shè)計燈亮滅次序從而形成不同的樣式的流水燈。圖 4-2 流水燈電路原理圖5 調(diào)整測試工作狀態(tài)5. .1 程序分析5.1.15.1.1 程序一程序一 下面的流水燈程序,就是用匯編助記符編寫的。一般我們叫他為匯編語言程序。這里的程序用一步步逐個控制單片機各管腳來
45、實現(xiàn)流水燈功能。 流水燈程序如下:loop: clr p1.0 ;清除 p1.0,使其=0,led1 點亮 acall delay ;調(diào)用 0.1 秒延時子程序,等待 0.1 秒 setb p1.0 ;置高 p1.0,使其=1,led1 熄滅 clr p1.1 ;點亮 led2 acall delay setb p1.1 ;熄滅 led2 clr p1.2 ;點亮 led3 acall delay setb p1.2 ;熄滅 led3 clr p1.3 ;點亮 led4 acall delay setb p1.3 ;熄滅 led4 clr p1.4 ;點亮 led5 acall delay s
46、etb p1.4 ;熄滅 led5 clr p1.5 ;點亮 led6 acall delay setb p1.5 ;熄滅 led6 clr p1.6 ;點亮 led7 acall delay setb p1.6 ;熄滅 led7 clr p1.7 ;點亮 led8 acall delay setb p1.7 ;熄滅 led8 acall delay ljmp loop ;8 個 led 流了一遍后返回到標號 loop 處再循環(huán);延時子程序delay: mov r0,#255 ; dlo1: mov r1,#195 djnz r1,$ djnz r0,dlo1 ret end 程序的第 1 到
47、 26 行流水燈的主程序,為使流水效果不停,主程序做成了一個閉合循環(huán)。delay 是延時子程序,改變賦給 r0 和 r1 的值,將改變延時時間,從而改變流水燈的流動速度。最后的 end 是告訴匯編器:程序到此結(jié)束。 在這個流水燈程序中,實現(xiàn)流水的方法是比較笨的。既然單片機有處理數(shù)據(jù)的能力,先給單片機一些初始數(shù)據(jù),讓單片機來依給定的數(shù)據(jù)參數(shù)去自行處理流水過程。5.1.25.1.2 程序二程序二 ;左移 star: mov r3,#8 ;設(shè)置流水位數(shù) mov p1,#11111110b ;從 p1.0 開始 loop: acall d01s mov a,p1 ;讀取 p1 當前數(shù)據(jù)到 acc rl
48、 a ;左移一位 mov p1,a ;將左移的數(shù)據(jù)再送到 p1 djnz r3,loop ;沒有完成 8 位繼續(xù) ;* mov p1,#0ffh ;熄滅所有燈 ;* ;右移 mov r3,#8 ;設(shè)置流水位數(shù) mov p1,#01111111b ;從 p1.7 開始 loop1: acall d01s mov a,p1 ;讀取 p1 當前數(shù)據(jù)到 acc rr a ;右移一位 mov p1,a ;將右移的數(shù)據(jù)再送到 p1 djnz r3,loop1 ;沒有完成 8 位繼續(xù) ljmp star ;完成后返回到開始再來 ;延時子程序 d01s: mov r0,#255 d01l1: mov r1,#
49、198 djnz r1,$ djnz r0,d01l1 ret end 程序中,第一句先在 r3 中設(shè)定位流水為 8 次;第二行,將 p1 高端的 7 位設(shè)成高電平(led 不亮) ,最后 1 位設(shè)成低電平 0(p1.0 驅(qū)動的 led1 亮) 。點亮 led1 后延時一會。之后,將當前 p1 的狀態(tài)(也就是數(shù)據(jù))讀到 a 累加器中進行左移一位,再將移動后的數(shù)據(jù)從 a 累加器傳送到 p1,從而實現(xiàn) led 的流水效果。 第 7 行是當移動一位后,檢查夠不夠 8 次,若不夠則返回到 loop 繼續(xù);若夠 8 次,就繼續(xù)執(zhí)行下面一句指令。 程序中的右移與左移結(jié)構(gòu)完全一樣,只是 p1 的初始數(shù)據(jù)改為
50、高 1 位=0,低7 位=1;從 p1 讀到 a 累加器的數(shù)據(jù)使用 rr a 的右移指令。 第 16 行指令是為循環(huán)左、右移而設(shè)。也許你會問:為何不直接將 p1 中的數(shù)據(jù)左移或右移呢?這是因為 p1 沒有左右移的功能,在 111 條指令中沒有 rl p1 和 rr p1 的指令,要想實現(xiàn)左右移,就只有將需移動的數(shù)據(jù)中轉(zhuǎn)到累加器 a 中處理,處理后的數(shù)據(jù)再返回使用。在 51 單片機中,累加器 a 的處理能力最強,所以關(guān)于累加器的操作指令也最多。今后我們在開發(fā)單片機過程中經(jīng)常會遇到這樣類似的問題,沒什么奇怪的,單片機就這樣。5.1.35.1.3 軟件調(diào)試軟件調(diào)試軟件調(diào)試采用脫機調(diào)試的方法,即完全用
51、仿真器軟件在 pc 機上對目標電路原理圖和程序進行檢測和調(diào)試。調(diào)試過程中單片機相應(yīng)輸入端由通用鍵盤和鼠標設(shè)定,運行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在 crt 指定的窗口區(qū)域顯示出來,以確定程序運行有無錯誤。調(diào)試可按下列步驟進行:一 目標程序糾錯該階段工作通常在目標程序編輯時就完成。一般來說,仿真器軟件能給用戶輸入的程序指令糾錯,包括書寫格式、標號未定義或多重定義、轉(zhuǎn)移地址溢出等錯誤。二 子程序功能調(diào)試程序設(shè)計通常采用模塊程序設(shè)計,調(diào)試時可對一個個子程序分別進行調(diào)試,設(shè)置好入口條件,然后采用單步運行或斷點運行方式,檢查系統(tǒng) cpu 現(xiàn)場、ram 和 i/o 口狀態(tài),看程序執(zhí)行結(jié)果是否符合設(shè)計
52、要求。三 整體程序綜合調(diào)試即把各子程序整體連起來進入到綜合電路調(diào)試,看是否能實現(xiàn)預(yù)計的功能顯示。在這階段若發(fā)生故障,可以考慮各子程序在運行時是否破壞現(xiàn)場,數(shù)據(jù)緩沖單元是否發(fā)生沖突,標志位的建立和清除在設(shè)計上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用戶樣機,直接就可以在 pc 機上開發(fā)和調(diào)試。調(diào)試和修改完畢后,對于實時性要求不高的應(yīng)用系統(tǒng)可以直接使用編程器將軟件固化在目標系統(tǒng) rom 中,然后獨立投入運行。 6 6 工作性能分析工作性能分析6.1 運行分析在系統(tǒng)不能工作或運行結(jié)果和設(shè)計的不一致時,應(yīng)區(qū)別不同情況做相應(yīng)的軟件硬件檢查。如程序能運行
53、,但結(jié)果不一致,一般先查軟件,通過模擬仿真的方法確定程序是否正確,然后再查硬件電路。如系統(tǒng)不能工作,則首先應(yīng)檢查最小系統(tǒng)是否正確。最小系統(tǒng)檢查方法如下:單片機安裝到插座上并鎖緊(注意:缺口應(yīng)和插座方向一致) ,打開電源開關(guān),用萬用表(數(shù)字表)測有關(guān)點的電壓。40、31 腳 5v,9 腳 0v,18、19 腳在 1.82.8v 之間,各點電壓正確,說明最小硬件電路焊接無誤,如果不是的,檢查相應(yīng)的電路。流水燈電路檢查。取下單片機,開通電源。用一根導(dǎo)線,將導(dǎo)線的一端接地,另一端分別接到集成塊的 18 腳,相應(yīng)引腳的小燈應(yīng)亮,否則,檢查對應(yīng)的電路。軟件和硬件的檢查都可以通過互換的方法檢查,方法是將自己
54、的單片機和運行正常的單片機互換,就可確定是硬件故障還是程序錯誤。電路中 t1、c7、c8 組成單片機的時鐘;l1l8 和 r1、r2 以及 r6r11連接到單片機 p1 口,當 p1 口某腳變低時,相應(yīng)的 led 發(fā)光。只要我們讓程序按要求依次從 p1.0p1.7 逐個變低等待少許時刻再變高,這樣就實現(xiàn)了流水燈效果。6.2 性能分析 通過調(diào)試組裝后一般即可正常工作。led 燈可以按預(yù)計的方式點亮,它是用延時增加視覺效果。但視覺上和掃描上大致相同,這里是要足夠長時間延時,掃描點亮是需要足夠高的掃描頻率。從理論上說,這種方式可以滿足如此簡單的變換顯示,但這樣長時間的延時,會不利于單片機附加其他功能,比如對 a/d 轉(zhuǎn)換的控制時的高頻率數(shù)據(jù)采集。但對于不做更高要求的流水燈,這樣的設(shè)計可以滿足要求。圖 6-1 流水燈程序電路結(jié)結(jié) 論論經(jīng)過多次的修改個整理我完成了這個篇流水燈電路設(shè)計,因為水平有限,此電路中也存在一定的問題,譬如說電路過于簡單不能體現(xiàn)單片機的功能,但多余的 i/o 口適合加上其他的功能。這需要對單片機進行更深入的研究。如果有好的意見,希望老師給以
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一對一輔導(dǎo)教學服務(wù)合同
- 工程項目施工總承包合同范本
- 2025年信息技術(shù)服務(wù)授權(quán)合同樣本
- 2025年臨時工派遣合同策劃樣本集錦
- 2025年進出口海運代理合同
- 2025年農(nóng)產(chǎn)品冷鏈物流合同制訂標準
- 2025年個人短期貸款責任合同
- 2025年商貿(mào)銷售保障合同書
- 主題咖啡館裝修延期合同
- 錄放設(shè)備在智能零售顧客分析中的應(yīng)用考核試卷
- 2024商品房買賣合同范本下載
- 第2章-裝配式建筑標準化設(shè)計
- 專注力訓練對學習成績的提升
- 紡織品廢棄物回收利用的技術(shù)革新
- 幼兒園中班社會《猜猜這是誰的包》課件
- 醫(yī)療器械公司組織機構(gòu)圖以及部門設(shè)置和崗位職責說明
- 班主任能力大賽情景答辯環(huán)節(jié)真題及答案高中組
- 軸對稱圖形(課件)-2023-2024學年二年級下冊數(shù)學人教版-1
- 國際法專題課程大綱
- 12SDX101-2 民用建筑電氣設(shè)計計算及示例
- 校企共建實驗室備忘錄
評論
0/150
提交評論