單片機課程設(shè)計--智能電子鐘的設(shè)計_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  1引言………………………………………………………………………………………… 1</p><p>  1.1設(shè)計內(nèi)容和要…………………………………………………………………………… 1</p><p>  1.2 工作原理……………………………………………………………………………

2、…… 2</p><p>  2 總體設(shè)計…………………………………………………………………………………… 2</p><p>  2.1 方案設(shè)計………………………………………………………………………………… 2</p><p>  2.2 系統(tǒng)框圖………………………………………………………………………………… 2</p><p>  2.

3、3 核心芯片簡介…………………………………………………………………………3</p><p>  2.3.1 DS1302簡介…………………………………………………………………………… 3</p><p>  2.3.2 AT89C51簡介……………………………………………………………………………3</p><p>  3 智能電子鐘軟硬件電路的設(shè)計………………………

4、………………………………………4</p><p>  3.1 硬件設(shè)計……………………………………………………………………………………4</p><p>  3.1.1 復(fù)位電路設(shè)計……………………………………………………………………………4</p><p>  3.1.2 DS1302與單片機的接口設(shè)計………………………………………………………… 5</p&

5、gt;<p>  3.1.3 LED顯示設(shè)計……………………………………………………………………………5</p><p>  3.1.4 電源設(shè)計…………………………………………………………………………………6</p><p>  3.1.5 按鍵開關(guān)去抖設(shè)計………………………………………………………………………6</p><p>  3.1.6 時鐘

6、電路的設(shè)計…………………………………………………………………………7</p><p>  3.1.7 電路總原理圖設(shè)計………………………………………………………………………8</p><p>  3.2 軟件設(shè)計……………………………………………………………………………………8</p><p>  3.2.1 流程圖…………………………………………………………………

7、…………………8</p><p>  4 protues仿真與調(diào)試……………………………………………………………………………11</p><p>  4.1 電路的仿真…………………………………………………………………………………11</p><p>  4.2軟件調(diào)試……………………………………………………………………………………11</p><

8、;p>  結(jié)論…………………………………………………………………………………………… 12</p><p>  參考文獻……………………………………………………………………………………… 14</p><p>  附 錄………………………………………………………………………………………… 15</p><p>  源程序…………………………………………………

9、……………………………………… 15</p><p><b>  1 引言</b></p><p>  電子時鐘主要是利用電子技術(shù)將時鐘電子化、數(shù)字化,擁有時鐘精確、體積小、界面友好、可擴展性能強等特點,被廣泛應(yīng)用于生活和工作當中。另外,在生活和工農(nóng)業(yè)生產(chǎn)中,也常常需要溫度,這就需要電子時鐘具有多功能性。本設(shè)計主要為實現(xiàn)一款可正常顯示時鐘/日歷、帶有定時鬧鈴的多功能電

10、子時鐘。本文對當前電子鐘開發(fā)手段進行了比較和分析,最終確定了采用單片機技術(shù)實現(xiàn)多功能電子時鐘。本設(shè)計應(yīng)用AT89C51芯片作為核心,6位LED數(shù)碼管顯示,使用DS1302實時時鐘日歷芯片完成時鐘/日歷的基本功能。這種實現(xiàn)方法的優(yōu)點是電路簡單,性能可靠,實時性好,時間精確,操作簡單,編程容易。</p><p>  該電子時鐘可以應(yīng)用于一般的生活和工作中,也可通過改裝,提高性能,增加新功能,從而給人們的生活和工作帶來

11、更多的方便。</p><p>  1.1設(shè)計內(nèi)容和要求</p><p>  以AT89C51單片機為核心,制作一個LCD顯示的智能電子鐘:</p><p>  (1) 計時:秒、分、時、天、周、月、年。</p><p>  (2) 閏年自動判別。</p><p>  (3) 五路定時輸出,可任意關(guān)斷(最大可到16路)。

12、</p><p>  (4) 時間、月、日交替顯示。</p><p>  (5) 自定任意時刻自動開/關(guān)屏。</p><p>  (6) 計時精度:誤差≤1秒/月(具有微調(diào)設(shè)置)</p><p>  (7) 鍵盤采用動態(tài)掃描方式查詢。所有的查詢、設(shè)置功能均由功能鍵K1、K2完成。</p><p><b>  

13、1.2 工作原理</b></p><p>  本設(shè)計采用市場上流行的時鐘芯片DS1302進行制作。DS1302是DALLAS公司推出的涓流充電時鐘芯片,內(nèi)含一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM,可以通過串行接口與計算機進行通信,使得管腳數(shù)量減少。實時時鐘/日歷電路能夠計算2100年之前的秒、分、時、日、星期、月、年的,具有閏年調(diào)整的能力。</p><p>  DS1302時鐘

14、芯片的主要功能特性:</p><p>  (1) 能計算2100年之前的年、月、日、星期、時、分、秒的信息;每月的天數(shù)和閏年的天數(shù)可自動調(diào)整;時鐘可設(shè)置為24或12小時格式。</p><p>  (2) 31B的8位暫存數(shù)據(jù)存儲RAM。</p><p>  (3) 串行I/O口方式使得引腳數(shù)量最少。</p><p>  (4) DS1302與

15、單片機之間能簡單地采用同步串行的方式進行通信,僅需3根線。</p><p>  (5) 寬范圍工作電壓2.0-5.5V。</p><p>  (6) 工作電流為2.0A時,小于300nA。</p><p>  (7) 功耗很低,保持數(shù)據(jù)和時鐘信息時功率小于1mW</p><p>  控制程序在Keil軟件中編寫,編譯,整個控制電路在Prote

16、us仿真軟件中連接調(diào)示。</p><p><b>  2 總體設(shè)計方案</b></p><p><b>  2.1 方案設(shè)計</b></p><p>  實時時鐘芯片具備年、月、日、時、分、秒計時功能和多點計時功能,計時數(shù)據(jù)的更新每秒自動進行一次,不需程序干預(yù)。計算機可通過中斷或查詢方式讀取計時數(shù)據(jù)進行顯示,因此計時功能的

17、實現(xiàn)無需占用CPU的時間,程序簡單。此外,實時時鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計時功能;具有可編程方波輸出功能,可用做實時測控系統(tǒng)的采樣信號等;有的實時時鐘芯片內(nèi)部還帶有非易失性RAM,可用來存放需長期保存但有時也需變更的數(shù)據(jù),由于功能完善,精度高,軟件程序設(shè)計相對簡單,且計時不占用CPU時間,因此,在工業(yè)實時測控系統(tǒng)中多采用這一類專用芯片來實現(xiàn)實時時鐘功能。</p><p>  利用單片機內(nèi)部的

18、定時/計數(shù)器進行中斷定時,配合軟件延時實現(xiàn)時、分、秒的計時及秒表計時。該方案節(jié)省硬件成本,且能使設(shè)計者對單片機的指令系統(tǒng)能有更深入的了解,從而掌握單片機應(yīng)用技術(shù)MCS-51匯編語言程序設(shè)計方法,因此,本系統(tǒng)設(shè)計采用此種軟件控制方法來實現(xiàn)計時。而由于Atmel公司的AT89C51是一種自帶4KB Flash存儲器的低電壓、高性能的CMOS 8位微處理器。該器件采用Atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸

19、出引腳相兼容。AT89C51將多功能8位CPU和閃存集成在單個芯片中,是一種高效的微控制器,使用也更方便,壽命更長,可以反復(fù)擦除1000次。形成了功能強大、使用靈活和具有較高性能價格比的微控制器。它的功能強大,而且也比較容易購買,故本設(shè)計中所選的單片機為AT89C51單片機。</p><p><b>  2.2 系統(tǒng)框圖</b></p><p>  按照系統(tǒng)設(shè)計功能的

20、要求,初步確定系統(tǒng)由主控模塊、時控模塊、及顯示模塊和鍵盤接口模塊共4個模塊組成。主控芯片使用51系列AT89C51單片機,時鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘DS1302。采用DS1302作為計時芯片,可以做到計時準確。更重要的是,DS1302可以在很小電流的后備電源(2.5~5.5V電源,再2.5V時耗電小于300nA),而且DS1302可以編程選擇多種充電電流來為后備電源進行慢速充電,可以保證

21、后備電源基本不耗電。顯示模塊采用普通的液晶顯示屏(LCD)設(shè)計框圖如圖1.1所示。</p><p>  圖2.2 設(shè)計方案框圖</p><p>  2.3 核心芯片簡介</p><p>  2.3.1 DS1302簡介</p><p>  DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘芯片,它可以對年、月、日、

22、周日、時、分、秒進行計時,且具有閏年補償功能,工作電壓寬達2.5~5.5V。時鐘可工作在24小時格式或12小時(AM/PM)格式。 DS1302與單片機的接口使用同步串行通信,僅用3條線與之相連接??刹捎靡淮蝹魉鸵粋€字節(jié)或突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,

23、同時提供了對后背電源進行涓細電流充電的能力。</p><p>  2.3.2 AT89C51簡介</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的

24、單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p>  3 智能電子鐘軟硬件電路的設(shè)計

25、</p><p><b>  3.1 硬件設(shè)計</b></p><p>  該設(shè)計的硬件電路由主控部分(單片機AT89C51)、計時部分(實時時鐘芯片DS1302)、顯示部分(八段數(shù)碼管)、電源部分(三端穩(wěn)壓器7805)、時鐘電路5個部分組成。各部分之間相互協(xié)作,構(gòu)成一個統(tǒng)一的有機整體,實現(xiàn)數(shù)字時鐘的功能。各部分的硬件電路設(shè)計如下。設(shè)計總電路圖見附錄一。</p&

26、gt;<p>  3.1.1 復(fù)位電路設(shè)計</p><p>  單片機AT89C51作為主控芯片,控制整個電路的運行。單片機外圍需要一個復(fù)位電路,復(fù)位電路的功能是:系統(tǒng)上電時提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤消復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。該設(shè)計采用含有二極管的復(fù)位電路,復(fù)位電路可以有效的解決電源毛刺和電源緩

27、慢下降(電池電壓不足)等引起的問題,在電源電壓瞬間下降時可以使電容迅速放電,一定寬度的電源毛刺也可令系統(tǒng)可靠復(fù)位。復(fù)位電路的設(shè)計圖如圖2所示:</p><p>  圖3.1.1 單片機復(fù)位電路圖</p><p>  AT89C51具有在系統(tǒng)可編程功能,可以很方便的改寫單片機存儲器內(nèi)的程序不需要把芯片中從工作環(huán)境中剝離,把AT89C51下載口接入電路,可使電路實現(xiàn)該功能。AT89C51需要接

28、入一個普通12MHz晶振,為其提供穩(wěn)定的時鐘脈沖。該設(shè)計中有6個八段數(shù)碼顯示管LED,所以,在單片機AT89C51外圍需要接入6個三極管來驅(qū)動數(shù)碼顯示管。此外,單片機外圍需要接入3個開關(guān),用來調(diào)整時鐘。單片機外圍電路的設(shè)計圖如圖2.2示:</p><p>  3.1.2 DS1302與單片機的接口設(shè)計</p><p>  時鐘芯片DS1302與單片機AT89C51的接口是由3條線來完成的,

29、單片機AT89C51的P1.0與時鐘芯片的數(shù)據(jù)傳輸端相連,P1.1用來作為DS1302輸入時鐘SCLK控制端,P1.2控制DS1302的復(fù)位輸入端。DS1302接標準32.768KHz石英晶振。DS1302與單片機的接口電路如圖2.3所示。</p><p>  圖3.1.2 DS1302與AT89C51連接圖</p><p>  3.1.3 LED顯示設(shè)計</p><p

30、>  八段數(shù)碼顯示管有兩種,一種是共陽數(shù)碼管,其內(nèi)部是由八個陽極相連接的發(fā)光二極管組成;另一種是共陰數(shù)碼管,其內(nèi)部是由八個陰極相連接的發(fā)光二極管組成。二者原理不同但功能相同。本設(shè)計的時間顯示選用6個共陰八段數(shù)碼管LED,其外形和內(nèi)部結(jié)構(gòu)如圖3.1.3所示:</p><p>  圖3.1.3 八段共陰數(shù)碼管LED</p><p>  3.1.4 電源設(shè)計</p><

31、p>  時鐘芯片DS1302有很寬的工作電壓范圍,其工作電壓為2.5~5.5V。單片機AT89C51的工作電壓范圍相對較窄,為4.0~5.5V,所以本設(shè)計中,給電路接入三端穩(wěn)壓器7805,利用它的穩(wěn)壓功能給電路提供穩(wěn)定的+5V電壓,使電路的工作保持很高的可靠性。在電路中接入一個發(fā)光二極管作為指示燈,可以很方便地指示電源與電路是否接通。該設(shè)計的電源部分如圖2.5所示。</p><p>  圖3.1.4 電源電

32、路圖</p><p>  3.1.5 按鍵開關(guān)去抖設(shè)計</p><p>  按鍵開關(guān)在電路中的連接如圖所示。按鍵未按下時,A點電位為高電平5V;按鍵按下時,A點電位為低電平。A點電位就用于向CPU傳遞按鍵的開關(guān)狀態(tài)。但是由于按鍵的結(jié)構(gòu)為機械彈性開關(guān),在按鍵按下和斷開時,觸點在閉合和斷開瞬間還會接觸不穩(wěn)定,引起A點電平不穩(wěn)定,如圖2.6所示,鍵盤的抖動時間一般為5~10ms,抖動現(xiàn)象會引起C

33、PU對一次鍵操作進行多次處理,從而可能產(chǎn)生錯誤。因此必須設(shè)法消除抖動的不良后果。</p><p>  圖2.6 鍵操作和鍵抖動</p><p>  消除抖動的不良后果的方法有硬、軟件兩種。</p><p>  為了節(jié)省硬件,通常在單片機系統(tǒng)中,一般不采用硬件方法消除鍵的抖動,而是用軟件消除抖動的方法。根據(jù)抖動特性,在第一次檢測到按鍵按下后,執(zhí)行一段延時5~10ms讓

34、前延抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認真正有鍵按下。當檢測到按鍵釋放后,也要給5~10ms的延時,待后延抖動消失后才轉(zhuǎn)入該鍵處理程序。</p><p>  3.1.6 時鐘電路的設(shè)計</p><p>  使用串行接口時鐘芯片DS1302設(shè)計時鐘電路。該設(shè)計方案以單片機AT89S51為主控芯片,以串行時鐘芯片DS1302為核心計時芯片,組成數(shù)字時鐘電路。該電路不但能

35、準確地計時、附加其它功能,而且,其三線接口可以節(jié)省接口資源,在斷電后不丟失時間和數(shù)據(jù)信息。該設(shè)計方案的接口電路如圖2.7所示。</p><p>  圖3.1.6 DS1302接口電路</p><p>  3.1.7 電路總原理圖設(shè)計</p><p>  圖3.1.7 總原理圖</p><p><b>  3.2 軟件設(shè)計</b

36、></p><p>  電子時鐘的程序主要包括3個方面的內(nèi)容:一是DS1302從單片機中讀取數(shù)據(jù)進行計數(shù),二是利用按鍵進行時間的調(diào)整,三是單片機中讀取DS1302中的數(shù)據(jù)驅(qū)動LED數(shù)碼管顯示時間。AT89C51單片機主要I/O口的分配:P10、P11、P12分別接時鐘芯片的SCLK、I/O、RST引腳,P13、P14接兩個獨立按鍵。</p><p>  3.2.1 流程圖

37、 </p><p>  本次設(shè)計的系統(tǒng)軟件設(shè)計主要包括主程序設(shè)計和各個計時子模塊、和按鍵控制子模塊程序以及報警模塊。主程序主要完成器件的初始化,并判斷有無按鍵按下,并根據(jù)判斷的結(jié)果調(diào)用相應(yīng)的子模塊程序;計時子模塊程序和日歷日期數(shù)據(jù)子模塊程序完成相應(yīng)的數(shù)據(jù)采集、處理和保存,按鍵處理子模塊程序完成日期和鬧鐘的設(shè)置,其各流程圖如下:</p><p>  圖3.2.1 主流

38、程圖</p><p>  圖3.2.1 時間調(diào)整程序流程圖</p><p>  4 protues仿真與調(diào)試</p><p><b>  4.1 電路的仿真</b></p><p>  利用keil軟件編寫源程序。在protues中畫好其電路圖如下圖3.1所示。</p><p>  圖4.1 電路

39、板的仿真圖</p><p><b>  4.2 軟件調(diào)試</b></p><p>  在硬件調(diào)試完畢的基礎(chǔ)上,需要進一步完善程序,也就是進入軟件調(diào)試階段。在本設(shè)計中,軟件調(diào)試主要分兩大部分:實時時鐘日歷子程序調(diào)試、按鍵子程序調(diào)試。將這兩部分調(diào)試成功,那么整個設(shè)計的軟件部分也就基本完成了。</p><p>  目前設(shè)計過程中容易造成元件和儀器儀表

40、的損壞,而借助Keil和Proteus進行單片機系統(tǒng)的開發(fā),可以節(jié)省設(shè)計成本,提高設(shè)計速度。</p><p>  Keil軟件包是一個功能強大的開發(fā)平臺,它包括項目管理器、CX51編譯器、AX51宏匯編器、BL51/LX51連接定位器、RTX51實時操作系統(tǒng)、Simulator軟件模擬器及Monitor51硬件目標調(diào)試器。它是一種集成化程度高的文件管理編譯環(huán)境,主要功能為編譯C語言源程序,匯編程序或混合語言源程序

41、,連接和定位目標文件和庫,創(chuàng)建HEX文件,調(diào)試目標程序等。Keil是目前最好的51單片機開發(fā)工具之一。Keil支持軟件模擬仿真(Simulator)和用戶目標調(diào)試(Monitor51)兩種工作模式。前者不需要任何單片機硬件即可完成用戶程序仿真、調(diào)試,后者利用硬件目標板中的監(jiān)控程序可以直接調(diào)試目標硬件系統(tǒng)。</p><p>  Proteus是一個完整的嵌入式系統(tǒng)軟件、硬件設(shè)計仿真平臺,它包括原理圖輸入系統(tǒng)ISIS

42、、帶擴展的Prospice混合模型仿真器、動態(tài)元件庫、高級圖形分析模塊和處理器虛擬系統(tǒng)仿真模型VSM。ISIS是Proteus系統(tǒng)的中心,具有超強的控制原理設(shè)計環(huán)境。ProteusVSM最重要的特點是能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數(shù)字元件協(xié)同仿真,仿真執(zhí)行目標碼就像在真正的單片機系統(tǒng)上運行一樣,VSM CPU模型能完整仿真I/O接口、中斷、定時器、通用外部設(shè)備口及其他與CPU有關(guān)的外部設(shè)備,甚至能仿真多個處理器

43、。</p><p><b>  5 結(jié)論</b></p><p>  本次課程設(shè)計是繼前兩次課程設(shè)計以來的又一次課程設(shè)計,因此在這次的設(shè)計中我感覺比之前也得心應(yīng)手了不少,單片機的課程設(shè)計需要結(jié)合各方面的知識與總結(jié)。</p><p>  這次的課程設(shè)計在小組內(nèi)進行,我們分工明確,從繪制原理圖開始就是我們從平時的學(xué)習(xí)生活中得出來的經(jīng)驗總結(jié),到最后的

44、程序編寫,程序仿真知道最后仿真成功的那一刻我深深體會到成功多么的來之不易。</p><p>  在這次的調(diào)試過程中,我們多次遇到了難以解決的問題,但我們并沒有氣餒,重新分析,檢查遺漏,很多時候都是因為我們粗心造成的,問題得以解決,我們的心情也會大為愉快,后來我們每個步驟都小心謹慎,設(shè)計進度也就大大加快。我也明白了課程設(shè)計就是對我們學(xué)習(xí)成果的一個總結(jié),這次給我最大的收獲就是讓我知道了對待任何事物必須要有嚴謹?shù)膽B(tài)度,

45、我們只有學(xué)會基礎(chǔ)知識才能進一步掌握更深的學(xué)問。</p><p><b>  參考文獻</b></p><p>  [1] 辜承林,陳喬夫. 電機學(xué).華中科技大學(xué)出版社.2010</p><p>  [2] 徐瑋. C51單片機高效入門. 機械工業(yè)出版社.2007</p><p>  [3] 黃明強.DS1302在單片機

46、系統(tǒng)中的應(yīng)用[J].保定師范??茖W(xué)校學(xué)報,2004,17(2)</p><p>  [4]孫雪梅,范久臣.實時時鐘芯片在單片機系統(tǒng)中的應(yīng)用[J].沈陽教育學(xué)院學(xué)報,2005,7(2)</p><p><b>  附 錄</b></p><p><b>  源程序</b></p><p><b

47、>  用C語言編寫:</b></p><p>  #include<reg52.h></p><p>  #include"LCD.h"</p><p>  uchar keydown()</p><p><b>  {</b></p><p> 

48、 uchar i = 0;</p><p>  uchar key = P2 & 0x0f;</p><p>  if((P2&0x0f) != 0x0f)</p><p><b>  {</b></p><p>  delayMs(10);</p><p>  if((P2&am

49、p;0x0f) != 0x0f)</p><p><b>  {</b></p><p>  key = P2 & 0x0f;</p><p>  while((P2&0x0f) != 0x0f);</p><p>  switch(key)</p><p><b>  

50、{</b></p><p>  //Key1~4 接P2.4~7</p><p>  case 0x0e: return 1;</p><p>  case 0x0d: return 2;</p><p>  case 0x0b: return 3;</p><p>  case 0x07: return

51、4;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</

52、b></p><p>  /***********************************************</p><p><b>  顯示時鐘</b></p><p>  ***********************************************/</p><p>  void

53、 showClock()</p><p><b>  {</b></p><p>  uchar i = 0;</p><p>  LCDclear();</p><p>  for(; i<6; i++)</p><p><b>  {</b></p>

54、<p>  displayField(i);</p><p><b>  }</b></p><p>  displaySpan('-', ':');</p><p>  TMOD=0x01;</p><p>  TH0=(65536-50000)/256;</p>

55、<p>  TL0=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b&g

56、t;</p><p>  /***********************************************</p><p><b>  中斷加時間</b></p><p>  ************************************************/</p><p>  void

57、time0() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL1=(65536-50000)%256;</p><p>  countTimer ++;</p><p>  if(count

58、Timer == 20)</p><p><b>  {</b></p><p>  countTimer = 0;</p><p>  autoAdd1Sec();</p><p><b>  }</b></p><p><b>  }</b><

59、;/p><p>  void showLogo(uchar logo[])</p><p><b>  {</b></p><p>  LCDclear();</p><p>  displayStr(logo,0,0);</p><p><b>  }</b></p>

60、;<p>  void refreshPage()</p><p><b>  {</b></p><p>  if(g_year != g_LCDyear)</p><p><b>  {</b></p><p>  g_LCDyear = g_year;</p>&l

61、t;p>  displayField(e_year);</p><p><b>  }</b></p><p>  if(g_mon != g_LCDmon)</p><p><b>  {</b></p><p>  g_LCDmon = g_mon;</p><p>

62、;  displayField(e_mon);</p><p><b>  }</b></p><p>  if(g_day != g_LCDday)</p><p><b>  {</b></p><p>  g_LCDday = g_day;</p><p>  disp

63、layField(e_day);</p><p><b>  }</b></p><p>  if(g_hou != g_LCDhou)</p><p><b>  {</b></p><p>  g_LCDhou = g_hou;</p><p>  displayFiel

64、d(e_hou);</p><p><b>  }</b></p><p>  if(g_min != g_LCDmin)</p><p><b>  {</b></p><p>  g_LCDmin = g_min;</p><p>  displayField(e_min

65、);</p><p><b>  }</b></p><p>  if(g_sec != g_LCDsec)</p><p><b>  {</b></p><p>  g_LCDsec = g_sec;</p><p>  displayField(e_sec);</

66、p><p><b>  }</b></p><p><b>  }</b></p><p>  void changeClock()</p><p><b>  {</b></p><p>  uchar count = 0;</p><

67、p>  uchar key;</p><p><b>  TR0 = 0;</b></p><p>  initCousorXY();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p> 

68、 refreshPage();</p><p><b>  key = 0;</b></p><p>  writeCmd(0x0E);//顯示,開光標并閃爍</p><p>  moveCousor(g_cousorx[count],g_cousory[count]);</p><p>  key = keydown(

69、);</p><p>  if(key == 2)</p><p><b>  {</b></p><p><b>  count ++;</b></p><p><b>  }</b></p><p>  if(key == 3)</p>

70、<p><b>  {</b></p><p>  addClkField(count);</p><p><b>  }</b></p><p>  if(key == 4)</p><p><b>  {</b></p><p>  su

71、bClkField(count);</p><p><b>  }</b></p><p>  writeCmd(0x0c);//關(guān)光標</p><p>  if(count >= 6)</p><p><b>  break;</b></p><p><b&g

72、t;  }</b></p><p><b>  TR0 = 1;</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  uchar mode

73、= 0;//0:顯示Logo,1:顯示時間</p><p>  uchar i = 0;</p><p>  uchar movelen;</p><p>  uchar logo[] = " welcome!";</p><p>  uchar move[] = "Tt could be better,b

74、ut I'm busy."; //貌似最長只能40字節(jié)</p><p>  //uchar move[] = "(*^_^*)";</p><p>  movelen = sizeof(move)-1;</p><p>  setDateTime(2013,9,12,18,23,14);</p><p>

75、  LCDinit();</p><p>  LCDclear();</p><p>  showLogo(logo);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  switch(keydown())<

76、;/p><p><b>  {</b></p><p>  case 1: mode = ! mode;</p><p>  if(mode == 1)</p><p><b>  {</b></p><p>  showClock();</p><p>

77、<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  showLogo(logo);</p><p><b>  }</b></p><p><b&

78、gt;  break;</b></p><p>  case 2:if(mode == 1)</p><p><b>  {</b></p><p>  changeClock();</p><p><b>  }</b></p><p><b> 

79、 break;</b></p><p>  default: break;</p><p><b>  }</b></p><p>  if(mode == 1)</p><p>  refreshPage();</p><p><b>  else</b><

80、;/p><p><b>  {</b></p><p>  displayStr(move,1,15-i);</p><p>  displayStr(" ",1,15+movelen-i);</p><p><b>  }</b></p><p><b

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論