基于51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明

上傳人:s**** 文檔編號(hào):81900679 上傳時(shí)間:2022-04-28 格式:DOC 頁(yè)數(shù):41 大?。?80KB
收藏 版權(quán)申訴 舉報(bào) 下載
基于51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第1頁(yè)
第1頁(yè) / 共41頁(yè)
基于51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第2頁(yè)
第2頁(yè) / 共41頁(yè)
基于51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第3頁(yè)
第3頁(yè) / 共41頁(yè)

下載文檔到電腦,查找使用更方便

26 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《基于51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明(41頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 . . . 大學(xué)電子信息學(xué)院 電子系統(tǒng)綜合設(shè)計(jì)課程論文 基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) 專 業(yè): 年 級(jí): 作 者: 指導(dǎo)教師: 2010 年 6 月 20日 目 錄 1 作品的背景與意義1 2 功能指標(biāo)設(shè)計(jì)1 3 作品方案設(shè)計(jì)2 4軟件設(shè)計(jì)3 附錄1 系統(tǒng)電路圖6 附錄2 系統(tǒng)軟件代碼7 39 / 41 1 作品的背景與意義 時(shí)鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時(shí)間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)時(shí)間計(jì)量的精度要求越來(lái)越

2、高,應(yīng)用越來(lái)越廣。怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘。 現(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í)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好?,F(xiàn)在我們利用單片機(jī)實(shí)現(xiàn)數(shù)字時(shí)鐘計(jì)時(shí)功能的主要容,其中AT89C51是核心元件同時(shí)采用數(shù)碼管動(dòng)態(tài)顯示“時(shí)”,“分”,“秒”的現(xiàn)代計(jì)時(shí)裝置。與傳統(tǒng)機(jī)械表相比,它具

3、有走時(shí)精確,顯示直觀等特點(diǎn)。它的計(jì)時(shí)周期為24小時(shí),顯滿刻度為“23時(shí)59分59秒”,另外具有校時(shí)功能,斷電后有記憶功能,恢復(fù)供電時(shí)可實(shí)現(xiàn)計(jì)時(shí)同步等特點(diǎn),除此外還實(shí)現(xiàn)了萬(wàn)年歷和鬧鐘等的功能。 時(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ī)部的可編程定時(shí)/計(jì)數(shù)器來(lái)實(shí)現(xiàn),但誤差很大,主要用在對(duì)時(shí)間精度要求不高的場(chǎng)合;二是用專門的時(shí)鐘芯片

4、實(shí)現(xiàn),在對(duì)時(shí)間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。 單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。(Single-Chip Microcomputer ),是集CPU、RAM、ROM、定時(shí)、計(jì)數(shù)和多種接口于一體的微控制器。他體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)品和工業(yè)自動(dòng)化上。而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。所以綜上所述,此次實(shí)驗(yàn)中所完成的數(shù)字鐘有著強(qiáng)大的功能和良好的市場(chǎng)前景,復(fù)合電子類產(chǎn)品的發(fā)展趨勢(shì)。 2 功能指標(biāo)設(shè)計(jì) 2.1 基本功能 1.設(shè)計(jì)一個(gè)精確的1秒定時(shí)器; 2.根據(jù)1秒定時(shí)器

5、,設(shè)計(jì)一個(gè)帶小時(shí)、分鐘、秒的時(shí)鐘,并將小時(shí)、分鐘、秒顯示在LED上; 3.設(shè)計(jì)小時(shí)、分鐘、秒的修改按鍵,可分別調(diào)整小時(shí)、分鐘、秒(按鍵設(shè)計(jì)參考電子表); 2.2 拓展功能 1.增加小時(shí)、分鐘、秒的鍵盤直接修改功能; 2.設(shè)計(jì)鬧鐘功能,最多支持5個(gè)鬧鐘,可分別查看和修改鬧鐘時(shí)間,可分別設(shè)置鬧鐘開(kāi)關(guān)。 3.增加萬(wàn)年歷功能。 3 作品方案設(shè)計(jì) 3.1設(shè)計(jì)要求 基本設(shè)計(jì) 1.設(shè)計(jì)一個(gè)精確的一秒定時(shí)器 2.運(yùn)用一秒的定時(shí)器設(shè)計(jì)出有時(shí)、分、秒的數(shù)字鐘,并顯示在LED數(shù)碼管上 3.設(shè)置按鍵,能夠修改數(shù)字鐘時(shí)間 擴(kuò)展設(shè)計(jì): 1. 設(shè)計(jì)鬧鐘功能,能夠查看和修改鬧鐘時(shí)間與開(kāi)關(guān)狀

6、態(tài) 2. 設(shè)計(jì)萬(wàn)年歷功能,實(shí)現(xiàn)日→月→年的正常進(jìn)位,能夠查看和修改年月日,能夠自動(dòng)區(qū)分大小月和平閏年 3.2模塊劃分 ●初始化程序 設(shè)定初值,中斷初始化 ●主程序 程序主要執(zhí)行部分,對(duì)子程序(顯示、按鍵設(shè)置,鬧鐘、萬(wàn)年歷功能)進(jìn)行調(diào)用 ●定時(shí)器中斷服務(wù) 中斷走時(shí):秒→分→時(shí) ●顯示程序 刷新8位數(shù)碼管來(lái)顯示時(shí)間、日期與擴(kuò)展功能設(shè)置界面 ●按鍵設(shè)置 通過(guò)對(duì)按鍵的操作實(shí)現(xiàn)時(shí)間與擴(kuò)展功能的設(shè)置。 ●鬧鐘功能 修改鬧鈴時(shí)間,鬧鈴開(kāi)關(guān)的置換,修改位閃爍加以區(qū)分 ●萬(wàn)年歷功能 修改日期,同樣的修改位閃爍加以區(qū)分 3.3模塊設(shè)計(jì)概述 1

7、.按鍵設(shè)置 通過(guò)調(diào)整選擇鍵SET_KEY選擇調(diào)整位,選中位開(kāi)始閃爍,此時(shí)再按增加鍵ADD_KEY或減少鍵DEC_KEY調(diào)整選中位,如果長(zhǎng)按ADD_KEY或DEC_KEY,系統(tǒng)識(shí)別后則進(jìn)行調(diào)時(shí)快進(jìn),此時(shí)停止閃爍,方便人眼觀察。同時(shí)還增加了調(diào)秒功能:如果選中位是秒,則按增加鍵或減少鍵都是將秒清零。 3. 時(shí)間設(shè)置 進(jìn)入時(shí)間設(shè)置界面后,通過(guò)調(diào)整選擇鍵SET_KEY選擇調(diào)整位,選中位閃爍。按增加鍵ADD_KEY或減少鍵DEC_KEY設(shè)置所需要的時(shí)間。 4. 鬧鐘設(shè)置 進(jìn)入鬧鐘設(shè)置界面后,通過(guò)調(diào)整選擇鍵SET_KEY選擇調(diào)整位,選中位閃爍。按增加鍵ADD_KEY或減少鍵DEC_KEY設(shè)置所需要

8、的時(shí)間。與時(shí)間設(shè)置不同的是,鬧鐘設(shè)置里增加了開(kāi)關(guān)設(shè)置。 5. 萬(wàn)年歷設(shè)置 進(jìn)入萬(wàn)年歷設(shè)置界面后,通過(guò)調(diào)整選擇鍵SET_KEY選擇調(diào)整位,選中位閃爍。按增加鍵ADD_KEY或減少鍵DEC_KEY設(shè)置所需要的時(shí)間。萬(wàn)年歷設(shè)置里增加了大小月和平閏年的判別。 4軟件設(shè)計(jì) 4.1 主程序流程圖 4.2鬧鐘程序流程 4.3萬(wàn)年歷程序流程 4.4中斷系統(tǒng)結(jié)構(gòu)圖 附錄一 附錄二 /*****************************************************************************/ //初始化

9、 MOV SP,#60H;棧指針地址賦值 MOV 3CH,#0CH;設(shè)置界面修改位的閃爍頻率 具體代碼在SERVE 1秒中斷服務(wù)中 MOV 37H,#0FFH ;臨時(shí)地址 預(yù)留給39H MOV 39H,#0FFH ;段位標(biāo)志 8位數(shù)據(jù)對(duì)應(yīng)8個(gè)數(shù)碼管 為0的那位數(shù)碼管始終暗 MOV 3AH,#11111101B;界面轉(zhuǎn)換標(biāo)志 ******01為時(shí)間界面 取反后 ******10為萬(wàn)年歷界面 ******00為設(shè)置鬧鐘界面 CLR A ;時(shí)間萬(wàn)年歷初始化 時(shí)間00:00:00 萬(wàn)年歷2000。01。01 MOV 23H,A;時(shí) MOV 22H,A ;分 MO

10、V 21H,A ;秒 MOV 33H,#01H;日 MOV 34H,#01H ;月 MOV 35H,A;年 只能顯示2000-2099的時(shí)間 MOV 3DH,A ;數(shù)碼管閃爍開(kāi)關(guān) 初始化為關(guān)閉狀態(tài) 取反后 11111111 打開(kāi) MOV 40H,A ;鬧鐘設(shè)置界面預(yù)留地址地址 MOV 41H,A MOV 42H,A MOV 43H,A MOV 44H,A MOV 45H,A MOV 46H,A MOV 47H,A MOV 50H,A ;鬧鐘1 時(shí) MOV 51H,A ;鬧鐘1 分 MO

11、V 52H,A ;鬧鐘1 秒 MOV 0AH,A ;鬧鐘1 開(kāi)關(guān) 00000000為關(guān)閉狀態(tài) 取反后打開(kāi)鬧鐘1 MOV 53H,A ;同上 MOV 54H,A MOV 55H,A MOV 0BH,A MOV 56H,A MOV 57H,A ;同上 MOV 58H,A MOV 0CH,A MOV 59H,A ;同上 MOV 5AH,A MOV 5BH,A MOV 0DH,A MOV 5CH,A ;同上 MOV 5DH,A MOV 5EH,A MOV 0EH,A ****************

12、**********************************************/ ??ORG 0000H???;程序入口地址 ??LJMP START ??ORG 000BH???;定時(shí)器0中斷入口地址 ??LJMP TIMER_0 ??ORG 0300H /*****程序開(kāi)始,初始化*****/?? START: ??SETB 48H???;使用一個(gè)bit位用于調(diào)時(shí)閃爍標(biāo)志 ??SETB 47H???;使用一個(gè)bit位用于產(chǎn)生脈沖用于調(diào)時(shí)快進(jìn)時(shí)基 ??MOV R1,#0???;調(diào)整選擇鍵功能標(biāo)志:0正常走時(shí)、1調(diào)時(shí)、2調(diào)分、3調(diào)秒 ??MOV 2

13、0H,#00H??;用于控制秒基準(zhǔn)時(shí)鐘源的產(chǎn)生 ??MOV 21H,#00H??;清零秒寄存器 ??MOV 22H,#00H??;清零分寄存器 ??MOV 23H,#00H??;清零時(shí)寄存器 ??MOV 24H,#00H??;用于控制調(diào)時(shí)閃爍的基準(zhǔn)時(shí)鐘的產(chǎn)生 ? ??MOV IP,#02H???;IP,IE初始化 ??MOV IE,#82H ??MOV TMOD,#01H??;設(shè)定定時(shí)器0工作方式1 ??MOV TH0,#3CH ??MOV TL0,#0B0H??;賦定時(shí)初值,定時(shí)50ms ?? ??SETB TR0???;啟動(dòng)定時(shí)器0 ??MOV SP,#4

14、0H???;重設(shè)堆棧指針 /*****主程序*****/?? MAIN: ??LCALL DISPLAY ??;調(diào)用顯示子程序 ??LCALL KEY_SCAN ??;調(diào)用按鍵檢測(cè)子程序 ??JZ MAIN????;無(wú)鍵按下則返回重新循環(huán) ??LCALL SET_KEY ??;調(diào)用選擇鍵處理子程序 ?? 46H,MAIN???;如果已進(jìn)行長(zhǎng)按調(diào)整(調(diào)時(shí)快進(jìn)),則不再執(zhí)行下面的單步調(diào)整???? ??LCALL ADD_KEY??;調(diào)用增加鍵處理子程序,加一 ??LCALL DEC_KEY??;調(diào)用減少鍵處理子程序,減一 ??LJMP MAIN ???;重新循環(huán)

15、 ? /*****定時(shí)器中斷服務(wù)程序*****/ TIMER_0: ??PUSH ACC ??? ??PUSH PSW ???;保護(hù)現(xiàn)場(chǎng) ??MOV TH0,#3CH ??MOV TL0,#0B0H ??;重新賦定時(shí)初值 ??CPL 47H????;產(chǎn)生脈沖用于調(diào)時(shí)快進(jìn)時(shí)基 ??INC 24H ??MOV A,24H???????? ??CJNE A,#10,ADD_TIME?;產(chǎn)生0.5秒基準(zhǔn)時(shí)鐘,用于調(diào)時(shí)閃爍 ??CPL 48H????;取反調(diào)時(shí)閃爍標(biāo)志位 ??MOV 24H,#00H ADD_TIME:?????;走時(shí) ??INC 20H ??? ?

16、?MOV A,20H ??CJNE A,#20,RETI1?;產(chǎn)生1秒基準(zhǔn)時(shí)鐘 ??MOV 20H,#00H ??;一秒鐘時(shí)間到,清零20H ??MOV A,21H ??ADD A,#01H ??DA A?????;作十進(jìn)制調(diào)整 ??MOV 21H,A ??CJNE A,#60H,RETI1 ??MOV 21H,#00H ??;一分鐘到 ??MOV A,22H ??ADD A,#01H ??DA A ??MOV 22H,A ??CJNE A,#60H,RETI1 ??MOV 22H,#00H ??;一小時(shí)到 ??MOV A,23H ??A

17、DD A,#01H ??DA A ??MOV 23H,A ??CJNE A,#24H,RETI1 ??MOV 23H,#00H ??;到24點(diǎn),清零小時(shí) ? RETI1: ??POP PSW ??? ??POP ACC ???;恢復(fù)現(xiàn)場(chǎng) ??RETI ????;中斷返回 /*****顯示處理*****/ DISPLAY: ??MOV A,21H ???;秒 ??ANL A,#0FH ??MOV 2FH,A???;轉(zhuǎn)換出秒個(gè)位,存入2FH ??MOV A,21H ??ANL A,#0F0H ??SWAP A ??MOV 2EH,A???;

18、轉(zhuǎn)換出秒十位,存入2EH ?? 46H,MIN???;如果長(zhǎng)按按鍵(調(diào)時(shí)快進(jìn)),則跳過(guò)閃爍處理程序 ??CJNE R1,#3,MIN??;如果R1為3,閃爍秒位待調(diào)整 ?? 48H,MIN ??MOV 2FH,#0AH??;使該位為10,查表得到使該位不顯示的輸出 ??MOV 2EH,#0AH MIN: ??MOV A,22H ???;分 ??ANL A,#0FH ??MOV 2DH,A???;轉(zhuǎn)換出分個(gè)位,存入2DH ??MOV A,22H ??ANL A,#0F0H ??SWAP A ??MOV 2CH,A???;轉(zhuǎn)換出分十位,存入2CH ?? 46H

19、,HOUR???;如果長(zhǎng)按按鍵(調(diào)時(shí)快進(jìn)),則跳過(guò)閃爍處理程序 ??CJNE R1,#2,HOUR??;如果R1為2,閃爍分位待調(diào)整 ?? 48H,HOUR ??MOV 2DH,#0AH??;使該位為10,查表得到使該位不顯示的輸出 ??MOV 2CH,#0AH HOUR: ??MOV A,23H ???;時(shí) ??ANL A,#0FH? ??MOV 2BH,A???;轉(zhuǎn)換出時(shí)個(gè)位,存入2BH ??MOV A,23H ??ANL A,#0F0H ??SWAP A ??MOV 2AH,A???;轉(zhuǎn)換出時(shí)十位,存入2AH ?? 46H,DISP???;如果長(zhǎng)按按

20、鍵(調(diào)時(shí)快進(jìn)),則跳過(guò)閃爍處理程序 ??CJNE R1,#1,DISP??;如果R1為1,閃爍時(shí)位待調(diào)整 ? ?? 48H,DISP ??MOV 2BH,#0AH??;使該位為10,查表得到使該位不顯示的輸出 ??MOV 2AH,#0AH /*****數(shù)碼管動(dòng)態(tài)掃描顯示*****/ DISP: ??MOV DPTR,#TABLE ??MOV A,2FH ??MOVC A,A+DPTR ??MOV P0,A ??CLR P2.7 ??LCALL DELAY ??SETB P2.7???;顯示秒個(gè)位 ??MOV A,2EH ??MOVC A,A+DPTR ??MOV

21、 P0,A ??CLR P2.6 ??LCALL DELAY ??SETB P2.6???;顯示秒十位 ??MOV A,#0BFH ??MOV P0,A ??CLR P2.5 ??LCALL DELAY ??SETB P2.5???;顯示“-” ??MOV A,2DH ??MOVC A,A+DPTR ??MOV P0,A ??CLR P2.4 ??LCALL DELAY ??SETB P2.4???;顯示分個(gè)位 ??MOV A,2CH ??MOVC A,A+DPTR ??MOV P0,A ??CLR P2.3 ??LCALL DELAY ??SETB P

22、2.3???;顯示分十位 ??MOV A,#0BFH ??MOV P0,A ??CLR P2.2 ??LCALL DELAY ??SETB P2.2???;顯示“-” ??MOV A,2BH ??MOVC A,A+DPTR ??MOV P0,A ??CLR P2.1 ??LCALL DELAY ??SETB P2.1???;顯示時(shí)個(gè)位 ??MOV DPTR,#TABLE1?;該位使用TABLE1以消除前置0 ??MOV A,2AH ??MOVC A,A+DPTR ??MOV P0,A ??CLR P2.0 ??LCALL DELAY ??SETB P2.0?

23、??;顯示時(shí)十位 ??RET ?? /*****按鍵檢測(cè)子程序*****/ KEY_SCAN: ??CLR 46H????;關(guān)閉長(zhǎng)按調(diào)整(調(diào)時(shí)快進(jìn))標(biāo)志 ??MOV P1,#0FFH ??;將P1口設(shè)置成輸入狀態(tài) ??MOV A,P1 ??CPL A ??ANL A,#07H???;P1口低3位連接3個(gè)按鍵,只判斷該3位 ??JZ EXIT_KEY ??;無(wú)鍵按下則返回 ??LCALL DELAY???;延時(shí)去抖動(dòng) ??MOV A,P1???;重新判斷 ??CPL A ??ANL A,#07H ??JZ EXIT_KEY ??;鍵盤去抖動(dòng)

24、 ??MOV R5,A ???;臨時(shí)將鍵值存入R5 ??MOV R4,#00H???;用于控制調(diào)時(shí)快進(jìn)速度 ??;設(shè)置為00H是為了在進(jìn)入長(zhǎng)按處理前加長(zhǎng)延時(shí)區(qū)分用戶的長(zhǎng)按與短按,防止誤快進(jìn) ?? LOOP:??????;進(jìn)入長(zhǎng)按處理 ??LCALL DISPLAY??;使長(zhǎng)按時(shí)顯示正常? ??MOV A,P1 ??CPL A ??ANL A,#07H ?? 47H,LOOP1 ??INC R4????;調(diào)時(shí)快進(jìn)間隔時(shí)間基準(zhǔn)加1 LOOP1: ??CJNE R1,#03H,LOOP2?;如果調(diào)秒時(shí)長(zhǎng)按,則不處理 ??LJMP LOOP3 LOOP2: ??C

25、JNE R4,#99H,LOOP3? ??MOV R4,#70H???;確認(rèn)用戶長(zhǎng)按后,重新設(shè)定起始值,加快調(diào)時(shí)快進(jìn)速度 ??SETB 46H???;長(zhǎng)按調(diào)整(調(diào)時(shí)快進(jìn))標(biāo)志??? ??LCALL ADD_KEY ??LCALL DEC_KEY LOOP3: ??JNZ LOOP ???;等待鍵釋放 ??MOV A,R5???;輸出鍵值 ??RET??? EXIT_KEY: ??RET /*****延時(shí)子程序*****/ DELAY:?? ??MOV R7,#150? ??DJNZ R7,$ ??RET ?? /*****選擇鍵處理子程序*****/

26、SET_KEY: ??CJNE R5,#01H,EXIT?;選擇鍵鍵值 ??INC R1????;調(diào)整選擇功能標(biāo)志加一 ??CJNE R1,#4,EXIT ??MOV R1,#0 ??MOV 24H,#00H??;調(diào)時(shí)閃爍基準(zhǔn)清零 ??RET /*****增加鍵處理子程序*****/ ADD_KEY: ??CJNE R5,#02H,EXIT?;增加鍵鍵值 ??CJNE R1,#01H,NEXT1?;選擇鍵功能標(biāo)志為1,調(diào)時(shí),否則跳出 ??MOV A,23H ??ADD A,#01H ??DA A ??MOV 23H,A ??CJNE A,#24H,EXIT

27、 ??MOV 23H,#00H NEXT1: ??CJNE R1,#02H,NEXT2?;選擇鍵功能標(biāo)志為2,調(diào)分,否則跳出 ??MOV A,22H ??ADD A,#01H ??DA A ??MOV 22H,A ??CJNE A,#60H,EXIT ??MOV 22H,#00H NEXT2: ??CJNE R1,#03H,EXIT?;選擇鍵功能標(biāo)志為3,調(diào)秒,否則跳出 ??MOV 21H,#00H??;如增加鍵按下直接清零秒 ??RET /*****減少鍵處理子程序*****/ DEC_KEY: ??CJNE R5,#04H,EXIT?;減少鍵鍵值 ??

28、CJNE R1,#01H,NEXT3?;選擇鍵功能標(biāo)志為1,調(diào)時(shí),否則跳出 ??MOV A,23H ??ADD A,#99H ??DA A ??MOV 23H,A ??CJNE A,#99H,EXIT ??MOV 23H,#23H ? NEXT3: ??CJNE R1,#02H,NEXT4?;選擇鍵功能標(biāo)志為2,調(diào)分,否則跳出 ??MOV A,22H ??ADD A,#99H ??DA A ??MOV 22H,A ??CJNE A,#99H,EXIT ??MOV 22H,#59H NEXT4: ??CJNE R1,#03H,EXIT?;選擇鍵功能標(biāo)志為3,調(diào)秒

29、,否則跳出 ??MOV 21H,#00H??;如較少鍵按下直接清零秒 ??RET /*****萬(wàn)用返回子程序*****/?? EXIT: ??RET /*****數(shù)碼管字形編碼表*****/ TABLE: ??DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;字形顯示編碼 TABLE1: ??DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小時(shí)位的十位數(shù)編碼,該位如果為0則不顯示 //鬧鐘檢測(cè) MOV A,0AH JZ NAO2 ;檢

30、測(cè)鬧鐘開(kāi)關(guān) 若關(guān)檢測(cè)下一個(gè)鬧鐘,否則檢測(cè)時(shí)間是否為鬧鐘設(shè)定時(shí)間 MOV A,30H CJNE A,50H,NAO2 MOV A,31H CJNE A,51H,NAO2 MOV A,32H CJNE A,52H,NAO2 AJMP XIANG ;時(shí)間為鬧鐘設(shè)定時(shí)間吻合 進(jìn)入鬧鈴程序 下同 NAO2: MOV A,0BH JZ NAO3 MOV A,30H CJNE A,53H,NAO3 MOV A,31H CJNE A,54H,NAO3 MOV A,32H CJNE A,55H,NAO3 AJMP XIANG NAO3: MOV A,0CH

31、 JZ NAO4 MOV A,30H CJNE A,56H,NAO4 MOV A,31H CJNE A,57H,NAO4 MOV A,32H CJNE A,58H,NAO4 AJMP XIANG NAO4: MOV A,0DH JZ NAO5 MOV A,30H CJNE A,59H,NAO5 MOV A,31H CJNE A,5AH,NAO5 MOV A,32H CJNE A,5BH,NAO5 AJMP XIANG NAO5: MOV A,0EH JZ BU MOV A,30H CJNE A,5CH,BU MOV A,31H CJNE

32、A,5DH,BU MOV A,32H CJNE A,5EH,BU AJMP XIANG //檢測(cè)獨(dú)立按鍵 BU: T0,ZHU1 ;檢測(cè)s19是否按下 按下進(jìn)入萬(wàn)年歷界面,否則檢測(cè)矩陣鍵盤 MOV A,3AH ;界面轉(zhuǎn)換標(biāo)志取反即可使得時(shí)間和萬(wàn)年歷界面相互轉(zhuǎn)換 CPL A MOV 3AH,A //檢測(cè)矩陣鍵盤 //檢測(cè)到按鍵1,2,3,4,5時(shí)進(jìn)入對(duì)應(yīng)的鬧鐘設(shè)置界面 檢測(cè)到0BH(對(duì)應(yīng)s11)進(jìn)入時(shí)間設(shè)置界面 檢測(cè)到0CH(對(duì)應(yīng)s12)進(jìn)入萬(wàn)年歷設(shè)置界面 //若未檢測(cè)到按鍵 則跳回主程序繼續(xù)下一個(gè)檢測(cè)周期 ZHU1: MOV R7,#0FH ACAL

33、L JIANCEANJIAN ;矩陣鍵盤檢測(cè)子程序 將檢測(cè)到的鍵值存入r7 CJNE R7,#0FH,ZHU2 AJMP ZHUXUNHUAN ZHU2: CJNE R7,#0BH,ZHU3 AJMP SHIJIANSHEZHI ZHU3: CJNE R7,#0CH,ZHU4 AJMP WANNIANLISHEZHI ZHU4: CJNE R7,#01H,ZHU5 AJMP NAOZHONGSHEZHI ZHU5: CJNE R7,#02H,ZHU6 AJMP NAOZHONGSHEZHI ZHU6: CJNE R7,#03H,ZHU7

34、 AJMP NAOZHONGSHEZHI ZHU7: CJNE R7,#04H,ZHU8 AJMP NAOZHONGSHEZHI ZHU8: CJNE R7,#05H,ZHUXUNHUAN0 AJMP NAOZHONGSHEZHI ZHUXUNHUAN0: AJMP ZHUXUNHUAN //年月日校正子程序 用于萬(wàn)年歷進(jìn)位和萬(wàn)年歷設(shè)置 防止出現(xiàn)不存在的時(shí)間 NYR: MOV A,33H CJNE A,#32,MONTH ;日為32時(shí),月進(jìn)位日置1 MOV 33H,#01H AJMP MONTH0 MONTH: CJNE A,#3

35、1,MONTH1 ;日為31時(shí) 分辨大小月與2月 MOV A,34H CJNE A,#4,MONTH2 MOV 33H,#01H AJMP MONTH0 MONTH2: CJNE A,#2,MONTH6 MOV 33H,#01H AJMP MONTH0 MONTH6: CJNE A,#6,MONTH9 MOV 33H,#01H AJMP MONTH0 MONTH9: CJNE A,#9,MONTH11 MOV 33H,#01H AJMP MONTH0 MONTH11: CJNE A,#11,RETURN0 MOV 33H,#01H

36、AJMP MONTH0 MONTH1: CJNE A,#30,MONTH29 ;日為30時(shí)分辨2月 MOV A,34H CJNE A,#02H,RETURN0 MOV 33H,#01H AJMP MONTH0 MONTH29: CJNE A,#29,RETURN0 ;日為29時(shí)分辨閏平年2月 MOV A,34H CJNE A,#02H,RETURN0 MOV A,35H MOV B,#04H DIV AB MOV A,B JNZ MONO AJMP RETURN0 MONO: MOV 33H,#01H MONTH0:

37、MOV A,#01H ;月進(jìn)位 ADD A,34H MOV 34H,A CJNE A,#0DH,RETURN0 MOV 34H,#01H MOV A,#01H ADD A,35H MOV 35H,A CJNE A,#100,RETURN0 ;年最多只能99 MOV 35H,#00 RETURN0: RET /******************************************************************/ //屏幕刷新中斷 XIANSHI: PUSH B PUSH DPH PUSH DPL

38、 PUSH PSW PUSH ACC MOV TH1,#0DFH MOV TL1,#0E0H MOV A,3AH JNB ACC.0,WANNIANLI ;界面顯示判斷 //時(shí)間界面 MOV A,21H MOV B,#0AH DIV AB MOV 10H,B MOV 11H,A MOV A,22H MOV B,#0AH DIV AB MOV 12H,B MOV 13H,A MOV A,23H MOV B,#0AH DIV AB MOV 14H,B MOV 15H,A MOV 16H,#0

39、AH MOV 17H,#0AH AJMP LIANG //萬(wàn)年歷界面 WANNIANLI: JNB ACC.1,SHEZHI MOV A,33H MOV B,#0AH DIV AB MOV 10H,B MOV 11H,A MOV A,34H MOV B,#0AH DIV AB MOV 12H,B MOV 13H,A MOV A,35H MOV B,#0AH DIV AB MOV 14H,B MOV 15H,A MOV 16H,#00H MOV 17H,#02H AJMP LIANG //鬧鐘設(shè)置界面 SHEZHI: MOV 1

40、0H,40H MOV 11H,41H MOV 12H,42H MOV 13H,43H MOV 14H,44H MOV 15H,45H MOV 16H,46H MOV 17H,47H //萬(wàn)年歷設(shè)置 WANNIANLISHEZHI: MOV 3AH,#0FEH ;轉(zhuǎn)換設(shè)置界面 MOV 39H,#11011111B ;設(shè)置閃爍位 MOV 37H,39H MOV 3DH,#0FFH ;開(kāi)閃爍開(kāi)關(guān) WM: ACALL NYR ;校正 萬(wàn)年歷 T1,WS1 ;s20 按下 退出設(shè)置界面 MOV 39H,#0FFH

41、 ;關(guān)閃爍 MOV 3DH,#00H ;閃爍開(kāi)關(guān) 關(guān) MOV 3AH,#11111101B ;轉(zhuǎn)換成時(shí)間設(shè)置界面 AJMP ZHUXUNHUAN WS1: INT0,WS2 ;修改位 右移 同上 MOV A,37H CJNE A,#11111110B,WSS0 RR A RR A RR A MOV 37H,A S20: JNB INT0,S20 AJMP WM WSS0: RR A MOV 37H,A S21: JNB INT0,S21 AJMP WM WS2: INT1,WM1 ;修改位左移

42、 MOV A,37H CJNE A,#11011111B,WSS1 RL A RL A RL A MOV 37H,A S23: JNB INT1,S23 AJMP WM WSS1: RL A MOV 37H,A S24: JNB INT1,S24 AJMP WM //矩陣鍵盤檢測(cè) 修改萬(wàn)年歷 WM1: MOV R7,#0FH ACALL JIANCEANJIAN CJNE R7,#0FH,WSJSZ1 AJMP WM WSJSZ1: MOV A,37H ;檢測(cè)修改位 ACC.5,WSJSZ2 /

43、/修改年十位 MOV A,35H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB ADD A,1FH MOV 35H,A MOV A,37H RR A MOV 37H,A AJMP WM WSJSZ2: ACC.4,WSJSZ3 //修改年個(gè)位 MOV A,35H MOV B,#0AH DIV AB MOV B,#0AH MUL AB ADD A,R7 MOV 35H,A MOV A,37H RR A MOV 37H,A AJMP WM WSJSZ3: ACC

44、.3,WSJSZ4 //修改月十位 只能為0,1 但月個(gè)位不為0,1,2是不能修改為1 月個(gè)位為0時(shí)不能修改為0 CJNE R7,#00H,WSJ1 MOV A,34H MOV B,#0AH DIV AB MOV A,B CJNE A,#00H,WLED4 AJMP WMMM WSJ1: CJNE R7,#01H,WMMM MOV A,34H MOV B,#0AH DIV AB MOV A,B CJNE A,#00H,L1 AJMP WLED4 L1: CJNE A,#01H,L2 AJMP WLED4 L2: CJNE A,#02H,WMMM

45、 AJMP WLED4 WMMM:LJMP WM WLED4: MOV A,34H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB ADD A,1FH MOV 34H,A MOV A,37H RR A MOV 37H,A AJMP WM WSJSZ4: ACC.2,WSJSZ5 //修改月個(gè)位 但月十位為1時(shí)只能修改為0,1,2 月十位為0時(shí)不能修改為0 MOV A,34H MOV B,#0AH DIV AB CJNE A,#00H,WJ0 CJNE R7,#00H,WLED

46、3 AJMP WWM WJ0: CJNE R7,#00H,WJ1 AJMP WLED3 WJ1: CJNE R7,#01H,WJ2 AJMP WLED3 WJ2: CJNE R7,#02H,WWM AJMP WLED3 WLED3: MOV B,#0AH MUL AB ADD A,R7 MOV 34H,A MOV A,37H RR A MOV 37H,A WWM: AJMP WM WSJSZ5: ACC.1,WSJSZ6 //修改日十位 只能為0,1,2,3 日個(gè)位不為0,1時(shí)不能修改為3 CJNE R7,#00H,WSJ10 AJM

47、P WLED2 WSJ10: CJNE R7,#01H,WSJ20 AJMP WLED2 WSJ20: CJNE R7,#02H,WSJ30 AJMP WLED2 WSJ30: CJNE R7,#03H,WWM MOV A,33H MOV B,#0AH DIV AB MOV A,B CJNE A,#00H,L3 AJMP WLED2 L3: CJNE A,#01H,WWM AJMP WLED2 WLED2: MOV A,33H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB AD

48、D A,1FH MOV 33H,A MOV A,37H RR A MOV 37H,A AJMP WM WSJSZ6: //修改日個(gè)位 日十位為3時(shí) 只能修改為0,1 MOV A,33H MOV B,#0AH DIV AB CJNE A,#00H,LL4 CJNE R7,#00H,WLED1 AJMP WM LL4: CJNE A,#03H,WLED1 CJNE R7,#00H,WJ4 AJMP WLED1 WJ4: CJNE R7,#01H,WWM AJMP WLED1 WLED1: MOV B,#0AH MUL AB ADD A,R

49、7 MOV 33H,A MOV 37H,#11011111B AJMP WM /***************************************************************/ //矩陣按鍵檢測(cè)子程序 JIANCEANJIAN: MOV DPTR,#8000H MOV A,#0F0H MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR CPL A JNZ XIAODOU RET XIAODOU: //ACALL DELAY MOV A,#0F0H MOV DPTR,#

50、8000H MOVX A,DPTR CPL A JNZ PAN RET PAN: MOV DPTR,#8000H MOV A,#11111110B MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR JNB ACC.0,KEY10 ;低電位說(shuō)明按鍵在該位 JNB ACC.1,KEY20 JNB ACC.2,KEY30 JNB ACC.3,KEY40 MOV DPTR,#8000H MOV A,#11111101B MOVX DPTR,A MOV DPTR,#8000H MOVX A,D

51、PTR JNB ACC.0,KEY50 JNB ACC.1,KEY60 JNB ACC.2,KEY70 JNB ACC.3,KEY80 MOV DPTR,#8000H MOV A,#11111011B MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR JNB ACC.0,KEY90 JNB ACC.1,KEY00 JNB ACC.2,TUI JNB ACC.3,KEY0C0 RET KEY10: MOV R7,#01H RET KEY20: MOV R7,#02H RET KEY30: MOV R7,#

52、03H RET KEY40: MOV R7,#04H RET KEY50: MOV R7,#05H RET KEY60: MOV R7,#06H RET KEY70: MOV R7,#07H RET KEY80: MOV R7,#08H RET KEY90: MOV R7,#09H RET KEY00: MOV R7,#00H RET TUI: MOV R7,#0BH RET KEY0C0: MOV R7,#0CH RET /*************************************************

53、***/ //鬧鈴響 XIANG: CLR P1.0 //ACALL MDELAY //SETB P1.0 T1,XIANG ;s20 退出鬧鈴 跳回主循環(huán) SETB P1.0 AJMP ZHUXUNHUAN /****************************************************/ //鬧鐘設(shè)置 NAOZHONGSHEZHI: //檢測(cè)是哪個(gè)鬧鐘 并初始化鬧鐘設(shè)置 CJNE R7,#01H,NZ2 MOV A,50H MOV B,#0AH DIV AB MOV 45H,A MOV 44H,B MOV A

54、,51H MOV B,#0AH DIV AB MOV 43H,A MOV 42H,B MOV A,52H MOV B,#0AH DIV AB MOV 41H,A MOV 40H,B MOV 09H,#50H MOV 47H,#01H MOV 08H,#0AH AJMP NANJIAN NZ2: CJNE R7,#02H,NZ3 MOV A,53H MOV B,#0AH DIV AB MOV 45H,A MOV 44H,B MOV A,54H MOV B,#0AH DIV AB MOV 43H,A MOV 42H,B MOV A,55H MO

55、V B,#0AH DIV AB MOV 41H,A MOV 40H,B MOV 09H,#53H MOV 47H,#02H MOV 08H,#0BH AJMP NANJIAN NZ3: CJNE R7,#03H,NZ4 MOV A,56H MOV B,#0AH DIV AB MOV 45H,A MOV 44H,B MOV A,57H MOV B,#0AH DIV AB MOV 43H,A MOV 42H,B MOV A,58H MOV B,#0AH DIV AB MOV 41H,A MOV 40H,B MOV 09H,#56H MOV 47H

56、,#03H MOV 08H,#0CH AJMP NANJIAN NZ4: CJNE R7,#04H,NZ5 MOV A,59H MOV B,#0AH DIV AB MOV 45H,A MOV 44H,B MOV A,5AH MOV B,#0AH DIV AB MOV 43H,A MOV 42H,B MOV A,5BH MOV B,#0AH DIV AB MOV 41H,A MOV 40H,B MOV 09H,#59H MOV 47H,#04H MOV 08H,#0DH AJMP NANJIAN NZ5: MOV A,5CH MOV B,

57、#0AH DIV AB MOV 45H,A MOV 44H,B MOV A,5DH MOV B,#0AH DIV AB MOV 43H,A MOV 42H,B MOV A,5EH MOV B,#0AH DIV AB MOV 41H,A MOV 40H,B MOV 09H,#5CH MOV 47H,#05H MOV 08H,#0EH AJMP NANJIAN NANJIAN: MOV 3AH,#11111100B ;界面轉(zhuǎn)換成鬧鐘設(shè)置界面 MOV 39H,#11011111B MOV 37H,39H MOV 3DH,#0FFH

58、 ;開(kāi)閃爍 NM: MOV R1,08H T0,XIA1 ;s19 鬧鐘開(kāi)關(guān) MOV A,R1 CPL A MOV R1,A XIA1: MOV A,R1 JZ XIA2 MOV 46H,#0BH JMP XIA3 XIA2: MOV 46H,#0AH XIA3: T1,NS1 ;s20 退出鬧鐘設(shè)置 跳回主程序 //鬧鐘數(shù)據(jù)保存 MOV 39H,#0FFH MOV 3DH,#00H MOV 3AH,#11111101B MOV R1,09H MOV A,45H MOV B,#0AH MUL AB ADD A

59、,44H MOV R1,A INC R1 MOV A,43H MOV B,#0AH MUL AB ADD A,42H MOV R1,A INC R1 MOV A,41H MOV B,#0AH MUL AB ADD A,40H MOV R1,A AJMP ZHUXUNHUAN NS1: INT0,NS2 ;修改位右移 同上 MOV A,37H CJNE A,#11111110B,NSS0 RR A RR A RR A MOV 37H,A S30: JNB INT0,S30 AJMP NM NSS0: RR A MOV 37

60、H,A S31: JNB INT0,S31 AJMP NM NNM:AJMP NM NS2: INT1,NM1 ;修改位左移 同上 MOV A,37H CJNE A,#11011111B,NSS1 RL A RL A RL A MOV 37H,A S32: JNB INT1,S32 LJMP NM NSS1: RL A MOV 37H,A S33: JNB INT1,S33 LJMP NM NM1: //矩陣鍵盤檢測(cè) 修改鬧鐘 同時(shí)間設(shè)置 MOV R7,#0FH LCALL JIANCEANJIAN CJNE

61、 R7,#0FH,NSJSZ1 LJMP NM NSJSZ1: MOV A,37H ACC.5,NSJSZ2 CJNE R7,#00H,NSJS1 LJMP NLED6 NSJS1: CJNE R7,#01H,NSJS2 LJMP NLED6 NSJS2: CJNE R7,#02H,NMM AJMP NLED6 NLED6: MOV 45H,R7 MOV A,37H RR A MOV 37H,A LJMP NM NSJSZ2: ACC.4,NSJSZ3 MOV A,45H CJNE A,#02H,NLED5 CJNE R7,#00H,N

62、SJS4 AJMP NLED5 NSJS4: CJNE R7,#01H,NSJS5 AJMP NLED5 NSJS5: CJNE R7,#02H,NSJS6 AJMP NLED5 NSJS6: CJNE R7,#03H,NMM1 AJMP NLED5 NMM1:LJMP NNM NLED5: MOV 44H,R7 MOV A,37H RR A MOV 37H,A LJMP NM NSJSZ3: ACC.3,NSJSZ4 CJNE R7,#00H,NSJ1 LJMP NLED4 NSJ1: CJNE R7,#01H,NSJ2 AJMP NLED

63、4 NSJ2: CJNE R7,#02H,NSJ3 AJMP NLED4 NSJ3: CJNE R7,#03H,NSJ4 AJMP NLED4 NSJ4: CJNE R7,#04H,NSJ5 AJMP NLED4 NSJ5: CJNE R7,#05H,NMM AJMP NLED4 NMM:LJMP NM NLED4: MOV 43H,R7 MOV A,37H RR A MOV 37H,A LJMP NM NSJSZ4: ACC.2,NSJSZ5 MOV 42H,R7 MOV A,37H RR A MOV 37H,A AJMP NMM0

64、 NSJSZ5: ACC.1,NSJSZ6 CJNE R7,#00H,NSJ10 AJMP NLED2 NSJ10: CJNE R7,#01H,NSJ20 AJMP NLED2 NSJ20: CJNE R7,#02H,NSJ30 AJMP NLED2 NSJ30: CJNE R7,#03H,NSJ40 AJMP NLED2 NSJ40: CJNE R7,#04H,NSJ50 AJMP NLED2 NSJ50: CJNE R7,#05H,NMM0 AJMP NLED2 NMM0:LJMP NM NLED2: MOV 41H,R7 MOV A,37H RR A MOV 37H,A LJMP NM NSJSZ6: MOV 40H,R7 MOV 37H,#11011111B LJMP NM END

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!