基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) (3)
《基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) (3)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) (3)(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、真誠(chéng)為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請(qǐng)指正。 武漢大學(xué)電子信息學(xué)院 電子系統(tǒng)綜合設(shè)計(jì)課程論文 基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) 專 業(yè): 年 級(jí): 作 者: 指導(dǎo)教師: 2012年 6月 13 日 33 / 36 目 錄 1 作品的背景與意義 1 2 功能指標(biāo)設(shè)計(jì) 1 3 作品方案設(shè)計(jì) 2 3.1總體方案的選擇 2 一基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) 2 3.2控制方案比較 2 3.3顯示方案比較
2、 3 3.4 公式 4 4 硬件設(shè)計(jì) 4 4.1顯示模塊電路圖 4 4.2 4X4矩陣鍵盤硬件原理圖 5 4.3蜂鳴器驅(qū)動(dòng)電路 5 5 軟件設(shè)計(jì) 6 5.1主程序流程圖 6 5.2顯示模塊流程圖 6 5.3按鍵處理流程圖 7 5.4 定時(shí)器中斷流程圖 8 6 系統(tǒng)測(cè)試 9 6.1測(cè)試環(huán)境 9 6.1.1調(diào)試軟件 6.1.2仿真軟件 6.2測(cè)試步驟 10 6.3測(cè)試數(shù)據(jù) 10 6.4心得體會(huì) 10 參考文獻(xiàn) 11 附錄1 系統(tǒng)電路圖 12 附錄2 系統(tǒng)軟件代碼 12 附錄3 系統(tǒng)器件清單 36 1 作品的背景
3、與意義 近年來,隨著電子產(chǎn)品的發(fā)展,人們對(duì)數(shù)字時(shí)鐘的要求越來越高,本文針對(duì)人們的這一需求,設(shè)計(jì)了一種有單片機(jī)控制的多功能數(shù)字時(shí)鐘。該系統(tǒng)具有年、月、日、星期、時(shí)、分、秒設(shè)置及顯示、鬧鐘定時(shí)等功能。系統(tǒng)以 C51單片機(jī)為核心,主要進(jìn)行基于C51單片低功耗MCU的字符型數(shù)字鐘及其系統(tǒng)的研究,可以通過它的時(shí)鐘信號(hào)進(jìn)行計(jì)時(shí)實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來。通過鍵盤可以進(jìn)行定時(shí)、校時(shí)功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯示技術(shù)。系統(tǒng)帶有數(shù)碼管顯示器,配合按鍵提供友好的用戶界面,操作簡(jiǎn)單,同時(shí)具有定點(diǎn)報(bào)時(shí)功能,該數(shù)字鐘能長(zhǎng)期、連續(xù)、可靠、穩(wěn)定的工作;同時(shí)還具有
4、體積小、功耗低等特點(diǎn),便于攜帶,使用方便。系統(tǒng)軟件設(shè)計(jì)包括單片機(jī)計(jì)算機(jī)兩部分的編程。計(jì)算機(jī)軟件編程主要實(shí)現(xiàn)參數(shù)設(shè)置、串行口數(shù)據(jù)接收、指令發(fā)送以及數(shù)據(jù)的顯示和存儲(chǔ)。單片機(jī)軟件編程主要實(shí)現(xiàn)鍵盤、數(shù)碼管顯示、定點(diǎn)報(bào)時(shí)等各模塊的功能,采用匯編語(yǔ)言編程。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。 2 功能指標(biāo)設(shè)計(jì) 本設(shè)計(jì)準(zhǔn)備實(shí)現(xiàn)的功能: (1)顯示公歷日期功能(年、月、日、時(shí)、分、秒)。 (2)可通過按鍵切換年、月、日及時(shí)、分、秒的顯示狀態(tài)。 (3)可隨時(shí)調(diào)校年、月、日或時(shí)、分、秒。 (5)可實(shí)現(xiàn)鬧
5、鐘功能。 3 作品方案設(shè)計(jì) 3.1總體方案的選擇 —————————基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) 單片機(jī)芯片作為控制系統(tǒng)的核心部件,它除了具備微機(jī)CPU的數(shù)值計(jì)算功能外,還具有靈活強(qiáng)大的控制功能,以便實(shí)時(shí)檢測(cè)系統(tǒng)的輸入量、控制系統(tǒng)的輸出量,實(shí)現(xiàn)自動(dòng)控制。在本次設(shè)計(jì)中采用單片機(jī)技術(shù)來實(shí)現(xiàn)數(shù)字鐘的功能。方案的設(shè)計(jì)可以從以下幾個(gè)方面來確定。在本次設(shè)計(jì)中采用AT89C51單片機(jī);顯示電路的設(shè)計(jì),在這里采用數(shù)碼管顯示;校時(shí)和定時(shí)電路的設(shè)計(jì);實(shí)時(shí)控制電路是時(shí)鐘電路的一個(gè)重要組成部分,采用的是一個(gè)時(shí)鐘芯片,單片機(jī)從中讀取數(shù)據(jù)送到顯示器上顯示,從而實(shí)現(xiàn)數(shù)字鐘的功能;還有一些其他控制電路如復(fù)位電路、
6、時(shí)鐘電路等。通過這些控制電路的連接構(gòu)成了完整的電路。 3.2控制方案比較 程序設(shè)計(jì)內(nèi)單片機(jī)的程序設(shè)計(jì)有其自身的特點(diǎn)。在單片機(jī)系統(tǒng)中,硬件與軟件緊密結(jié)合,由于硬件電路的設(shè)計(jì)不具有通用性,所以必須根據(jù)具體的硬件電路來設(shè)計(jì)對(duì)應(yīng)的軟件,硬件設(shè)計(jì)的優(yōu)劣直接影響到軟件設(shè)計(jì)的難易,軟件設(shè)計(jì)的優(yōu)劣又直接影響到硬件的發(fā)揮。在很多時(shí)候,軟件可以替代硬件的功能,當(dāng)然,需要付出額外占用CPU時(shí)間的代價(jià)。 軟件程序的設(shè)計(jì)是根據(jù)硬件電路圖的連接和各個(gè)元器件的功能進(jìn)行設(shè)計(jì)。在編寫軟件時(shí),可以按各個(gè)程序的功能將軟件細(xì)分為各個(gè)功能模塊,再通過主程序的調(diào)用來實(shí)現(xiàn)整個(gè)軟件系統(tǒng)。而一般編寫的程序都是根據(jù)事前所用的流程圖
7、來編寫的,而且,流程圖中也包含了對(duì)設(shè)計(jì)所得結(jié)果的要求,因此,流程圖的設(shè)計(jì)直接影響到源程序的設(shè)計(jì)。 控制鍵盤采用獨(dú)立式按鍵,開機(jī)時(shí),顯示12:00:00的時(shí)間開始計(jì)時(shí);P0.0/AD0控制“秒”的調(diào)整,每按一次加1秒; P0.1/AD1控制“分”的調(diào)整,每按一次加1分;P0.2/AD2控制“時(shí)”的調(diào)整,每按一次加1個(gè)小時(shí);定時(shí)器1中斷入口,產(chǎn)生秒基準(zhǔn)時(shí)間并實(shí)現(xiàn)時(shí)間日期自增,定時(shí)器2中斷入口,由軟件控制蜂鳴器產(chǎn)生鬧鐘鈴聲。 3.3顯示方案比較 單片機(jī)控制段式LED數(shù)碼管顯示。碼管由7段LED組成,因此可以稱為七段數(shù)碼管。將這七個(gè)LED按一定規(guī)律點(diǎn)亮,就能夠顯示數(shù)字0~9,以及英文
8、字母A、B、C、D、E、F。而現(xiàn)在的數(shù)碼管都有帶有小數(shù)點(diǎn)(DP),實(shí)際上數(shù)碼管就變成8段了。顯示二進(jìn)制、十進(jìn)制數(shù)、十六進(jìn)制數(shù),小數(shù)都不是問題。 數(shù)碼管有共陽(yáng)、共陰的區(qū)分。顧名思義,共陽(yáng)數(shù)碼管公共陽(yáng)極,即將8個(gè)數(shù)碼管正極連接在一起,負(fù)極又8個(gè)不同端口控制。共陰則與共陽(yáng)相反。段選引腳用于驅(qū)動(dòng)一位數(shù)碼管的八個(gè)段,即圖上的a、c、d、e、f、g和dp。根據(jù)不同的數(shù)字輸出對(duì)應(yīng)的電平,從而點(diǎn)亮一位數(shù)碼管。位選用于選擇在某一時(shí)刻驅(qū)動(dòng)哪一位數(shù)碼管,設(shè)計(jì)里面使用兩位數(shù)碼管,因此需要兩個(gè)引腳來控制這些位。在控制位選時(shí)候,將數(shù)碼管的位選引腳直接接到單片機(jī)的I/O口,是可行的。原因是,單片機(jī)的I/O負(fù)載能力不足以
9、驅(qū)動(dòng)數(shù)碼管,這時(shí)候,就需要外加上三極管作為電流放大使用。使用了PNP三極管,將發(fā)射極接到電源的+5V,基極串上一10K電阻接到單片機(jī)的位選I/O口,集電極就接到數(shù)碼管的位選端。 3.4 公式 定時(shí)時(shí)間 t=(-T0初值)*振蕩周期*12 (1.1) 4 硬件設(shè)計(jì) 4.1顯示模塊電路圖 圖4.1 AD9851連接電路 4.2 4X4矩陣鍵盤硬件原理圖 按鈕未按下前,四個(gè)I/O口通過一個(gè)10K的電阻與VCC相連,所以此時(shí)四個(gè)I/O口的輸入都為1即高電平;當(dāng)按鈕按下時(shí),四
10、個(gè)I/O口都接地,此時(shí)四個(gè)I/O口的輸入都為即低電平。 圖4.2 4*4鍵盤 4.3蜂鳴器驅(qū)動(dòng)電路 蜂鳴器工作電壓為+5V,將蜂鳴器的正極連接到電源+5V,負(fù)極連接到電源的GND,蜂鳴器就能發(fā)出聲響。 單片機(jī)I/O的負(fù)載能力并不足以驅(qū)動(dòng)蜂鳴器,為了解決這個(gè)問題,必需另需它法。蜂鳴器的典型驅(qū)動(dòng)電路是使用極管做開關(guān)。 5 軟件設(shè)計(jì) 程序開始 5.1主程序流程圖 啟動(dòng)定時(shí)器 按鍵檢測(cè) 時(shí)間顯示 結(jié)束 圖5.1
11、主程序流程圖 5.2顯示模塊流程圖 程序開始 秒十位計(jì)數(shù)顯示 分個(gè)位計(jì)數(shù)顯示 分十位計(jì)數(shù)顯示 時(shí)個(gè)位計(jì)數(shù)顯示 時(shí)十位計(jì)數(shù)顯示 結(jié)束 開始 5.3按鍵處理流程圖 秒按鍵按下? N 秒加1 Y 分按鍵按下? N
12、 Y 分加1 時(shí)按鍵按下? N Y 時(shí)加1 顯示時(shí)間 結(jié)束 開始 5.4 定時(shí)器中斷流程圖 1秒時(shí)間到? N Y 秒單元加1 60秒時(shí)間到?
13、 N Y 秒單元清零;分單元加1 60分鐘時(shí)間到? N 分單元清零,時(shí)單元加1 Y 24小時(shí)到? N Y 時(shí)單元清零 時(shí)間顯示 中斷返回
14、 6 系統(tǒng)測(cè)試 6.1測(cè)試環(huán)境 6.1.1調(diào)試軟件 KEIL: KEIL C51標(biāo)準(zhǔn)C編譯器為微控制器的軟件開發(fā)供了C語(yǔ)言環(huán)境,同時(shí)保留了匯編代碼高效,快速的特點(diǎn)。C51編譯器的功能不斷增強(qiáng)。使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個(gè)集成開發(fā)環(huán)境包含:編譯器,匯編器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uVision2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。一個(gè)單一的uVision2工程能夠產(chǎn)生一個(gè)或多個(gè)目標(biāo)程序。產(chǎn)生目標(biāo)程序的源文件構(gòu)成“組”。開發(fā)工具選項(xiàng)可以對(duì)應(yīng)目標(biāo),組或單個(gè)文件。同時(shí)uVision2包含一
15、個(gè)器件數(shù)據(jù)庫(kù)(device database),可以自動(dòng)設(shè)置匯編器、編譯器、連接定位器及調(diào)試器選項(xiàng),來滿足用戶充分利用特定,微控制器的要求。此數(shù)據(jù)庫(kù)包含:片上存儲(chǔ)器和外圍設(shè)備的信息,擴(kuò)展數(shù)據(jù)指針(extra data pointer)或者加速器(math accelerator)的特性。uVision2還可以為片外存儲(chǔ)器產(chǎn)生必要的連接選項(xiàng):確定起始地址和規(guī)模。uVision2編輯器包含了所有用戶熟悉的特性,彩色語(yǔ)法顯像和文件辯識(shí)都對(duì)C源代碼進(jìn)行和優(yōu)化,也可以在編輯器內(nèi)調(diào)試程序,它能提供一種自然的調(diào)試環(huán)境,使你更快速地檢查和修改程序。另外KEIL C51編譯器在遵循ANSI標(biāo)準(zhǔn)的同時(shí),為8051
16、微控制器系列特別設(shè)計(jì)。因?yàn)檎Z(yǔ)言上的擴(kuò)展能讓用戶使用應(yīng)用中的所有資源。 6.1.2仿真軟件 PROTEUS: Proteus軟件是Labcenter Electronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計(jì),而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢(shì)就在于它能仿真大量的單片機(jī)芯片,比如MCS-51系列、PIC系列等等,以及單片機(jī)外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個(gè)功能齊全、
17、實(shí)用方便的單片機(jī)實(shí)驗(yàn)室。 6.2測(cè)試步驟 1.硬件調(diào)試,檢測(cè)硬件是否合格; 2.默認(rèn)為走時(shí)模式,按24小時(shí)制分別為 “時(shí)時(shí),分分.秒秒”。然后進(jìn)行走時(shí)調(diào)整; 3.萬(wàn)年歷模式,為 “年份,月份.日期”??梢赃M(jìn)行調(diào)整; 4.鬧鐘模式,可以定時(shí)鬧鐘。 6.3測(cè)試結(jié)果 單片機(jī)數(shù)字鐘擁有時(shí)間模式,日歷模式,鬧鐘模式三種模式。 6.4測(cè)試數(shù)據(jù) 表6.1 功能數(shù)據(jù)測(cè)試 電子鐘測(cè)試值/min 實(shí)際值/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 心得體會(huì) 回顧起此次實(shí)驗(yàn)設(shè)計(jì),我感慨頗多,從一開始的茫然到思路漸漸清晰,從開始選題到最終定稿,從理論到實(shí)踐,在短短的五個(gè)星期的日子里,痛并快樂著,但是艱辛的付出是值得的。電子綜合設(shè)計(jì)課程作為一門開放性課程讓適應(yīng)了填鴨式教育的我們手足無措,但是老師的諄諄教誨和不厭其煩的耐心指導(dǎo)撥散了我們心中的迷霧,使我們有曲徑通幽,豁然開朗之感。從一開始的了解電路結(jié)構(gòu)到最后的軟硬件結(jié)合實(shí)現(xiàn)設(shè)計(jì)功能,我們遇到了各種問題。這畢竟第一次做
19、實(shí)驗(yàn)設(shè)計(jì),難免會(huì)遇到過各種各樣的問題。 在困難中前行,我們受益匪淺。隊(duì)友之間的相互磨合讓我們學(xué)會(huì)了團(tuán)隊(duì)精神!差錯(cuò)的出現(xiàn)考驗(yàn)了我們的隨機(jī)應(yīng)變能力!實(shí)驗(yàn)設(shè)計(jì)遇到的阻力讓我們明白了理論與實(shí)踐相結(jié)合的重要性!只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,從操作中鞏固理論,兩者有機(jī)結(jié)合,提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在設(shè)計(jì)的過程中找出不足之處,加以改正不斷提升自己的水平。 通過此次實(shí)驗(yàn),在讓我們體會(huì)到了設(shè)計(jì)的艱辛的同時(shí),更讓我體會(huì)到成功的喜悅和快樂.。這次電子設(shè)計(jì)實(shí)驗(yàn),雖然短暫但是讓我們得到多方面的提高: 1. 我們了解并掌握了單片機(jī)的基本應(yīng)用,
20、學(xué)習(xí)了Keil軟件的用法,. 2、提高了我們的邏輯思維能力,加強(qiáng)了實(shí)際操作能力。 我們?cè)谶壿嬰娐返姆治雠c設(shè)計(jì)上有了質(zhì)的飛躍。我們理解了各種芯片的功能及構(gòu)造,加深了對(duì)組合邏輯電路與時(shí)序邏輯電路的認(rèn)識(shí),進(jìn)一步增進(jìn)了對(duì)一些常見邏輯器件的了解。 3,查閱參考書的獨(dú)立思考的能力以及培養(yǎng)非常重要。 我們?cè)谠O(shè)計(jì)電路時(shí),遇到很多不理解的東西,有的我們通過查閱參考書弄明白,有的通過網(wǎng)絡(luò)查到,但由于時(shí)間和資料有限我們更多的還是獨(dú)立思考。所以不斷的汲取知識(shí)是非常重要的。 4、隊(duì)友之間的團(tuán)結(jié)合作也是非常重要的,眾人拾柴火焰高,我們?nèi)齻€(gè)人的力量加起來所有問題就能迎刃而解!
21、
22、
23、
24、 參考文獻(xiàn) [1]李朝青.單片機(jī)原理與接口技術(shù)(第三版).北京:北京航空航天大學(xué)出版社,2005. [2]李 軍. 51系列單片機(jī)高級(jí)實(shí)例開發(fā)指南. 北京航空航天大學(xué)出版社. [3]王毓銀.?dāng)?shù)字電路邏輯設(shè)計(jì)[M] .高等教育出版社.2004-2. [4]許偉敏程佩青.多功能電子數(shù)字鐘.2009. [5]電子技術(shù)基礎(chǔ)實(shí)驗(yàn)課程組.電子技術(shù)基礎(chǔ)實(shí)驗(yàn)指導(dǎo)書.武漢大學(xué)電子信息學(xué)院. [6]李光飛. 單片機(jī)設(shè)計(jì)實(shí)例指導(dǎo).北京航空航天大學(xué)出版社. [7]劉華東. 單片機(jī)原理與應(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 ;臨時(shí)保存按鍵狀態(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 ;記錄時(shí)間、日期模式 ,3表示時(shí)間,4表示日期 LP0 EQU 2BH ;定時(shí)器1循環(huán)次數(shù) LP1 EQU 2CH ;定時(shí)器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 ;鬧鐘個(gè)數(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 ;定時(shí)器1中斷入口,產(chǎn)生秒基準(zhǔn)時(shí)間并實(shí)現(xiàn)時(shí)間日期自增 LJMP SERVE ORG 001BH ;定時(shí)器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 ;定時(shí)器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、**定時(shí)器初始化*************************************/ SETB ET0 ;允許T0中斷 SETB ET1 ;禁止T1中斷 SETB EA ;CPU開放中斷 CLR TR1 ;關(guān)閉定時(shí)器T1 SETB TR0 ;開啟定時(shí)器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: ;計(jì)算鍵值 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 ;時(shí)間模式 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: ;定時(shí)器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ù)點(diǎn)亮數(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: ;定時(shí)器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ù)字鍵改變時(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等.壓縮文件請(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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中生物對(duì)照實(shí)驗(yàn)專題復(fù)習(xí)課件
- 初中物理資源九年級(jí)第十五單元課件串并聯(lián)識(shí)別
- 咯血與嘔血課件
- What's_your_number_課件
- 外研版七下Module3Unit1(教育精品)
- 浙美版三年級(jí)上冊(cè)美術(shù)第15課-剪雪花教學(xué)ppt課件
- 蘇教版六年級(jí)下冊(cè)數(shù)學(xué)正比例和反比例的意義課件
- 蘇教版五下《單式折線統(tǒng)計(jì)圖》教研課件
- 固態(tài)相變概論
- 三角形全等的判定復(fù)習(xí)-課件2
- 太陽(yáng)能發(fā)展趨勢(shì)課件
- 道路工程監(jiān)理最新規(guī)劃范本課件
- SPC及CPK教程(理論篇)課件
- Travel-Plan旅行計(jì)劃-PPT
- 新冠肺炎疫情期間醫(yī)務(wù)人員防護(hù)技術(shù)指南