單片機(jī)電子時(shí)鐘畢業(yè)論文設(shè)計(jì)_第1頁
單片機(jī)電子時(shí)鐘畢業(yè)論文設(shè)計(jì)_第2頁
單片機(jī)電子時(shí)鐘畢業(yè)論文設(shè)計(jì)_第3頁
單片機(jī)電子時(shí)鐘畢業(yè)論文設(shè)計(jì)_第4頁
單片機(jī)電子時(shí)鐘畢業(yè)論文設(shè)計(jì)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)電子時(shí)鐘的設(shè)計(jì)摘 要單片機(jī)自 20世紀(jì) 70年代問世以來,以其極高的性能價(jià)格比,受到人們的重視和關(guān)注,應(yīng)用 很廣、發(fā)展很快。單片機(jī)體積小、重量輕、抗干擾能力強(qiáng)、環(huán)境要求不高、價(jià)格低廉、可靠性高、 靈活性好、開發(fā)較為容易。由于具有上述優(yōu)點(diǎn),在我國(guó),單片機(jī)已廣泛地應(yīng)用在工業(yè)自動(dòng)化控制、 自動(dòng)檢測(cè)、智能儀器儀表、家用電器、電力電子、機(jī)電一體化設(shè)備等各個(gè)方面,而 51單片機(jī)是各 單片機(jī)中最為典型和最有代表性的一種。這次畢業(yè)設(shè)計(jì)通過對(duì)它的學(xué)習(xí)、應(yīng)用,以 AT89S51芯片 為核心,輔以必要的電路,設(shè)計(jì)了一個(gè)簡(jiǎn)易的電子時(shí)鐘,它由 4.5V 直流電源供電,通過數(shù)碼管能 夠準(zhǔn)確顯示時(shí)間,調(diào)整時(shí)間,從而到

2、達(dá)學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬件的能力。關(guān)鍵詞:單片機(jī) AT89S第一章 前言時(shí)鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時(shí)間的推移,科學(xué)技術(shù)的不斷發(fā)展, 人們對(duì)時(shí)間計(jì)量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我 們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘?,F(xiàn)今,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都 采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集 成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用 LED 顯示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減 小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的

3、功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活 性好。時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī) 應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶 振和外圍電路組成, 晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢; 二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘, 即定時(shí)時(shí)間,它通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)現(xiàn),即用單片機(jī)內(nèi)部的可編程定時(shí) /計(jì)數(shù)器來 實(shí)現(xiàn),但誤差很大,主要用在對(duì)時(shí)間精度要求不高的場(chǎng)合;二是用專門的時(shí)鐘芯片實(shí)現(xiàn),在對(duì)時(shí) 間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302, DS12887, X1203等都可以滿足

4、高精度的要求。本文主要介紹用單片機(jī)內(nèi)部的定時(shí) /計(jì)數(shù)器來實(shí)現(xiàn)電子時(shí)鐘的方法,本設(shè)計(jì)由單片機(jī) AT89S51芯片和 LED 數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個(gè)單片機(jī)電子時(shí)鐘。第二章 方案論證與比較2.1數(shù)字時(shí)鐘方案數(shù)字時(shí)鐘是本設(shè)計(jì)的最主要的部分。根據(jù)需要,可利用兩種方案實(shí)現(xiàn)。方案一:本方案采用 Dallas 公司的專用時(shí)鐘芯片 DS12887A 。該芯片內(nèi)部采用石英晶體振蕩 器,其芯片精度不大于 10ms/年,且具有完備的時(shí)鐘鬧鐘功能,因此,可直接對(duì)其以用于顯示或 設(shè)置,使得軟件編程相對(duì)簡(jiǎn)單。為保證時(shí)鐘在電網(wǎng)電壓不足或突然掉電等突發(fā)情況下仍能正常工 作, 芯片內(nèi)部包含鋰電池。 當(dāng)電網(wǎng)電壓不

5、足或突然掉電時(shí), 系統(tǒng)自動(dòng)轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。 而且即使系統(tǒng)不上電,程序不執(zhí)行時(shí),鋰電池也能保證芯片的正常運(yùn)行,以備隨時(shí)提供正確的時(shí) 間。方案二:本方案完全用軟件實(shí)現(xiàn)數(shù)字時(shí)鐘。原理為:在單片機(jī)內(nèi)部存儲(chǔ)器設(shè)三個(gè)字節(jié)分別存 放時(shí)鐘的時(shí)、分、秒信息。利用定時(shí)器與軟件結(jié)合實(shí)現(xiàn) 1秒定時(shí)中斷,每產(chǎn)生一次中斷,存儲(chǔ)器 內(nèi)相應(yīng)的秒值加 1;若秒值達(dá)到 60,則將其清零,并將相應(yīng)的分字節(jié)值加 1;若分值達(dá)到 60,則 清零分字節(jié),并將時(shí)字節(jié)值加 1;若時(shí)值達(dá)到 24,則將十字節(jié)清零。該方案具有硬件電路簡(jiǎn)單的 特點(diǎn)。但由于每次執(zhí)行程序時(shí),定時(shí)器都要重新賦初值,所以該時(shí)鐘精度不高。而且,由于是軟 件實(shí)現(xiàn),當(dāng)

6、單片機(jī)不上電,程序不執(zhí)行時(shí),時(shí)鐘將不工作。基于硬件電路的考慮,本設(shè)計(jì)采用方案二完成數(shù)字時(shí)鐘的功能。2.2數(shù)碼管顯示方案方案一:靜態(tài)顯示。所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定 的導(dǎo)通或截止。該方式每一位都需要一個(gè) 8 位輸出口控制。靜態(tài)顯示時(shí)較小的電流能獲得較高的 亮度,且字符不閃爍。但當(dāng)所顯示的位數(shù)較多時(shí),靜態(tài)顯示所需的 I/O口太多,造成了資源的浪 費(fèi)。方案二:動(dòng)態(tài)顯示。所謂動(dòng)態(tài)顯示就是一位一位的輪流點(diǎn)亮各個(gè)位,對(duì)于顯示器的每一位來 說,每隔一段時(shí)間點(diǎn)亮一次。利用人的視覺暫留功能可以看到整個(gè)顯示,但必須保證掃描速度足 夠快,字符才不閃爍。顯示器的亮度既與導(dǎo)通電流有關(guān)

7、,也于點(diǎn)亮?xí)r間與間隔時(shí)間的比例有關(guān)。 調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)定度的顯示。動(dòng)態(tài)顯示節(jié)省了 I/O口,降低了能耗。從節(jié)省 I/O口和降低能耗出發(fā),本設(shè)計(jì)采用方案二。第三章 系統(tǒng)設(shè)計(jì)3.1總體設(shè)計(jì)利用單片機(jī)(AT89S51制作簡(jiǎn)易電子時(shí)鐘,由六個(gè) LED 數(shù)碼管分別顯示小時(shí)十位、小時(shí)個(gè) 位、分鐘十位、分鐘個(gè)位、秒鐘十位、秒鐘個(gè)位。 6個(gè) PNP 管(9012分別控制六個(gè)數(shù)碼管的亮 滅,一個(gè)按鍵用于時(shí)間調(diào)整。 圖 3-13.2模塊設(shè)計(jì)電源部分 圖 3-2如圖 3-2所示,從外部引入 4.5V 的直流電,為單片機(jī)、復(fù)位電路提供電源。 復(fù)位電路圖 3-3如圖 3-3所示,復(fù)位電路主要由型號(hào)為 1N4148

8、的二極管,型號(hào)為 10UF/16V的電解電容,型 號(hào)為 104的瓷片電容, 10K 的電阻以及按鍵 S1構(gòu)成, S1接芯片的相應(yīng)引腳 RST ,當(dāng)開關(guān)按下時(shí) 引腳 RST 為高電平 1,斷開時(shí)引腳為低電平 0。 程序下載接口圖 3-4如圖 3-4所示,由 AT89S ISP構(gòu)成的兩排十針下載口,板圖上有一個(gè)小方框,為 1號(hào)引角;下 載線的凸口為正方向,凸口的右側(cè)邊的第一個(gè)插孔為 1號(hào)引角。 圖 3-5圖 3-5為位選電路,三極管的集電極接數(shù)碼管的公共端,當(dāng) P2口對(duì)應(yīng)的引腳輸出高電平時(shí)三 極管導(dǎo)通,對(duì)應(yīng)的數(shù)碼管顯示數(shù)據(jù)。這樣,在同一時(shí)刻, 6位 LED 中只有選通的那 1位顯示出字 符,而其他

9、 5位則是熄滅的。同樣,在下一時(shí)刻,只讓下一位的位選線處于選通狀態(tài),而其他個(gè) 位的位選線處于關(guān)閉狀態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時(shí)刻,只有選通位顯示 出相應(yīng)的字符,而其他各位則是熄滅的。如此循環(huán)下去,就可以使各位顯示出將要顯示的字符。 雖然這些字符是在不同時(shí)刻出現(xiàn)的,而在同一時(shí)刻,只有一位顯示,其他各位熄滅,但由于 LED 的余輝和人眼的視覺暫留作用,只要每位顯示間隔足夠短,則可以造成多位同時(shí)亮的假象,達(dá)到 同時(shí)顯示的效果。數(shù)碼管的連接電路 圖 3-6 圖 3-6為數(shù)碼管的引腳圖,每位的段碼線(a,b,c,d,e,f,g,dp 分別與 1個(gè) 8位的鎖存器輸出相連, 由 AT89S

10、51控制組合 0-9十個(gè)數(shù)據(jù),如令其顯示 1則 b,c 引腳(即 2, 3引腳送高電平, 此時(shí)數(shù)碼管顯示 1。由于各位的段碼線并聯(lián), 8位 I/O口輸出段 碼對(duì)各個(gè)顯示位來說都是相同的。控制部分 圖 3-7AT89S51是美國(guó) ATMEL 公司生產(chǎn)的低功耗,高性能 CMOS 8位單片機(jī),片內(nèi)含 4K bytes 的 可系統(tǒng)編程的 Flash 只讀程序存儲(chǔ)器,器件采用 A TMEL 公司的高密度,非易失性存儲(chǔ)技術(shù)生產(chǎn), 兼容標(biāo)準(zhǔn) 8051指令系統(tǒng)及引腳。 A T89S51提供以下標(biāo)準(zhǔn)功能:4K 字節(jié) Flash 閃速存儲(chǔ)器, 128字節(jié)內(nèi)部 RAM , 32I/O口線,看門狗(WDT ,兩個(gè)數(shù)據(jù)

11、指針,兩個(gè) 16位定時(shí) /計(jì)數(shù)器,一個(gè) 5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。如圖 3-7所示, AT89S51有 40引腳,雙列直插(DIP 封裝,所用引腳功能如下:1. VCC 運(yùn)行時(shí)加+4.5V2. GND 接地3. XTAL1 振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端4. XTAL2 振蕩器反相放大器的輸出端5. RST 復(fù)位輸入,高電平有效,在晶振工作時(shí),在 RST 引腳上作用 2個(gè)機(jī)器周 期以上的高電平,將使單片機(jī)復(fù)位。 WDT 溢出將使該引腳輸出高電平,設(shè)置 SFT AUXR的 DISRTO 位(地址 8EH 可打開或關(guān)閉該功能。 DISRTO 位缺省為

12、 RESET 輸出高電平 打開狀態(tài)。6. EA/VPP 片外程序存儲(chǔ)器訪問允許信號(hào)。欲使 CPU 僅訪問外部程序存儲(chǔ)器(地址 為 0000H-FFFFH , EA 端必須保持低電平(接地 ,如果 EA 端為高電平(接 Vcc 端 , CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。7. P1口 ,P2口 P1, P2是一組帶內(nèi)部上拉電阻的 8位雙向 I/O口。運(yùn)行時(shí)通過 P1口控制 驅(qū)動(dòng)電路的工作,將數(shù)據(jù)送到數(shù)碼管,顯示相應(yīng)的段碼,為了達(dá)到減少功耗或滿足端口 對(duì)最大電流的限制, 應(yīng)加上一限流電阻。 P2.0 P2.5口控制數(shù)碼管的位選, 使六個(gè)數(shù)碼 管輪流顯示數(shù)據(jù),等于 1時(shí)位選三極管導(dǎo)通,等于 0 時(shí)

13、位選三極管截止。8. 無自鎖開關(guān) (S2-P3.7 開關(guān)接相應(yīng)引腳 P3.7, 當(dāng)開關(guān)按下時(shí), 相應(yīng)引腳為低電平 0, 斷開時(shí)引腳為高電平 1。第四章 原理圖與 PCB 圖 圖 4-1圖 4-2第五章 軟件設(shè)計(jì) 5.1程序流程圖 5.2源程序 ; 中斷入口程序 ;ORG 0000H ; 程序執(zhí)行開始地址LJMP START ; 跳到標(biāo)號(hào) START 執(zhí)行ORG 0003H ; 外中斷 0中斷程序入口RETI ; 外中斷 0中斷返回ORG 000BH ; 定時(shí)器 T0中斷程序入口LJMP INTT0 ; 跳至 INTTO 執(zhí)行ORG 0013H ; 外中斷 1中斷程序入口RETI ; 外中斷 1

14、中斷返回ORG 001BH ; 定時(shí)器 T1中斷程序入口LJMP INTT1 ; 跳至 INTT1執(zhí)行ORG 0023H ; 串行中斷程序入口地址RETI ; 串行中斷程序返回; 主 程 序 ;START: MOV R0,#70H ; 清 70H-7AH 共 11個(gè)內(nèi)存單元 MOV R7,#0BH;clr P3.7 ;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為

15、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 ;1秒定時(shí)用初值(50MS ×20START1: LCALL DISPLAY ; 調(diào)用顯示子程序JNB P3.7,SETMM1 ;P3.7口為 0時(shí)轉(zhuǎn)時(shí)間調(diào)整程序SJMP START1 ;P3.7口為 1時(shí)跳回 START1SETM

16、M1: LJMP SETMM ; 轉(zhuǎn)到時(shí)間調(diào)整程序 SETMM; 1秒計(jì)時(shí)程序 ;T0中斷服務(wù)程序INTT0: PUSH ACC ; 累加器入棧保護(hù)PUSH PSW ; 狀態(tài)字入棧保護(hù)CLR ET0 ; 關(guān) T0中斷允許CLR TR0 ; 關(guān)閉定時(shí)器 T0MOV 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í)器 T0DJNZ R4, OUTT0 ;20次中斷未到中斷退出A

17、DDSS: MOV R4,#14H ;20次中斷到(1秒重賦初值MOV R0,#71H ; 指向秒計(jì)時(shí)單元(71H-72H ACALL ADD1 ; 調(diào)用加 1程序(加 1秒操作MOV A,R3 ; 秒數(shù)據(jù)放入 A (R3為 2位十進(jìn)制數(shù)組合 CLR C ; 清進(jìn)位標(biāo)志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ; 小于 60秒時(shí)中斷退出ACALL CLR0 ; 大于或等于 60秒時(shí)對(duì)秒計(jì)時(shí)單元清 0 MOV R0,#77H ; 指向分計(jì)時(shí)單元(76H-77H ACALL ADD1 ; 分計(jì)時(shí)單元加 1分鐘MOV A,R3 ; 分?jǐn)?shù)據(jù)放入 ACLR C ; 清進(jìn)位標(biāo)志

18、CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ; 小于 60分時(shí)中斷退出ACALL CLR0 ; 大于或等于 60分時(shí)分計(jì)時(shí)單元清 0 MOV R0,#79H ; 指向小時(shí)計(jì)時(shí)單(78H-79H ACALL ADD1 ; 小時(shí)計(jì)時(shí)單元加 1小時(shí)MOV A,R3 ; 時(shí)數(shù)據(jù)放入 ACLR C ; 清進(jìn)位標(biāo)志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ; 小于 24小時(shí)中斷退出ACALL CLR0 ; 大于或等于 24小時(shí)小時(shí)計(jì)時(shí)單元清 0 OUTT0: MOV 72H,76H ; 中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù)移 MOV 73H,77H ; 入對(duì)應(yīng)顯

19、示單元MOV 74H,78H ;MOV 75H,79H ;POP PSW ; 恢復(fù)狀態(tài)字(出棧POP ACC ; 恢復(fù)累加器SETB ET0 ; 開放 T0中斷RETI ; 中斷返回; 閃動(dòng)調(diào)時(shí) 程 序 ;T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示INTT1: PUSH ACC ; 中斷現(xiàn)場(chǎng)保護(hù)PUSH PSW ;MOV TL1, #0B0H ; 裝定時(shí)器 T1定時(shí)初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS 中斷 6次 MOV R2,#06H ; 重裝 0.3秒定時(shí)用初值CPL 02H ;0.3秒定時(shí)到對(duì)閃爍標(biāo)志取反JB 02H,

20、FLASH1 ;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,7AH ;01H 位為 0時(shí), " 熄滅符 " 數(shù)據(jù)放入分 MOV 73H,7AH ; 顯示單元(72H-73H ,將不顯示分?jǐn)?shù)據(jù) MOV 74H,78H ;MOV 75H,79H ;AJM

21、P INTT1OUT ; 轉(zhuǎn)中斷退出FLASH2: MOV 72H,76H ;01H 位為 1時(shí), " 熄滅符 " 數(shù)據(jù)放入小時(shí)MOV 73H,77H ; 顯示單元(74H-75H ,小時(shí)數(shù)據(jù)將不顯示 MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ; 轉(zhuǎn)中斷退出; 加 1子 程 序 ;ADD1: MOV A,R0 ; 取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到 ADEC R0 ; 指向前一地址SW AP A ;A 中數(shù)據(jù)高四位與低四位交換ORL A,R0 ; 前一地址中數(shù)據(jù)放入 A 中低四位ADD A,#01H ;A 加 1操作DA A ; 十進(jìn)制調(diào)整MOV R

22、3,A ; 移入 R3寄存器ANL A,#0FH ; 高四位變 0MOV R0,A ; 放回前一地址單元MOV A,R3 ; 取回 R3中暫存數(shù)據(jù)INC R0 ; 指向當(dāng)前地址單元SW AP A ;A 中數(shù)據(jù)高四位與低四位交換ANL A,#0FH ; 高四位變 0MOV R0,A ; 數(shù)據(jù)放入當(dāng)削地址單元中RET ; 子程序返回; 清零程序 ; 對(duì)計(jì)時(shí)單元復(fù)零用CLR0: CLR A ; 清累加器MOV R0,A ; 清當(dāng)前地址單元DEC R0 ; 指向前一地址MOV R0,A ; 前一地址單元清 0RET ; 子程序返回; 時(shí)鐘調(diào)整程序 ; 當(dāng)調(diào)時(shí)按鍵按下時(shí)進(jìn)入此程序SETMM: cLR E

23、T0 ; 關(guān)定時(shí)器 T0中斷CLR TR0 ; 關(guān)閉定時(shí)器 T0LCALL DL1S ; 調(diào)用 1秒延時(shí)程序JB P3.7,CLOSEDIS ; 鍵按下時(shí)間小于 1秒,關(guān)閉顯示(省電 MOV R2,#06H ; 進(jìn)入調(diào)時(shí)狀態(tài),賦閃爍定時(shí)初值SETB ET1 ; 允許 T1中斷SETB TR1 ; 開啟定時(shí)器 T1SET2: JNB P3.7,SET1 ;P3.7口為 0(鍵未釋放 ,等待SETB 00H ; 鍵釋放,分調(diào)整閃爍標(biāo)志置 1SET4: JB P3.7,SET3 ; 等待鍵按下LCALL DL05S ; 有鍵按下,延時(shí) 0.5秒JNB P3.7,SETHH ; 按下時(shí)間大于 0.5秒

24、轉(zhuǎn)調(diào)小時(shí)狀態(tài) MOV R0,#77H ; 按下時(shí)間小于 0.5秒加 1分鐘操作 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

25、.7,CLOSE ; 無按鍵按下,等待。LCALL DISPLAY ; 有鍵按下,調(diào)顯示子程序延時(shí)削抖 JB P3.7,CLOSE ; 是干擾返回 CLOSE 等待W AITH: JNB P3.7,W AITH ; 等待鍵釋放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)志置 1SET6: JB P3.7,SET7 ; 等待按鍵按下LCALL DL05S ; 有鍵按下延時(shí) 0.5秒JNB P3.7,SETOUT ; 按下時(shí)間大

26、于 0.5秒退出時(shí)間調(diào)整 MOV R0,#79H ; 按下時(shí)間小于 0.5秒加 1小時(shí)操作 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)小

27、時(shí)標(biāo)志CLR 00H ; 清調(diào)分標(biāo)志CLR 02H ; 清閃爍標(biāo)志CLR TR1 ; 關(guān)閉定時(shí)器 T1CLR ET1 ; 關(guān)定時(shí)器 T1中斷SETB TR0 ; 開啟定時(shí)器 T0SETB ET0 ; 開定時(shí)器 T0中斷(計(jì)時(shí)開始LJMP START1 ; 跳回主程序SET1: LCALL DISPLAY ; 鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分 AJMP SET2 ; 防止鍵按下時(shí)無時(shí)鐘顯示SET3: LCALL DISPLAY ; 等待調(diào)分按鍵時(shí)時(shí)鐘顯示用AJMP SET4SET5: LCALL DISPLAY ; 鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí) AJMP SETHH1 ; 防止鍵按下時(shí)無時(shí)鐘顯

28、示SET7: LCALL DISPLAY ; 等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用AJMP SET6SETOUT1: LCALL DISPLAY ; 退出時(shí)鐘調(diào)整時(shí)鍵釋放等待AJMP SETOUT ; 防止鍵按下時(shí)無時(shí)鐘顯示; 顯示程序 ; 顯示數(shù)據(jù)在 70H-75H 單元內(nèi),用六位 LED 共陽數(shù)碼管顯示, P0口輸出段碼數(shù)據(jù), P3口作 ; 掃描控制,每個(gè) LED 數(shù)碼管亮 1MS 時(shí)間再逐位循環(huán)。DISPLAY: MOV R1,#70H ; 指向顯示數(shù)據(jù)首址MOV R5,#0FEH ; 掃描控制字初值PLAY: MOV A,R5 ; 掃描字放入 AMOV P2,A ; 從 P2口輸出MOV A,R

29、1 ; 取顯示數(shù)據(jù)到 AMOV DPTR,#TAB ; 取段碼表地址MOVC A,A+DPTR ; 查顯示數(shù)據(jù)對(duì)應(yīng)段碼MOV P1,A ; 段碼放入 P0口LCALL DL1MS ; 顯示 1MSINC R1 ; 指向下一地址MOV A,R5 ; 掃描控制字放入 AJNB 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 P2.5 ; 一次顯示結(jié)束, P2口復(fù)位MOV P1,#0FFH ;P0口復(fù)位RET ; 子程序返回TAB: DB 3FH,06H,5B

30、H,4FH,66H,6DH,7DH,07H,7FH,6FH;1MS 延時(shí)程序, LED 顯示程序用DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET;20MS 延時(shí)程序,采用調(diào)用顯示子程序以改善 LED 的顯示閃爍現(xiàn)象DS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRET; 延時(shí)程序,用作按鍵時(shí)間的長(zhǎng)短判斷DL1S: LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20H ;8毫秒 *32=0.196秒 DL05S1: LCALL DISPLAYDJNZ R3,DL05S1RETEND ; 程序結(jié)束第六章 總結(jié) 6.1物品清單與元件特性表 6-1 物品清單:表 6-2 AT89S51功能特性: 6.2設(shè)計(jì)總結(jié)本設(shè)計(jì)能夠很準(zhǔn)確的走時(shí),并能夠通過硬件對(duì)時(shí)鐘進(jìn)行時(shí)間調(diào)整。功能介紹:1. 顯示 XX :XX :XX 時(shí)間2. 時(shí)間可調(diào):調(diào)整鍵(S2按下時(shí)間小于 1秒(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論