基于51單片機的數(shù)字鐘設(shè)計 (3)

上傳人:優(yōu)*** 文檔編號:48822944 上傳時間:2022-01-15 格式:DOC 頁數(shù):36 大?。?72KB
收藏 版權(quán)申訴 舉報 下載
基于51單片機的數(shù)字鐘設(shè)計 (3)_第1頁
第1頁 / 共36頁
基于51單片機的數(shù)字鐘設(shè)計 (3)_第2頁
第2頁 / 共36頁
基于51單片機的數(shù)字鐘設(shè)計 (3)_第3頁
第3頁 / 共36頁

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

20 積分

下載資源

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

資源描述:

《基于51單片機的數(shù)字鐘設(shè)計 (3)》由會員分享,可在線閱讀,更多相關(guān)《基于51單片機的數(shù)字鐘設(shè)計 (3)(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、真誠為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請指正。 武漢大學(xué)電子信息學(xué)院 電子系統(tǒng)綜合設(shè)計課程論文 基于51單片機的數(shù)字鐘設(shè)計 專 業(yè): 年 級: 作 者: 指導(dǎo)教師: 2012年 6月 13 日 33 / 36 目 錄 1 作品的背景與意義 1 2 功能指標(biāo)設(shè)計 1 3 作品方案設(shè)計 2 3.1總體方案的選擇 2 一基于51單片機的數(shù)字鐘設(shè)計 2 3.2控制方案比較 2 3.3顯示方案比較

2、 3 3.4 公式 4 4 硬件設(shè)計 4 4.1顯示模塊電路圖 4 4.2 4X4矩陣鍵盤硬件原理圖 5 4.3蜂鳴器驅(qū)動電路 5 5 軟件設(shè)計 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調(diào)試軟件 6.1.2仿真軟件 6.2測試步驟 10 6.3測試數(shù)據(jù) 10 6.4心得體會 10 參考文獻 11 附錄1 系統(tǒng)電路圖 12 附錄2 系統(tǒng)軟件代碼 12 附錄3 系統(tǒng)器件清單 36 1 作品的背景

3、與意義 近年來,隨著電子產(chǎn)品的發(fā)展,人們對數(shù)字時鐘的要求越來越高,本文針對人們的這一需求,設(shè)計了一種有單片機控制的多功能數(shù)字時鐘。該系統(tǒng)具有年、月、日、星期、時、分、秒設(shè)置及顯示、鬧鐘定時等功能。系統(tǒng)以 C51單片機為核心,主要進行基于C51單片低功耗MCU的字符型數(shù)字鐘及其系統(tǒng)的研究,可以通過它的時鐘信號進行計時實現(xiàn)計時功能,將其時間數(shù)據(jù)經(jīng)單片機輸出,利用顯示器顯示出來。通過鍵盤可以進行定時、校時功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯示技術(shù)。系統(tǒng)帶有數(shù)碼管顯示器,配合按鍵提供友好的用戶界面,操作簡單,同時具有定點報時功能,該數(shù)字鐘能長期、連續(xù)、可靠、穩(wěn)定的工作;同時還具有

4、體積小、功耗低等特點,便于攜帶,使用方便。系統(tǒng)軟件設(shè)計包括單片機計算機兩部分的編程。計算機軟件編程主要實現(xiàn)參數(shù)設(shè)置、串行口數(shù)據(jù)接收、指令發(fā)送以及數(shù)據(jù)的顯示和存儲。單片機軟件編程主要實現(xiàn)鍵盤、數(shù)碼管顯示、定點報時等各模塊的功能,采用匯編語言編程。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便而且大大地擴展了鐘表原先的報時功能。因此,研究數(shù)字鐘及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。 2 功能指標(biāo)設(shè)計 本設(shè)計準(zhǔn)備實現(xiàn)的功能: (1)顯示公歷日期功能(年、月、日、時、分、秒)。 (2)可通過按鍵切換年、月、日及時、分、秒的顯示狀態(tài)。 (3)可隨時調(diào)校年、月、日或時、分、秒。 (5)可實現(xiàn)鬧

5、鐘功能。 3 作品方案設(shè)計 3.1總體方案的選擇 —————————基于51單片機的數(shù)字鐘設(shè)計 單片機芯片作為控制系統(tǒng)的核心部件,它除了具備微機CPU的數(shù)值計算功能外,還具有靈活強大的控制功能,以便實時檢測系統(tǒng)的輸入量、控制系統(tǒng)的輸出量,實現(xiàn)自動控制。在本次設(shè)計中采用單片機技術(shù)來實現(xiàn)數(shù)字鐘的功能。方案的設(shè)計可以從以下幾個方面來確定。在本次設(shè)計中采用AT89C51單片機;顯示電路的設(shè)計,在這里采用數(shù)碼管顯示;校時和定時電路的設(shè)計;實時控制電路是時鐘電路的一個重要組成部分,采用的是一個時鐘芯片,單片機從中讀取數(shù)據(jù)送到顯示器上顯示,從而實現(xiàn)數(shù)字鐘的功能;還有一些其他控制電路如復(fù)位電路、

6、時鐘電路等。通過這些控制電路的連接構(gòu)成了完整的電路。 3.2控制方案比較 程序設(shè)計內(nèi)單片機的程序設(shè)計有其自身的特點。在單片機系統(tǒng)中,硬件與軟件緊密結(jié)合,由于硬件電路的設(shè)計不具有通用性,所以必須根據(jù)具體的硬件電路來設(shè)計對應(yīng)的軟件,硬件設(shè)計的優(yōu)劣直接影響到軟件設(shè)計的難易,軟件設(shè)計的優(yōu)劣又直接影響到硬件的發(fā)揮。在很多時候,軟件可以替代硬件的功能,當(dāng)然,需要付出額外占用CPU時間的代價。 軟件程序的設(shè)計是根據(jù)硬件電路圖的連接和各個元器件的功能進行設(shè)計。在編寫軟件時,可以按各個程序的功能將軟件細(xì)分為各個功能模塊,再通過主程序的調(diào)用來實現(xiàn)整個軟件系統(tǒng)。而一般編寫的程序都是根據(jù)事前所用的流程圖

7、來編寫的,而且,流程圖中也包含了對設(shè)計所得結(jié)果的要求,因此,流程圖的設(shè)計直接影響到源程序的設(shè)計。 控制鍵盤采用獨立式按鍵,開機時,顯示12:00:00的時間開始計時;P0.0/AD0控制“秒”的調(diào)整,每按一次加1秒; P0.1/AD1控制“分”的調(diào)整,每按一次加1分;P0.2/AD2控制“時”的調(diào)整,每按一次加1個小時;定時器1中斷入口,產(chǎn)生秒基準(zhǔn)時間并實現(xiàn)時間日期自增,定時器2中斷入口,由軟件控制蜂鳴器產(chǎn)生鬧鐘鈴聲。 3.3顯示方案比較 單片機控制段式LED數(shù)碼管顯示。碼管由7段LED組成,因此可以稱為七段數(shù)碼管。將這七個LED按一定規(guī)律點亮,就能夠顯示數(shù)字0~9,以及英文

8、字母A、B、C、D、E、F。而現(xiàn)在的數(shù)碼管都有帶有小數(shù)點(DP),實際上數(shù)碼管就變成8段了。顯示二進制、十進制數(shù)、十六進制數(shù),小數(shù)都不是問題。 數(shù)碼管有共陽、共陰的區(qū)分。顧名思義,共陽數(shù)碼管公共陽極,即將8個數(shù)碼管正極連接在一起,負(fù)極又8個不同端口控制。共陰則與共陽相反。段選引腳用于驅(qū)動一位數(shù)碼管的八個段,即圖上的a、c、d、e、f、g和dp。根據(jù)不同的數(shù)字輸出對應(yīng)的電平,從而點亮一位數(shù)碼管。位選用于選擇在某一時刻驅(qū)動哪一位數(shù)碼管,設(shè)計里面使用兩位數(shù)碼管,因此需要兩個引腳來控制這些位。在控制位選時候,將數(shù)碼管的位選引腳直接接到單片機的I/O口,是可行的。原因是,單片機的I/O負(fù)載能力不足以

9、驅(qū)動數(shù)碼管,這時候,就需要外加上三極管作為電流放大使用。使用了PNP三極管,將發(fā)射極接到電源的+5V,基極串上一10K電阻接到單片機的位選I/O口,集電極就接到數(shù)碼管的位選端。 3.4 公式 定時時間 t=(-T0初值)*振蕩周期*12 (1.1) 4 硬件設(shè)計 4.1顯示模塊電路圖 圖4.1 AD9851連接電路 4.2 4X4矩陣鍵盤硬件原理圖 按鈕未按下前,四個I/O口通過一個10K的電阻與VCC相連,所以此時四個I/O口的輸入都為1即高電平;當(dāng)按鈕按下時,四

10、個I/O口都接地,此時四個I/O口的輸入都為即低電平。 圖4.2 4*4鍵盤 4.3蜂鳴器驅(qū)動電路 蜂鳴器工作電壓為+5V,將蜂鳴器的正極連接到電源+5V,負(fù)極連接到電源的GND,蜂鳴器就能發(fā)出聲響。 單片機I/O的負(fù)載能力并不足以驅(qū)動蜂鳴器,為了解決這個問題,必需另需它法。蜂鳴器的典型驅(qū)動電路是使用極管做開關(guān)。 5 軟件設(shè)計 程序開始 5.1主程序流程圖 啟動定時器 按鍵檢測 時間顯示 結(jié)束 圖5.1

11、主程序流程圖 5.2顯示模塊流程圖 程序開始 秒十位計數(shù)顯示 分個位計數(shù)顯示 分十位計數(shù)顯示 時個位計數(shù)顯示 時十位計數(shù)顯示 結(jié)束 開始 5.3按鍵處理流程圖 秒按鍵按下? N 秒加1 Y 分按鍵按下? N

12、 Y 分加1 時按鍵按下? N Y 時加1 顯示時間 結(jié)束 開始 5.4 定時器中斷流程圖 1秒時間到? N Y 秒單元加1 60秒時間到?

13、 N Y 秒單元清零;分單元加1 60分鐘時間到? N 分單元清零,時單元加1 Y 24小時到? N Y 時單元清零 時間顯示 中斷返回

14、 6 系統(tǒng)測試 6.1測試環(huán)境 6.1.1調(diào)試軟件 KEIL: KEIL C51標(biāo)準(zhǔn)C編譯器為微控制器的軟件開發(fā)供了C語言環(huán)境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強。使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含:編譯器,匯編器,實時操作系統(tǒng),項目管理器,調(diào)試器。uVision2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。一個單一的uVision2工程能夠產(chǎn)生一個或多個目標(biāo)程序。產(chǎn)生目標(biāo)程序的源文件構(gòu)成“組”。開發(fā)工具選項可以對應(yīng)目標(biāo),組或單個文件。同時uVision2包含一

15、個器件數(shù)據(jù)庫(device database),可以自動設(shè)置匯編器、編譯器、連接定位器及調(diào)試器選項,來滿足用戶充分利用特定,微控制器的要求。此數(shù)據(jù)庫包含:片上存儲器和外圍設(shè)備的信息,擴展數(shù)據(jù)指針(extra data pointer)或者加速器(math accelerator)的特性。uVision2還可以為片外存儲器產(chǎn)生必要的連接選項:確定起始地址和規(guī)模。uVision2編輯器包含了所有用戶熟悉的特性,彩色語法顯像和文件辯識都對C源代碼進行和優(yōu)化,也可以在編輯器內(nèi)調(diào)試程序,它能提供一種自然的調(diào)試環(huán)境,使你更快速地檢查和修改程序。另外KEIL C51編譯器在遵循ANSI標(biāo)準(zhǔn)的同時,為8051

16、微控制器系列特別設(shè)計。因為語言上的擴展能讓用戶使用應(yīng)用中的所有資源。 6.1.2仿真軟件 PROTEUS: Proteus軟件是Labcenter Electronics公司的一款電路設(shè)計與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計,而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機芯片,比如MCS-51系列、PIC系列等等,以及單片機外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個功能齊全、

17、實用方便的單片機實驗室。 6.2測試步驟 1.硬件調(diào)試,檢測硬件是否合格; 2.默認(rèn)為走時模式,按24小時制分別為 “時時,分分.秒秒”。然后進行走時調(diào)整; 3.萬年歷模式,為 “年份,月份.日期”??梢赃M行調(diào)整; 4.鬧鐘模式,可以定時鬧鐘。 6.3測試結(jié)果 單片機數(shù)字鐘擁有時間模式,日歷模式,鬧鐘模式三種模式。 6.4測試數(shù)據(jù) 表6.1 功能數(shù)據(jù)測試 電子鐘測試值/min 實際值/min 誤差/% 平均誤差/% 1 00:00:59.95 0.05 0.09 1 00:00:59.88 0.12 1 00:01:00.10

18、 0.10 2 00:01:59.77 0.12 0.14 2 00:02:00.21 0.11 2 00:01:59.65 0.18 6.5 心得體會 回顧起此次實驗設(shè)計,我感慨頗多,從一開始的茫然到思路漸漸清晰,從開始選題到最終定稿,從理論到實踐,在短短的五個星期的日子里,痛并快樂著,但是艱辛的付出是值得的。電子綜合設(shè)計課程作為一門開放性課程讓適應(yīng)了填鴨式教育的我們手足無措,但是老師的諄諄教誨和不厭其煩的耐心指導(dǎo)撥散了我們心中的迷霧,使我們有曲徑通幽,豁然開朗之感。從一開始的了解電路結(jié)構(gòu)到最后的軟硬件結(jié)合實現(xiàn)設(shè)計功能,我們遇到了各種問題。這畢竟第一次做

19、實驗設(shè)計,難免會遇到過各種各樣的問題。 在困難中前行,我們受益匪淺。隊友之間的相互磨合讓我們學(xué)會了團隊精神!差錯的出現(xiàn)考驗了我們的隨機應(yīng)變能力!實驗設(shè)計遇到的阻力讓我們明白了理論與實踐相結(jié)合的重要性!只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,從操作中鞏固理論,兩者有機結(jié)合,提高自己的實際動手能力和獨立思考的能力。同時在設(shè)計的過程中找出不足之處,加以改正不斷提升自己的水平。 通過此次實驗,在讓我們體會到了設(shè)計的艱辛的同時,更讓我體會到成功的喜悅和快樂.。這次電子設(shè)計實驗,雖然短暫但是讓我們得到多方面的提高: 1. 我們了解并掌握了單片機的基本應(yīng)用,

20、學(xué)習(xí)了Keil軟件的用法,. 2、提高了我們的邏輯思維能力,加強了實際操作能力。 我們在邏輯電路的分析與設(shè)計上有了質(zhì)的飛躍。我們理解了各種芯片的功能及構(gòu)造,加深了對組合邏輯電路與時序邏輯電路的認(rèn)識,進一步增進了對一些常見邏輯器件的了解。 3,查閱參考書的獨立思考的能力以及培養(yǎng)非常重要。 我們在設(shè)計電路時,遇到很多不理解的東西,有的我們通過查閱參考書弄明白,有的通過網(wǎng)絡(luò)查到,但由于時間和資料有限我們更多的還是獨立思考。所以不斷的汲取知識是非常重要的。 4、隊友之間的團結(jié)合作也是非常重要的,眾人拾柴火焰高,我們?nèi)齻€人的力量加起來所有問題就能迎刃而解!

21、

22、

23、

24、 參考文獻 [1]李朝青.單片機原理與接口技術(shù)(第三版).北京:北京航空航天大學(xué)出版社,2005. [2]李 軍. 51系列單片機高級實例開發(fā)指南. 北京航空航天大學(xué)出版社. [3]王毓銀.?dāng)?shù)字電路邏輯設(shè)計[M] .高等教育出版社.2004-2. [4]許偉敏程佩青.多功能電子數(shù)字鐘.2009. [5]電子技術(shù)基礎(chǔ)實驗課程組.電子技術(shù)基礎(chǔ)實驗指導(dǎo)書.武漢大學(xué)電子信息學(xué)院. [6]李光飛. 單片機設(shè)計實例指導(dǎo).北京航空航天大學(xué)出版社. [7]劉華東. 單片機原理與應(yīng)用.北京電子工業(yè)出版社.

25、 附錄1 系統(tǒng)電路圖 附錄2 系統(tǒng)軟件代碼 /****************************************************************************/ /****************************************************************************/ KEY EQU 0F8FFH ;按鍵地址 LED_SEG EQU 0FAFFH ;液晶段數(shù)據(jù) LED_SEL EQU 0FBFFH ;液晶段片選 KH

26、 EQU 21H ;保存按鍵行值 KK EQU 22H ;按鍵值地位 KV EQU 23H ;保存按鍵列位 KT EQU 24H ;臨時保存按鍵狀態(tài) HOU EQU 25H SEC EQU 26H MIN EQU 27H HB EQU 28H ;數(shù)據(jù)高位 LB EQU 29H ;數(shù)據(jù)低位 DATE_TIME EQU 2

27、AH ;記錄時間、日期模式 ,3表示時間,4表示日期 LP0 EQU 2BH ;定時器1循環(huán)次數(shù) LP1 EQU 2CH ;定時器2循環(huán)次數(shù) YEARH EQU 2DH YEARL EQU 2EH MON EQU 2FH DAY EQU 30H FLASH EQU 31H ;設(shè)置標(biāo)記變量 FLASH_BITE EQU 32H ;設(shè)置位標(biāo)記變量 FLASH_FIGURE EQU 33H ;設(shè)置位數(shù)值標(biāo)記變量

28、 SIGN EQU 34H ;閏年標(biāo)記 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 ;鬧鐘個數(shù) LP6 EQU 4FH LP7 EQU 50H LP8 EQU 51

29、H LP_H EQU 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中斷入口,產(chǎn)生秒基準(zhǔn)時間并實現(xiàn)時間日期自增 LJMP SERVE ORG 001BH ;定時器2中斷入口, LJMP REDRAW /*********************************************************************************/ ORG 1000H MAIN: MOV SP,#60H MOV BOOL,#0H MOV LP0,#14H MO

31、V LP1,#250 MOV TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H; MOV TH1,#03CH MOV TL1,#0B0H MOV LP7,#2 ;定時器1循環(huán)次數(shù) 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

32、,#3H MOV FLASH_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 ;關(guān)閉定時器T1 SETB TR0 ;開啟定時器T0 /*********************************************************************************/ WHILE: LCALL LP KEY_NUM: ;按鍵處理 MOV DPTR,

34、#KEY MOV A,#0H 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,

35、FIND MOV BOOL,#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 BOO

36、L,#1H MOV KH,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:

37、 JC DIGPRO KEYTBL: ;功能鍵處理 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: ;數(shù)字鍵處理 MOV FLASH_FIGURE,A MOV A,FLASH JZ RETURN3

38、 LCALL PRO_CHANGE 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

39、TIMSET: MOV DATE_TIME,#3H JMP YES SETTING: ;設(shè)置 SETTING1: ;判斷當(dāng)前模式 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

40、 MOV FLASH,B 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 RET

41、URN1 YES: ;確認(rèn)鍵 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,

42、#ALM_TBL RL A 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

43、 AJMP YES 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:

44、 CPL ON_OFF1 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中斷服務(wù)子程序 PUSH ACC PUSH PSW PUSH DPH PUSH DPL MOV TH0,#03CH MOV TL0,#0B0H DJNZ LP0,SE

45、RVE2 JMP SERVE3 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:

46、 JB ON_OFF1,C_ALM 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

47、DPTR,#ALM_M MOV 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,SERV

48、E1 MOV SEC,#0H 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 ;當(dāng)月最大天數(shù)判斷 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

49、 A,#1,PROLEAP1 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 DP

50、L POP DPH POP PSW POP ACC RETI LIGHT: ;按參數(shù)點亮數(shù)碼管 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 DP

51、TR,#LED_SEG MOVX @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 R

52、4,A XRL A,FLASH_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

53、TRAP: MOVX @DPTR,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中斷服務(wù)子程序 PUSH ACC PUSH PSW PUSH

54、DPH PUSH DPL 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

55、_TIME CJNE 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

56、 JMP DATE2 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

57、 MOV A,R5 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

58、LCALL PRO RET 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 C

59、ALCU MO2: 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,

60、#1,PROLEAP2 INC 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

61、 D3: MOV 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_

62、H3 NEXT_H3: 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

63、 NEXT_M1: JC 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

64、 NEXT_S2: RET PRO: MOV B,#0AH DIV AB MOV HB,A MOV LB,B RET PRO_CHANGE: ;通過數(shù)字鍵改變時間或日期值 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+DPT

65、R MOV R0,A 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

66、 CJ2: 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 C

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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