單片機(jī)課程設(shè)計(jì)帶有l(wèi)cd顯示的音樂倒數(shù)計(jì)數(shù)器_第1頁
已閱讀1頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《單片微型計(jì)算機(jī)與接口技術(shù)》</p><p><b>  ——課程設(shè)計(jì)</b></p><p>  項(xiàng) 目_帶有LCD顯示的音樂倒數(shù)計(jì)數(shù)器 </p><p>  拓 展 萬年歷、鬧鐘 </p><p>  年級(jí)班別__ <

2、;/p><p>  姓名學(xué)號(hào) </p><p>  指導(dǎo)教師 老師 </p><p><b>  2012年12月</b></p><p><b>  目錄</b></p><p><b&

3、gt;  摘要 1</b></p><p><b>  一 前言 2</b></p><p>  1.1 設(shè)計(jì)概括 2</p><p>  1.2 設(shè)計(jì)要求 2</p><p><b>  二 系統(tǒng)設(shè)計(jì) 3</b></p><p>  2.1 方案

4、選擇 3</p><p>  2.2 系統(tǒng)框圖設(shè)計(jì) 4</p><p><b>  三 硬件設(shè)計(jì) 4</b></p><p>  3.1 整體硬件電路圖 5</p><p>  3.2 STC89C51單片機(jī)6</p><p>  3.2.1 STC89C51單片機(jī)主要性能參數(shù) 6

5、</p><p>  3.2.2 STC89C51單片管腳說明7</p><p>  3.2.3 單片機(jī)時(shí)鐘電路 10</p><p>  3.2.4 單片機(jī)復(fù)位電路 10</p><p>  3.2.5 本設(shè)計(jì)所使用功能 11</p><p>  3.3 STC15F104單片機(jī) 11 </p&g

6、t;<p>  3.4 STC15F104單片機(jī) 13</p><p>  3.5 gdm 1602 LCD 14</p><p>  四 系統(tǒng)控制及軟件設(shè)計(jì) 15</p><p>  4.1 系統(tǒng)控制流程圖 15</p><p>  4.2 控制操作及功能 15</p><p>  4

7、.2.1 控制說明 15</p><p>  4.2.2 設(shè)置萬年歷 16</p><p>  4.2.3 設(shè)置鬧鐘 17</p><p>  4.3對(duì)應(yīng)功能編程 17</p><p>  4.3.1 STC89C51主函數(shù) 17</p><p>  4.3.2 LCD功能的頭文件 17</

8、p><p>  4.3.3 按鍵調(diào)整的頭文件 19</p><p>  4.3.4 萬年歷運(yùn)行頭文件 27</p><p>  4.3.5 鬧鐘運(yùn)行頭文件 30</p><p>  4.5.7 STC15F104主函數(shù) 33</p><p>  五 調(diào)試和燒錄35</p><p>

9、;  5.1 編程工具—C51語言35</p><p>  5.2 程序調(diào)試工具—KEIL 35</p><p>  5.3 單片機(jī)仿真軟件在線調(diào)試—PROTEUS 35</p><p>  5.4 調(diào)試總結(jié) 36</p><p>  六 制作感想 36</p><p>  七 參考文獻(xiàn) 37<

10、/p><p><b>  摘 要</b></p><p>  本設(shè)計(jì)是以STC89C52單片微型計(jì)算機(jī)為中心,及STC15F104單片微型計(jì)算機(jī)為輔的簡單電路設(shè)計(jì),通過按鍵輸入,GDM1602LCD顯示器及揚(yáng)聲器輸出,實(shí)現(xiàn)萬年歷、可調(diào)定時(shí)鬧鐘、音樂鬧鈴等功能。LCD顯示為可切換的萬年歷模式和鬧鐘模式,萬年歷模式為顯示年、月、星期、日、時(shí)、分、秒;鬧鐘模式為顯示萬年歷對(duì)應(yīng)

11、的時(shí)、分、秒和設(shè)定時(shí)常倒數(shù)的時(shí)、分、秒。鬧鈴為可編程的《世上只有媽媽好》音樂頻率。</p><p>  主要輔助工具:編程:Keil uVision2;仿真:proteus;程序燒:PZISP;實(shí)物調(diào)試:普中科技單片機(jī)開發(fā)實(shí)驗(yàn)儀HC6800EM3。</p><p>  關(guān)鍵字:萬年歷;可調(diào)定時(shí)鬧鐘;音樂鬧鈴;STC89C52;STC15F104; GDM1602LC

12、D;Keil uVision2;proteus;HC6800EM3;</p><p><b>  一、前言</b></p><p><b>  1.1 設(shè)計(jì)概述</b></p><p>  20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展。在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透到了社會(huì)的各個(gè)領(lǐng)域,有力的推動(dòng)和提高了社會(huì)生產(chǎn)力的發(fā)展與信息化程

13、度。同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提升,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。</p><p>  隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)數(shù)字鐘的要求越來越高,多功能數(shù)字鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化。數(shù)字鐘實(shí)際上是一個(gè)對(duì)標(biāo)準(zhǔn)頻率進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路,走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校。單片計(jì)算機(jī)即單片微型計(jì)算機(jī),是集CPU,RAM,ROM,定時(shí)/計(jì)數(shù)和多種接口于一體的微控制器。它體積小成本低,功能強(qiáng),廣

14、泛應(yīng)用于智能產(chǎn)品和工業(yè)自動(dòng)化上。由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超多老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大地方便,而且大大的擴(kuò)展了鐘表原先的報(bào)時(shí)功能,諸如定時(shí)自動(dòng)報(bào)警、0按時(shí)自動(dòng)打鈴、定時(shí)廣播、自動(dòng)啟閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以數(shù)字化為基礎(chǔ)的,因此研究數(shù)字鐘及擴(kuò)大其應(yīng)用有著非?,F(xiàn)實(shí)的意義。</p><p>  本設(shè)

15、計(jì)是以STC89C52單片微型計(jì)算機(jī)為中心電路,及STC15F104單片微型計(jì)算機(jī)為輔助電路的簡單電路設(shè)計(jì),通過按鍵輸入,GDM1602LCD顯示器及揚(yáng)聲器輸出,實(shí)現(xiàn)萬年歷、可調(diào)定時(shí)鬧鐘、音樂鬧鈴等功能。LCD顯示為可切換的萬年歷模式和鬧鐘模式,萬年歷模式為顯示年、月、星期、日、時(shí)、分、秒;鬧鐘模式為顯示萬年歷對(duì)應(yīng)的時(shí)、分、秒和設(shè)定時(shí)常倒數(shù)的時(shí)、分、秒。鬧鈴為可編程的《世上只有媽媽好》音樂頻率。</p><p>

16、  當(dāng)設(shè)置好的倒數(shù)時(shí)間,倒數(shù)到零的時(shí)候,STC89C52單片微型計(jì)算機(jī)將連續(xù)輸出一低電平信號(hào),觸發(fā)STC15F104單片微型計(jì)算機(jī),使其輸出一定的音樂頻率控制揚(yáng)聲器,音樂鬧鈴將響起。</p><p><b>  1.2 設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)任務(wù):利用89C51單片機(jī)結(jié)合字符型LCD顯示器設(shè)計(jì)一個(gè)簡易的倒數(shù)計(jì)數(shù)器,可用來煮方便面、煮開水或小睡片刻等

17、。做一小段時(shí)間倒計(jì)數(shù), 當(dāng)?shù)褂?jì)數(shù)為0時(shí),則發(fā)出一段音樂聲響,通知倒計(jì)數(shù)終了,該做應(yīng)當(dāng)做的事。</p><p>  設(shè)計(jì)要求:定時(shí)鬧鐘的基本功能如下:</p><p>  ( 字符型LCD(16×2)顯示器。</p><p>  ( 顯示格式為“TIME 分分:秒秒”。</p><p>  用4個(gè)按鍵操作來設(shè)置當(dāng)前想要倒計(jì)數(shù)的時(shí)間。&

18、lt;/p><p>  一旦按下鍵則開始倒計(jì)數(shù),當(dāng)計(jì)數(shù)為0時(shí),發(fā)出一陣音樂聲。</p><p>  程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開始執(zhí)行,按下操作鍵K1~K4動(dòng)作如下。</p><p>  K1——可調(diào)整倒計(jì)數(shù)的時(shí)間1~60分鐘。</p><p>  (2)K2——設(shè)置倒計(jì)數(shù)的時(shí)間為5分鐘,顯示“0500”。</p>&

19、lt;p> ?。?)K3——設(shè)置倒計(jì)數(shù)的時(shí)間為10分鐘,顯示“1000”。</p><p> ?。?)K4——設(shè)置倒計(jì)數(shù)的時(shí)間為20分鐘,顯示“2000”。</p><p>  復(fù)位后LCD的畫面應(yīng)能顯示倒計(jì)時(shí)的分鐘和秒數(shù),此時(shí)按K1鍵,則在LCD上顯示出設(shè)置畫面。此時(shí),若:</p><p> ?。?)按操作鍵K2——增加倒計(jì)數(shù)的時(shí)間1分鐘。</p>

20、;<p>  (2)按操作鍵K3——減少倒計(jì)數(shù)的時(shí)間1分鐘。</p><p> ?。?)按操作鍵K4——設(shè)置完成。</p><p><b>  可擴(kuò)充功能:</b></p><p>  增加時(shí)鐘及鬧鈴功能。</p><p><b>  增加秒表計(jì)數(shù)功能。</b></p>

21、<p>  增加萬年歷顯示“年月日”。</p><p>  增加多組倒計(jì)數(shù)功能。</p><p><b>  二 系統(tǒng)設(shè)計(jì)</b></p><p><b>  2.1 方案選擇</b></p><p><b>  方案一</b></p><p>

22、;  直接按要求完成老師的要求。這個(gè)方案相對(duì)很簡單,簡簡單單的按鍵控制,相對(duì)于40腳多功能的強(qiáng)大STC89C51來說是很大程度上的浪費(fèi)。對(duì)于自己剛剛學(xué)到的單片機(jī)只是很多都用不上,也造成了實(shí)踐不到位,從而沒無法達(dá)到老師期望的理論與實(shí)踐結(jié)合,徹底把握簡單的微型計(jì)算機(jī)的控制。</p><p><b>  方案二</b></p><p>  達(dá)到老師的要求以外,添加生活上可以

23、利用到的功能,如:萬年歷、鬧鐘等等。但出現(xiàn)了個(gè)嚴(yán)重問題:非系統(tǒng)性的編程,單片機(jī)無法同時(shí)進(jìn)行多種應(yīng)用運(yùn)行,也就是只能單步進(jìn)行。但在鬧鐘響起的時(shí)候,不能讓編程跳出萬年歷運(yùn)作,執(zhí)行音樂程序,因此需要外置音樂模塊。則再分兩個(gè)小方案:</p><p>  1)使用外置的固定音樂模塊,即直接購買商家做好的模塊,這樣就減少了制作的難度,但成本高。</p><p>  2)再增加一片微型計(jì)算機(jī)。經(jīng)過設(shè)計(jì)考

24、慮,使用廉價(jià)性能好且容易控制的STC15F104單片微型計(jì)算機(jī),經(jīng)過編程產(chǎn)生音樂頻率取代外置音樂模塊。</p><p>  2.2 系統(tǒng)框圖設(shè)計(jì)</p><p>  本項(xiàng)目的系統(tǒng)設(shè)計(jì)框圖如圖2-1所示:</p><p><b>  圖2-1 系統(tǒng)框圖</b></p><p>  通過方案的選擇,設(shè)計(jì)了上面的系統(tǒng)框圖。由系

25、統(tǒng)框圖可看出,本設(shè)計(jì)由單片機(jī)AT89C51、STC15F104;LCD液晶顯示器、控制鍵盤、蜂鳴器、復(fù)位單路和定時(shí)器電路幾大模塊構(gòu)成。</p><p><b>  三 硬件設(shè)計(jì)</b></p><p>  本章主要講以STC89C52單片微型計(jì)算機(jī)為中心電路,及STC15F104單片微型計(jì)算機(jī)為輔助電路電路硬件設(shè)計(jì)。主要硬件電路有:鍵盤控制電路、顯示電路、復(fù)位電路、音

26、樂電路等。</p><p>  3.1 整體硬件電路圖 </p><p>  圖3-1 接通電源初始化模式</p><p>  圖 3-2 設(shè)置好時(shí)間的顯示 圖3-3 鬧鐘模式的顯示</p><p>  由圖3-1我們可以清楚地看到,本電路控制核心是STC89C51芯片。該方案通過九個(gè)按鍵進(jìn)行控制,采用LCD1602顯示

27、,雙行顯示,位數(shù)足夠多,并且容易控制,占用CPU的時(shí)間少,每次進(jìn)行使能設(shè)置,把一個(gè)數(shù)據(jù)送到外部接口即可。</p><p>  3.2 STC89C51單片機(jī) </p><p>  STC89C51是采用8051核的ISP(In System Programming)在系統(tǒng)可編程芯片,最高工作時(shí)鐘頻率為80MHz,片內(nèi)含4K Bytes的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)

28、器,具有標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,具有在系統(tǒng)可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進(jìn)單片機(jī)內(nèi)部,省去了購買通用編程器,而且速度更快。STC89C51系列單片機(jī)是單時(shí)鐘/ 機(jī)器周期(1T)的兼容8051 內(nèi)核單片機(jī),是高速/ 低功耗的新一代8051 單片機(jī),AT89C51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。

29、</p><p>  3.2.1 STC89C51單片機(jī)主要性能參數(shù) </p><p>  STC89C51單片機(jī)的主要性能特點(diǎn)有:</p><p>  1.具有MCS-51產(chǎn)品指令系統(tǒng)</p><p>  2.4字節(jié)可重擦寫Flash閃速存儲(chǔ)器</p><p>  3.1000次擦寫周期</p>

30、<p>  4.全靜態(tài)操作:0Hz-24Hz</p><p>  5.三級(jí)加密程序存儲(chǔ)器</p><p>  6.128*8字節(jié)內(nèi)部RAM</p><p>  7.32個(gè)可編程I/O口線,2個(gè)16位定時(shí)/計(jì)數(shù)器,6個(gè)中斷源</p><p>  8.可編程串行UART通道</p><p>  9.低功耗空閑

31、和掉電模式。空閑方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器、串行通信口及中斷系統(tǒng)斷續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一個(gè)硬件復(fù)位。</p><p>  10.一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路</p><p>  STC89C51單片機(jī)的引腳封裝如圖3-2所示。</p><p>  圖3-4STC89C51

32、的引腳排列</p><p>  3.2.2 STC89C51單片機(jī)管腳說明</p><p><b>  VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p>  P0:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電路。當(dāng)P0口的管腳每一次寫1時(shí)

33、,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在FLASH編程時(shí),P0口作為原碼輸入口,當(dāng)FLASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻。</p><p>  P1:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸引或輸出電源)4個(gè)PPL邏輯門電路.對(duì)端口寫”1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因

34、為內(nèi)部存在上拉電阻,某個(gè)引腳被外部信呈拉低時(shí)會(huì)輸出一個(gè)電流。Flash編程和程序校驗(yàn)期間,P1接收低8位地址。</p><p>  P2:P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸引或輸出電源)4個(gè)PPL邏輯門電路。對(duì)端口寫”1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信呈拉低時(shí)會(huì)輸出一個(gè)電流。</p>

35、<p>  在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @R1指令)時(shí),P2口線上的內(nèi)容(也即特殊功能寄存器區(qū)中R2寄存器的內(nèi)容),在整個(gè)訪問期間不會(huì)改變。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其他控制信號(hào)。</p><p>  P3:P3口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O

36、口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸引或輸出電源)4個(gè)PPL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉低的P3口將用上拉電阻輸出電流。</p><p>  P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表3.1所示:</p><p><b>  表3.1</b></p><p> 

37、 P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。</p><p>  RST:復(fù)位輸入,當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。</p><p>  ALE//PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它

38、可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。</p><p>  對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(/PROG)。</p><p>  如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程

39、序時(shí),應(yīng)設(shè)置ALE無效。</p><p>  /PSEN:程序儲(chǔ)存允許(/PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C51由自問程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次/PSEN有次,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部程序存儲(chǔ)器時(shí),這兩次有次的/PSEN信號(hào)不出現(xiàn)。</p><p>  /EA/Vpp:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FF

40、FFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p>  如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部存儲(chǔ)器中的指令。</p><p>  Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p

41、><p>  XTAL2:振蕩器反向放大器的輸出端。</p><p>  3.2.3 STC89C51單片機(jī)最小系統(tǒng)的設(shè)計(jì)</p><p>  STC89C51單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3, MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。</p><p&

42、gt;  單片機(jī)的最小系統(tǒng)如圖3-5所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。結(jié)合本設(shè)計(jì)的要求采用內(nèi)部振蕩方式,所選的晶振為12MHz。第9引腳為復(fù)位輸入端,接上電容,電阻構(gòu)成上電復(fù)位電路。</p><p>  圖3-5 單片機(jī)最小系統(tǒng)</p><p>

43、;  3.2.3 單片機(jī)時(shí)鐘電路</p><p>  AT89C52單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。在本設(shè)計(jì)中,采用內(nèi)部振蕩方式。電路見圖3-6所示。</p><p>  圖3-6 時(shí)鐘電路圖</p><p>  單片機(jī)引腳XTAL1和XTAL2外接晶振12MHz,構(gòu)成了內(nèi)部振蕩方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶

44、振后,就構(gòu)成了自激振蕩,并產(chǎn)生振蕩時(shí)鐘脈沖。電容器C1、C2起穩(wěn)定振蕩頻率,快速起振作用。電容值一般為5-30pF,內(nèi)容振蕩方式所得時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)用電路中使用較多。</p><p>  3.2.4 單片機(jī)復(fù)位電路</p><p>  本設(shè)計(jì)系統(tǒng)的復(fù)位電路見圖3-7所示。</p><p><b>  圖3-7復(fù)位電路圖</b></p&

45、gt;<p>  復(fù)位操作完成單片機(jī)內(nèi)電路的初始化,使單片機(jī)從一種確定的狀態(tài)開始運(yùn)行。當(dāng)STC89C51單片機(jī)的復(fù)位引腳RST出現(xiàn)5ms以上的高電平時(shí),單片機(jī)就完成了復(fù)位電路操作。需要注意的是,如果RST持續(xù)為高電平,單片機(jī)就會(huì)處于循環(huán)復(fù)位狀態(tài),而無法執(zhí)行程序。因此,要求單片機(jī)復(fù)位后能夠脫離復(fù)位狀態(tài)。本系統(tǒng)的復(fù)位電路采用上電開關(guān)復(fù)位電路。上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已經(jīng)在運(yùn)行時(shí),按下復(fù)位鍵也能

46、使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作。通常選擇C=10-30uF,R=10K?。</p><p>  3.2.5 本設(shè)計(jì)所使用功能</p><p>  在本設(shè)計(jì)中,使用了單片機(jī)的最小系統(tǒng),復(fù)位電路和內(nèi)部震蕩方式。使用了P0端口作為LCD的數(shù)據(jù)輸出端, P2端口作為LCD的使能端選擇輸出端,使用了P1端口和P2.0接控制按鍵,實(shí)現(xiàn)置數(shù)、功能切換等。P3.0作為STC15

47、F104的觸發(fā)端,使STC15F104得PB.2輸出音樂頻率。</p><p>  3.3 STC15F104單片機(jī)</p><p>  1.1 STC15F100系列單片機(jī)簡介 STC15F100系列單片機(jī)是STC生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/高可靠/低功耗超強(qiáng)抗干擾的新一代8051單片機(jī)。,采用第八代加密技術(shù),加密性超強(qiáng),指令代碼完全兼容傳統(tǒng)8051.但速度快6-2

48、倍。內(nèi)部高度集成R/C時(shí)鐘,±1%溫飄,常溫下溫飄5‰。5MHz~35MHz寬范圍可設(shè)置,可徹底省掉外部昂貴的晶振。內(nèi)部高可靠復(fù)位,8級(jí)可選復(fù)位門檻電壓,可徹底省掉外部復(fù)位電路。</p><p>  1增強(qiáng)型 8051 CPU,1T,單時(shí)鐘/機(jī)器周期,速度比普通805快6-2倍 </p><p><b>  2 工作電壓: </b></p>&

49、lt;p>  STC15F00 系列工作電壓:5.5V - 3.8V(5V 單片機(jī)) </p><p>  STC15L00 系列工作電壓:3.6V - 2.4V(3V 單片機(jī)) </p><p>  3 內(nèi)部高可靠復(fù)位,8級(jí)可選復(fù)位門檻電壓,徹底省掉外部復(fù)位電路</p><p>  4 內(nèi)部高?度R/C時(shí)鐘?±%溫飄(-40oC~+85oC)?常溫

50、下溫飄5‰?內(nèi)部時(shí)鐘從5MHz ~ 35MHz可選(5.5296MHz / .0592MHz / 22.84MHz / 33.776MHz)</p><p>  5 工作頻率范圍:5MHz ~ 35MHz,相當(dāng)于普通805的60MHz~420MHz</p><p>  6 低功耗設(shè)計(jì):低速模式,空閑模式,掉電模式/停機(jī)模式(可由外部中斷喚醒)</p><p>  7

51、 支持掉電喚醒的管腳:INT0/P3.2, INT/P3.3, INT2, INT3, INT4 </p><p>  8 0.5K/K/2K/3K/4K/5K字節(jié)片內(nèi)Flash程序存儲(chǔ)器, 擦寫次數(shù)10萬次以上</p><p>  9 片上集成28字節(jié)RAM</p><p>  10 有EEPROM功能,擦寫次數(shù)10萬次以上</p><p&g

52、t;  11 ISP/IAP,在系統(tǒng)可編程/在應(yīng)用可編程,無需編程器/仿真器</p><p>  12 2個(gè)16位可重裝載定時(shí)器,兼容普通8051的定時(shí)器T0/T1并可實(shí)現(xiàn)時(shí)鐘輸出和PWM功能。</p><p>  13 可編程時(shí)鐘輸出功能,T0在P3.5輸出時(shí)鐘,T1在P3.4輸出時(shí)鐘?在P3.4口還可輸出內(nèi)部高高度R/C時(shí)鐘IRC_CLK(也可2分頻輸出IRC_CLK/2)。</

53、p><p>  14 硬件看門狗(WDT)</p><p>  15 串口功能可由[P3.0/INT4,P3.]結(jié)合定時(shí)器實(shí)現(xiàn)</p><p>  16 先進(jìn)的指令集結(jié)構(gòu),兼容普通8051指令集,有硬件乘法/除法指令</p><p>  17 6個(gè)通用I/O口,復(fù)位后為: 準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口)</p><

54、;p>  可設(shè)置四種模式:準(zhǔn)雙向口/?上拉,強(qiáng)推挽/弱上拉,僅為輸入/高阻,開漏推挽/ 上拉,僅為輸入/高阻,開漏每個(gè)I/O口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不要超過70mA。</p><p>  18 封裝:SOP-8, DIP-8</p><p>  19 全部75oC 八小時(shí)高溫烘烤,高品質(zhì)制造保證。</p><p>  圖3-8 STC15F1

55、04 引腳圖</p><p>  3.4 STC15F104單片機(jī)</p><p>  表3-2 STC15F104單片機(jī)引腳功能表</p><p>  3.5 GDM1602LCD</p><p>  1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3-3所示:</p><p>  表3-3:控制命令表<

56、/p><p>  1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)</p><p>  指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。</p><p>  指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。</p><p>  指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電

57、平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。</p><p>  指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p>  指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。<

58、/p><p>  指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。</p><p>  指令7:字符發(fā)生器RAM地址設(shè)置。</p><p>  指令8:DDRAM地址設(shè)置。</p><p>  指令9:讀忙信號(hào)和光標(biāo)地

59、址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b>  指令10:寫數(shù)據(jù)。</b></p><p><b>  指令11:讀數(shù)據(jù)。</b></p><p>  四 系統(tǒng)控制及軟件設(shè)計(jì)</p><p>  4.1 系統(tǒng)控制流程圖</p

60、><p>  圖 4-1 系統(tǒng)控制流程圖</p><p>  4.2 控制操作及功能 </p><p>  4.2.1 控制說明</p><p>  本系統(tǒng)是利用STC89C51的時(shí)間中斷0,每經(jīng)過1S系統(tǒng)運(yùn)行一次,在時(shí)間中斷執(zhí)行的程序中調(diào)用萬年歷置數(shù)、萬年歷運(yùn)行、鬧鐘置數(shù)、鬧鐘運(yùn)行、音樂觸發(fā)等子函數(shù)。</p><p> 

61、 所以,每次按鍵必須按住,等待LCD數(shù)字變化,持續(xù)時(shí)間0<t<2S。需要連續(xù)調(diào)整的,直接按住按鍵,數(shù)字變化間隔為1S,直至對(duì)應(yīng)位顯示所需要的時(shí)間。</p><p>  4.2.2 設(shè)置萬年歷</p><p>  圖 4—2 萬年歷顯示模式</p><p>  接通電源,或者按復(fù)位鍵,則會(huì)出現(xiàn)圖 4—2 萬年歷顯示模式,這是萬年歷的設(shè)置模式,如果跳過這個(gè)模

62、式,需要調(diào)整時(shí)間,則需要按復(fù)位鍵復(fù)位系統(tǒng)。</p><p>  現(xiàn)是處于時(shí)、分、秒的設(shè)置模式,控制方法:k1、k2、k3、k4、k5、k6設(shè)置萬年歷:時(shí)十位、個(gè)位、分十位、個(gè)位、秒十位、個(gè)位。</p><p>  調(diào)好,按住K7(持續(xù)超過1S)確定。按K7后,進(jìn)入年份的調(diào)試</p><p>  k1、k2、k3、k4設(shè)置萬年歷年份:年千位、百位、十位、個(gè)位。<

63、/p><p>  調(diào)好,按住K8(持續(xù)超過1S)確定。按K8后,進(jìn)入月份、星期的調(diào)試</p><p>  k1、k2、k3、k4、k5設(shè)置萬年歷月份:月十位、個(gè)位、日十位、個(gè)位、星期</p><p>  調(diào)好,按住K7(持續(xù)超過1S)確定。進(jìn)入年歷運(yùn)行。</p><p>  4.2.3 設(shè)置鬧鐘</p><p>  圖 4

64、-2 鬧鐘模式顯示</p><p>  在萬年歷運(yùn)行的狀態(tài)按住k9(持續(xù)超過1S),進(jìn)入鬧鐘置數(shù)模式,萬年歷的時(shí)間同樣顯示在上方。</p><p>  控制方式k1、k2、k3、k4、k5、k6設(shè)置鬧鐘:時(shí)十位、個(gè)位、分十位、個(gè)位、秒十位、個(gè)位。</p><p>  調(diào)好,按住K7(持續(xù)超過1S)確定。按K7后,進(jìn)入鬧鐘倒數(shù)模式。</p><p&

65、gt;  當(dāng)鬧鐘倒數(shù)為零時(shí),鬧鐘音樂《世上只有媽媽好》將響起。</p><p><b>  4.3對(duì)應(yīng)功能編程</b></p><p>  該編程是利用Keil uVision2,設(shè)置多個(gè)不同功能頭文件進(jìn)行編程。</p><p>  4.3.1 STC89C51主函數(shù)</p><p>  #include<reg

66、52.h></p><p>  #include<intrins.h></p><p>  #include<lcd.h> //LCD功能的頭文件</p><p>  #include<anjian.h> //按鍵調(diào)整的頭文件</p><p>  #include<main_t

67、.h> //萬年歷運(yùn)作頭文件</p><p>  #include<main_a.h> //鬧鐘運(yùn)作頭文件</p><p>  void main()</p><p><b>  {</b></p><p>  LCD_init();</p><p>  TMOD=0

68、x01;</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b> 

69、 TR0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  while(flag_a)</p><p><b>  a_main();</b></p><p>  

70、while(flag_t)</p><p><b>  t_main();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //計(jì)數(shù)器0中斷,50000微妙進(jìn)行一次t++。</p><p>  

71、void time0() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  t++;</b></p><

72、p><b>  }</b></p><p>  4.3.2 LCD功能的頭文件</p><p>  #ifndef lcd_h</p><p>  #define lcd_h</p><p>  sbit rs = P2^6;</p><p>  sbit rw = P2^5;</p

73、><p>  sbit ep = P2^7;</p><p>  unsigned char shi,ge;</p><p>  unsigned char code dis[] = {"0123456789"};</p><p>  //LCD1602位置參考0x0x 0123456789abcdef</p>

74、<p>  unsigned char code dis1[] = {"2012-01-01 00:00"};</p><p>  // 0x4x 0123456789abcdef</p><p>  unsigned char code dis2[] = {" Hello Sun 00 "}

75、;</p><p>  unsigned char code dis3[7][4] ={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};</p><p>  //LCD1602位置參考 0x0x 01234567

76、89abcdef</p><p>  unsigned char code dis4[] = {" Time 00:00:00 "};</p><p>  unsigned char code dis5[] = {"Clock 00:00:00 "};</p><p>  // 0x

77、4x 0123456789abcdef</p><p>  unsigned char code dis6[] = {" Hi Alarm Clock "};</p><p>  bit lcd_pd() //判斷,指令8,判斷是否忙碌,忙碌—循環(huán)</p><p><b>  {</b></p><p

78、>  bit result;</p><p><b>  rs = 0;</b></p><p><b>  _nop_();</b></p><p><b>  rw = 1;</b></p><p><b>  _nop_();</b></

79、p><p><b>  ep = 1;</b></p><p><b>  _nop_();</b></p><p>  result = (bit)(P0 & 0x80);</p><p><b>  ep = 0;</b></p><p>  r

80、eturn result;</p><p><b>  }</b></p><p>  void lcd_kz(unsigned char kz)//寫入控制指令</p><p><b>  {</b></p><p>  while(lcd_pd()); //判斷LCD是否忙碌</p

81、><p><b>  rs = 0;</b></p><p><b>  rw = 0;</b></p><p><b>  ep = 0;</b></p><p><b>  _nop_();</b></p><p><b>

82、;  P0 = kz;</b></p><p><b>  _nop_();</b></p><p><b>  ep = 1;</b></p><p><b>  _nop_();</b></p><p><b>  ep = 0;</b>&

83、lt;/p><p><b>  }</b></p><p>  void lcd_wz(unsigned char wz)//光標(biāo)位置</p><p><b>  {</b></p><p>  lcd_kz(wz | 0x80);</p><p><b>  }<

84、;/b></p><p>  void lcd_data (unsigned char dat)//顯示內(nèi)容</p><p><b>  {</b></p><p>  while(lcd_pd());//判斷LCD是否忙碌</p><p><b>  rs = 1;</b></p>

85、;<p><b>  rw = 0;</b></p><p><b>  ep = 0;</b></p><p><b>  P0 = dat;</b></p><p><b>  _nop_();</b></p><p><b>

86、  ep = 1;</b></p><p><b>  _nop_();</b></p><p><b>  ep = 0;</b></p><p><b>  }</b></p><p>  void lcd_two_xs(void)//顯示函數(shù)</p>

87、;<p><b>  {</b></p><p>  lcd_data(dis[shi]);//顯示內(nèi)容</p><p>  lcd_data(dis[ge]);</p><p><b>  }</b></p><p>  void LCD_init() //初始化LCD1602&

88、lt;/p><p><b>  {</b></p><p>  lcd_kz(0x38);</p><p><b>  _nop_();</b></p><p>  lcd_kz(0x0c);</p><p><b>  _nop_();</b></

89、p><p>  lcd_kz(0x06);</p><p><b>  _nop_();</b></p><p>  lcd_kz(0x01);</p><p><b>  _nop_();</b></p><p><b>  }</b></p>

90、<p><b>  #endif</b></p><p>  4.3.3 按鍵調(diào)整的頭文件</p><p>  //按鍵響應(yīng)間隔為1S</p><p>  //單步調(diào)試時(shí),每個(gè)按鍵按下控制在1~2S內(nèi)</p><p>  //連續(xù)調(diào)試,按住不放就行</p><p>  #ifndef

91、 anjian_h</p><p>  #define anjian_h</p><p>  sbit k1=P1^0;</p><p>  sbit k2=P1^1;</p><p>  sbit k3=P1^2;</p><p>  sbit k4=P1^3;</p><p>  sbit

92、k5=P1^4;</p><p>  sbit k6=P1^5;</p><p>  sbit k7=P1^6;</p><p>  sbit k8=P1^7;</p><p>  sbit k9=P2^0;</p><p>  sbit speaker=P2^1;//P3^0</p><p>

93、  unsigned t_flag1=0,t_flag2=0,t_flag3=0,a,b=1;</p><p>  unsigned char t_miao=0,t_fen=0,t_shi=0,t_ri=1,t_week=1,t_yue=1;</p><p>  unsigned int t_nian=2000,i;</p><p>  unsigned char

94、a_miao=5,a_fen=0,a_shi=0;</p><p>  //在沒有鬧鐘顯示時(shí)的時(shí)間設(shè)置</p><p>  //初始化后,為 時(shí)、分、秒 的設(shè)置</p><p>  //k1 k2 k3 k4 k5 k6 設(shè)置 時(shí) 分 秒六位</p><p>  //時(shí)十位 個(gè)位分十位 個(gè)位

95、 秒十位 個(gè)位</p><p>  //調(diào)好,按K7確定。按K7后,進(jìn)入年份的調(diào)試</p><p>  // k1 k2 k3 k4 設(shè)置年份</p><p>  //年千位 百位 十位 個(gè)位</p><p>  //調(diào)好,按K8確定。按K8后,進(jìn)入月份的調(diào)試</p><p><b&

96、gt;  //</b></p><p>  // k1 k2 k3 k4 k5置年份</p><p>  //月十位 個(gè)位 日十位 個(gè)位 星期</p><p>  //調(diào)好,按K8確定。按K8后,進(jìn)入年歷運(yùn)行</p><p>  void t_anjian()</p><

97、;p><b>  {</b></p><p>  if(t_flag1!=1&&t_flag2!=1&&t_flag3!=1)</p><p><b>  {</b></p><p><b>  if(k1==0)</b></p><p>

98、  t_shi=t_shi+10;</p><p>  if(t_shi/10==3)</p><p>  t_shi=t_shi-30;</p><p><b>  if(k2==0)</b></p><p><b>  { </b></p><p>  a=t_sh

99、i/10;</p><p>  t_shi=t_shi+1;</p><p>  if(t_shi/10>a)</p><p>  t_shi=t_shi-10;</p><p><b>  }</b></p><p>  if(t_shi>23)</p><p&g

100、t;  t_shi=0;</p><p><b>  if(k3==0)</b></p><p>  t_fen=t_fen+10;</p><p>  if(t_fen/10==6)</p><p>  t_fen=t_fen-60;</p><p><b>  if(k4==

101、0)</b></p><p><b>  { </b></p><p>  a=t_fen/10;</p><p>  t_fen=t_fen+1;</p><p>  if(t_fen/10>a)</p><p>  t_fen=t_fen-10;</p>

102、<p><b>  }</b></p><p><b>  if(k5==0)</b></p><p>  t_miao=t_miao+10;</p><p>  if(t_miao/10==6)</p><p>  t_miao=t_miao-60;</p><p&

103、gt;<b>  if(k6==0)</b></p><p><b>  { </b></p><p>  a=t_miao/10;</p><p>  t_miao=t_miao+1;</p><p>  if(t_miao/10>a)</p><p>  t_

104、miao=t_miao-10;</p><p><b>  }</b></p><p><b>  if(k7==0)</b></p><p>  t_flag1=1;</p><p><b>  }</b></p><p>  if(t_flag1==

105、1&&t_flag2!=1&&t_flag3!=1)</p><p><b>  {</b></p><p><b>  if(k1==0)</b></p><p><b>  {</b></p><p>  t_nian=t_nian+100

106、0;</p><p>  if(t_nian/1000>=10)</p><p>  t_nian=t_nian-10000;</p><p><b>  }</b></p><p><b>  if(k2==0)</b></p><p><b>  {<

107、;/b></p><p>  a=t_nian/1000;</p><p>  t_nian=t_nian+100;</p><p>  if(t_nian/1000>a)</p><p>  t_nian=t_nian-1000;</p><p><b>  }</b></p

108、><p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  a=t_nian/100%10;</p><p>  t_nian=t_nian+10;</p><p>  if(t_nian/100%10>a)</p&g

109、t;<p>  t_nian=t_nian-100;</p><p><b>  }</b></p><p><b>  if(k4==0)</b></p><p><b>  {</b></p><p>  a=t_nian/10%10;</p>

110、<p>  t_nian=t_nian+1;</p><p>  if(t_nian/10%10>a)</p><p>  t_nian=t_nian-10;</p><p><b>  }</b></p><p><b>  if(k8==0)</b></p>&

111、lt;p>  t_flag2=1;</p><p><b>  }</b></p><p>  if(t_flag1==1&&t_flag2==1&&t_flag3!=1)</p><p><b>  {</b></p><p><b>

112、;  if(k1==0)</b></p><p>  t_yue=t_yue+10;</p><p>  if(t_yue/10==2)</p><p>  t_yue=t_yue-20;</p><p><b>  if(k2==0)</b></p><p><b>  {

113、 </b></p><p>  a=t_yue/10;</p><p>  t_yue=t_yue+1;</p><p>  if(t_yue/10>a)</p><p>  t_yue=t_yue-10;</p><p><b>  }</b></p>&l

114、t;p>  if(t_yue>12)</p><p>  t_yue=1;</p><p>  if(t_yue==1||t_yue==3||t_yue==5||t_yue==7||t_yue==8||t_yue==10||t_yue==12)</p><p><b>  {</b></p><p>&l

115、t;b>  if(k3==0)</b></p><p>  t_ri=t_ri+10;</p><p>  if(t_ri/10==4)</p><p>  t_ri=t_ri-40;</p><p><b>  if(k4==0)</b></p><p><b>  

116、{ </b></p><p>  a=t_ri/10;</p><p>  t_ri=t_ri+1;</p><p>  if(t_ri/10>a)</p><p>  t_ri=t_ri-10;</p><p><b>  }</b></p><p&g

117、t;  if(t_ri>31)</p><p>  t_ri=1;</p><p><b>  }</b></p><p>  if(t_yue==4||t_yue==6||t_yue==9||t_yue==11)</p><p><b>  {</b></p><

118、p><b>  if(k3==0)</b></p><p>  t_ri=t_ri+10;</p><p>  if(t_ri/10==4)</p><p>  t_ri=t_ri-40;</p><p><b>  if(k4==0)</b></p><p><

119、b>  { </b></p><p>  a=t_ri/10;</p><p>  t_ri=t_ri+1;</p><p>  if(t_ri/10>a)</p><p>  t_ri=t_ri-10;</p><p><b>  }</b></p>

120、<p>  if(t_ri>30)</p><p>  t_ri=1;</p><p><b>  }</b></p><p>  if(t_yue==2)</p><p><b>  {</b></p><p>  if(t_nian%4!=0

121、)</p><p><b>  {</b></p><p><b>  if(k3==0)</b></p><p>  t_ri=t_ri+10;</p><p>  if(t_ri/10==3)</p><p>  t_ri=t_ri-30;</p><

122、p><b>  if(k4==0)</b></p><p><b>  { </b></p><p>  a=t_ri/10;</p><p>  t_ri=t_ri+1;</p><p>  if(t_ri/10>a)</p><p>  t_ri=t_r

123、i-10;</p><p><b>  }</b></p><p>  if(t_ri>28)</p><p>  t_ri=1;</p><p><b>  }</b></p><p>  if(t_nian%4==0)</p><p&g

124、t;<b>  {</b></p><p><b>  if(k3==0)</b></p><p>  t_ri=t_ri+10;</p><p>  if(t_ri/10==4)</p><p>  t_ri=t_ri-40;</p><p><b>  if(k

125、4==0)</b></p><p><b>  { </b></p><p>  a=t_ri/10;</p><p>  t_ri=t_ri+1;</p><p>  if(t_ri/10>a)</p><p>  t_ri=t_ri-10;</p><

126、;p><b>  }</b></p><p>  if(t_ri>29)</p><p>  t_ri=1; </p><p><b>  }</b></p><p><b>  }</b></p><p>  if(k5==

127、0) //調(diào)整星期函數(shù),以2000.01.01為參考</p><p><b>  { </b></p><p><b>  while(b)</b></p><p><b>  {</b></p><p>  for(i=2000;i<t_nian;i++)

128、</p><p><b>  {</b></p><p>  if(i%10!=0&&i/10%10!=0)</p><p><b>  {</b></p><p>  if(i%4==0)</p><p>  t_week=t_week+2;</

129、p><p><b>  else</b></p><p><b>  t_week++;</b></p><p><b>  }</b></p><p><b>  else </b></p><p>  if(i%400==0)&l

130、t;/p><p>  t_week=t_week+2;</p><p><b>  else</b></p><p><b>  t_week++;</b></p><p><b>  }</b></p><p>  for(i=0;i<t_yue;i

131、++)</p><p><b>  {</b></p><p>  if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)</p><p>  t_week=t_week+3;</p><p>  if(i==4||i==6||i==9||i==11)</p><

132、p>  t_week=t_week+2;</p><p>  if(t_yue==2)</p><p><b>  {</b></p><p>  if(t_nian%10!=0&&t_nian/10%10!=0)</p><p><b>  {</b></p>

133、<p>  if(t_nian%4==0)</p><p><b>  t_week++;</b></p><p><b>  }</b></p><p><b>  else </b></p><p>  if(t_nian%400==0)</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論