基于數(shù)碼管時(shí)鐘電路的設(shè)計(jì)_第1頁(yè)
基于數(shù)碼管時(shí)鐘電路的設(shè)計(jì)_第2頁(yè)
基于數(shù)碼管時(shí)鐘電路的設(shè)計(jì)_第3頁(yè)
基于數(shù)碼管時(shí)鐘電路的設(shè)計(jì)_第4頁(yè)
基于數(shù)碼管時(shí)鐘電路的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

23單片機(jī)課程設(shè)計(jì)摘要 LED數(shù)碼管時(shí)鐘電路采用24 h計(jì)時(shí)方式,時(shí)、分、秒用六位數(shù)碼管顯示。該電路采用AT89C2051單片機(jī),使用3 V電池供電,只使用一個(gè)按鍵開關(guān)即可進(jìn)入調(diào)時(shí)、省電(不顯示LED數(shù)碼管)和正常顯示三種狀態(tài)。 AT89C2051單片機(jī)的應(yīng)用意義采用ATMEL的AT89C2051微處理器,是基于以下幾個(gè)因素:1)89C2051為51內(nèi)核,仿真調(diào)試軟硬件資源豐富;2)性價(jià)比高,貨源充足;3)DIP20封裝,體積小,便于產(chǎn)品小型化;4)為EEPROM程序存儲(chǔ)介質(zhì),1000次以上擦/寫周期,便于編程調(diào)試;5)具有IDLE和POWER-DOWN兩種工作模式,便于進(jìn)行低功耗設(shè)計(jì);6)工作電壓范圍寬:2.76V,便于交直流供電。 AT89C2051主要特點(diǎn)1)指令與MCS-51芯片兼容。2)內(nèi)含2K字節(jié)的可反復(fù)電氣燒錄及可擦除內(nèi)存。3)工作電壓2.7V至6V。4)工作頻率最高至24MHZ。5)內(nèi)含128字節(jié)RAM。6)15條可編程控制I/O線。7)一個(gè)模擬電壓比較器關(guān)鍵字:數(shù)碼管 脈沖 定時(shí) 計(jì)數(shù)目錄單片機(jī)簡(jiǎn)介 38051單片機(jī)介紹 48051單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器簡(jiǎn)介 6時(shí)鐘電路硬件設(shè)計(jì) 7系統(tǒng)主要程序的設(shè)計(jì) 8主程序流程圖 9T0中斷服務(wù)程序 10AT89C2051時(shí)鐘程序 11計(jì)數(shù)初值 19學(xué)習(xí)心得 20參考文獻(xiàn) 20單片機(jī)簡(jiǎn)介單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。 可以說,二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦時(shí)代。不過,這種電腦,通常是指?jìng)€(gè)人計(jì)算機(jī),簡(jiǎn)稱PC機(jī)。它由主機(jī)、鍵盤、顯示器等組成。還有一類計(jì)算機(jī),大多數(shù)人卻不怎么熟悉。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)(亦稱微型控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡(jiǎn)單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中,起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”,如智能型洗衣機(jī)等。現(xiàn)在有些工廠的技術(shù)人員或其它業(yè)余電子開發(fā)者搞出來(lái)的某些產(chǎn)品,不是電路太復(fù)雜,就是功能太簡(jiǎn)單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機(jī)或其它可編程邏輯器件上。 單片機(jī)的應(yīng)用領(lǐng)域 : 1.單片機(jī)在智能儀器儀表中的應(yīng)用; 2.單片機(jī)在工業(yè)測(cè)控中的應(yīng)用; 3.單片機(jī)在計(jì)算機(jī)網(wǎng)絡(luò)和通訊技術(shù)中的應(yīng)用; 4.單片機(jī)在日常生活及家電中的應(yīng)用; 5.單片機(jī)在辦公自動(dòng)化方面。 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。 8051單片機(jī)介紹MCS-51系列單片機(jī)芯片均為40條引腳,HMOS工藝制造的芯片用雙列直插(DIP)方式封裝,其引腳示意及功能分類如圖所示。各引腳功能說明如下:1. 主電源引腳Vcc(40腳):接+5V電源正端。Vss(20腳):接+5V電源地端。 2. 外接晶體引腳XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2(18腳):接外部石英晶體的另一端。在單片機(jī)內(nèi)部,它是片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端;對(duì)于CHMOS單片機(jī),該引腳懸空不接。2. 輸入/輸出引腳 (1) P0口(3932腳):P0.0P0.7統(tǒng)稱為P0口。在不接片外存儲(chǔ)器與不擴(kuò)展I/O口時(shí),可作為準(zhǔn)雙向輸入/輸出口。在接有片外存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口分時(shí)復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。 (2) P1口(18腳):P1.0P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O口使用。對(duì)于52子系列,P1.0與P1.1還有第二功能:P1.0可用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2,P1.1可用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2EX。(3) P2口(2128腳):P2.0P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O口使用;在接有片外存儲(chǔ)器或擴(kuò)展I/O口且尋址范圍超過256字節(jié)時(shí),P2口用作高8位地址總線。 表2.1 P3口第二功能引 腳 第二功能P3.0 RXD 串行口輸入P3.1 TXD 串行口輸出端P3.2 INT0 外部中斷0請(qǐng)求輸入端,低電平有效P3.3 INT1外部中斷1請(qǐng)求輸入端,低電平有效P3.4 T0 定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖輸入端P3.5 T1 定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)脈沖輸入端P3.6 WR 外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸入端,低電平有效P3.7 RD 外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸入端,低電平有效(4) P3口(1017腳):P3.0P3.7統(tǒng)稱為P3口。除作為準(zhǔn)雙向I/O口使用外,還可以將每一位用于第二功能,而且P3口的每一條引腳均可以獨(dú)立定義為第一功能的輸入輸出或第三功能。P3口的第二功能如表2.1所示。4. 控制線 (1) ALE/PROG(30腳):地址鎖存有效信號(hào)輸入端。ALE在每個(gè)機(jī)器周期內(nèi)輸出兩個(gè)脈沖。在訪問片外程序存儲(chǔ)器期間,下降沿用于控制鎖存P0輸出的低8位地址;在不訪問片外程序存儲(chǔ)器期間,可作為對(duì)外輸出的時(shí)鐘脈沖或用于定時(shí)目的。但要注意,在訪問片外數(shù)據(jù)存儲(chǔ)器期間,ALE脈沖會(huì)跳空一個(gè),此時(shí)作為時(shí)鐘輸出就不妥了。對(duì)于片內(nèi)含有EPROM的機(jī)型,在編程期間,該引腳用作編程脈沖PROG的輸入端。 (2) PSEN(29腳):片外程序存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期該信號(hào)兩次有效,以通過數(shù)據(jù)總線P0口讀回指令或常數(shù)。在訪問片外數(shù)據(jù)存儲(chǔ)器期間,PSEN信號(hào)將不再出現(xiàn)。 (3) RST/VPD引腳(9腳):RST即為RESET,VPD為備用電源。該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)回復(fù)到初始狀態(tài)。上電時(shí),考慮到振蕩器有一定的起振時(shí)間,該引腳上高電平必須持續(xù)10ms以上才能保證有效復(fù)位。當(dāng)Vcc發(fā)生故障,降低到低電平規(guī)定值或掉電時(shí),該引腳可接上備用電源VPD(+5V)為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。 (4)EA/Vpp(31腳):EA為片外程序存儲(chǔ)器選用端。該引腳有效(低電平)時(shí),只選用片外程序存儲(chǔ)器,否則單片機(jī)上電或復(fù)位后選用片內(nèi)程序存儲(chǔ)器。對(duì)于片內(nèi)含有EPROM的機(jī)型,在編程期間,此引腳用作21V編程電源Vpp的輸入端。8051單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器簡(jiǎn)介 AT89C51內(nèi)部有兩個(gè)可變成的定時(shí)器/計(jì)數(shù)器,分別稱為定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1(簡(jiǎn)寫為T0和T1)。它們都具備定時(shí)和計(jì)數(shù)功能,有4種工作方式可供選擇。定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)與功能CPU通過內(nèi)部總線與定時(shí)器/計(jì)數(shù)器交換信息。定時(shí)器/計(jì)數(shù)器0由TH0(地址為8CH)和TL0(地址為8AH)組成;定時(shí)器/計(jì)數(shù)器1由TH1(地址為8DH)和TL1(地址為8BH)組成。TH0(TH1)表示高8位,TL0(TL1)表示低8位。這4個(gè)8位計(jì)數(shù)器均屬于特殊功能寄存器。TMOD寄存器用來(lái)確定工作方式;TCON是控制寄存器,用來(lái)控制T0和T1的啟動(dòng)、停止、定時(shí)、計(jì)數(shù)操作并設(shè)置溢出標(biāo)志。1. 計(jì)數(shù)功能AT89C51有T1/P3.4和T1/P3.5引腳,分別為計(jì)數(shù)器的計(jì)數(shù)脈沖輸入端。外部輸入的計(jì)數(shù)脈沖在負(fù)跳變有效,計(jì)數(shù)器加1。計(jì)數(shù)方式下,單片機(jī)CPU在每個(gè)及其周期的S5P2狀態(tài)對(duì)外部計(jì)數(shù)脈沖采樣。如果前一個(gè)機(jī)器周期采樣為高電平,后一個(gè)機(jī)器周期采樣為低電平,那么在下一個(gè)機(jī)器周期的S3P1狀態(tài)進(jìn)行計(jì)數(shù)??梢姴蓸佑?jì)數(shù)脈沖是在2個(gè)機(jī)器周期內(nèi)進(jìn)行的,計(jì)數(shù)脈沖頻率不能高于晶振頻率的1/24。假如晶振頻率為6MHz,則計(jì)數(shù)脈沖頻率應(yīng)低于1/4MHz。當(dāng)計(jì)數(shù)器滿后,再來(lái)一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器全部回0。這就是溢出。 脈沖的計(jì)數(shù)長(zhǎng)度與計(jì)數(shù)器預(yù)先裝入的初值有關(guān)。初值越大,計(jì)數(shù)長(zhǎng)度越??;初值越小,計(jì)數(shù)長(zhǎng)度越大。最大計(jì)數(shù)長(zhǎng)度為65536(216 )個(gè)脈沖(初值為0)。2. 定時(shí)功能定時(shí)工作方式是對(duì)芯片內(nèi)部的機(jī)器周期計(jì)數(shù),或者說計(jì)數(shù)脈沖來(lái)自芯片內(nèi)部。每來(lái)一個(gè)機(jī)器周期,計(jì)數(shù)器加1,直到計(jì)數(shù)器滿,再來(lái)一個(gè)機(jī)器周期信號(hào),定時(shí)器全部回0。這就是溢出。因?yàn)槊總€(gè)機(jī)器周期的時(shí)間固定(晶振為12MHz,機(jī)器周期為1us;晶振為6MHz,機(jī)器周期為2us),由開始計(jì)數(shù)到溢出這段時(shí)間就是定時(shí)時(shí)間。在機(jī)器周期一定的情況下,定時(shí)時(shí)間與定時(shí)器預(yù)先裝入的初值有關(guān)。初值越大,定時(shí)時(shí)間越短;初值越小,定時(shí)時(shí)間越長(zhǎng)。最長(zhǎng)的定時(shí)時(shí)間為65536(216)個(gè)機(jī)器周期(初值為0)。例如,晶振為12MHz,最長(zhǎng)定時(shí)為65.536ms;晶振為6MHz,最長(zhǎng)定時(shí)為131.072ms。時(shí)鐘電路硬件的設(shè)計(jì)數(shù)碼管時(shí)鐘電路如圖所示,其采用AT89C2051單片機(jī)最小化應(yīng)用設(shè)計(jì),LED顯示采用動(dòng)態(tài)掃描方式實(shí)現(xiàn),P1口輸出段碼數(shù)據(jù),P3.13.5口作掃描輸出,P3.7接按鈕開關(guān)。為了提供LED數(shù)碼管的驅(qū)動(dòng)電流,用三極管9012作電源驅(qū)動(dòng)輸出。為了提高秒計(jì)時(shí)的精確性,采用12MHZ晶振。系統(tǒng)主要程序的設(shè)計(jì) (1)主程序 本設(shè)計(jì)中的計(jì)時(shí)采用定時(shí)器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)P3.7下時(shí),轉(zhuǎn)入調(diào)時(shí)功能程序。系統(tǒng)主流程圖如圖7.2所示。 (2)顯示子程序 數(shù)碼顯示的數(shù)據(jù)存放在內(nèi)存單元70H75H中,其中70H71H存放秒數(shù)據(jù),72H73H存放分?jǐn)?shù)據(jù),74H75H存放時(shí)數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制BCD碼。由于采用軟件動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制BCD碼數(shù)據(jù)的對(duì)應(yīng)段碼存放在ROM表中。顯示時(shí),先取出70H75H某一地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示用段碼從P1口輸出。P3口將對(duì)應(yīng)的數(shù)碼管選中,就能顯示該地址單元的數(shù)據(jù)值。 (3)定時(shí)器T0中斷服務(wù)程序 定時(shí)器T0用于時(shí)間計(jì)時(shí)。定時(shí)溢出中斷周期設(shè)為50ms,中斷累計(jì)20次(即1s)時(shí)對(duì)秒計(jì)數(shù)單元進(jìn)行加1操作。時(shí)間計(jì)數(shù)單元地址分別在70H71H(s)、76H77H(min)、78H79H(h),7AH單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0AH)。在計(jì)數(shù)單元中采用十進(jìn)制BCD碼計(jì)數(shù),滿60進(jìn)位。T0中斷服務(wù)程序流程圖如圖7.3所示。 (4)T1中斷服務(wù)程序 T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的亮閃。在時(shí)間調(diào)整狀態(tài)下,每過0.3s,將對(duì)應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH).這樣,在調(diào)整時(shí)間時(shí),對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)就會(huì)間隔閃亮。 (5)調(diào)時(shí)功能程序 調(diào)時(shí)功能程序的設(shè)計(jì)方法是:按下按鍵,若按下時(shí)間小于1s,進(jìn)入省電狀態(tài)(數(shù)碼管不亮,時(shí)鐘不停),否則進(jìn)入調(diào)分狀態(tài)。等待操作,此時(shí)計(jì)時(shí)器停止走動(dòng)。當(dāng)再次按下按鈕時(shí),若按下時(shí)間小于0.5s,則時(shí)間加1min;若按下時(shí)間大于0.5s,則進(jìn)入小時(shí)調(diào)整狀態(tài)。在小時(shí)調(diào)整狀態(tài)下,當(dāng)按鍵按下的時(shí)間大于0.5s時(shí)退出調(diào)整狀態(tài),時(shí)鐘繼續(xù)走動(dòng)。主程序流程圖開始顯示單元清零T0、T1設(shè)為16位計(jì)數(shù)器模式允許T0中斷調(diào)用顯示子程序P3.7=0? N Y進(jìn)入調(diào)時(shí)程序TO中斷服務(wù)程序T0中斷保護(hù)現(xiàn)場(chǎng)1s到? N Y秒單元加1=60s? N Y秒單元清零,分加1=60min? N Y分單元清零,時(shí)加1=24h? N Y時(shí)單元清零恢復(fù)現(xiàn)場(chǎng),中斷返回 AT89C2051時(shí)鐘程序 定時(shí)器T0、T1溢出周期為50ms,T0為秒計(jì)數(shù)用,T1為調(diào)整時(shí)閃爍用, P3.7為調(diào)整按鈕,P1口為字符輸出口,采用共陽(yáng)顯示管, 中斷入口程序 ORG 0000H ;程序執(zhí)行開始地址LJMP START ;跳到標(biāo)號(hào)START執(zhí)行ORG 0003H ;外中斷0中斷程序入口RETI ;外中斷0中斷ORG 000BH ;定時(shí)器0中斷程序入口LJMP INTT0 ;跳至INTT0執(zhí)行ORG 0013H ;外中斷1中斷程序入口RETI ;外中斷1中斷返回ORG 001BH ;定時(shí)器1中斷程序入口LJMP INTT1 ;跳至INTT1執(zhí)行ORG 0023H ;串行中斷程序入口地址RETI ;串行中斷程序返回主程序 START:MOV R0,#70H ;清70H7AH共11個(gè)內(nèi)存單元 MOV R7,#0BH ;CLEARDISP:MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(標(biāo)志用) MOV 7AH,#0AH ;放入“熄滅符”數(shù)據(jù) MOV TMOD,#11H ;設(shè)T0、T1為16位定時(shí)器 MOV TL0,#0B0H ;50ms定時(shí)初值(T0計(jì)時(shí)用) MOV TH0,#3CH ;50ms定時(shí)初值 MOV TL1,#0B0H ;50ms定時(shí)初值(T1閃爍定時(shí)用) MOV TH1,#3CH ;50ms定時(shí)初值 SETB EA ;總中斷開放 SETB ET0 ;允許T0中斷 SETB TR0 ;開啟T0定時(shí)器 MOV R4,#14H ;1s定時(shí)用初值(50ms*20) START1:LCALL DISPLAY ;調(diào)用顯示子程序 JNB P3.7,SETMM1 ;P3.7口為0時(shí)轉(zhuǎn)時(shí)間調(diào)整程序 SJMP START1 ;P3.7口為1時(shí)跳回START1 SETMMI:LJMP SETMM ;轉(zhuǎn)到時(shí)間調(diào)整程序SETMM 1s計(jì)時(shí)程序T0中斷服務(wù)程序 INTT0:PUSH ACC ;累加器入棧保護(hù) PUSH PSW ;狀態(tài)字入棧保護(hù) CLR ET0 ;關(guān)T0中斷允許 CLR TR0 ;關(guān)閉定時(shí)器T0 MOV A,#0B7H ;中斷響應(yīng)時(shí)間同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重裝初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重裝初值(高8位修正值) SETB TR0 ;開啟定時(shí)器T0 DJNZ R4,OUTT0 ;20次中斷未到中斷退出 ADDSS:MOV R4,14H ;20次中斷到(1s)重賦初值 MOV R0,#71H ; 指向秒計(jì)時(shí)單元(71H72H) ACALL ADD1 ;調(diào)用加1程序(加1s操作) MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合) CLR C ;清進(jìn)位標(biāo)志 CJNE A,#60H,ADDMM ; ADDMM:JC OUTT0 ;小于60s時(shí)中斷退出 ACALL CLR0 ;大于或等于60s時(shí)對(duì)秒計(jì)時(shí)單元清0 MOV R0,#77H ;指向分計(jì)時(shí)單元(76H77H) ACALL ADD1 ;分計(jì)時(shí)單元加1min MOV A,R3 ;分?jǐn)?shù)據(jù)放入A CLR C ;清進(jìn)位標(biāo)志 CJNE A,#60H,ADDHH ; ADDHH:JC OUTT0 ;小于60min時(shí)中斷退出 ACALL CLR0 ;大于或等于60min時(shí)分計(jì)時(shí)單元清0 MOV R0,#79H ;指向小時(shí)計(jì)時(shí)單元(78H79H) ACALL ADD1 ;小時(shí)計(jì)時(shí)單元加1h MOV A,R3 ;時(shí)數(shù)據(jù)放入A CLR C ;清進(jìn)位標(biāo)志 CJNE A,#24H,HOUR ; HOUR:JC OUTT0 ;小于24h中斷退出 ACALL CLR0 ;大于或等于24h小時(shí)計(jì)時(shí)單元清0 OUTT0:MOV 72H,76H ;中斷退出時(shí)將分,時(shí)計(jì)時(shí)單元數(shù)據(jù)移 MOV 73H,77H ;入對(duì)應(yīng)顯示單元 MOV 74H,78H ; MOV 75H,79H ; POP PSW ;恢復(fù)狀態(tài)字(出棧) POP ACC ;恢復(fù)累加器 SETB ETO ;開放T0中斷 RETI ;中斷返回 閃動(dòng)調(diào)整程序T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示INTT1:PUSH ACC ;中斷現(xiàn)在保護(hù) PUSH PSW ; MOV TL1,#0B0H ;裝定時(shí)器T1定時(shí)初值 MOV TH1,#3CH ; DJNZ R2,INTT1OUT ;0.3s未到退出中斷(50ms中斷6次) MOV R2,#06H ;重裝0.3s定時(shí)出初值 CPL 02H ;0.3s定時(shí)到對(duì)閃爍標(biāo)志取反 JB 02H,FLASHI ;02H位為1時(shí)顯示單元“熄滅” MOV 72H,76H ;02H位為0時(shí)正常顯示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ; INTT1OUT:POP PSW ;恢復(fù)現(xiàn)場(chǎng) POP ACC ; RETI ;中斷退出 FLASH1:JB 01H,FLASH2 ;01H位為1時(shí),轉(zhuǎn)小時(shí)熄滅控制 MOV 72H,76H ;01H位為0時(shí),“熄滅符”數(shù)據(jù)放入分 MOV 73H,77H ;顯示單元(72H73H),將不顯示分?jǐn)?shù)據(jù) MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;轉(zhuǎn)中斷退出 FLASH2:MOV 72H,76H ;01H位為1時(shí),“熄滅符”數(shù)據(jù)放入小時(shí) MOV 73H,77H ;顯示單元(74H75H),小時(shí)數(shù)據(jù)將不顯示 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;轉(zhuǎn)中斷退出 加1子程序 ADD1:MOV A,R0 ;取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到A DEC R0 ;指向前一地址 SWAP A ;A中數(shù)據(jù)高4位與低4位交換 ORL A,R0 ;前一地址中數(shù)據(jù)放入A中低4位 ADD A,#01H ;A加1操作 DA A ;十進(jìn)制調(diào)整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高4位變0 MOV R0,A ;放回前一地址單元 MOV A,R3 ;取回R3中暫存數(shù)據(jù) INC R0 ;指向當(dāng)前地址單元 SWAP A ;A中數(shù)據(jù)高4位與低4位交換 ANL A,#0FH ;高4位變0 MOV R0,A ;數(shù)據(jù)放入當(dāng)前地址單元中 RET ;子程序返回 清零程序?qū)τ?jì)時(shí)單元復(fù)零用 CLR0:CLR A ;清累加器 MOV R0,A ;清當(dāng)前地址單元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址單元清0 RET ;子程序返回 時(shí)鐘調(diào)試程序當(dāng)調(diào)時(shí)按鍵按下時(shí)進(jìn)入此程序 SETMM:CLR ET0 ;關(guān)定時(shí)器T0中斷 CLR TR0 ;關(guān)閉定時(shí)器T0 LCALL DL1S ;調(diào)用1s延時(shí)程序 JB P3.7,CLOSEDIS ;鍵按下時(shí)間小于1s,關(guān)閉顯示(省電) MOV R2,#06H ;進(jìn)入調(diào)時(shí)狀態(tài),賦閃爍定時(shí)初值 SETB ET1 ;允許T1中斷 SETB TR1 ;開啟定時(shí)器T1 SET2:JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),等待 SETB 00H ;鍵釋放,分調(diào)整閃爍標(biāo)志置1 SET4:JB P3.7,SET3 ;等待鍵按下 LCALL DL05S ;有鍵按下,延時(shí)0.5s JNB P3.7,SETHH ;按下時(shí)間大于0.5s轉(zhuǎn)調(diào)小時(shí)狀態(tài) MOV R0,#77H ;按下時(shí)間小于0.5s加1min操作 LCALL ADD1 ;調(diào)用加1子程序 MOV A,R3 ;取調(diào)整單元數(shù)據(jù) CLR C ;清進(jìn)位標(biāo)志 CJNE A,#60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較 HHH:JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán) LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時(shí)清0 CLR C ;清進(jìn)位標(biāo)志 AJMP SET4 ;跳轉(zhuǎn)到SET4循環(huán) CLOSEDIS:SETB ET0 ;省電(LED不顯示)狀態(tài),開T0中斷 SETB TR0 ;開啟T0定時(shí)器(開時(shí)鐘) CLOSE:JB P3.7,CLOSE ;無(wú)按鍵按下,等待 LCALL DISPLAY ;有鍵按下,調(diào)顯示子程序延時(shí)消抖 JB P3.7,CLOSE ;是干擾返回CLOSE等待 WAITH:JNB P3.7,WAITH ;等待鍵釋放 LJMP START1 ;返回主程序(LED數(shù)據(jù)顯示亮) SETHH:CLR 00H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時(shí)狀態(tài)) SETHH1:JNB P3.7,SET5 ;等待鍵釋放 SETB 01H ;小時(shí)調(diào)整標(biāo)志置1 SET6:JB P3.7,SETOUT ;等待按鍵按下 LCALL DL05S ;有鍵按下延時(shí)0.5s JNB P3.7,SETOUT ;按下時(shí)間大于0.5s退出時(shí)間調(diào)整 MOV P0,#79H ;按下時(shí)間小于0.5s加1h操作 LCALL ADD1 ;調(diào)加1子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;計(jì)時(shí)單元數(shù)據(jù)與24比較 HOUU:JC SET6 ;小于24轉(zhuǎn)SET6循環(huán) LCALL CLR0 ;大于或等于24時(shí)清0操作 AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán) SETOUT:JNB P3.7,SETOUT1 ;調(diào)時(shí)退出程序。等待鍵釋放 LCALL DISPLAY ;延時(shí)消抖 JNB P3.7,SETOUT ;是抖動(dòng),返回SETOUT再等待 CLR 01H ;清調(diào)小時(shí)標(biāo)志 CLR 00H ;清調(diào)分標(biāo)志 CLR 02H ;清閃爍標(biāo)志 CLR TR1 ;關(guān)閉定時(shí)器T1 CLR ET1 ;關(guān)定時(shí)器T1中斷 SETB TR0 ;開啟定時(shí)器T0 SETB ET0 ;開定時(shí)器T0中斷(計(jì)時(shí)開始) LJMP START1 ;跳回主程序 SET1:LCALL DISPLAY ;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分) AJMP SET2 ;防止鍵按下時(shí)無(wú)時(shí)鐘顯示 SET3:LCALL DISPLAY ;等待調(diào)分按鍵時(shí)時(shí)鐘顯示用 AJMP SET4 ; SET5:LCALL DISPLAY ;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí)) AJMP SETHH1 ;防止鍵按下時(shí)無(wú)時(shí)鐘顯示 SET7:LCALL DISPLAY ;等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用 AJMP SET6 ; SETOUT1:LCALL DISPLAY ;退出時(shí)鐘調(diào)整時(shí)鍵釋放等待AJMP SETTOUT ;防止鍵按下時(shí)無(wú)時(shí)鐘顯示 顯示程序顯示數(shù)據(jù)在70H75H單元內(nèi),用六位LED共陽(yáng)數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作掃描控制,每個(gè)LED數(shù)碼管亮1ms時(shí)間再逐位循環(huán) DISPLAY:MOV R1,#70H ;指向顯示數(shù)據(jù)首址 MOV R5,#0FEH ;掃描控制字初值 PLAY:MOV A,R5 ;掃描字放入A MOV P3,A ;從P3口輸出 MOV A,R1 ;取顯示數(shù)據(jù)到A MOV DPTR,#TAB ;取段碼表地址 MOVC A,A+DPTR ;查顯示數(shù)據(jù)對(duì)應(yīng)斷碼 MOV P1,A ;段碼放入P1口 LCALL DL1MS ;顯示1ms INC R1 ;指向下一地址 MOV A,R5 ;掃描控制字放入A JNB ACC.5,ENDOUT ;ACC.5=0時(shí)一次顯示結(jié)束 RL A ;A中數(shù)據(jù)循環(huán)左移 MOV R5,A ;放回R5內(nèi) AJMP PLAY ;跳回PLAY循環(huán) ENDOUT:SETB P3.5 ;一次顯示結(jié)束,P3口復(fù)位 MOV P1,#0FFH ;P1口復(fù)位 RET ;子程序返回 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH共陽(yáng)段碼表“0” “1” “2” “3” “4” “5” “6” “7” “8” “9” “不亮” 延時(shí)程序1ms延時(shí)程序,LED顯示程序用 DL1MS:MOV R6,#14H DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET20ms延時(shí)程序,采用調(diào)用顯示子程序以改善LED的顯示閃爍現(xiàn)象 DS20MS:LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY RET延時(shí)程序,用作按鍵時(shí)間的長(zhǎng)短判斷 DL1S:LCALL DL05S LCALL DL05S RET DL05S:MOV R3,#20H ;8msX32=0.256s DL05S1:LCALL DISPLAY DJNZ

溫馨提示

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

評(píng)論

0/150

提交評(píng)論