萬年歷設(shè)計報告_第1頁
萬年歷設(shè)計報告_第2頁
萬年歷設(shè)計報告_第3頁
萬年歷設(shè)計報告_第4頁
萬年歷設(shè)計報告_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 廣東科學技術(shù)職業(yè)學院 萬年歷 設(shè) 計 報 告論文題目: 電子萬年歷的設(shè)計與實現(xiàn) 所屬系部: 機械與電子工程系指導老師: 陳明芳 尹海昌 學生姓名: 楊秋龍 陳偉洲 傅銳檳 專 業(yè): 應用電子技術(shù) 2011 年 5 月 8 日 廣東科學技術(shù)職業(yè)學院 (萬年歷)設(shè)計任務書題 目: 萬年歷任務與要求:(1)準確顯示:時、分、秒(24小時制)(2)顯示星期(3)顯示公歷(4)時間、日期、星期可調(diào)節(jié)(5)可調(diào)節(jié)按鍵手動鎖(6)時間與陽歷能夠自動關(guān)聯(lián)并顯示是否閏年(7)能進行整點報時時 間: 2011 年 4 月 29 日 至 2011 年 5 月 9 日 所屬系部: 機械與電子工程系學生姓名: 楊秋龍

2、 陳偉洲 傅銳檳 專 業(yè): 應用電子技術(shù)指導單位或教研室: 廣東科學技術(shù)職業(yè)學院指導教師: 陳明芳 尹海昌 2011 年 5 月 8 日 摘 要單片機應用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個領(lǐng)域,從導彈的導航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機。單片機是集CPU ,RAM ,ROM ,定時,計數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強,廣泛應用于智能產(chǎn)業(yè)和工業(yè)自動化上。而51系列單片機是各單片機中最為典型和最有代表性的一種。這次設(shè)計通過對它的學習,應用

3、,從而達到學習、設(shè)計、開發(fā)軟、硬的能力。本文通過對一個基于單片機的能實現(xiàn)萬年歷功能電子時鐘的設(shè)計,從而達到學習、了解單片機相關(guān)指令在各方面的應用。系統(tǒng)由主控制器AT89C51、LCD1602、蜂鳴電路、按鍵電路、和復位電路等部分構(gòu)成,能實現(xiàn)時鐘日歷顯示的功能,能進行時、分、秒的顯示。關(guān)鍵詞 單片機 整點報時 萬年歷  目 錄一、系統(tǒng)方案 .5 1.1 作品實現(xiàn)的功能 .5 1.2 系統(tǒng)基本方案選擇和論證 51.2.1單片機芯片的選擇方案和論證 .51.2.2 顯示模塊的選擇方案和論證 .51.2.3 母板的選擇方案和論證 .51.2.4 電源的選擇方案與論證 .61.3 電路設(shè)計方案

4、的描述.6 二、系統(tǒng)的軟件設(shè)計.7 2.1 程序流程框圖 .5 三、系統(tǒng)的硬件設(shè)計與實現(xiàn).103.1電路設(shè)計框圖.10 3.2系統(tǒng)硬件概述.10 3.3主要單元電路的設(shè)計.10 3.3.1單片機主控制模塊的設(shè)計.10 3.3.2 鍵盤模塊的設(shè)計 .11 3.3.3 整點報時模塊的設(shè)計.123.3.4 顯示模塊的設(shè)計 .12 四. 測試方案與結(jié)果分析.14 4.1測試儀器.144.2軟件測試平臺 Keil C51.144.3顯示模塊測試.144.4 測試結(jié)果分析與結(jié)論.15 4.4.1 測試結(jié)果分析.15 4.4.2 測試結(jié)論.15 4.4.3 材料清單.15五、作品總結(jié).15 六、致謝詞.15

5、七、參考文獻.16 附錄一 系統(tǒng)電路圖.17 附錄二 系統(tǒng)程序(C語言 ).18一、系統(tǒng)方案 1.1 作品實現(xiàn)的功能: ( )基本功能 準確顯示:時、分、秒(24小時制) 顯示星期 顯示公歷 時間、日期、星期可調(diào)節(jié)( 2 ) 發(fā)揮部分 可調(diào)節(jié)按鍵手動鎖 時間與陽歷能夠自動關(guān)聯(lián); 能進行整點報時; ( 3 ) 創(chuàng)新點 采用焊接電路板和PCB印刷電路板相結(jié)合的方式,使作品外觀更加簡潔; 通過英文來顯示星期制,使畫面更加簡單易懂; 使用PCB印刷電路板供電,方便連線。 1.2 系統(tǒng)基本方案選擇和論證 1.2.1單片機芯片的選擇方案和論證: 方案1:采用STC89S52,采用Flash ROM;能以3

6、V超低電壓下工作;同時也與MCS-51系列單片機完全兼容,內(nèi)部具有8KB ROM ,256B RAM,5個中斷源和3個定時器,雖然且具有在線編程可擦除技術(shù),但由于現(xiàn)有器件的限制,沒法立即使用。方案2:采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,雖然不具備ISP在線編程技術(shù),但是屬于現(xiàn)有作品,而且可以直接下載寫入進行試驗調(diào)試,所以可以直接利用。選擇方案2:因為要存儲的程序C51能夠滿足,并要在一定近期內(nèi)可以利用,所以選擇容量足夠已經(jīng)自己已經(jīng)制作好的電路版使用。 1.2.2 顯示模塊的選擇方案

7、和論證: 方案1:采用LCD1602作為顯示模塊。能顯示兩行數(shù)據(jù),體積精小,成本低,操作方便簡單。 方案2:采用LCD12864作為顯示模塊。能顯示多行數(shù)據(jù)并能顯示圖片和中文,但體積龐大,成本高,。 選擇方案1:LCD1602不能只用一頁就能顯示出所有內(nèi)容,但給予編程者更多的發(fā)揮空間,可通過簡單的英文字母代替中文。而且其體積小,耗能低,成本低特點,適合我們以精巧價廉為主的設(shè)計。 1.2.3母板的選擇方案和論證: 方案1:采用面包板作為母板??蓪⒃迦肟字袦y試電路及元件,使用方便,但焊接線路繁瑣,容易因虛焊,焊點松動,橋接等問題給電路調(diào)試帶來極大不便,且不利于拆焊,不宜進行大規(guī)模電路實驗。方案

8、2:采用印刷電路板作為母板。焊接工序較少,可直接把元件焊入指定位置,方便測試電路,不易出現(xiàn)錯誤焊接,且外形整潔美觀大方。但成本較高,需要熟練掌握Protel和制板工藝,適合進行大規(guī)模電路實驗。 選擇方案1和方案2相結(jié)合:對于線路不多,但焊點繁多,且要求板面精巧簡潔的主控模塊,采用面包板作為母板;對于線路繁多,但焊點較少,且作為主要的控制模塊模塊,采用印刷電路板作為母板。采用兩種方案相搭配,不但能使不同的模塊揚長避短,更能最大程度地發(fā)揮不同設(shè)計者的制板風格。 1.2.4電源的選擇方案和論證: 方案1:采用三節(jié)干電池串聯(lián)提供4.5V工作電壓,只需配備一個電池座以及三節(jié)1.5V干電池。方案2:采用S

9、TC89C52在USB接口得到的電源。方案3:使用AC-DC變壓器提供5V電源,需要220V市電電源插座。但電壓不易控制,存在安全隱患。 選擇方案2:考慮到之前制作STC下載器多預備出來的一個電源接口,用現(xiàn)成的比較方便。 1.3 電路設(shè)計方案描述 綜上各方案所述,對此次作品的方案選定: n 采用STC89C52作為主控制系統(tǒng),C語言程序作軟件設(shè)計,控制其I/O口; n 以焊接電路板和PCB印刷電路板相結(jié)合組成母板 n LCD1602顯示屏,雙行顯示 n 蜂鳴器,進行整點報時 二、系統(tǒng)的軟件設(shè)計 2.1程序流程框圖 開始初 始 化 讀、寫、顯示日期時間 時間調(diào)整子程序 是 中斷 否 整點報時子程

10、序 循環(huán)復位圖2-A 主程序流程圖圖2-B陽歷程序流程圖圖2-C分秒時程序流程圖三、系統(tǒng)的硬件設(shè)計與實現(xiàn) 3.1 電路設(shè)計框圖 1602液晶顯示模塊 STC89C52 主控制模塊 鍵盤模塊 3.2 系統(tǒng)硬件概述 本電路基于單片機技術(shù)原理,以單片機芯片AT89C52作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計制作出一個多功能數(shù)字時鐘系統(tǒng)。單片機擴展的LCD顯示器用來顯示秒、分、時計數(shù)單元中的值。整個設(shè)計包括兩大部分: 硬件部分和軟件部分,以單片機為核心, 配以一定的外圍電路和軟件。該時鐘系統(tǒng)主要由1602液晶顯示模塊、鍵盤控制模塊以及單片機系統(tǒng)組成。能夠準確顯示時間(顯示格式為時時

11、:分分:秒秒,24小時制),可隨時進行時間調(diào)整。設(shè)計以硬件軟件化為指導思想,充分發(fā)揮單片機功能,大部分功能通過軟件編程來實現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。3.3 主要單元電路的設(shè)計 3.3.1 單片機主控制模塊的設(shè)計 STC89C52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨立地作輸出或輸入。 單片機的主控制系統(tǒng)如下圖(圖-1)所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)

12、它是振蕩器倒相放大器的輸出.第9引腳為復位輸入端,接上電容,電阻及開關(guān)后夠上電復位電路,20引腳為接地端,40引腳為電源端. 如圖-1 所示 圖3-1 主控制系統(tǒng) 3.3.2 鍵盤模塊的設(shè)計 從鍵盤上往下數(shù)分別是按鍵: 設(shè)置 S0,加 S1,減 S2, 鎖鍵 S3,復位 S4 S 0:在走時模式下按此鍵則進入修改時間參數(shù)(即年月日時分秒和星期制)模式,每按一下則可以選從左到右從上到下,選擇要另一個的時間參數(shù)(即年月日時分秒和星期制);在調(diào)整時間模式下,光標閃爍到最后一位(即秒)時,再按一次則相當于退出,回到走時頁面S 1:在修改時間參數(shù)模式下,按此鍵可實現(xiàn)對應時間參數(shù)相加(每按一次自加1)S

13、2:在修改時間參數(shù)模式下,按此鍵可實現(xiàn)對應時間參數(shù)相減(每按一次自減1) S 3:在走時模式下,按此鍵置1,則停止整點報時,允許進入調(diào)整時間模式;再按此鍵置0則可以恢復整點報時功能,并且禁止修改時間參數(shù)(即年月日時分秒和星期制)S 4:復位功能,按下此鍵后單片機初始化,流動顯示初始化頁面后,進入走時模式 如圖3-2 所示 圖3-2 鍵盤模塊電路圖 3.3.3 整點報時編寫中斷程序,利用STC89C52單片機外部中斷INT1,在走時模式下,按下鎖鍵S3鍵置1,則停止整點報時,允許進入調(diào)整時間模式;再按此鍵置0,則可以恢復整點報時功能(報時同時LED燈跟隨閃爍),并且禁止修改時間參數(shù)(即年月日時分

14、秒和星期制)。PS:蜂鳴器的驅(qū)動采用NPN9013控制,當P3.6端口輸出低電平時,則蜂鳴導通。具體連線如上圖3-2。3.3.4 顯示模塊的設(shè)計 1602采用標準的16腳接口,其中VSS為地電源,VDD接5V正電源,V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為

15、低電平時可以寫入數(shù)據(jù)。E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。D0D7為8位雙向數(shù)據(jù)線。 1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。 如圖3-3 所示 圖3-3 顯示模塊模塊電路圖四. 測試方案與結(jié)果分析4.1測試儀器序號名稱作用1KEIL 51 軟件編寫調(diào)試C程序并生成可燒錄hex文件2仿真軟件P

16、roteus對電路進行焊接前的仿真與測試3數(shù)字萬用表測試工作電壓檢測電路運行狀況4USB接口提供5伏輸出電源5STC89C52下載器電路板測試相關(guān)元件與程序的可行度與運行情況4. 2 軟件測試平臺 Keil C51 Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。 Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面??捎肐DE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編

17、譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng) L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標準的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試。4.3顯示模塊的調(diào)試出現(xiàn)的問題:LCD1602液晶顯示屏背景燈亮但不顯示內(nèi)容解決問題:初步假設(shè)電源已供電但單片機沒有工作。用萬用表測試單片機引腳P13(即LCD使能端6腳)和P12(即LCD寫數(shù)據(jù)命令選擇端4腳),均有電位的變化,推出單片機已經(jīng)工作。再次假設(shè),LCD1602液晶顯示屏的對比度沒有調(diào)好,即3腳的電位器沒有調(diào)好。使電路工作,緩慢旋動電位器

18、,但仍無內(nèi)容顯示。三次假設(shè),LCD1602液晶顯示屏某些引腳短路。編寫程序使由單片機控制的4、6、714引腳設(shè)為高電平,經(jīng)萬用表檢測均為高電平正常,再編寫程序使由單片機控制的4、6、714引腳設(shè)為低電平,經(jīng)萬用表檢測發(fā)現(xiàn)6腳LCD使能端仍為高電平,使能端持續(xù)高電平會令數(shù)據(jù)命令無法寫入LCD1602液晶顯示屏,導致無內(nèi)容顯示,仔細觀察實際電路,發(fā)現(xiàn)6腳線路11某地方與VCC相連(方前由于線路的緊湊難以發(fā)現(xiàn)此錯誤),改正后,LCD1602液晶顯示屏顯示正常,問題解決。4.測試結(jié)果分析與結(jié)論 4.1 測試結(jié)果分析 (1)在測試中遇到LCD1602顯示不出來,首先使用萬用表對電路進行測試,檢測工作電壓

19、是正常并查找出電路沒正常工作的部分,再次檢查各引腳的接線情況。4.4.2 測試結(jié)論 經(jīng)過多次的反復測試與分析,形成了一套系統(tǒng)高效的調(diào)試方法。對電路的原理及功能有了更深刻清晰的認識。提高了對電路的分析能力的同時更提高了我們創(chuàng)新設(shè)計能力。在軟件的編程方面也有所突破。提高與鞏固了我們課堂上所學的知識。4.4.3 材料清單1602顯示模塊序號元件類型參數(shù)/型號數(shù)量單位1三極管S90131個2lcd16021片3電阻10K10個4蜂鳴器1個5自鎖開關(guān)單聯(lián)1個6DC插座小口1個7DC電源線小口1條8自鎖開關(guān)雙聯(lián)1個9復位開關(guān)小1個10排針8P2個11排針16P1個12萬用板7cmx9cm 1塊13杜邦線8

20、P2條STC89C52下載器序號元件類型參數(shù)/型號數(shù)量單位1ICSTC89C52RC1片2ICMAX232A1片3IC座40P 活動座1個4IC座16P1個5晶振12M1個6USB接口公頭1個7串口DB9母頭1個8自鎖開關(guān)雙聯(lián)2個9復位開關(guān)小1個10排插8P3個11排插2P1個12覆銅板7cm x 8.5cm1塊13USB線1m1條14串口線USB轉(zhuǎn)串口1條15電解電容100uF/25V1只16電解電容10uF/25V1只17瓷片電容1045只18瓷片電容30pF2只19電阻10k1只20電阻4309只21發(fā)光二極管3 綠8只22發(fā)光二極管3 紅1只五、作品總結(jié) 在整個設(shè)計過程中,我們充分發(fā)揮

21、團隊合作精神,分工明確,發(fā)揮個人的主觀能動性,通過自己學習,自己探討,學習了很多關(guān)于單片機和相關(guān)程序等各方面的知識,較好的完成了作品,達到了預期的目的。我們從零開始,憑借一股參賽的熱忱和對新知識的渴望,專心學習、相互討論,深入研究,一起進步。付出的總有結(jié)果,最后的作品基本達到最初的設(shè)想。 在一開始的電路焊接時,一度出線液晶顯示屏無法顯示的現(xiàn)象。但后來我們通過檢查電路,分析一些參數(shù)最終查出問題所在。從而知道了焊接在整個作品中的重要性。電路工程量大,不能心急,要細心謹慎。如果急于求成??赡軙卤豆Π?。對于電路的設(shè)計、布局,事先要有良好的構(gòu)思,才能使電路板美觀、大方。程序編寫開始時遇到了很多的問題,

22、經(jīng)過靜心思考和討論,理清了思路,順利解決。 在這次制作中,從方案論證、硬件電路設(shè)計到軟件設(shè)計,工作量非常大。而我們只有課余時間可以利用,如果我們不能很好的分工合作,是不能完成的。我們集中時間在一起討論,商定最終方案,確定硬件電路、軟件編程。由于在此之前我們都沒有工程實際經(jīng)驗,在調(diào)試過程中設(shè)計中的一些不合理因素就表現(xiàn)出來了。調(diào)試過程更是對我們耐力的考驗,許多問題莫名其妙地發(fā)生了。我們曾經(jīng)沮喪過,懊惱過,但我們沒有被失敗嚇倒,我們繼續(xù)保持著高度的熱情,共同奮斗,認真地找出錯誤、不足之處,一一進行改正,不斷提高。就這樣,各項功能一點點地被實現(xiàn),我們也一步步地向前進,最終迎來了勝利的曙光。 在這過程中

23、我們常會遇到一些自己覺得比較困惑的的問題,這時,向尹海昌老請教,大家一起討論,互通有無,使我們從中受益非淺。虛心向別人學習,取人之長,補己之短,是一種很重要的學習方法。此次比賽提高了自主學習和團隊協(xié)作的能力,特別是做事要耐心認真,一步一個腳印,不可急于求成。整個過程受益匪淺,使自己得到全方位的鍛煉。 六、致謝詞 感謝學院給我們提供了一個展現(xiàn)自己的平臺,給了我們一次煅煉機會,提高我們的動手能力和并把知識付諸于實踐。 在做作品的日子里得到了指導教師的悉心指導,特此向指導教師致以誠摯的感謝。也感謝其他提供相關(guān)技術(shù)幫助的老師和同學,你們支持和鼓勵給了我們完成這份作品的信心和動力。在此深表謝意。七、參考

24、文獻 1 陳正振 編 電子電路設(shè)計與制作 廣西交通職業(yè)技術(shù)學院信息工程系 2007 2 楊子文 編 單片機原理及應用 西安電子科技大學出版社 2006 附錄一: 系統(tǒng)電路圖附錄二: 系統(tǒng)程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit rs=P34;sbit lcden=P35;sbit ring=P37;sbit ringing=P10 ;/sbit rd=P37;sbit s1=P30;/設(shè)置按鈕sbit s2=P31;/加按鈕sbit s3=P32; /減按鈕uchar nu

25、m=0,count=0,s1num=0;char second=0,minute=0,hour=0,day=1,month=1,year=0,week=1;uchar tab1=" 2000-01-01 MON"uchar tab2=" 00:00:00 " /定義LCD開機顯示字符void baoshi();void delay(uint t) /延時子程序uint x,y;for(x=t;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com) /寫LCD控制字子程序(根據(jù)LCD資料時序圖)rs

26、=0;delay(5);lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0; void write_date(uchar date)/寫LCD數(shù)據(jù)子程序rs=1;delay(5);lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void write_smh(uchar add,uchar date) /寫LCD,刷新數(shù)據(jù) add為待顯示數(shù)據(jù)的位置,date為待顯示的數(shù)據(jù)uchar shi,ge;shi=date/10; ge=date%10; /將兩位數(shù)分開顯示write_com(0x80+0x4

27、0+add); / 設(shè)置數(shù)據(jù)地址指針(根據(jù)LCD資料)delay(5);write_date(0x30+shi);delay(5);write_date(0x30+ge); /根據(jù)LCD資料中的字符表顯示數(shù)字void write_dmy(uchar add,uchar date)uchar shi,ge;shi=date/10; ge=date%10; /將兩位數(shù)分開顯示write_com(0x80+add); / 設(shè)置數(shù)據(jù)地址指針(根據(jù)LCD資料)delay(5);write_date(0x30+shi);delay(5);write_date(0x30+ge); /根據(jù)LCD資料中的字符表

28、顯示數(shù)字void write_week(uchar week)write_com(0x80+0x0c);switch(week)case 1:write_date('M');/星期數(shù)為1時,顯示 write_date('O'); write_date('N'); break; case 2:write_date('T');/星期數(shù)據(jù)為2時顯示 write_date('U'); write_date('E'); break;case 3:write_date('W');/星期數(shù)據(jù)為3時

29、顯示 write_date('E'); write_date('D'); break;case 4:write_date('T');/星期數(shù)據(jù)為4是顯示 write_date('H'); write_date('U'); break;case 5:write_date('F');/星期數(shù)據(jù)為5時顯示 write_date('R'); write_date('I'); break;case 6:write_date('S');/星期數(shù)據(jù)為6時顯示 wri

30、te_date('T'); write_date('A'); break;case 7:write_date('S');/星期數(shù)據(jù)為7時顯示 write_date('U'); write_date('N'); break; void keyscan() /鍵盤掃描子程序/rd=0; if(s1=0) /設(shè)置鍵按下delay(5); /延時消抖,5msif(s1=0)s1num+; TR0=0; /時鐘暫停while(!s1); /按鍵松手檢測switch(s1num)case 1: /若只按設(shè)置鍵一下,年 位置光標

31、閃爍write_com(0x80+4);write_com(0x0f);break;case 2: /月 位置閃爍write_com(0x80+7);write_com(0x0f);break;case 3: /日 位置閃爍write_com(0x80+10);write_com(0x0f);break;case 4: /星期位置閃爍write_com(0x80+14);write_com(0x0f);break;case 5: /時 位置閃爍write_com(0x80+0x40+5);write_com(0x0f);break;case 6: /分 位置閃爍write_com(0x80+0

32、x40+8);write_com(0x0f);break;case 7: /秒 位置閃爍write_com(0x80+0x40+11);write_com(0x0f);break;case 8:TR0=1;s1num=0;write_com(0x0c);break;if(s1num!=0) /若設(shè)置鍵被按下if(s2=0)delay(5); /消抖if(s2=0) /加 按鈕被按下while(!s2);/松手檢測switch(s1num)case 7:/若秒位置閃爍,執(zhí)行秒加1,并刷新LCD顯示值second+; if(second=60)second=0; /若計滿60,秒回0write_s

33、mh(10,second); write_com(0x80+0x40+11);break;case 6: minute+;if(minute=60)minute=0;write_smh(7,minute);write_com(0x80+0x40+8);break;case 5:hour+;if(hour=24)hour=0;write_smh(4,hour);write_com(0x80+0x40+5);break;case 4:week+;if(week=8) week=1; write_week(week);write_com(0x80+14);break;case 3:day+;swit

34、ch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(day=32)day=1;break;case 2:if(year%4=0|year%400=0)if(day=30)day=1;elseif(day=29)day=1;break;case 4:case 6:case 9:case 11:if(day=31)day=1;break;write_dmy(9,day);write_com(0x80+10);break;case 2:month+;if(month=13)month=1;write_dmy(6,month);

35、write_com(0x80+7);break;case 1:year+;if(year=100)year=0;write_dmy(3,year);write_com(0x80+4);break;if(s3=0) /若減按鈕被按下delay(5); /消抖if(s3=0)while(!s3); /松手檢測/*if(s1num=1)second-;if(second=-1)second=59;write_smh(10,second);write_com(0x80+0x40+11);if(s1num=2)minute-;if(minute=-1)minute=59;write_smh(7,minu

36、te);write_com(0x80+0x40+8);if(s1num=3)hour-;if(hour=-1)hour=23;write_smh(4,hour);write_com(0x80+0x40+8);*/switch(s1num)case 7:second-;if(second=-1)second=59;write_smh(10,second);write_com(0x80+0x40+11);break;case 6:minute-;if(minute=-1)minute=59;write_smh(7,minute);write_com(0x80+0x40+8);break;case

37、5:hour-;if(hour=-1)hour=23;write_smh(4,hour);write_com(0x80+0x40+5);break;case 4:week-;if(week=0)week=7;write_week(week);write_com(0x80+14);break;case 3:day-;switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(day=0)day=31;break;case 2:if(year%4=0|year%400=0)if(day=0)day=29;elseif(day

38、=0)day=28;break;case 4:case 6:case 9:case 11:day+;if(day=0)day=30;break;write_dmy(9,day);write_com(0x80+10);break;case 2:month-;if(month=0)month=12;write_dmy(6,month);write_com(0x80+7);break;case 1:year-;if(year=-1)year=99;write_dmy(3,year);write_com(0x80+4);break;void init() /初始化子程序write_com(0x38);

39、 write_com(0x0c);write_com(0x06);write_com(0x01); /以上四條均為LCD資料中的初始化操作,分別代表:顯示模式設(shè)置,顯示設(shè)置,光標設(shè)置,清屏設(shè)置for(num=0;num<15;num+)/LCD開機顯示指定的字符串write_date(tab1num);write_com(0x80+0x40);for(num=0;num<14;num+)write_date(tab2num);TMOD=0x01; TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;/定時器0初始化EX1=1;IT1=0;void main()init(); /初始化 while(1) baoshi(); ;void int1() interrupt 2 keyscan() ;void baoshi() unsigned char a; if(hour=1&&minute=00)|(hour=13&&minute=00) /整點報時 if(second=00) for(a=0;a<1;a+) ring=0; ringing=0; delay(750); ring=1; ringing=1; delay(750); if(ho

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論