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