單片機設(shè)計數(shù)字電子鐘_第1頁
單片機設(shè)計數(shù)字電子鐘_第2頁
單片機設(shè)計數(shù)字電子鐘_第3頁
單片機設(shè)計數(shù)字電子鐘_第4頁
單片機設(shè)計數(shù)字電子鐘_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘 要該課程設(shè)計為數(shù)字電子鐘的設(shè)計。以AT89S52為核心,配合LED數(shù)碼管顯示器和按鍵為用戶提供長期、連續(xù)、可靠、穩(wěn)定的工作環(huán)境。該數(shù)字電子鐘有時分秒顯示和日期顯示以及時間和日期調(diào)整的功能。系統(tǒng)軟件設(shè)計包括單片機計算機兩部分的編程。計算機軟件編程主要實現(xiàn)參數(shù)設(shè)置、串行口數(shù)據(jù)接收、指令發(fā)送以及數(shù)據(jù)的顯示和存儲。單片機軟件編程主要實現(xiàn)鍵盤、LED顯示等各模塊的功能,采用匯編語言編程。關(guān)鍵詞 數(shù)字電子鐘;單片機;LED顯示 ABSTRACTThe course designed for digital electronic clock designsTo AT89S52 as the core,w

2、ith the LED digital tube display and buttons provide users with long-term, continuous, reliable and stable working environmentThe digital electronic clock and sometimes minutes and seconds display and date display as well as time and date adjustment function System software design includes two parts

3、, the computer programming microcontrollersComputer software programming to achieve the main parameter settings,serial port data receiving, sending commands and data display and storageSCM software programming to achieve the main keypad,LED displays the functions of each module, using assembly langu

4、age programmingKey words digital electronic clock; microcomputer;LED Display目 錄1 設(shè)計任務(wù)和方案3 1.1 設(shè)計任務(wù)3 1.2 功能要求說明3 1.3 設(shè)計總體方案及工作原理說明32 數(shù)字電子鐘的硬件系統(tǒng)的設(shè)計4 2.1 硬件系統(tǒng)各模塊功能簡要介紹4 2.2 電路原理圖、PCB圖和元器件布局4 2.3 元器件清單43 數(shù)字電子鐘的軟件系統(tǒng)的設(shè)計5 3.1 使用的單片機資源的情況5 3.2 各模塊功能簡要介紹5 3.3 程序的流程框圖5 3.4 程序清單94 數(shù)字電子鐘的設(shè)計仿真和結(jié)果分析104.1 設(shè)計結(jié)論和使用說

5、明10 4.2 仿真結(jié)果10 4.3 誤差分析12 4.4 設(shè)計體會13 4.5 教學(xué)建議13參考文獻15致謝16附錄171 設(shè)計任務(wù)和方案1.1設(shè)計任務(wù)(一)設(shè)計題目:數(shù)字電子鐘(二)設(shè)計目的與任務(wù):學(xué)生通過理論設(shè)計和實物制作解決相應(yīng)的實際問題,鞏固和運用在單片機技術(shù)中所學(xué)的理論知識和實驗技能,掌握單片機應(yīng)用系統(tǒng)的一般設(shè)計方法,提高設(shè)計能力和實踐動手能力,為以后從事電子電路設(shè)計、研發(fā)電子產(chǎn)品打下良好的基礎(chǔ)。1.2功能要求說明該數(shù)字電子鐘采用八位數(shù)碼管能實現(xiàn)年月日和時分秒的顯示。當(dāng)電子鐘一上電即可顯示P.,設(shè)置數(shù)字鐘的初始日期和時間為05年01月01日14時30分20秒.用四個按鍵實現(xiàn)電子鐘的

6、顯示和調(diào)整的功能,分別為K0,K1,K2,K3,其中K0鍵為開啟鍵,且顯示的是時分秒,開啟之后K2鍵可實現(xiàn)切換的功能,即可實現(xiàn)年月日和時分秒的切換顯示;按K3鍵可實現(xiàn)年月日和時分秒的調(diào)整,按一下可以對當(dāng)前顯示的進行調(diào)整,再按一下即可切換到一個界面進行調(diào)整,調(diào)整的時候數(shù)字鐘停止計時,當(dāng)對年月日和時分秒都調(diào)整完之后,再按一下K3鍵即可跳出調(diào)整的狀態(tài),數(shù)字鐘繼續(xù)開始計時工作,在電子鐘正常計時的時候再按K0鍵即可對電子鐘進行關(guān)閉.1.3設(shè)計課題總體方案及工作原理說明設(shè)計中采用AT89S52芯片及LED顯示器,一些獨立式按鍵構(gòu)成一個簡單的數(shù)字電子鐘。設(shè)計中是采用單片機的內(nèi)部定時器進行定時,程序框圖如圖1

7、.1所示 整個電子鐘的工作原理是:在正常的供電狀態(tài)下,首先利用單片機定時,到了相應(yīng)的時間由單片機將所需要顯示的數(shù)據(jù)送到LED顯示器的輸入口,當(dāng)有鍵按下時則進入相應(yīng)的按鍵顯示和調(diào)整狀態(tài),進行按鍵調(diào)整。 圖1.1 總的設(shè)計的框圖2 數(shù)字電子鐘的硬件系統(tǒng)的設(shè)計2.1 硬件系統(tǒng)各模塊功能設(shè)計 該數(shù)字電子鐘由單片機最小系統(tǒng)、鍵盤模塊、LED顯示電路模塊、USB接口電路模塊組成。各模塊的功能如下:(1)單片機最小系統(tǒng)由AT89S52單片機、時鐘電路和復(fù)位電路構(gòu)成。AT89S52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read

8、Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。時鐘電路由一個12MHZ的石英晶體振蕩器和兩個33pF的的電容組成振蕩電路和分頻電路,為單片機提供內(nèi)部時鐘。復(fù)位電路采用上電復(fù)位和按鍵復(fù)位結(jié)合的方式對電路進行復(fù)位,主要是通過RST引腳送入單片機。(2)鍵盤模塊采用獨立式鍵盤接法,共有四個按鍵來對電路進行控制。分別接在單片機的P1口線上。一個鍵控制開和關(guān),一個鍵負責(zé)調(diào)整,另外兩個鍵輔助調(diào)整。(3)LED顯示電路采用八個共陰的數(shù)碼管顯示器進行顯示,加上一個SN74LS245作為驅(qū)動和8個200的電阻起限流的作用。將段控口接在P0口上,位控口接在P3口上,實現(xiàn)對顯示的控制。(

9、4)USB接口電路接上一個電容組成的濾波電路和電源顯示燈組成一個電源接口,為單片機工作供電。2.2 電路原理圖、PCB圖和元器件布局采用Protel軟件,Protel99SE是Protel公司近10年來致力于Windows平臺開發(fā)的最新結(jié)晶,能實現(xiàn)從電學(xué)概念設(shè)計到輸出物理生產(chǎn)數(shù)據(jù),能夠和形象的畫出我們所要設(shè)計的產(chǎn)品。電路原理圖和PCB圖及元器件布局見附錄。 2.3 元器件清單 見附錄。3 數(shù)字電子鐘的軟件系統(tǒng)的設(shè)計3.1 使用的單片機資源的情況該數(shù)字電子鐘用到了單片機的定時器的功能,此外用到了單片機的中斷功能,在數(shù)據(jù)的顯示時所采用的是查表的方法,因此需要將表格、數(shù)據(jù)存到單片機的程序存儲器中去。

10、由于電子鐘需要可以進行調(diào)節(jié),因此,需要在單片機的P口上加上按鍵,本設(shè)計采用獨立式鍵盤,直接接在P1口上且按鍵的結(jié)果存貯在單片機的內(nèi)部數(shù)據(jù)存儲器里面。用到的LED顯示器接到了單片機的P0口線上和P3口線上。 3.2 各模塊功能簡要介紹 該數(shù)字電子鐘所用的軟件模塊有定時器模塊、按鍵模塊、LED顯示模塊。(1)定時器模塊選擇定時器0,設(shè)置定時方式為方式1,設(shè)置定時時間為50mS。(2)按鍵模塊采用獨立式鍵盤,共用四個按鍵對電路進行控制和操作,分別為K0、K1、K2、K3來控制電子鐘的開/關(guān)和調(diào)整。(3)LED顯示模塊 該電子鐘一通電即讓它顯示P.,按開啟鍵即可顯示時分秒,再按切換鍵即可顯示年月日,然

11、后結(jié)合鍵盤操作還可以對時間進行調(diào)整。3.3 程序的流程圖(1)整體設(shè)計流程圖圖3.1 整體設(shè)計流程圖(2)鍵盤設(shè)計流程圖圖3.2 鍵盤設(shè)計流程圖(3)顯示設(shè)計流程圖圖3.3 顯示時分秒設(shè)計流程圖圖3.4 顯示年月日設(shè)計流程圖3.4 程序清單見附錄。 4 數(shù)字電子鐘的設(shè)計仿真和結(jié)果分析4.1 設(shè)計結(jié)論和使用說明(1)設(shè)計結(jié)論 通過對單片機進行外接鍵盤和LED數(shù)碼管的操作以及加上硬件電路和軟件的結(jié)合,實現(xiàn)了該數(shù)字電鐘顯示P.以及時分秒和年月日的顯示,同時還可實現(xiàn)對該電子鐘進行調(diào)整的功能。通過測試和仿真以及修改,該電子鐘最終能正常的工作。(2)使用說明該數(shù)字電子鐘采用八位數(shù)碼管能實現(xiàn)年月日和時分秒的

12、顯示。當(dāng)電子鐘一上電即可顯示P.,設(shè)置數(shù)字鐘的初始日期和時間為05年01月01日14時30分20秒.用四個按鍵實現(xiàn)電子鐘的顯示和調(diào)整的功能,分別為K0,K1,K2,K3,其中K0鍵為開啟鍵,且顯示的是時分秒,開啟之后K2鍵可實現(xiàn)切換的功能,即可實現(xiàn)年月日和時分秒的切換顯示;按K3鍵可實現(xiàn)年月日和時分秒的調(diào)整,按一下可以對當(dāng)前顯示的進行調(diào)整,再按一下即可切換到一個界面進行調(diào)整,調(diào)整的時候數(shù)字鐘停止計時,當(dāng)進行時分秒的調(diào)整時, K0鍵可實現(xiàn)對秒進行增大的調(diào)整,每按一下秒的值就加一,當(dāng)秒增加到59時就重新從0開始繼續(xù)增大, K1鍵可實現(xiàn)對分進行增大的調(diào)整,每按一下分的值就加一,當(dāng)分增加到59的時候就

13、重新從0開始繼續(xù)增大,K2鍵可實現(xiàn)對時進行增大的調(diào)整,每按一下時的值就加一,當(dāng)時的值增大到23的時候就重新從0開始繼續(xù)增大.當(dāng)進行年月日的調(diào)整時, K0鍵可實現(xiàn)對日進行增大的調(diào)整,每按一下秒的值就加一,當(dāng)日增加到28或者30或者31(看不同的年份和月份)時就重新從0開始繼續(xù)增大, K1鍵可實現(xiàn)對月進行增大的調(diào)整,每按一下月的值就加一,當(dāng)月增加到12的時候就重新從0開始繼續(xù)增大,K2鍵可實現(xiàn)對年進行增大的調(diào)整,每按一下時的值就加一,當(dāng)時的值增大到99的時候就重新從0開始繼續(xù)增大.當(dāng)對年月日和時分秒都調(diào)整完之后,再按一下K3鍵即可跳出調(diào)整的狀態(tài),數(shù)字鐘繼續(xù)開始計時工作,在電子鐘正常計時的時候再按K

14、0鍵即可對電子鐘進行關(guān)閉.4.2 仿真結(jié)果在仿真時用到了兩個軟件,第一個是Keil,第二個是Protues,本次仿真是將兩個軟件結(jié)合起來進行的。Proteus 軟件所提供了30多個元件庫,數(shù)千種元件。元件涉及到數(shù)字和模擬、交流和直流等。在Proteus軟件包中,不存在同類儀表使用數(shù)量的問題。Proteus還提供了一個圖形顯示功能,可以將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似但功能更多。用Protues軟件進行仿真,其仿真的電路圖如圖4.1所示圖4.1 Protues仿真電路圖數(shù)字電子鐘正常工作時,仿真的LED顯示器顯示如圖4.2所示,當(dāng)按下切換鍵時,數(shù)字電子鐘進入日期

15、顯示界面,此時LED數(shù)碼管顯示器的顯示如圖4.3和4.4所示,當(dāng)按下調(diào)整鍵時,數(shù)字電子鐘進入調(diào)整界面,此時LED數(shù)碼管顯示器的顯示如圖4.5和4.5所示。圖4.2 數(shù)字電子鐘正常工作時的顯示圖圖4.3 數(shù)字電子鐘顯示時分秒的顯示圖圖4.4 數(shù)字電子鐘顯示日期的顯示圖圖4.5 數(shù)字電子鐘調(diào)整時分秒的顯示圖圖4.6 數(shù)字電子鐘調(diào)整年月日的顯示圖4.3 誤差分析本數(shù)字電子鐘在跟標(biāo)準的電子鐘比較時,時間稍微慢一點,產(chǎn)生此種情況的原因有:其一是在執(zhí)行程序指令時,由于需要耗費一定的時間,因此會比標(biāo)準的電子鐘要慢一點。其二是晶振不夠標(biāo)準,使得定時器定時時不夠精準。4.4 設(shè)計體會從選題到硬件電路的設(shè)計,再到

16、軟件電路的設(shè)計,整個過程當(dāng)中我學(xué)到了很多的東西,在老師的細心指導(dǎo),耐心分析下,我把整個思路理清,并開始了設(shè)計的規(guī)劃,在原理圖的繪制時我查找了相關(guān)軟件的使用方法,并悉心向老師和同學(xué)請教,學(xué)會對PROTEL和PROTEUS的使用;在軟件系統(tǒng)的設(shè)計當(dāng)中,我遇到了很多的問題,不能把一些小模塊系統(tǒng)的聯(lián)系起來,但通過不段的學(xué)習(xí),最終花了兩天的時間把整個程序完整的編出來了,并能進行仿真使用;到最后做板子的時候,因為是第一次做板子,很多細節(jié)的地方都沒注意,比如買元器件時,要看清楚所買元器件的引腳、尺寸和功能以及質(zhì)量,我買的板子質(zhì)量不行,結(jié)果在用熨斗熨的時候出現(xiàn)暴起的現(xiàn)象,只能在重新做一塊,而且買的數(shù)碼管跟實際

17、所畫的PCB板尺寸大小不一樣,只能另想辦法,很影響實驗進度,所以在買元器件時一定要做好充分的準備。在做板子的時候因為熨的時候沒把握好,結(jié)果出現(xiàn)了很多的斷點,只能一個一個查,一個一個補,麻煩很大,工作量也很大,而且很容易疏忽,所以將圖紙熨到板子上時一定要熨的均勻,把握好時間和力度。打孔時一定要對準,不要太急,慢慢來。插元器件的時候一定要把每個元器件的引腳搞清楚,插之前要用萬用表測好每個引腳是該接地還是該接電源,千萬不能插反了。焊接的時候要標(biāo)準不能產(chǎn)生虛焊,也不要遺漏,要均勻,焊錫不能太多也不能太少。到最后就是檢查電路的連接了,搞清楚整個電路的連接時怎么樣的,當(dāng)顯示器不亮的時候可以采用軟件檢查法或

18、者硬件檢查對板子進行測試,這個過程中一定要細心且要有耐心,不要灰心,相信自己一定能找出原因,只要自己持之以恒肯定能把錯誤找出來并糾正。在對板子進行測試的時候出現(xiàn)了很多的錯誤,花了一整個下午的時間來查找電路的錯誤,首先是電源指示燈不亮,燈座接反了,然后是顯示器不亮,最后通過用萬用表對電路進行測試以及才用軟件的方式對電路的測試,最終讓電子鐘正常的工作了,二導(dǎo)致的主要原因是熨的時候太多的斷點沒補好,以及在焊接的時候出現(xiàn)了很多的虛焊,導(dǎo)致某些段控口和位控口的不可用,因為是第一次做板子,所以之前很多該注意的地方都沒有注意,最后留下一大堆得問題,使得整個制版的過程耗費很多的精力和時間。從中我學(xué)會了很多,包

19、括原理圖的繪制,程序的設(shè)計,PCB的繪制,還有板子的制作,更重要的是我懂得了,要做好一個東西,準備工作好似必不可少,這樣才能減少后面的不必要的麻煩,而且遇到困難和麻煩一點要有耐心和信心去把它攻破。4.5 教學(xué)建議王老師的教學(xué)方式我挺贊同,你能夠讓我們把實際和理論結(jié)合起來,我覺得這很好,而且對現(xiàn)在的我們來說很重要,大學(xué)三年來,學(xué)的東西可以說很多,但是我們一直都不知道,手中的這些知識到底有什么作用,而且很多的老師都只顧著講自己的課程,就像是完成一項別人交給他的任務(wù)一樣,從不關(guān)心學(xué)生學(xué)的到底是怎么樣的,所以我覺得適當(dāng)?shù)慕o學(xué)生一些將理論聯(lián)系實際的作業(yè)和任務(wù),能夠讓我們更清楚和明白自己學(xué)的東西,也讓我們

20、學(xué)的不再那么迷茫和無目的了。其次老師和同學(xué)的關(guān)系我覺得對同學(xué)能否學(xué)習(xí)好這門課程很重要,課堂上老師應(yīng)該要嚴肅認真,下課后老師可以多和同學(xué)們接觸和聊天,培養(yǎng)和同學(xué)們的關(guān)系,和同學(xué)們做朋友,對同學(xué)們提出的問題要認真對待,并且對學(xué)生提問。還有就是,老師的責(zé)任不僅僅是傳授知識,更重要的是給我們傳授學(xué)習(xí)經(jīng)驗和方法,培養(yǎng)學(xué)生的發(fā)散的思考方式,以及多傳授點社會經(jīng)驗和教訓(xùn),教我們不要走不必要的彎路以及在社會上你所必備的生存工具。參考文獻1唐俊瞿,許雷,張群瞻.單片機原理與應(yīng)用.北京:冶金工業(yè)出版社,20032李廣弟,朱月秀,冷祖祁.單片機基礎(chǔ).北京:北京航空航天大學(xué)出版社,20073李光飛.單片機課程設(shè)計實例指

21、導(dǎo).北京:北京航空航天大學(xué)出版社,2004.94張洪潤,蘭清華.單片機應(yīng)用技術(shù)教程.北京:清華大學(xué)出版社,1997.115李華.MCS51系列單片機實用接口技術(shù).北京:北京航空航天大學(xué)出版社,19936李朝青.單片機原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,19987趙秀珍,單永磊.單片微型計算機原理及其應(yīng)用.北京:中國水利水電出版社,2001.8致 謝在這里我要感謝很多很多人,幫助分析和解決問題,這是我第一次做這方面的課程設(shè)計,而且最近板子的成功,都是在老師和同學(xué)們的悉心指導(dǎo)下才能做出成績,在開始選題的時候,王老師悉心的指導(dǎo)和講解,讓我漸漸有自己的方案和選擇方向,在每一步的進展當(dāng)中,我都

22、碰到了很多的問題,畫原理圖的時候分析電子鐘工作的原理以及怎么確定和修改,都是在班上同學(xué)的指導(dǎo)下,經(jīng)過一步步修改而成的,設(shè)計軟件的時候,因為是設(shè)計一個系統(tǒng)的程序,所以開始還沒形成系統(tǒng)的思維,但在老師的講解和同學(xué)的教導(dǎo)下,漸漸的將一個個子程序聯(lián)系起來調(diào)試運行。最后做板子的時候,感謝同學(xué)的幫助和指導(dǎo),幫忙拿東西到實驗室,又幫忙送回去,真的好感謝,還有實驗室的同學(xué)在我遇到問題和不懂得地方耐心的幫我分析和解決,雖然在每一步都出了很多的問題,但經(jīng)過那些曾經(jīng)做過板子的有經(jīng)驗的指導(dǎo),還是把一個個困難攻破了,所以整個過程都是在老師和同學(xué)的幫助下完成的,特此感激他們對我的幫助和支持。附 錄 *;按鍵接P1.0P1

23、.3分別為K0、K1、K2、K3;*;數(shù)碼管顯示器段控口接單片機的P0口,位控口接單片機的P3口;*;存儲單元定義;* YEAR EQU 40HMONTHEQU 41H DAY EQU 42HHOUR EQU 43H MINUTE EQU 44H SECONDEQU 45H TIME EQU 46H ORG 0000H AJMP START ORG 000BH AJMP ET_0 START:LCALL LINGMOV TIME, #00HMOV TMOD, #01H ;設(shè)置定時器的工作方式為方式一MOV TH0, #(65536-50000)/256 ;定時50毫秒MOV TL0, #(65

24、536-50000)MOD 256MOV IE, #82HLOOP: LCALL DISPLAY0 ;顯示P. JNB P1.0, MAIN1 JMP LOOPMAIN1: LCALL DISPLAY0 JNB P1.0, MAIN1 SETB TR0 ;開啟定時器*;主函數(shù);* MAIN: LCALL KEY JB 20H.3, SET1 JB 20H.0, GUAN JB 20H.2, RIQI LCALL DISPLAY2 ;顯示時分秒 AJMP MAIN *;顯示日期;*RIQI:LCALL DISPLAY1 LCALL KEY JB 20H.2, MAIN JMP RIQIGUAN:

25、 MOV P2, #0FFH ;關(guān)顯示 LCALL KEY JB 20H.0, MAIN JMP GUAN *;進入時分秒的調(diào)整界面;* SET1: CLR TR0 ;時分秒的調(diào)整 LCALL DISPLAY2 LCALL KEY JB 20H.3, SET2 JB 20H.2, TS JB 20H.1, TF JB 20H.0, TM JMP SET1TS: INC HOUR ;時的調(diào)整 MOV A, HOUR ;是否達到了24小時到了就清零 CJNE A,#24, SET1 AJMP LL1LL1: MOV HOUR, #0 JMP SET1TF: INC MINUTE ;分的調(diào)整 MOV

26、 A, MINUTE ;是否達到了60分到了就清零 CJNE A, #60, SET1 AJMP LL2LL2: MOV MINUTE, #0 JMP SET1TM: INC SECOND ;秒的調(diào)整 MOV A, SECOND ;是否達到了60秒到了就清零 CJNE A,#60, SET1 AJMP LL3LL3: MOV SECOND, #0 JMP SET1 SET2: LCALL KEY ;進入年月日的調(diào)整界面 LCALL DISPLAY1 ;顯示年月日 JB 20H.3, EXIT JB 20H.2, TN JB 20H.1, TY JB 20H.0, TR JMP SET2EXIT

27、: SETB TR0 ;關(guān)定時器 JMP MAIN TN: INC YEAR ;年的調(diào)整 MOV A, YEAR ;是否達到了99年到了就清零 CJNE A,#99, SET2 AJMP LL4LL4: MOV YEAR, #0 JMP SET2TY: INC MONTH ;月的調(diào)整 MOV A, MONTH ;是否達到了12月到了就清零 CJNE A,#13, SET2 AJMP LL5LL5: MOV MONTH, #0 JMP SET2TR: INC DAY ;日的調(diào)整 MOV A, YEAR ;看是閏年還是非閏年 MOV B, #4 DIV AB MOV A, B JZ WW1 ;閏年

28、則轉(zhuǎn)WW1 JMP WW2 ;非閏年則轉(zhuǎn)WW2WW1: MOV A, MONTH ;看是閏年的哪一月份 CJNE A,#2, LL6 ;是閏年中的2月則為29天 MOV A, DAY 到29就清零 CJNE A,#29, SET2 MOV DAY, #0 AJMP SET2LL6: CJNE A,#4, LL7 ;閏年中的4、6、9、11為30天 MOV A, DAY 到30就清零 CJNE A,#30, SET2 MOV DAY, #0 AJMP SET2LL7: MOV A, MONTH CJNE A,#6, LL8 MOV A, DAY CJNE A,#30, SET2 MOV DAY,

29、 #0 AJMP SET2LL8: MOV A, MONTH CJNE A,#9, LL9 MOV A, DAY CJNE A,#30, SET2 MOV DAY, #0 AJMP SET2LL9: MOV A, MONTH CJNE A,#11, LLA MOV A, DAY CJNE A,#30, ZHUAN MOV DAY, #0 AJMP SET2LLA: AJMP WW6 WW6: MOV A, DAY ;閏年中的1、3、5、7、8、10、12月 CJNE A,#31, ZHUAN MOV DAY, #0ZHUAN:AJMP SET2WW2: MOV A, MONTH ;看是閏年中的

30、哪一月 CJNE A,#2, LL6 ;非閏年中的2月為28天,到28則清零 MOV A, DAY ;非潤年中的4、6、9、11月為30天其他 CJNE A,#28,ZHUAN 31天 MOV DAY, #0 AJMP SET2*;中斷子程序和時間的增一;*ET_0: MOV TH0,#(65536-50000)/256 MOV TL0,#(65536-50000)MOD 256 INC TIME MOV A, TIME CJNE A,#20, DIAN AJMP ZMZM: INC SECOND MOV TIME, #0 ;TIME為20時SECOND加一同時對TIME MOV A, SEC

31、OND 清零 CJNE A,#60, DIANZF : INC MINUTE MOV SECOND,#0 ;SECOND為60時MINUTE加一同時SECOND MOV A, MINUTE 清零 CJNE A,#60, DIANZS: INC HOUR ;MINUTE為60時HOUR加一同時MINUTE MOV MINUTE,#0 清零 MOV A, HOUR CJNE A,#24, DIAN AJMP ZR ;HOUR為23時DAY加一同時HOUR清零ZR: INC DAY MOV HOUR, #0 MOV A, YEAR MOV B, #4 DIV AB JZ RUN ;閏年則轉(zhuǎn)RUN A

32、JMP NRUN ;非閏年則轉(zhuǎn)NRUNDIAN: RETI ;是否為閏年中的2月,是則到了29就RUN: MOV A, MONTH MONTH加一同時DAY清零 CJNE A,#3 ,NEXT1 ;是否為閏年中的4、6、9、11月,是則到 了 30MONTH就加一同時DAY清零 AJMP BB1 ;閏年中的1、3、5、7、8、10、12月為31 天到了31則MONTH加一DAY清零NEXT1:MOV A, MONTH CJNE A,#5, NEXT2 AJMP BB2NEXT2:MOV A, MONTH CJNE A,#7, NEXT3 AJMP BB2NEXT3:MOV A, MONTH C

33、JNE A,#10, NEXT4 AJMP BB2NEXT4:MOV A, MONTH CJNE A,#12, NEXT5 AJMP BB2NEXT5:AJMP BB3BB1: MOV A, DAY CJNE A,#30, DIAN AJMP ZYBB2: MOV A, DAY CJNE A,#31, DIAN AJMP ZYBB3: MOV A, DAY CJNE A,#32, DIAN AJMP ZYBB4: MOV A, DAY CJNE A,#29, DIAN AJMP ZYNRUN: MOV A, MONTH CJNE A,#3, NEXT6 ;非閏年中的2月到了28就MONTH 加

34、一同時DAY清零 AJMP BB4 ;非閏年中的4、6、9、11月到了30天 NEXT6:MOV A, MONTH 則MONTH加一同時DAY清零 CJNE A,#5, NEXT7 ;非閏年中的1、3、5、7、8、10、12 AJMP BB2 月為31天到了則MONTH加一同時DAY清零NEXT7:MOV A, MONTH CJNE A,#7, NEXT8 AJMP BB2NEXT8:MOV A, MONTH CJNE A,#10, NEXT9 AJMP BB2NEXT9:MOV A, MONTH CJNE A,#12, NEXT5 AJMP BB2ZY: INC MONTH MOV DAY,

35、 #0 MOV A, MONTH CJNE A,#14, DIAN AJMP ZNZN: INC YEAR MOV MONTH, #0 MOV A, YEAR CJNE A,#100, DIAN AJMP LING*;初始顯示值;*LING: MOV YEAR, #05 ;顯示器顯示的初始值為日期05-01-01, MOV MONTH, #01 時間 14-30-20 MOV DAY, #01 MOV HOUR, #14 MOV MINUTE, #30 MOV SECOND, #20 RET*;鍵掃子程序;*KEY: LCALL KEYCH ; 鍵掃程序,按鍵結(jié)果存入20H單元 JZ EXIT

36、1 LCALL DELAY1 LCALL KEYCH JZ EXIT1 KEYSF: MOV B, #20H LCALL KEYCH JZ KEY1 LCALL DELAY1 LJMP KEYSFKEY1: MOV 20H, BEXIT1: RETKEYCH: PUSH PSW CLR RS1 SETB RS0 MOV P1, #0FFH MOV A, P1 CPL A; ANL A, #0FH MOV 20H, A CLR RS1 CLR RS0 POP PSW RET*;進入顯示P界面;*DISPLAY0:CLR P3.7 ;顯示P. MOV P0, #0F3H LCALL DELAY1

37、SETB P3.7 RET*;年月日顯示界面;*DISPLAY1:MOV DPTR, #TAB1 ;顯示日期 MOV A, DAY MOV B,#10 DIV AB CLR P3.6 MOVCA,A+DPTR MOV P0,A LCALLDELAY1 SETB P3.6 MOV A,B CLR P3.7 MOVCA,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.7 CLR P3.5 MOV P0,#40H ;顯示分隔符 LCALL DELAY1 SETB P3.5 MOV A,MONTH MOV B,#10 DIV AB CLR P3.3 MOVC A,A+DPTR

38、 MOV P0,A LCALL DELAY1 SETB P3.3 MOV A,B CLR P3.4 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.4 CLR P3.2 MOV P0,#40H ;顯示分隔符 LCALL DELAY1 SETB P3.2 MOV A,YEAR MOV B,#10 DIV AB CLR P3.0 MOVC A,A+DPTR MOVP0,A LCALL DELAY1 SETB P3.0 MOV A,B CLRP3.1 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.1 RETDISPLA

39、Y2:MOV DPTR,#TAB1 ;顯示時間 MOV A, SECOND MOV B, #10 DIV AB CLR P3.6 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.6 MOV A,B CLR P3.7 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.7 CLR P3.5 MOV P0,#40H ;顯示分隔 LCALL DELAY1 SETB P3.5 MOV A,MINUTE MOV B,#10 DIV AB CLR P3.3 MOVCA,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.3 MOV A,B CLR P3.4 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.4 CLR P3.2 MOV P0,#40H ;顯示分隔符 LCALL DELAY1 SETB P3.2 MOV A,HOUR MOV B,#10 DIV AB CLR P3.0 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SET

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論