版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計</b></p><p> 課題名稱: 基于單片機秒表課程設計 </p><p> 設計時間: 2011.10.12 — 2010.12.28 </p><p> 系 部: 電氣工程系 </p&
2、gt;<p> 班 級: 電信S2009-2-24 </p><p><b> 總 目 錄</b></p><p> 第一部分 任務書</p><p> 第二部分 開題報告</p><p> 第三部分 畢業(yè)設計正文</p
3、><p> 基于單片機的數字式秒表的設計</p><p> 第 一 部 分</p><p><b> 任</b></p><p><b> 務</b></p><p><b> 書</b></p><p><b
4、> 畢業(yè)設計任務書</b></p><p> 第 二 部 分</p><p><b> 開</b></p><p><b> 題</b></p><p><b> 報</b></p><p><b> 告
5、</b></p><p> 畢業(yè)設計(論文)開題報告書</p><p> 第 三 部 分</p><p><b> 畢</b></p><p><b> 業(yè)</b></p><p><b> 設</b></p>
6、<p><b> 計</b></p><p><b> 正</b></p><p><b> 文</b></p><p> 1.1設計任務及功能要求說明</p><p> 由單片機接收小鍵盤控制遞增計時,由LED 顯示模塊計時時間,顯示格式為 XX(分):
7、XX(秒).XX,精確到0.01s的整數倍。繪制系統(tǒng)硬件接線圖,并進行系統(tǒng)仿真和實驗。畫出程序流程圖并編寫程序實現系統(tǒng)功能。</p><p> 使用單片機AT89S52作為主要控制芯片,以四位一體共陽極數碼顯示管通過三極管驅動作為顯示部分,設計一個具有特定功能的數字式秒表。該數字式秒表上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”,進入準備工作狀態(tài)。該數字式秒表通過按鍵控制可實現開始計時、暫停計時、連續(xù)計時、清零
8、和停止功能。</p><p> 1.2數字式秒表的方案介紹及工作原理說明</p><p> 使用AT89S52單片機作為核心控制部件,采用12M晶體振蕩器及微小電容構成振蕩電路;采用S8550作為數碼管的驅動部分;用兩個四位一體共陽極或共陰極數碼顯示管作為顯示部分,構成數字式秒表的主體結構,配合獨立式鍵盤和復位電路完成此秒表的復位、計時、連續(xù)、清零、停止各項功能。</p>
9、<p> 對于時鐘,它有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現方法:一是用軟件實現,即用單片機內部的可編程定時/計數器來實現,但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現,在對時間精度要求很高的情況下,通常采用這種方法。</p><p&g
10、t; LED數碼顯示器有如下兩種連接方法:共陽極接法:把發(fā)光二極管的陽極連在一起構成公共陽極,使用時公共陽極接+5V,每個發(fā)光二極管的陰極通過電阻與輸入端相連。共陰極接法:把發(fā)光二極管的陰極連在一起構成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。</p><p> 鍵盤部分方案:鍵盤控制采用獨立式按鍵,每個按鍵的一端均接地,另一端直接和P1口相連,在按鍵和P1口之間通過10K電阻與
11、+5V電源相連。鍵盤通過檢測輸入線的電平狀態(tài)就可以很容易地判斷哪個鍵被按下了,這種方法操作速度高而且軟件結構很簡單,比較適合按鍵較少或操作速度較高的場合,這種獨立式接口的應用很普遍。</p><p> 顯示部分方案:顯示部分采用動態(tài)顯示。數碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態(tài)驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為
12、每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態(tài)驅動。動態(tài)顯示是利用人眼視覺暫留特性來實現顯示的。事實上,顯示器上任何
13、時刻只有一個數碼管有顯示。由于各數碼管輪流顯示的時間間隔短、節(jié)奏快,人的眼睛反應不過來,因此看到的是連續(xù)顯示的現象。為防止閃爍延時的時間在1ms左右,不能太長,也不能太短。本設計可采用P0口直接驅動八段數碼管顯示。此方案成本低,而且單片機的I/O口占用較少,可以節(jié)約單片機接口資源,而且功耗更低。</p><p> 此電路采用單片機的P0口作為數碼顯示管的段控,采用P2口作為數碼管的位控。8個獨立式鍵盤分別接在單
14、片機的P1口上,以及其他部分構成數字式秒表的硬件電路。通過編寫程序使用單片機的定時計數器,以及軟件延時,中斷資源來實現秒計時和相關控制。此數字式秒表的硬件整體結構如圖1-1所示。</p><p> 圖 1-1數字式秒表的硬件結構圖第2章 數字式秒表硬件系統(tǒng)的設計</p><p> 2.1數字式秒表硬件系統(tǒng)各模塊功能簡要介紹</p><p> 2.1.1 AT8
15、9S52簡介</p><p> (1) 與MCS-51產品相兼容;</p><p> (2) 具有8KB可改寫的Flash 內部程序存儲器,可寫/擦1000次;</p><p> (5) 256字節(jié)內部RAM;</p><p> (6) 32根可編程I/O口;</p><p> (7)3個16位定時器/計數
16、器。 </p><p> (8) 8個中斷源;</p><p> (9)可編程中串行口;</p><p> (10) 低功耗空閑和掉電方式。</p><p> 它的價格便宜,功能強大,能耗低。很大程度上減少總電路的復雜性,提高了所設計系統(tǒng)的穩(wěn)定性。其芯片引腳圖如圖2-1所示。</p><p> 圖2-1 單
17、片機AT89S52引腳圖</p><p><b> 2.1.2時鐘電路</b></p><p> 時鐘電路用于產生單片機工作所需要的時鐘信號,單片機本身就是一個復雜的同步時序電路,為了保證同步工作方式的實現,電路應在唯一的時鐘信號控制下嚴格地按時序進行工作。在AT89S52芯片內部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳TXAL2,在芯片
18、的外部通過這兩個引角跨接晶體振蕩器和微調電容,形成反饋電路,就構成了一個穩(wěn)定的自激振蕩器。 此電路采用12MHz的石英晶體。時鐘電路如圖2-2:</p><p><b> 圖2-2 時鐘電路</b></p><p><b> 2.1.3鍵盤電路</b></p><p> 本設計使用獨立式鍵盤接在單片機的P1口上但通過
19、軟件賦予其中三個按鍵功能,其中S2是計時開始按鍵,第二功能為停止,S3為計時暫停按鍵,第二功能為繼續(xù)計時按鍵,S4是清零按鍵。注意使用時只有在暫停狀態(tài)下才能繼續(xù)計時,只有在停止狀態(tài)下才能清零,在停止時不能繼續(xù)計時,在暫停時不能清零。鍵盤電路如圖2-3:</p><p> 圖2-3獨立式鍵盤電路圖</p><p><b> 2.1.4復位電路</b></p&g
20、t;<p> 復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤是系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復位鍵以重新啟動。</p><p> RST引腳是單片機復位信號的輸入端,復位信號是高電平有效,其有效時間應持續(xù)24個振蕩周期(即2個機器周期)以上,若使用頻率為6MHz的晶振,則復
21、位信號持續(xù)時間應超過4us才能完成復位操作。復位操作有上電自動復位和按鍵手動復位兩種方式。上電自動復位是通過外部復位電路的電容充電來實現的。按鍵電平復位是通過使復位端經電阻與Vcc電源接通而實現的。在本設計中采用了按鍵電平復位方式,其復位電路如圖2-4所示:</p><p><b> 圖2-4 復位電路</b></p><p> 2.1.5 驅動及顯示電路<
22、/p><p> 數碼管實際上是由二極管構成發(fā)光二級管正常工作時,其兩端正向壓降約為1.6v,正向電流約為10mA,為了使數碼管達到一定的亮度而又不至于由于電流過大而損壞,我們使用三極管S8550作為數碼管的驅動,同時在P0口和P2口上串上470歐姆的電阻。此處使用四位一體共陰極數碼管,由于驅動電路決定了此處共陰極數碼管和共陽極數碼管均可以采用而且均采用共陽極代碼來編寫顯示程序,具體電路如圖2-5所示。 </p
23、><p> 圖2-5 數碼管驅動及顯示電路圖</p><p> 2.1.6 單片機下載口電路</p><p> 下載口主要是一個十芯的座子,可以通過使用USB下載線對單片機進行程序下載。方便整個軟件的設計,也能讓我們使用起來更加方便。</p><p> 圖2-6 單片機下載口電路圖</p><p> 2.2 數
24、字式秒表的硬件系統(tǒng)設計圖</p><p> 2.2.1 電路原理圖</p><p> 此處電路原理圖以及PCB原理圖的繪制均使用protel99軟件完成,Protel99是基于Win95/Win NT/Win98/Win2000的純32位電路設計制版系統(tǒng)。Protel99提供了一個集成的設計環(huán)境,包括了原理圖設計和PCB布線工具,集成的設計文檔管理,支持通過網絡進行工作組協同設計功能
25、。根據硬件接線要求設計繪制電路原理圖及PCB。具體電路圖見附錄A與附錄B。</p><p> 2.2.2 PCB圖</p><p> PCB圖設計時,首先要使元器件盡量少,這樣既可以節(jié)約材料,又可以是布線更加短,減少干擾,同時還應注意盡量減少線路之間的寄生電容和電感,</p><p> 布線時需要將線寬設置得比較寬這樣可以提高腐蝕電路板時的成功率,焊盤大小也
26、要設置的比較大,這樣在腐蝕環(huán)節(jié)和焊接環(huán)節(jié)比較容易成功。不易出現短線的現象和焊盤剝離的現象。雙面布線時芯片和針腳多的元件需將焊接點置于底層,這樣才能比較方便的焊接。</p><p> 制作電路板PCB圖見附錄B。</p><p> 第3章 數字式秒表軟件系統(tǒng)的設計</p><p> 3.1 數字式秒表使用單片機資源情況</p><p>
27、 本次電子鐘設計除了了使用單片機工作所必須的硬件資源(如連接晶振的引腳XTAL1和XTAL2,復位引腳RESET)外,對單片機的硬件資源還做了具體的安排。</p><p> (1).P0口:P0.0-P0.7作為數碼管顯示器的段控。</p><p> (2).P1口:P1.0-P1.3作為獨立式鍵盤的輸入端。</p><p> (3).P2口:P2.0-P2.
28、7分別控制數碼管LED0-LED7的位控碼驅動。</p><p> (4).定時/計數器:使用定時器0工作方式2實現數字式計數器的運行。</p><p> (5).專用寄存器:定時器控制寄存器TCON,通過設置該寄存器TR0位的狀態(tài)來控制定時/計數器0的啟動/停止;中斷允許寄存器IE,通過設置該寄存器EA/ET0位的狀態(tài)來設置定時/計數器0中斷允許/禁止;定時/計數器工作方式寄存器TM
29、OD,設置定時/計數器0的工作方式。</p><p> 3.2 主程序流程圖</p><p> 圖3-1 主程序流程圖</p><p> 3.3中斷服務程序流程圖</p><p> 圖3-2 中斷服務程序流程圖3.4顯示程序流程圖</p><p> 圖3-3顯示程序流程圖</p><p&g
30、t; 3.5軟件系統(tǒng)程序清單</p><p> 按照流程圖應用軟件keil匯編語言編程實現秒表功能。程序見附錄C。</p><p><b> 第4章 設計總結</b></p><p> 4.1 數字式秒表的設計結論及使用說明</p><p> 通過設計和調試,數字式秒表能順利完成各項功能。上電或復位后顯示“P
31、.”提示符,此時按1鍵便可開始計時。在計數狀態(tài)下,按下2鍵即可實現暫停,再次按下2鍵即可實現繼續(xù)計數,在計數狀態(tài)下按下1鍵,實現計數停止,在停止狀態(tài)下按下3鍵,便可實現計數清零。計數狀態(tài)下按下清零鍵,無效。</p><p> 4.2 調試軟件介紹</p><p> 本電子鐘的設計用的pretues仿真軟件設計電路并仿真。Proteus ISIS是英國Labcenter公司開發(fā)的電路分
32、析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:①實現了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。②支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:68000系列、8051系
33、列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調試功能。在硬件仿真系統(tǒng)中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環(huán)境,如Keil C51 uVision2等軟件。④具有強大的原理圖繪制功能??傊?,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其
34、</p><p> 4.3 程序仿真與結果</p><p> 我們是在Keil軟件里編寫程序并編譯通過才能被硬件電路所應用。Keil的功能比較強大但還是有一定的缺點。他編譯過程中他只能檢查出所編寫的語法錯誤,所以我們一步一步的去在硬件電路里仿真去達到我們所設計要求的功能。經仿真修改和完善均已達到設計要求.“P.”顯示,電子鐘準備狀態(tài)與電子鐘自動運行狀態(tài)的仿真如下圖所示。</p&
35、gt;<p> (1). “P.”顯示如圖4-1所示。</p><p> 圖4-1 “P”顯示圖</p><p> (2). 數字式秒表準備狀態(tài)仿真的顯示如圖4-2所示。</p><p> 圖4-2 準備計時狀態(tài)</p><p> (3). 數字式秒表運行狀態(tài)的仿真如圖4-3所示。</p><p&g
36、t; 圖4-3 計時器狀態(tài)</p><p> 4.4 誤差分析及解決方法</p><p> 我們可以發(fā)現數字式秒表計數一段時間的我們的標準時間相比較出現了誤差,所設計的數字式秒表比我們的標準時間要慢,而且相比較的時間越長他的時差越大。經過分其主要原因與硬件和軟件都有關。</p><p> 軟件原因:我們從外部中斷請求有效到轉向中斷區(qū)入口地址所需的機器周期數
37、來計算中斷時間,51系列單片機最短響應時間為3個機器周期。在一般情況下中斷響應時間通常無需考慮,但在精確定時的應用場合需知道中斷響應時間,以保證定時的精確控制。</p><p> 硬件原因:單片機的時鐘信號是由外部的振蕩電路所提供,在芯片的外部通過接XATL1與XATL2這兩個引角跨接晶體振蕩器和微調電容,形成反饋電路,就構成了一個穩(wěn)定的自激振蕩器。因為電子原件不可以就有我們所設計的那么理想(電容的容量,振晶的
38、輸出頻率)所以會造成我們的時間準確。</p><p> 針對這樣的問題我們就能只能從上述兩個方面入手去解決。軟件方面我們可以通過計算設計子程序去減少響應的時差。硬件部分我們可以采用一些穩(wěn)定,精確度比較高的電子元件去完善,但是在最后調試出的還是有誤差但我盡可能的減少差誤差接近理想。</p><p><b> 4.5 設計心得</b></p><
39、p> 通過對數字式秒表的設計與制作,我們把理論與實際相結合。加深了對理論知識的理解,也增強了我們的動手能力。</p><p> 在電路設計過程中,我們學會了自己收集信息和處理信息的能力,為以后的學習和制作奠定了一定的基礎,數字式秒表看似簡單,但當我們自己著手設計與制作的時候我們才發(fā)現是困難重重的。</p><p> 在元器件采購過程中發(fā)現的問題更大,在電路計算式我們根本沒有考慮
40、到元器件的型號和性能參數,然而在實物購買時我們就不得不開始考慮其型號和性能參數,這也是理論與實際的差別。還有,一些阻值的電阻與某些大小的電容根本就沒有這種型號的買,這樣我們不得不考慮改變設計電路中的參數,或者采用電路的等效方式來解決這樣的問題。</p><p> 在制作PCB時,發(fā)現一定要有細心、耐心和恒心才能做好事情,首先是線的布局上既要美觀又要實用和走線簡單,兼顧到方方面面去考慮是很需要的。比如在做PCB板
41、時,因為缺乏經驗把板上的線畫得太細了,焊盤太細導致后面的腐蝕環(huán)節(jié)稍微有點失誤將使電路板出現斷線,打孔后無焊盤等問題,把PCB板浸在三氯化鐵里浸得太久可能導致PCB板上的銅幾乎全都溶解了。雙面布線時必須做到兩面完全對齊,否則板子有可能無法使用,還有在有芯片的電路布線時不能將從芯片引腳引出的線布在兩面,否則將無法完成焊接任務。</p><p> 從剛剛接觸單片機開始,此設計是我迄今為止,編寫的最大的一個程序,在調試
42、過程中,我學會了怎樣去根據實驗現象解決問題,分析問題的所在點。它不僅加強了我們解決問題的能力,同時也鍛煉了我們的邏輯思維能力。</p><p> 此次課程設計,學到了很多課內學不到的東西,比如獨立思考解決問題,出現差錯的隨機應變,使我們在實際動手能力方面得到了較大的提高。</p><p><b> 4.6 教學建議</b></p><p>
43、; 希望學校能夠注重動手能力的培養(yǎng),與生活實際相結合,把所學內容應用到生活中去,這學期我們通過結合實例講解程序,使我們更深刻的了解單片機的理論知識,最重要的是通過實驗課我們可以邊學邊實踐,從實踐中記住各種指令的用法和各種編程技巧,課本理論知識相對抽象而且散,如果僅僅靠看書根本無法熟練掌握單片機的軟硬件資源的運用,而實驗恰恰彌補了這個缺點,感覺通過實驗學習更有效率,更生動有趣。故希望學校多多開設實驗課程。</p><
44、p><b> 參考文獻</b></p><p> [1]李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,1988.</p><p> [1]Li Zhaoqing. SCM Theory and Interface Technology [M]. Beijing: Beijing Aerospace University Press, 1
45、988.</p><p> [2]李勛等.單片機實用教程[M].北京:北京航空航天大學出版社,2000</p><p> [2] Li Xun and so on. microcontroller Practical Guide [M]. Beijing: Beijing Aerospace University Press, 2000</p><p> [3
46、]王幸之等.單片機應用系統(tǒng)抗干擾技術[M]. 北京:北京航空航天大學出版社,1999</p><p> [3] Wangxing the other. microcomputer application system interference technology [M]. Beijing: Beijing Aerospace University Press, 1999</p><p>
47、; [4]何為民.低功耗單片微型計算機系統(tǒng)設計[M]. 北京:北京航空航天大學出版社,1994</p><p> [4] What the people. low-power single-chip micro-computer system design [M]. Beijing: Beijing Aerospace University Press, 1994</p><p>
48、[5]李杏春等.8090單片機原理及實用接口技術[M]. 北京:北京航空航天大學出版社,1996</p><p> [5] Li Xingchun such .8090 SCM Theory and practical interface technology [M]. Beijing: Beijing Aerospace University Press, 1996</p><p>&
49、lt;b> 致 謝</b></p><p> 剛開始接到課程設計任務,認為挺簡單的,然而真正開始動手制作時才知道并不是那么簡單,從初期的資料收集以及原理圖的繪制都受到了老師以及同學的幫助,在遇到困難時請教老師和同學都能得到耐心的解答,幫助我們少走彎路。感謝我的老師,以及我的同學,在整個硬件電路的設計與制作過程中,他們都給了我很大的支持,是我從此次課程設計過程中獲益匪淺,本人對設計過程中給予
50、了通力合作,以及精神的支持,的老師和同學深表感謝。如果沒有他們我想我的設計不會這樣順利的完成。由于本人水平有限,在技術指標和論文寫作中可能存在一些缺陷,懇請各位老師和同學們批評指教。</p><p> 附 錄 A 原理圖</p><p> 附錄 B PCB圖</p><p> 附錄 C 程序清單</p><p> ??;*****
51、*************************************************************;</p><p><b> ??;項目名稱:秒表;</b></p><p><b> ?。辉O計者:蔣慧;</b></p><p> ??;設計日期:2011年01月;</p><p&g
52、t; ;******************************************************************;</p><p> ?。籐ED數碼管顯示器設定;</p><p> ?。籔0.7---P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a ;</p><p> ??;P2.7-P2.0位控線從左至右(LED7,
53、LED6,LED5,LED4,LED3,LED2,LED1,LED0);</p><p> ??;顯示緩沖區(qū)設定從左至右依次為78H,79H,7AH,7BH,7CH,7DH,7EH,7FH ;</p><p> ?。?*****************************************************************;</p><p>
54、??;獨立式鍵盤設定與功能;</p><p> ??;8個按鍵S1至S8分別依次接在P1.0至P1.7口線;</p><p> ??;K0的功能為復位 </p><p> ;K1的功能為啟動/停止(標識符為22H.0當它為1時啟動,為0時停止)</p><p> ??;K2的功能為暫停/繼續(xù)(標識符為22H.1當它為1時暫停,為0時繼續(xù))</
55、p><p><b> ??;K3的功能為清零</b></p><p> ??;*******************************************************************;</p><p> ??;常數表格; </p><p> ?。籇ISBH(系統(tǒng)提示符P.字型代碼序號表)
56、;</p><p> ??;TAB(共陽數碼管字型代碼表) ;</p><p> ;*******************************************************************; </p><p><b> ??;子程序;</b></p><p> ??;TIME_1MS(定時1
57、ms子程序);</p><p> ;KEY(鍵掃描子程序);</p><p> ??;KEYCHULI(P1口數據處理子程序);</p><p> ?。籇ISP(數碼管顯示子程序);</p><p> ??;DL(2毫秒延時子程序);</p><p> ??;ADD01(入口地址為R0)</p><p&
58、gt; ;*******************************************************************;</p><p> ?。淮鎯ζ鲀热莸陌才?;</p><p> ;堆棧棧底7FHH; ;</p><p> ?。?0H作為按鍵標志(20H.0——20H.7分別對應的是按鍵K1——K8);</p>&
59、lt;p> ;專用寄存組1,用在顯示子程序中</p><p> ??;*******************************************************************;</p><p> ??;系統(tǒng)起始程序區(qū) </p><p> ORG 0000H</p><p> STA
60、RT: LJMP MAIN</p><p> ORG 000BH</p><p> LJMP PDJW</p><p> ??;****************************************************************;</p><p><b> ??;系統(tǒng)監(jiān)控程序區(qū)<
61、/b></p><p> ORG 0030H</p><p> MAIN: MOV PSW, #00H</p><p> MOV SP, #7FH ;確立堆棧區(qū)</p><p> MOV R0, #20H ;RAM區(qū)首地址<
62、;/p><p> MOV R7, #96 ;RAM區(qū)單元個數</p><p> MOVTMOD,#01H</p><p> SETB EA</p><p><b> SETBET0</b></p><p> ML: MOV @
63、R0, #00H</p><p> INC R0 </p><p> DJNZ R7, ML</p><p> TSF: MOV DPTR, #DISBH ;系統(tǒng)初始化后提示符“P.”字符代碼表首地址</p><p> MOV R5,
64、 #08H </p><p> MOV R0, #78H</p><p> DISPTSF:CLR A</p><p> MOVC A, @A+DPTR</p><p> MOV @R0, A</p><p> INC R0</p&g
65、t;<p> INC DPTR</p><p> DJNZ R5, DISPTSF</p><p> KEY0:LCALLDISP</p><p> LCALL KEY</p><p> JB 20H.0, K1</p><p> JB
66、20H.1, K2</p><p> JB 20H.2, K3</p><p> LJMP KEY0</p><p> KEY00: LCALL KEY</p><p> LCALL DISP</p><p> JB 20H.2, K3</p>&
67、lt;p> LJMP KEY00 </p><p> K1: JB 22H.1, KEY0;如果此時為暫停狀態(tài),本次按鍵K1無效</p><p> CPL 22H.0 </p><p> JB 22H.0, K01 ;高電平則計時 </p><p>
68、 CLR TR0 ;低電平則停止</p><p> LCALL DISP</p><p> LJMP KEY00</p><p> K01: MOV 7AH, #12H ;從零開始計時</p><p> MOV 7DH, #12H</p>
69、<p> MOV 7FH, #10H</p><p> MOV 78H, #00H</p><p> MOV 79H, #00H</p><p> MOV 7BH, #00H</p><p> MOV 7CH, #00H</p>
70、<p> MOV 7EH, #00H</p><p> MOV 7FH, #00H </p><p> LCALL DISP</p><p> MOV TH0,#0D8H</p><p> MOV TL0,#0F0H</p><p>
71、; SETB TR0;啟動定時器</p><p> LJMP KEY0</p><p> K2: JB 22H.0, K21 ;判斷秒表是否啟動,如不是啟動狀態(tài)則此次按鍵無效</p><p> LJMP KEY0</p><p> K21: CPL22H.1<
72、;/p><p> JB 22H.1, K22</p><p> SETB TR0 ;繼續(xù)計時</p><p> LJMP KEY0</p><p> K22: CLR TR0 ;暫停秒表</p><p> LCALL D
73、ISP</p><p> LJMP KEY0</p><p> K3:JB22H.0, KEY0 ;只有當停止是,清零鍵才有效</p><p> MOV R0, #79H ;秒表清零</p><p> LCALL CLR00</p&g
74、t;<p> MOV R0, #7CH</p><p> LCALL CLR00</p><p> MOV R0, #7FH</p><p> LCALL CLR00</p><p> LJMP KEY0</p><p> PDJW: P
75、USH PSW</p><p> PUSH ACC</p><p> MOV TMOD, #01H ;定時器以工作方式1工作</p><p> SETB RS1 ;設定組號為2組</p><p> CLR RS0</p><p> MOV
76、TH0,#0D8H</p><p> MOVTL0,#0F0H</p><p> MOV R0, #79H</p><p> LCALL ADD01</p><p> CJNE R2, #99, RETT ;判斷1秒到沒</p><p> MOV
77、 R0, #7CH </p><p> LCALL ADD01</p><p> CJNE R2, #60, RETT ;判斷60毫秒到沒</p><p> LCALL CLR00</p><p> MOV R0, #7FH</p><p&g
78、t; LCALL ADD01</p><p> CJNE R2, #60H, RETT ;判斷60分到沒</p><p> LCALL CLR00</p><p> RETT: POP ACC</p><p> POP PSW</p><p><
79、;b> RETI</b></p><p> ;*****************************************************************;</p><p> ;常數表格區(qū)</p><p> ;系統(tǒng)初始化后提示符“P.”字符代碼表;</p><p> DISBH:
80、DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序號</p><p> ?。伙@示字符段選碼表(共陽極代碼)</p><p> TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8</p><p> DB 90H, 88H,83H,0C6H,0A1H,
81、86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,滅,p.,-</p><p> ??;*******************************************************************;</p><p><b> ??;子程序區(qū);</b></p><p> ADD01: MOVA,
82、 @R0</p><p> DEC R0</p><p><b> SWAP A</b></p><p> ORL A, @R0</p><p> ADD A, #01H</p><p><b> D
83、A A</b></p><p> MOV R2, A</p><p> ANL A, #0FH</p><p> MOV @R0, A </p><p> MOV A, R2</p><
84、p> ANL A, #0F0H</p><p><b> SWAP A</b></p><p> INC R0</p><p> MOV @R0, A</p><p><b> RET</b></p><p&
85、gt; CLR00: MOV @R0, #00H</p><p> DEC R0</p><p> MOV @R0, #00H</p><p><b> RET</b></p><p><b> ?。绘I掃描子程序</b></p>&
86、lt;p> KEY:LCALL KEYCHULI;調P1口數據處理子程序</p><p> JZ EXIT;沒有鍵按下,轉返回</p><p> LCALLDISP ;調顯示子程序去抖動</p><p> LCALLDISP</p><p> LCALL KEYCHULI
87、;調P1口數據處理子程序</p><p> JZ EXIT;沒有鍵按下,轉返回</p><p> MOVB,20H ;保存取反后的鍵值</p><p> KEYSF:LCALLKEYCHULI;調P1口數據處理子程序</p><p> JZKEY1 ;鍵
88、釋放,轉恢復鍵值</p><p> LCALLDISP</p><p> LCALL DISP ;調顯示子程序延時</p><p> LJMP KEYSF;等待釋放</p><p> KEY1:MOV 20H,B;鍵值送20H保存</p><p><b
89、> EXIT:RET</b></p><p><b> ?。蛔映绦蚍祷?lt;/b></p><p> ?。籔1口數據處理子程序</p><p> KEYCHULI:PUSH PSW;保護現場</p><p> CLR RS1 ;改變當前寄存器組為組1</
90、p><p><b> SETB RS0</b></p><p> MOV P1,#0FFH ;先向P1口寫1</p><p> MOV A,P1 ;讀P1口數據</p><p> CPL A ;P1口數據取反</p>&l
91、t;p> MOV 20H,A ;保存取反后的鍵值</p><p> CLR RS1 ;恢復當前寄存器組為組0</p><p><b> CLR RS0</b></p><p> POP PSW ;恢復現場</p><p> RE
92、T ;子程序返回</p><p><b> ?。伙@示子程序</b></p><p> ??;入口:78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,</p><p> DISP: PUSHDPH</p><p><b> PUSHDPL</b&
93、gt;</p><p><b> PUSHACC</b></p><p><b> PUSHPSW</b></p><p> CLR RS1 ;改變當前寄存器組為組1</p><p> SETB RS0</p><p>
94、; MOV R1, #78H ;顯示緩沖存儲單元首地址</p><p> MOV R2, #0FEH ;從右至左顯示</p><p> MOV R5, #08H ;循環(huán)次數,即驅動數碼管的位數</p><p> DISP1: MOVA, @R1</p>&
95、lt;p> MOVDPTR, #TAB</p><p> MOVCA, @A+DPTR</p><p> MOVP0, A ;送段控</p><p> MOVP2, R2 ;送位控</p><p> LCALLDL
96、 ;延時1毫秒</p><p> MOVA,R2 ;位控碼送A</p><p> RLA ;獲得新的位控碼</p><p> MOVR2, A ;保存新的位控碼</p><p> INCR1
97、 ;獲得新的顯示緩沖單元地址</p><p> DJNZR5,DISP1 ;循環(huán)沒有結束則繼續(xù)</p><p> DISP2:POPPSW ;恢復當前寄存器組的組號</p><p><b> POPACC</b></p><p>&l
98、t;b> POPDPL</b></p><p><b> POPDPH</b></p><p><b> RET</b></p><p> ?。谎訒r1ms子程序(晶振頻率12MHz)DL</p><p> DL:MOVR7, #02H</p>
99、<p> DL1:MOVR6, #0FFH</p><p> DL2:DJNZR6, DL2</p><p> DJNZR7, DL1</p><p><b> RET</b></p><p><b> END</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數字式秒表單片機數字秒表課程設計
- 課程設計---基于單片機的數字式秒表的設計
- 單片機課程設計-基于單片機的數字秒表的設計
- 數字式秒表-《單片機技術》課程設計說明書
- 單片機的數字秒表課程設計
- 單片機數字秒表課程設計
- 單片機課程設計-數字秒表
- 單片機課程設計-數字秒表
- 基于單片機控制的數字秒表課程設計
- 課程設計--基于51單片機的數字秒表設計
- 基于單片機數字秒表系統(tǒng)的課程設計
- 基于單片機的秒表設計單片機課程設計
- 數字式秒表的課程設計
- 數字式秒表課程設計
- 數字式秒表課程設計
- 數字式秒表課程設計
- 數字式秒表課程設計
- 基于單片機的秒表課程設計
- 課程設計--基于單片機的(秒表)設計
- 單片機課程設計-數字秒表系統(tǒng)設計
評論
0/150
提交評論