基于單片機(jī)的秒表課程設(shè)計(jì)報告書_第1頁
基于單片機(jī)的秒表課程設(shè)計(jì)報告書_第2頁
基于單片機(jī)的秒表課程設(shè)計(jì)報告書_第3頁
基于單片機(jī)的秒表課程設(shè)計(jì)報告書_第4頁
基于單片機(jī)的秒表課程設(shè)計(jì)報告書_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.PAGE....摘要本設(shè)計(jì)的數(shù)字電子秒表系統(tǒng)采用AT89S52單片機(jī)為中心器件,利用其定時器/計(jì)數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼管以及外部中斷電路來設(shè)計(jì)計(jì)時器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)LED顯示,顯示時間為0~99秒,計(jì)時精度為1秒,能正確地進(jìn)行計(jì)時。其中軟件系統(tǒng)采用C語言編寫程序,包括顯示程序,定時中斷服務(wù),外部中斷服務(wù)程序,延時程序等,并在WAVE中調(diào)試運(yùn)行,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來實(shí)現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。關(guān)鍵詞:電子秒表;AT89S52單片機(jī);C語言..目錄TOC\o"1-3"\h\u6639摘要 I184401系統(tǒng)原理介紹 1157641.1設(shè)計(jì)任務(wù)及功能要求說明 1263951.2數(shù)字式秒表的方案介紹及工作原理說明 1284022數(shù)字式秒表硬件系統(tǒng)的設(shè)計(jì) 385382.1數(shù)字式秒表硬件系統(tǒng)各模塊功能簡要介紹 3263172.1.1AT89S52簡介 343832.1.2時鐘電路 3123122.1.3鍵盤電路 439822.1.4復(fù)位電路 4147152.2數(shù)字式秒表的硬件系統(tǒng)設(shè)計(jì)圖 5108723數(shù)字式秒表軟件系統(tǒng)的設(shè)計(jì) 6297303.1數(shù)字式秒表使用單片機(jī)資源情況 6180383.2主程序流程圖 6140073.3中斷服務(wù)程序流程圖 7180903.4顯示程序流程圖 8279273.5軟件系統(tǒng)程序清單 84430按照流程圖應(yīng)用軟件keil匯編語言編程實(shí)現(xiàn)秒表功能。程序見附錄3。8292664系統(tǒng)調(diào)試與仿真 9196484.1數(shù)字式秒表的設(shè)計(jì)結(jié)論及使用說明 9209164.2調(diào)試軟件介紹 982084.3程序仿真與結(jié)果 939744.4誤差分析及解決方法 106898總結(jié) 1128407參考文獻(xiàn) 1217661致謝 1328120附錄1:系統(tǒng)原理圖 1420209附錄2:程序清單 15..1系統(tǒng)原理介紹1.1設(shè)計(jì)任務(wù)及功能要求說明由單片機(jī)接收小鍵盤控制遞增計(jì)時,由LED顯示模塊計(jì)時時間,顯示格式為XX〔分:XX〔秒.XX,精確到0.01s的整數(shù)倍。繪制系統(tǒng)硬件接線圖,并進(jìn)行系統(tǒng)仿真和實(shí)驗(yàn)。畫出程序流程圖并編寫程序?qū)崿F(xiàn)系統(tǒng)功能。使用單片機(jī)AT89S52作為主要控制芯片,以四位一體共陽極數(shù)碼顯示管通過三極管驅(qū)動作為顯示部分,設(shè)計(jì)一個具有特定功能的數(shù)字式秒表。該數(shù)字式秒表上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符"P.",進(jìn)入準(zhǔn)備工作狀態(tài)。該數(shù)字式秒表通過按鍵控制可實(shí)現(xiàn)開始計(jì)時、暫停計(jì)時、連續(xù)計(jì)時、清零和停止功能。1.2數(shù)字式秒表的方案介紹及工作原理說明使用AT89S52單片機(jī)作為核心控制部件,采用12M晶體振蕩器及微小電容構(gòu)成振蕩電路;采用S8550作為數(shù)碼管的驅(qū)動部分;用兩個四位一體共陽極或共陰極數(shù)碼顯示管作為顯示部分,構(gòu)成數(shù)字式秒表的主體結(jié)構(gòu),配合獨(dú)立式鍵盤和復(fù)位電路完成此秒表的復(fù)位、計(jì)時、連續(xù)、清零、停止各項(xiàng)功能。對于時鐘,它有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘,即定時時間,它通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)現(xiàn),即用單片機(jī)內(nèi)部的可編程定時/計(jì)數(shù)器來實(shí)現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實(shí)現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法。LED數(shù)碼顯示器有如下兩種連接方法:共陽極接法:把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極,使用時公共陽極接+5V,每個發(fā)光二極管的陰極通過電阻與輸入端相連。共陰極接法:把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。鍵盤部分方案:鍵盤控制采用獨(dú)立式按鍵,每個按鍵的一端均接地,另一端直接和P1口相連,在按鍵和P1口之間通過10K電阻與+5V電源相連。鍵盤通過檢測輸入線的電平狀態(tài)就可以很容易地判斷哪個鍵被按下了,這種方法操作速度高而且軟件結(jié)構(gòu)很簡單,比較適合按鍵較少或操作速度較高的場合,這種獨(dú)立式接口的應(yīng)用很普遍。顯示部分方案:顯示部分采用動態(tài)顯示。數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。動態(tài)顯示是利用人眼視覺暫留特性來實(shí)現(xiàn)顯示的。事實(shí)上,顯示器上任何時刻只有一個數(shù)碼管有顯示。由于各數(shù)碼管輪流顯示的時間間隔短、節(jié)奏快,人的眼睛反應(yīng)不過來,因此看到的是連續(xù)顯示的現(xiàn)象。為防止閃爍延時的時間在1ms左右,不能太長,也不能太短。本設(shè)計(jì)可采用P0口直接驅(qū)動八段數(shù)碼管顯示。此方案成本低,而且單片機(jī)的I/O口占用較少,可以節(jié)約單片機(jī)接口資源,而且功耗更低。此電路采用單片機(jī)的P0口作為數(shù)碼顯示管的段控,采用P2口作為數(shù)碼管的位控。8個獨(dú)立式鍵盤分別接在單片機(jī)的P1口上,以及其他部分構(gòu)成數(shù)字式秒表的硬件電路。通過編寫程序使用單片機(jī)的定時計(jì)數(shù)器,以及軟件延時,中斷資源來實(shí)現(xiàn)秒計(jì)時和相關(guān)控制。此數(shù)字式秒表的硬件整體結(jié)構(gòu)如圖1-1所示。AT89S52AT89S52電源振蕩電路復(fù)位電路獨(dú)立式鍵盤驅(qū)動電路數(shù)碼管顯示限流圖1-1數(shù)字式秒表的硬件結(jié)構(gòu)圖2數(shù)字式秒表硬件系統(tǒng)的設(shè)計(jì)2.1數(shù)字式秒表硬件系統(tǒng)各模塊功能簡要介紹2.1.1AT89S52簡介<1>與MCS-51產(chǎn)品相兼容;<2>具有8KB可改寫的Flash內(nèi)部程序存儲器,可寫/擦1000次;<5>256字節(jié)內(nèi)部RAM;<6>32根可編程I/O口;<7> 3個16位定時器/計(jì)數(shù)器。<8>8個中斷源;<9> 可編程中串行口;<10>低功耗空閑和掉電方式。它的價格便宜,功能強(qiáng)大,能耗低。很大程度上減少總電路的復(fù)雜性,提高了所設(shè)計(jì)系統(tǒng)的穩(wěn)定性。其芯片引腳圖如圖2-1所示。圖2-1單片機(jī)AT89S52引腳圖時鐘電路 時鐘電路用于產(chǎn)生單片機(jī)工作所需要的時鐘信號,單片機(jī)本身就是一個復(fù)雜的同步時序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴(yán)格地按時序進(jìn)行工作。在AT89S52芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳TXAL2,在芯片的外部通過這兩個引角跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構(gòu)成了一個穩(wěn)定的自激振蕩器。此電路采用12MHz的石英晶體。時鐘電路如圖2-2:圖2-2時鐘電路鍵盤電路本設(shè)計(jì)使用獨(dú)立式鍵盤接在單片機(jī)的P1口上但通過軟件賦予其中三個按鍵功能,其中S2是計(jì)時開始按鍵,第二功能為停止,S3為計(jì)時暫停按鍵,第二功能為繼續(xù)計(jì)時按鍵,S4是清零按鍵。注意使用時只有在暫停狀態(tài)下才能繼續(xù)計(jì)時,只有在停止?fàn)顟B(tài)下才能清零,在停止時不能繼續(xù)計(jì)時,在暫停時不能清零。鍵盤電路如圖2-3:圖2-3獨(dú)立式鍵盤電路圖復(fù)位電路 復(fù)位是單片機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或操作錯誤是系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復(fù)位鍵以重新啟動。RST引腳是單片機(jī)復(fù)位信號的輸入端,復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)24個振蕩周期〔即2個機(jī)器周期以上,若使用頻率為6MHz的晶振,則復(fù)位信號持續(xù)時間應(yīng)超過4us才能完成復(fù)位操作。復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式。上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的。在本設(shè)計(jì)中采用了按鍵電平復(fù)位方式,其復(fù)位電路如圖2-4所示:圖2-4復(fù)位電路2.2數(shù)字式秒表的硬件系統(tǒng)設(shè)計(jì)圖此處電路原理圖的繪制是使用protues軟件完成,protues是基于Win95/WinNT/Win98/Win2000的純32位電路設(shè)計(jì)制版系統(tǒng)。protues提供了一個集成的設(shè)計(jì)環(huán)境,包括了原理圖設(shè)計(jì)和PCB布線工具,集成的設(shè)計(jì)文檔管理,支持通過網(wǎng)絡(luò)進(jìn)行工作組協(xié)同設(shè)計(jì)功能。根據(jù)硬件接線要求設(shè)計(jì)繪制電路原理圖具體電路圖見附錄1。3數(shù)字式秒表軟件系統(tǒng)的設(shè)計(jì)3.1數(shù)字式秒表使用單片機(jī)資源情況本次電子鐘設(shè)計(jì)除了了使用單片機(jī)工作所必須的硬件資源〔如連接晶振的引腳XTAL1和XTAL2,復(fù)位引腳RESET外,對單片機(jī)的硬件資源還做了具體的安排。<1>.P0口:P0.0-P0.7作為數(shù)碼管顯示器的段控。<2>.P1口:P1.0-P1.3作為獨(dú)立式鍵盤的輸入端。<3>.P2口:P2.0-P2.7分別控制數(shù)碼管LED0-LED7的位控碼驅(qū)動。<4>.定時/計(jì)數(shù)器:使用定時器0工作方式2實(shí)現(xiàn)數(shù)字式計(jì)數(shù)器的運(yùn)行。<5>.專用寄存器:定時器控制寄存器TCON,通過設(shè)置該寄存器TR0位的狀態(tài)來控制定時/計(jì)數(shù)器0的啟動/停止;中斷允許寄存器IE,通過設(shè)置該寄存器EA/ET0位的狀態(tài)來設(shè)置定時/計(jì)數(shù)器0中斷允許/禁止;定時/計(jì)數(shù)器工作方式寄存器TMOD,設(shè)置定時/計(jì)數(shù)器0的工作方式。3.2主程序流程圖MAINMAIN定義堆棧顯示緩沖單元清零定時器0工作方式1裝載計(jì)數(shù)初值定時開始開中斷設(shè)置循環(huán)次數(shù)調(diào)用顯示子程序等待定時中斷請求鍵盤掃描圖3-1主程序流程圖3.3中斷服務(wù)程序流程圖PDJW現(xiàn)場保護(hù)計(jì)數(shù)器重加載循環(huán)次數(shù)減1是否滿8次毫秒值加1是否滿60毫秒緩沖清零秒值加1是否60S秒顯緩沖清零分顯示加1PDJW現(xiàn)場保護(hù)計(jì)數(shù)器重加載循環(huán)次數(shù)減1是否滿8次毫秒值加1是否滿60毫秒緩沖清零秒值加1是否60S秒顯緩沖清零分顯示加1是否滿60分顯示清零現(xiàn)場恢復(fù)返回YNNNNYYY3.4顯示程序流程圖DISP現(xiàn)場保護(hù)寄存器初始化顯示代碼查表送段控代碼送位控代碼延時送段控代碼位控代碼左移左移8次?恢復(fù)現(xiàn)場返回NYDISP現(xiàn)場保護(hù)寄存器初始化顯示代碼查表送段控代碼送位控代碼延時送段控代碼位控代碼左移左移8次?恢復(fù)現(xiàn)場返回NY圖3-3顯示程序流程圖3.5軟件系統(tǒng)程序清單按照流程圖應(yīng)用軟件keil匯編語言編程實(shí)現(xiàn)秒表功能。程序見附錄2。4系統(tǒng)調(diào)試與仿真4.1數(shù)字式秒表的設(shè)計(jì)結(jié)論及使用說明通過設(shè)計(jì)和調(diào)試,數(shù)字式秒表能順利完成各項(xiàng)功能。上電或復(fù)位后顯示"P."提示符,此時按1鍵便可開始計(jì)時。在計(jì)數(shù)狀態(tài)下,按下2鍵即可實(shí)現(xiàn)暫停,再次按下2鍵即可實(shí)現(xiàn)繼續(xù)計(jì)數(shù),在計(jì)數(shù)狀態(tài)下按下1鍵,實(shí)現(xiàn)計(jì)數(shù)停止,在停止?fàn)顟B(tài)下按下3鍵,便可實(shí)現(xiàn)計(jì)數(shù)清零。計(jì)數(shù)狀態(tài)下按下清零鍵,無效。4.2調(diào)試軟件介紹本電子鐘的設(shè)計(jì)用的pretues仿真軟件設(shè)計(jì)電路并仿真。ProteusISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析<SPICE>各種模擬器件和集成電路,該軟件的特點(diǎn)是:①實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。②支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51uVision2等軟件。④具有強(qiáng)大的原理圖繪制功能??傊?該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。因?yàn)閜retues仿真軟件中所有的情況都是在理想想的條件下,但是與實(shí)際電路的工作還是有很大的差別,所以我們必需考慮到實(shí)際情況應(yīng)接入驅(qū)動限流等電路它才能被實(shí)際所應(yīng)用。4.3程序仿真與結(jié)果我們是在Keil軟件里編寫程序并編譯通過才能被硬件電路所應(yīng)用。Keil的功能比較強(qiáng)大但還是有一定的缺點(diǎn)。他編譯過程中他只能檢查出所編寫的語法錯誤,所以我們一步一步的去在硬件電路里仿真去達(dá)到我們所設(shè)計(jì)要求的功能。電子鐘準(zhǔn)備狀態(tài)與電子鐘自動運(yùn)行狀態(tài)的仿真如圖3-4所示。圖3-4數(shù)碼管顯示4.4誤差分析及解決方法我們可以發(fā)現(xiàn)數(shù)字式秒表計(jì)數(shù)一段時間的我們的標(biāo)準(zhǔn)時間相比較出現(xiàn)了誤差,所設(shè)計(jì)的數(shù)字式秒表比我們的標(biāo)準(zhǔn)時間要慢,而且相比較的時間越長他的時差越大。經(jīng)過分其主要原因與硬件和軟件都有關(guān)。軟件原因:我們從外部中斷請求有效到轉(zhuǎn)向中斷區(qū)入口地址所需的機(jī)器周期數(shù)來計(jì)算中斷時間,51系列單片機(jī)最短響應(yīng)時間為3個機(jī)器周期。在一般情況下中斷響應(yīng)時間通常無需考慮,但在精確定時的應(yīng)用場合需知道中斷響應(yīng)時間,以保證定時的精確控制。硬件原因:單片機(jī)的時鐘信號是由外部的振蕩電路所提供,在芯片的外部通過接XATL1與XATL2這兩個引角跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構(gòu)成了一個穩(wěn)定的自激振蕩器。因?yàn)殡娮釉豢梢跃陀形覀兯O(shè)計(jì)的那么理想〔電容的容量,振晶的輸出頻率所以會造成我們的時間準(zhǔn)確。針對這樣的問題我們就能只能從上述兩個方面入手去解決。軟件方面我們可以通過計(jì)算設(shè)計(jì)子程序去減少響應(yīng)的時差。硬件部分我們可以采用一些穩(wěn)定,精確度比較高的電子元件去完善,但是在最后調(diào)試出的還是有誤差但我盡可能的減少差誤差接近理想??偨Y(jié)通過對數(shù)字式秒表的設(shè)計(jì)與制作,我們把理論與實(shí)際相結(jié)合。加深了對理論知識的理解,也增強(qiáng)了我們的動手能力。在電路設(shè)計(jì)過程中,我們學(xué)會了自己收集信息和處理信息的能力,為以后的學(xué)習(xí)和制作奠定了一定的基礎(chǔ),數(shù)字式秒表看似簡單,但當(dāng)我們自己著手設(shè)計(jì)與制作的時候我們才發(fā)現(xiàn)是困難重重的。在元器件采購過程中發(fā)現(xiàn)的問題更大,在電路計(jì)算式我們根本沒有考慮到元器件的型號和性能參數(shù),然而在實(shí)物購買時我們就不得不開始考慮其型號和性能參數(shù),這也是理論與實(shí)際的差別。還有,一些阻值的電阻與某些大小的電容根本就沒有這種型號的買,這樣我們不得不考慮改變設(shè)計(jì)電路中的參數(shù),或者采用電路的等效方式來解決這樣的問題。從剛剛接觸單片機(jī)開始,此設(shè)計(jì)是我迄今為止,編寫的最大的一個程序,在調(diào)試過程中,我學(xué)會了怎樣去根據(jù)實(shí)驗(yàn)現(xiàn)象解決問題,分析問題的所在點(diǎn)。它不僅加強(qiáng)了我們解決問題的能力,同時也鍛煉了我們的邏輯思維能力。此次課程設(shè)計(jì),學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯的隨機(jī)應(yīng)變,使我們在實(shí)際動手能力方面得到了較大的提高。參考文獻(xiàn)[1]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1988.[2]李勛等.單片機(jī)實(shí)用教程[M].北京:北京航空航天大學(xué)出版社,2000[3]王幸之等.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999[4]何為民.低功耗單片微型計(jì)算機(jī)系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1994[5]李杏春等.8090單片機(jī)原理及實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1996致謝剛開始接到課程設(shè)計(jì)任務(wù),認(rèn)為挺簡單的,然而真正開始動手制作時才知道并不是那么簡單,從初期的資料收集以及原理圖的繪制都受到了老師以及同學(xué)的幫助,在遇到困難時請教老師和同學(xué)都能得到耐心的解答,幫助我們少走彎路。感謝我的老師,以及我的同學(xué),在整個硬件電路的設(shè)計(jì)與制作過程中,他們都給了我很大的支持,是我從此次課程設(shè)計(jì)過程中獲益匪淺,本人對設(shè)計(jì)過程中給予了通力合作,以及精神的支持,的老師和同學(xué)深表感謝。如果沒有他們我想我的設(shè)計(jì)不會這樣順利的完成。由于本人水平有限,在技術(shù)指標(biāo)和論文寫作中可能存在一些缺陷,懇請各位老師和同學(xué)們批評指教。附錄1:系統(tǒng)原理圖附錄2:程序清單;******************************************************************;;項(xiàng)目名稱:秒表;;設(shè)計(jì)者:蔣慧;;設(shè)計(jì)日期:20XX01月;;******************************************************************;;LED數(shù)碼管顯示器設(shè)定;;P0.7P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a;;P2.7-P2.0位控線從左至右<LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0>;;顯示緩沖區(qū)設(shè)定從左至右依次為78H,79H,7AH,7BH,7CH,7DH,7EH,7FH;;******************************************************************;;獨(dú)立式鍵盤設(shè)定與功能;;8個按鍵S1至S8分別依次接在P1.0至P1.7口線;;K0的功能為復(fù)位;K1的功能為啟動/停止〔標(biāo)識符為22H.0當(dāng)它為1時啟動,為0時停止;K2的功能為暫停/繼續(xù)〔標(biāo)識符為22H.1當(dāng)它為1時暫停,為0時繼續(xù);K3的功能為清零;*******************************************************************;;常數(shù)表格; ;DISBH<系統(tǒng)提示符P.字型代碼序號表>;;TAB<共陽數(shù)碼管字型代碼表> ;;*******************************************************************;;子程序;;TIME_1MS〔定時1ms子程序;;KEY<鍵掃描子程序>;;KEYCHULI<P1口數(shù)據(jù)處理子程序>;;DISP〔數(shù)碼管顯示子程序;;DL<2毫秒延時子程序>;;ADD01<入口地址為R0>;*******************************************************************;;存儲器內(nèi)容的安排;;堆棧棧底7FHH; ;;20H作為按鍵標(biāo)志〔20H.0——20H.7分別對應(yīng)的是按鍵K1——K8;;專用寄存組1,用在顯示子程序中;*******************************************************************;;系統(tǒng)起始程序區(qū) ORG0000HSTART:LJMPMAINORG000BH LJMPPDJW;****************************************************************;;系統(tǒng)監(jiān)控程序區(qū)ORG0030HMAIN:MOVPSW,#00HMOVSP,#7FH;確立堆棧區(qū)MOVR0,#20H;RAM區(qū)首地址MOVR7,#96;RAM區(qū)單元個數(shù) MOV TMOD, #01H SETBEA SETB ET0ML: MOVR0,#00HINCR0 DJNZR7,MLTSF:MOVDPTR,#DISBH;系統(tǒng)初始化后提示符"P."字符代碼表首地址MOVR5,#08H MOVR0,#78HDISPTSF:CLRAMOVCA,A+DPTRMOVR0,AINCR0INCDPTRDJNZR5,DISPTSF KEY0: LCALL DISPLCALLKEY 20H.0,K1 20H.1,K2 20H.2,K3 LJMPKEY0KEY00:LCALLKEYLCALLDISP 20H.2,K3 LJMPKEY00K1:22H.1,KEY0 ;如果此時為暫停狀態(tài),本次按鍵K1無效 CPL22H.0 22H.0,K01 ;高電平則計(jì)時 CLRTR0;低電平則停止LCALLDISP LJMPKEY00K01:MOV7AH,#12H ;從零開始計(jì)時MOV7DH,#12HMOV7FH,#10HMOV78H,#00HMOV79H,#00HMOV7BH,#00HMOV7CH,#00HMOV7EH,#00HMOV7FH,#00H LCALLDISPMOVTH0, #0D8HMOVTL0, #0F0HSETBTR0 ;啟動定時器LJMPKEY0K2:22H.0,K21 ;判斷秒表是否啟動,如不是啟動狀態(tài)則此次按鍵無效LJMPKEY0K21:CPL 22H.122H.1,K22SETB TR0 ;繼續(xù)計(jì)時 LJMPKEY0K22:CLRTR0 ;暫停秒表LCALLDISP LJMPKEY0K3: 22H.0, KEY0 ;只有當(dāng)停止是,清零鍵才有效 MOVR0,#79H ;秒表清零LCALLCLR00 MOVR0,#7CHLCALLCLR00 MOVR0,#7FHLCALLCLR00 LJMPKEY0PDJW:PUSHPSWPUSHACC MOVTMOD,#01H ;定時器以工作方式1工作 SETBRS1 ;設(shè)定組號為2組 CLRRS0 MOV TH0, #0D8H MOV TL0, #0F0H MOVR0, #79H LCALLADD01 CJNER2,#99,RETT;判斷1秒到?jīng)] MOVR0,#7CH LCALLADD01 CJNER2,#60,RETT;判斷60毫秒到?jīng)] LCALLCLR00 MOVR0,#7FH LCALLADD01 CJNER2,#60H,RETT;判斷60分到?jīng)] LCALLCLR00RETT:POPACCPOPPSW RETI;*****************************************************************;;常數(shù)表格區(qū) ;系統(tǒng)初始化后提示符"P."字符代碼表;DISBH:DB10H,10H,10H,10H,10H,10H,10H,11H;提示符"P."字符序號;顯示字符段選碼表<共陽極代碼>TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;0-8DB90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;9,A,B,C,D,E,F,滅,p.,-;*******************************************************************;;子程序區(qū);ADD01:MOV A,R0DECR0 SWAPA ORLA,R0 ADDA,#01H DAA MOVR2,A ANLA,#0FH MOVR0,A MOVA,R2 ANLA,#0F0H SWAPA INCR0 MOVR0,A RETCLR00:MOVR0,#00HDECR0 MOVR0,#00H RET;鍵掃描子程序KEY: LCALLKEYCHULI ;調(diào)P1口數(shù)據(jù)處理子程序JZEXIT ;沒有鍵按下,轉(zhuǎn)返回 LCALL DISP ;調(diào)顯示子程序去抖動 LCALL DISPLCALLKEYCHULI ;調(diào)P1口數(shù)據(jù)處理子程序JZEXIT ;沒有鍵按下,轉(zhuǎn)返回 MO

溫馨提示

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

評論

0/150

提交評論