基于51單片機的數字鐘設計3
《基于51單片機的數字鐘設計3》由會員分享,可在線閱讀,更多相關《基于51單片機的數字鐘設計3(36頁珍藏版)》請在裝配圖網上搜索。
1、 武漢大學電子信息學院 電子系統(tǒng)綜合設計課程論文 基于51單片機的數字鐘設計 專 業(yè): 年 級: 作 者: 指導教師: 2012年 6月 13 日 2 目 錄 1 作品的背景與意義 1 2 功能指標設計 1 3 作品方案設計 2 3.1總體方案的選擇 2 一基于51單片機的數字鐘設計 2 3.2控制方案比較 2 3.3顯示方案比較 3 3.4 公式 4 4 硬件設計 4 4.1顯示模
2、塊電路圖 4 4.2 4X4矩陣鍵盤硬件原理圖 5 4.3蜂鳴器驅動電路 5 5 軟件設計 6 5.1主程序流程圖 6 5.2顯示模塊流程圖 6 5.3按鍵處理流程圖 7 5.4 定時器中斷流程圖 8 6 系統(tǒng)測試 9 6.1測試環(huán)境 9 6.1.1調試軟件 6.1.2仿真軟件 6.2測試步驟 10 6.3測試數據 10 6.4心得體會 10 參考文獻 11 附錄1 系統(tǒng)電路圖 12 附錄2 系統(tǒng)軟件代碼 12 附錄3 系統(tǒng)器件清單 36 電子系統(tǒng)綜合設計課程論文 1 作品的背景與意義 近年來,隨著電
3、子產品的發(fā)展,人們對數字時鐘的要求越來越高,本文針對人們的這一需求,設計了一種有單片機控制的多功能數字時鐘。該系統(tǒng)具有年、月、日、星期、時、分、秒設置及顯示、鬧鐘定時等功能。系統(tǒng)以 C51單片機為核心,主要進行基于C51單片低功耗MCU的字符型數字鐘及其系統(tǒng)的研究,可以通過它的時鐘信號進行計時實現計時功能,將其時間數據經單片機輸出,利用顯示器顯示出來。通過鍵盤可以進行定時、校時功能。輸出設備顯示器可以用液晶顯示技術和數碼管顯示技術。系統(tǒng)帶有數碼管顯示器,配合按鍵提供友好的用戶界面,操作簡單,同時具有定點報時功能,該數字鐘能長期、連續(xù)、可靠、穩(wěn)定的工作;同時還具有體積小、功耗低等特點,便于攜帶,
4、使用方便。系統(tǒng)軟件設計包括單片機計算機兩部分的編程。計算機軟件編程主要實現參數設置、串行口數據接收、指令發(fā)送以及數據的顯示和存儲。單片機軟件編程主要實現鍵盤、數碼管顯示、定點報時等各模塊的功能,采用匯編語言編程。鐘表的數字化給人們生產生活帶來了極大的方便而且大大地擴展了鐘表原先的報時功能。因此,研究數字鐘及擴大其應用,有著非?,F實的意義。 2 功能指標設計 本設計準備實現的功能: (1)顯示公歷日期功能(年、月、日、時、分、秒)。 (2)可通過按鍵切換年、月、日及時、分、秒的顯示狀態(tài)。 (3)可隨時調校年、月、日或時、分、秒。 (5)可實現鬧鐘功能。 3 作品方案設計
5、 3.1總體方案的選擇 —————————基于51單片機的數字鐘設計 單片機芯片作為控制系統(tǒng)的核心部件,它除了具備微機CPU的數值計算功能外,還具有靈活強大的控制功能,以便實時檢測系統(tǒng)的輸入量、控制系統(tǒng)的輸出量,實現自動控制。在本次設計中采用單片機技術來實現數字鐘的功能。方案的設計可以從以下幾個方面來確定。在本次設計中采用AT89C51單片機;顯示電路的設計,在這里采用數碼管顯示;校時和定時電路的設計;實時控制電路是時鐘電路的一個重要組成部分,采用的是一個時鐘芯片,單片機從中讀取數據送到顯示器上顯示,從而實現數字鐘的功能;還有一些其他控制電路如復位電路、時鐘電路等。通過這些控制電路的連
6、接構成了完整的電路。 3.2控制方案比較 程序設計內單片機的程序設計有其自身的特點。在單片機系統(tǒng)中,硬件與軟件緊密結合,由于硬件電路的設計不具有通用性,所以必須根據具體的硬件電路來設計對應的軟件,硬件設計的優(yōu)劣直接影響到軟件設計的難易,軟件設計的優(yōu)劣又直接影響到硬件的發(fā)揮。在很多時候,軟件可以替代硬件的功能,當然,需要付出額外占用CPU時間的代價。 軟件程序的設計是根據硬件電路圖的連接和各個元器件的功能進行設計。在編寫軟件時,可以按各個程序的功能將軟件細分為各個功能模塊,再通過主程序的調用來實現整個軟件系統(tǒng)。而一般編寫的程序都是根據事前所用的流程圖來編寫的,而且,流程圖中也包含了
7、對設計所得結果的要求,因此,流程圖的設計直接影響到源程序的設計。 控制鍵盤采用獨立式按鍵,開機時,顯示12:00:00的時間開始計時;P0.0/AD0控制“秒”的調整,每按一次加1秒; P0.1/AD1控制“分”的調整,每按一次加1分;P0.2/AD2控制“時”的調整,每按一次加1個小時;定時器1中斷入口,產生秒基準時間并實現時間日期自增,定時器2中斷入口,由軟件控制蜂鳴器產生鬧鐘鈴聲。 3.3顯示方案比較 單片機控制段式LED數碼管顯示。碼管由7段LED組成,因此可以稱為七段數碼管。將這七個LED按一定規(guī)律點亮,就能夠顯示數字0~9,以及英文字母A、B、C、D、E、F。而現
8、在的數碼管都有帶有小數點(DP),實際上數碼管就變成8段了。顯示二進制、十進制數、十六進制數,小數都不是問題。 數碼管有共陽、共陰的區(qū)分。顧名思義,共陽數碼管公共陽極,即將8個數碼管正極連接在一起,負極又8個不同端口控制。共陰則與共陽相反。段選引腳用于驅動一位數碼管的八個段,即圖上的a、c、d、e、f、g和dp。根據不同的數字輸出對應的電平,從而點亮一位數碼管。位選用于選擇在某一時刻驅動哪一位數碼管,設計里面使用兩位數碼管,因此需要兩個引腳來控制這些位。在控制位選時候,將數碼管的位選引腳直接接到單片機的I/O口,是可行的。原因是,單片機的I/O負載能力不足以驅動數碼管,這時候,就需要外加上
9、三極管作為電流放大使用。使用了PNP三極管,將發(fā)射極接到電源的+5V,基極串上一10K電阻接到單片機的位選I/O口,集電極就接到數碼管的位選端。 3.4 公式 定時時間 t=(-T0初值)*振蕩周期*12 (1.1) 4 硬件設計 4.1顯示模塊電路圖 圖4.1 AD9851連接電路 4.2 4X4矩陣鍵盤硬件原理圖 按鈕未按下前,四個I/O口通過一個10K的電阻與VCC相連,所以此時四個I/O口的輸入都為1即高電平;當按鈕按下時,四個I/O口都接地,此時四個I/O
10、口的輸入都為即低電平。 圖4.2 4*4鍵盤 4.3蜂鳴器驅動電路 蜂鳴器工作電壓為+5V,將蜂鳴器的正極連接到電源+5V,負極連接到電源的GND,蜂鳴器就能發(fā)出聲響。 單片機I/O的負載能力并不足以驅動蜂鳴器,為了解決這個問題,必需另需它法。蜂鳴器的典型驅動電路是使用極管做開關。 5 軟件設計 程序開始 5.1主程序流程圖 啟動定時器 按鍵檢測 時間顯示 結束 圖5.1 主程序流程圖 5.2顯示模塊流
11、程圖 程序開始 秒十位計數顯示 分個位計數顯示 分十位計數顯示 時個位計數顯示 時十位計數顯示 結束 開始 5.3按鍵處理流程圖 秒按鍵按下? N 秒加1 Y 分按鍵按下? N
12、 Y 分加1 時按鍵按下? N Y 時加1 顯示時間 結束 開始 5.4 定時器中斷流程圖 1秒時間到? N Y 秒單元加1 60秒時間到? N
13、 Y 秒單元清零;分單元加1 60分鐘時間到? N 分單元清零,時單元加1 Y 24小時到? N Y 時單元清零 時間顯示 中斷返回 6 系統(tǒng)測試 6.
14、1測試環(huán)境 6.1.1調試軟件 KEIL: KEIL C51標準C編譯器為微控制器的軟件開發(fā)供了C語言環(huán)境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強。使你可以更加貼近CPU本身,及其它的衍生產品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含:編譯器,匯編器,實時操作系統(tǒng),項目管理器,調試器。uVision2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。一個單一的uVision2工程能夠產生一個或多個目標程序。產生目標程序的源文件構成“組”。開發(fā)工具選項可以對應目標,組或單個文件。同時uVision2包含一個器件數據庫(device da
15、tabase),可以自動設置匯編器、編譯器、連接定位器及調試器選項,來滿足用戶充分利用特定,微控制器的要求。此數據庫包含:片上存儲器和外圍設備的信息,擴展數據指針(extra data pointer)或者加速器(math accelerator)的特性。uVision2還可以為片外存儲器產生必要的連接選項:確定起始地址和規(guī)模。uVision2編輯器包含了所有用戶熟悉的特性,彩色語法顯像和文件辯識都對C源代碼進行和優(yōu)化,也可以在編輯器內調試程序,它能提供一種自然的調試環(huán)境,使你更快速地檢查和修改程序。另外KEIL C51編譯器在遵循ANSI標準的同時,為8051微控制器系列特別設計。因為語言上
16、的擴展能讓用戶使用應用中的所有資源。 6.1.2仿真軟件 PROTEUS: Proteus軟件是Labcenter Electronics公司的一款電路設計與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設計,而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術,它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機芯片,比如MCS-51系列、PIC系列等等,以及單片機外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個功能齊全、實用方便的單片機實驗室。 6.
17、2測試步驟 1.硬件調試,檢測硬件是否合格; 2.默認為走時模式,按24小時制分別為 “時時,分分.秒秒”。然后進行走時調整; 3.萬年歷模式,為 “年份,月份.日期”??梢赃M行調整; 4.鬧鐘模式,可以定時鬧鐘。 6.3測試結果 單片機數字鐘擁有時間模式,日歷模式,鬧鐘模式三種模式。 6.4測試數據 表6.1 功能數據測試 電子鐘測試值/min 實際值/min 誤差/% 平均誤差/% 1 00:00:59.95 0.05 0.09 1 00:00:59.88 0.12 1 00:01:00.10 0.10 2 00:01
18、:59.77 0.12 0.14 2 00:02:00.21 0.11 2 00:01:59.65 0.18 6.5 心得體會 回顧起此次實驗設計,我感慨頗多,從一開始的茫然到思路漸漸清晰,從開始選題到最終定稿,從理論到實踐,在短短的五個星期的日子里,痛并快樂著,但是艱辛的付出是值得的。電子綜合設計課程作為一門開放性課程讓適應了填鴨式教育的我們手足無措,但是老師的諄諄教誨和不厭其煩的耐心指導撥散了我們心中的迷霧,使我們有曲徑通幽,豁然開朗之感。從一開始的了解電路結構到最后的軟硬件結合實現設計功能,我們遇到了各種問題。這畢竟第一次做實驗設計,難免會遇到過各種各樣的
19、問題。 在困難中前行,我們受益匪淺。隊友之間的相互磨合讓我們學會了團隊精神!差錯的出現考驗了我們的隨機應變能力!實驗設計遇到的阻力讓我們明白了理論與實踐相結合的重要性!只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,從操作中鞏固理論,兩者有機結合,提高自己的實際動手能力和獨立思考的能力。同時在設計的過程中找出不足之處,加以改正不斷提升自己的水平。 通過此次實驗,在讓我們體會到了設計的艱辛的同時,更讓我體會到成功的喜悅和快樂.。這次電子設計實驗,雖然短暫但是讓我們得到多方面的提高: 1. 我們了解并掌握了單片機的基本應用,學習了Keil軟件的用法,.
20、2、提高了我們的邏輯思維能力,加強了實際操作能力。 我們在邏輯電路的分析與設計上有了質的飛躍。我們理解了各種芯片的功能及構造,加深了對組合邏輯電路與時序邏輯電路的認識,進一步增進了對一些常見邏輯器件的了解。 3,查閱參考書的獨立思考的能力以及培養(yǎng)非常重要。 我們在設計電路時,遇到很多不理解的東西,有的我們通過查閱參考書弄明白,有的通過網絡查到,但由于時間和資料有限我們更多的還是獨立思考。所以不斷的汲取知識是非常重要的。 4、隊友之間的團結合作也是非常重要的,眾人拾柴火焰高,我們三個人的力量加起來所有問題就能迎刃而解!
21、
22、
23、
24、 參考文獻 [1]李朝青.單片機原理與接口技術(第三版).北京:北京航空航天大學出版社,2005. [2]李 軍. 51系列單片機高級實例開發(fā)指南. 北京航空航天大學出版社. [3]王毓銀.數字電路邏輯設計[M] .高等教育出版社.2004-2. [4]許偉敏程佩青.多功能電子數字鐘.2009. [5]電子技術基礎實驗課程組.電子技術基礎實驗指導書.武漢大學電子信息學院. [6]李光飛. 單片機設計實例指導.北京航空航天大學出版社. [7]劉華東. 單片機原理與應用.北京電子工業(yè)出版社. 附錄1 系統(tǒng)電路圖
25、附錄2 系統(tǒng)軟件代碼 /****************************************************************************/ /****************************************************************************/ KEY EQU 0F8FFH ;按鍵地址 LED_SEG EQU 0FAFFH ;液晶段數據 LED_SEL EQU 0FBFFH ;液晶段片選 KH EQU
26、 21H ;保存按鍵行值 KK EQU 22H ;按鍵值地位 KV EQU 23H ;保存按鍵列位 KT EQU 24H ;臨時保存按鍵狀態(tài) HOU EQU 25H SEC EQU 26H MIN EQU 27H HB EQU 28H ;數據高位 LB EQU 29H ;數據低位 DATE_TIME EQU 2AH ;記錄時間
27、、日期模式 ,3表示時間,4表示日期 LP0 EQU 2BH ;定時器1循環(huán)次數 LP1 EQU 2CH ;定時器2循環(huán)次數 YEARH EQU 2DH YEARL EQU 2EH MON EQU 2FH DAY EQU 30H FLASH EQU 31H ;設置標記變量 FLASH_BITE EQU 32H ;設置位標記變量 FLASH_FIGURE EQU 33H ;設置位數值標記變量 SIGN EQ
28、U 34H ;閏年標記 BOOL EQU 35H ;是否按下 LP3 EQU 36H LP4 EQU 37H BITE EQU 38H LP2 EQU 39H H_LB EQU 3AH H_HB EQU 3BH LP5 EQU 3CH ;鬧鐘個數 LP6 EQU 4FH LP7 EQU 50H LP8 EQU 51H LP_H EQU
29、52H LP_L EQU 53H BP BIT P1.0 ;鬧鐘 LED_1 BIT P1.1 ON_OFF0 BIT 00H ON_OFF1 BIT 01H ON_OFF2 BIT 02H ON_OFF3 BIT 03H ON_OFF4 BIT 04H BOOL_H BIT 05H BOOL_L BIT 06H /*****************************************************************
30、****************/ ORG 0000H LJMP MAIN ORG 000BH ;定時器1中斷入口,產生秒基準時間并實現時間日期自增 LJMP SERVE ORG 001BH ;定時器2中斷入口, LJMP REDRAW /*********************************************************************************/ ORG 1000H MAIN: MOV SP,#60H MOV BOOL,#0H MOV LP0,#14H MOV LP1,#250 MOV
31、 TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H; MOV TH1,#03CH MOV TL1,#0B0H MOV LP7,#2 ;定時器1循環(huán)次數 MOV LP8,#50 ; MOV SIGN,#0FFH MOV FLASH,#0 MOV YEARH,#20 MOV YEARL,#12 MOV MON,#2 MOV DAY,#29 MOV HOU,#23 MOV SEC,#53 MOV MIN,#59 MOV R4,#0DFH MOV DATE_TIME,#3H MOV FLAS
32、H_BITE,#0FFH MOV LP5,#0 MOV LP_H,#70 MOV LP_L,#70 SETB BP SETB ON_OFF0 SETB ON_OFF1 SETB ON_OFF2 SETB ON_OFF3 SETB ON_OFF4 SETB BOOL_H SETB BOOL_L MOV 3DH,#0 MOV 45H,#0 MOV 4AH,#0 MOV 3FH,#1 MOV 47H,#1 MOV 4CH,#1 /******************************定時器初始化********
33、*****************************/ SETB ET0 ;允許T0中斷 SETB ET1 ;禁止T1中斷 SETB EA ;CPU開放中斷 CLR TR1 ;關閉定時器T1 SETB TR0 ;開啟定時器T0 /*********************************************************************************/ WHILE: LCALL LP KEY_NUM: ;按鍵處理 MOV DPTR,#KEY MOV A,#0
34、H MOVX @DPTR,A MOV A,FLASH JZ SETTR0 MOV A,DATE_TIME CJNE A,#4,CLRTR0 SETTR0: SETB TR0 JMP JUDGE CLRTR0: CLR TR0 JUDGE: ;掃描是否有鍵按下 MOV DPTR,#KEY MOVX A,@DPTR ANL A,#0FH MOV R1,#0EFH MOV R2,#4H MOV KT,A CJNE A,#0FH,FIND MOV BOOL
35、,#0 JMP WHILE FIND: ;查詢按下的鍵 MOV A,R1 RR A MOV R1,A MOV DPTR,#KEY MOVX @DPTR,A NOP NOP MOV DPTR,#KEY MOVX A,@DPTR ANL A,#0FH MOV KV,A XRL A,KT JZ PRO0 DJNZ R2,FIND PRO0: ;計算鍵值 MOV A,BOOL JNZ RETURN3 MOV BOOL,#1H MOV KH,
36、R2 DEC KH MOV A,KV CPL A ANL A,#0FH MOV B,#2H DIV AB CJNE A,#4H,PRO1 MOV KV,#3H JMP PRO2 PRO1: MOV KV,A PRO2: MOV A,KH MOV B,#4H MUL AB ADD A,KV MOV KK,A KEYPRO: ;鍵功能處理 MOV A,KK CJNE A,#0AH,KEYPRO1 KEYPRO1: JC DIGPRO K
37、EYTBL: ;功能鍵處理 MOV DPTR,#JMPTBL CLR C SUBB A,#0AH RL A JMP @A+DPTR JMPTBL: ;功能鍵入口地址表(前四行) AJMP CAL AJMP TIM AJMP SETTING AJMP YES AJMP ALARM AJMP ON_OFF_ALM DIGPRO: ;數字鍵處理 MOV FLASH_FIGURE,A MOV A,FLASH JZ RETURN3 LCALL PRO_C
38、HANGE JMP SETTING1 RETURN3: LJMP RETURN1 CAL:MOV P1,#0FFH ;日期模式 MOV A,DATE_TIME CJNE A,#4,CLASET JMP RETURN1 CLASET: MOV DATE_TIME,#4H JMP YES TIM:MOV P1,#0FFH ;時間模式 MOV LP5,#0 MOV A,DATE_TIME CJNE A,#3,TIMSET JMP RETURN1 TIMSET: MOV
39、DATE_TIME,#3H JMP YES SETTING: ;設置 SETTING1: ;判斷當前模式 MOV A,DATE_TIME CJNE A,#4H,SETTIME SETDATE: MOV A,FLASH CJNE A,#8,INCF JMP YES INCF: INC FLASH MOV B,FLASH MOV A,#0FEH LOOP4: RR A DJNZ FLASH,LOOP4 MOV FLASH,B
40、 MOV FLASH_BITE,A JMP RETURN1 SETTIME: MOV A,FLASH CJNE A,#6,INCF2 JMP YES INCF2: INC FLASH MOV B,FLASH MOV A,#0BFH LOOP5: RR A DJNZ FLASH,LOOP5 MOV FLASH,B MOV FLASH_BITE,A JMP RETURN1 RETURN4: JMP RETURN1 YES:
41、 ;確認鍵 MOV FLASH,#0H MOV FLASH_BITE,#0FFH JMP RETURN1 ALARM: MOV DATE_TIME,#3 MOV A,LP5 CJNE A,#5,NORMAL MOV LP5,#0 NORMAL: INC LP5 MOV A,LP5 MOV 44H,A MOV A,#0FEH RLP: RR A DJNZ 44H,RLP MOV P1,A NEX1: MOV A,LP5 DEC A MOV DPTR,#ALM_TBL RL A
42、 JMP @A+DPTR ALM_TBL: AJMP L0 AJMP L1 AJMP L2 AJMP L3 AJMP L4 L0: MOV C,ON_OFF0 MOV LED_1,C AJMP YES L1: MOV C,ON_OFF1 MOV LED_1,C AJMP YES L2: MOV C,ON_OFF2 MOV LED_1,C AJMP YES L3: MOV C,ON_OFF3 MOV LED_1,C AJMP YES
43、L4: MOV C,ON_OFF4 MOV LED_1,C AJMP YES ON_OFF_ALM: MOV A,LP5 CJNE A,#0,NEX JMP RETURN1 NEX: DEC A MOV DPTR,#ON_OFF_TBL RL A JMP @A+DPTR ON_OFF_TBL: AJMP O0 AJMP O1 AJMP O2 AJMP O3 AJMP O4 O0: CPL ON_OFF0 AJMP NEX1 O1: CPL ON_OFF1
44、 AJMP NEX1 O2: CPL ON_OFF2 AJMP NEX1 O3: CPL ON_OFF3 AJMP NEX1 O4: CPL ON_OFF4 AJMP NEX1 RETURN1: LJMP WHILE SERVE: ;定時器1中斷服務子程序 PUSH ACC PUSH PSW PUSH DPH PUSH DPL MOV TH0,#03CH MOV TL0,#0B0H DJNZ LP0,SERVE2 JMP SERVE
45、3 SERVE2: JMP SERVE1 SERVE3: MOV LP0,#014H MOV LP6,#5 ALM_LP: MOV A ,LP6 DEC A RL A MOV DPTR,#A_TBL JMP @A+DPTR A_TBL: AJMP AL1 AJMP AL2 AJMP AL3 AJMP AL4 AJMP AL5 AL1: JB ON_OFF0,C_ALM JMP FIND_OUT AL2: JB ON_OFF1,C_A
46、LM JMP FIND_OUT AL3: JB ON_OFF2,C_ALM JMP FIND_OUT AL4: JB ON_OFF3,C_ALM JMP FIND_OUT AL5: JB ON_OFF4,C_ALM JMP FIND_OUT FIND_OUT: MOV DPTR,#ALM_H MOV A,LP6 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 CJNE A,HOU,C_ALM MOV DPTR,#ALM_M M
47、OV A,LP6 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 CJNE A,MIN,C_ALM MOV DPTR,#ALM_S MOV A,LP6 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 CJNE A,SEC,C_ALM SETB TR1 CLR BP C_ALM: DJNZ LP6,ALM_LP INC SEC MOV A,SEC CJNE A,#3CH,SERVE1 MOV SEC,#0H
48、 INC MIN MOV A,MIN CJNE A, #3CH,SERVE1 MOV MIN,#0H INC HOU MOV A,HOU CJNE A,#18H,SERVE1 MOV HOU,#0H INC DAY MOV A,MON ;當月最大天數判斷 DEC A MOV DPTR,#DAY_NUM MOVC A,@A+DPTR MOV 44H,A INC 44H MOV A,MON CJNE A,#2,PROLEAP1 MOV A,SIGN CJNE A,#1,PROLEAP1
49、 INC 44H PROLEAP1: MOV A,DAY CJNE A,44H,SERVE1 MOV DAY,#1H INC MON MOV A,MON ;月處理 CJNE A,#13,SERVE1 MOV MON,#1H INC YEARL MOV A, YEARL ;年處理 CJNE A,#99,SERVE1 MOV YEARL,#0H INC YEARH SERVE1: POP DPL POP DPH
50、POP PSW POP ACC RETI LIGHT: ;按參數點亮數碼管 MOV A,#0H MOV DPTR,#LED_SEG MOVX @DPTR,A MOV A,R4 XRL A,FLASH_BITE JNZ L_H JB BOOL_H,PRO_LP_H L_H: MOV A,R4 MOV DPTR,#LED_SEL MOVX @DPTR,A MOV A,HB MOV DPTR,#STR_NUM MOVC A,@A+DPTR MOV DPTR,#LED_SEG MO
51、VX @DPTR,A LCALL DELAY_2MS MOV A,R4 XRL A,FLASH_BITE JNZ PRO_L PRO_LP_H: MOV A,LP_H JZ PRO_BOOL_H DEC LP_H JMP PRO_L PRO_BOOL_H: CPL BOOL_H MOV LP_H,#70 PRO_L: MOV A,#0H MOV DPTR,#LED_SEG MOVX @DPTR,A MOV A,R4 RR A MOV R4,A XRL A,F
52、LASH_BITE JNZ L_L JB BOOL_L,PRO_LP_L L_L: MOV A,R4 MOV DPTR,#LED_SEL MOVX @DPTR,A MOV A,LB MOV DPTR,#STR_NUM MOVC A,@A+DPTR MOV DPTR,#LED_SEG ADD A,#80H CJNE R5,#4,TRAP0 SUBB A,#80H JMP TRAP TRAP0: CJNE R5,#1,TRAP SUBB A,#80H TRAP: MOVX @D
53、PTR,A LCALL DELAY_2MS MOV A,R4 XRL A,FLASH_BITE JNZ RETURNX PRO_LP_L: MOV A,LP_L JZ PRO_BOOL_L DEC LP_L JMP RETURNX PRO_BOOL_L: CPL BOOL_L MOV LP_L,#70 RETURNX: RET REDRAW: ;定時器1中斷服務子程序 PUSH ACC PUSH PSW PUSH DPH PUSH DPL
54、 MOV TH1,#03CH MOV TL1,#0B0H MOV A,LP8 JNZ RE1 MOV LP8,#50 CLR TR1 SETB BP JMP RE RE1: DJNZ LP7,RE DEC LP8 MOV LP7,#2 CPL BP RE: POP DPL POP DPH POP PSW POP ACC RETI LP: ;顯示子程序 LCALL PROLEAP MOV R5,DATE_TIME CJN
55、E R5,#4H,TIME DATE: MOV R4,#7FH DATE1: MOV A,R5 XRL A,#4H JZ PROYH MOV A,R5 XRL A,#3H JZ PROYL MOV A,R5 XRL A,#2H JZ PROM MOV A,R5 XRL A,#1H JZ PROD PROYH:LCALL PRO_DATE_YH JMP DATE2 PROYL:LCALL PRO_DATE_YL JMP DATE2
56、 PROM:LCALL PRO_DATE_M JMP DATE2 PROD:LCALL PRO_DATE_D DATE2: LCALL LIGHT MOV A,R4 RR A MOV R4,A DJNZ R5,DATE1 JMP RETURN TIME: MOV R4,#0DFH TIME1: MOV A,R5 XRL A,#3H JZ PROT1 MOV A,R5 XRL A,#2H JZ PROT2 MOV A,R5
57、 XRL A,#1H JZ PROT3 PROT1: LCALL PRO_TIME_H JMP TIME2 PROT2: LCALL PRO_TIME_M JMP TIME2 PROT3: LCALL PRO_TIME_S TIME2: LCALL LIGHT MOV A,R4 RR A MOV R4,A DJNZ R5,TIME1 RETURN: RET PRO_DATE_YH: MOV A,YEARH LCALL PRO RET
58、 PRO_DATE_YL: MOV A,YEARL LCALL PRO RET PRO_DATE_M: MOV A,MON JNZ PRO_M INC MON PRO_M: LCALL PRO MOV A,HB CJNE A,#0,MO1 RET MO1: CJNE A,#1,MO2 MO5: MOV A,LB CJNE A,#3,MO3 MO3: JNC MO4 RET MO4: MOV LB,#2 JMP CALCU MO2:
59、 MOV HB,#1 JMP MO5 CALCU: MOV A,#10 ADD A,LB MOV MON,A RET PRO_DATE_D: MOV A,DAY JNZ PRO_D INC DAY PRO_D: MOV DPTR,#DAY_NUM MOV A,MON DEC A MOVC A,@A+DPTR MOV 44H,A MOV A,MON CJNE A,#2,PROLEAP2 MOV A,SIGN CJNE A,#1,PROLEAP2 I
60、NC 44H PROLEAP2: MOV A,44H MOV R0,A CJNE A,DAY,DX DX: JNC D2 LCALL PRO MOV 40H,HB MOV 41H,LB MOV A,DAY LCALL PRO MOV A,HB CJNE A,40H,D1 D1: JC D2 CJNE A,40H,D3 MOV A,LB CJNE A,41H,D0 D0: JC D2 D3: MO
61、V DAY,R0 D2: MOV A,DAY LCALL PRO RET PRO_TIME_H: MOV DPTR,#ALM_H MOV A,LP5 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 LCALL PRO MOV A,HB CJNE A,#2,NEXT_H1 NEXT_H1: JC NEXT_H2 CJNE A,#2,NEXT_H4 NEXT_H5: MOV A,LB CJNE A,#4,NEXT_H3 NEXT_H3:
62、 JC NEXT_H2 MOV LB,#3 MOV A,HB MOV B,#10 MUL AB ADD A,LB MOV @R0,A JMP NEXT_H2 NEXT_H4: MOV HB,#2 JMP NEXT_H5 NEXT_H2: RET PRO_TIME_M: MOV DPTR,#ALM_M MOV A,LP5 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 LCALL PRO MOV A,HB CJNE A,#6,NEXT_M1 NEXT_M1: J
63、C NEXT_M2 MOV @R0,#0 MOV A,LB ADD A,#50 MOV @R0,A NEXT_M2: RET PRO_TIME_S: MOV DPTR,#ALM_S MOV A,LP5 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 LCALL PRO MOV A,HB CJNE A,#6,NEXT_S1 NEXT_S1: JC NEXT_S2 MOV @R0,#0 MOV A,LB ADD A,#50 MOV @R0,A NEXT_S2: R
64、ET PRO: MOV B,#0AH DIV AB MOV HB,A MOV LB,B RET PRO_CHANGE: ;通過數字鍵改變時間或日期值 MOV A,FLASH MOV B,#2 DEC A DIV AB MOV R7,A MOV R6,B MOV A,DATE_TIME CJNE A,#4H,TIME_CH DATE_CH: MOV DPTR,#STR_NUM1 MOV A,R7 MOVC A,@A+DPTR MOV R0,A
65、 MOV A,@R0 LCALL PRO LCALL RENEW RET TIME_CH: CJNE R7,#0,CJ1 MOV DPTR,#ALM_H MOV A,LP5 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 CJ1: CJNE R7,#1,CJ2 MOV DPTR,#ALM_M MOV A,LP5 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 CJ2:
66、CJNE R7,#2,CJ3 MOV DPTR,#ALM_S MOV A,LP5 MOVC A,@A+DPTR MOV R0,A MOV A,@R0 CJ3: LCALL PRO LCALL RENEW RET RENEW: MOV A,R6 JZ CH_HB MOV LB,FLASH_FIGURE JMP CA_R0 CH_HB: MOV HB,FLASH_FIGURE CA_R0: MOV A,HB MOV B,#10 MUL AB ADD A,LB MOV @R0,A RET PROLEAP: ;判斷平閏年 MOV A,YEARL CJNE A,#0,DIV4 MOV A,YEARH DIV4: MOV B,#4 DIV AB MOV A,B CJNE A,#0,SETSIGN
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。