單片機(jī)課程設(shè)計(jì)--課設(shè)作息時(shí)間控制_第1頁(yè)
已閱讀1頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì)</p><p>  課程名稱(chēng) 單片機(jī) </p><p>  課題名稱(chēng) 課設(shè)作息時(shí)間控制 </p><p>  專(zhuān) 業(yè) 電氣工程 </p><p>  班 級(jí) ****

2、 </p><p>  學(xué) 號(hào) ********* </p><p>  姓 名 ******* </p><p>  指導(dǎo)教師 </p><p>  2012年 9月 14 日</p><p>

3、;  課 程 設(shè) 計(jì) 任 務(wù) 書(shū)</p><p>  課程名稱(chēng) 單片機(jī)原理及應(yīng)用 </p><p>  課 題 單片機(jī)作息時(shí)間控制器 </p><p>  專(zhuān)業(yè)班級(jí) 電氣**** </p><p>  學(xué)生姓名 ***** </p><p

4、>  學(xué) 號(hào) ******** </p><p>  指導(dǎo)老師 </p><p>  審 批 </p><p>  任務(wù)書(shū)下達(dá)日期 2012 年 9月 4日</p><p>

5、;  任務(wù)完成日期 2012年 9月 14 日</p><p><b>  目 錄</b></p><p><b>  第1章 概述1</b></p><p>  1.1設(shè)計(jì)內(nèi)容及要求1</p><p>  1.2本設(shè)計(jì)實(shí)現(xiàn)的功能1</p><

6、p>  第2章 系統(tǒng)方案設(shè)計(jì)2</p><p>  2.1 系統(tǒng)總體方案設(shè)計(jì)2</p><p>  2.2 系統(tǒng)總體方案框圖2</p><p>  第3章 硬件設(shè)計(jì)3</p><p>  3.1 時(shí)間顯示電路的設(shè)計(jì)3</p><p>  3.2按鍵電路的設(shè)計(jì)4</p><p&g

7、t;  3.3 響鈴電路的設(shè)計(jì)5</p><p>  3.4 內(nèi)部時(shí)鐘電路的設(shè)計(jì)5</p><p>  3.5 復(fù)位電路的設(shè)計(jì)6</p><p>  3.6 單片機(jī)硬件資源分配6</p><p>  第4章 軟件設(shè)計(jì)7</p><p>  4.1 系統(tǒng)軟件設(shè)計(jì)思路7</p><p>

8、;  4.2 主程序的設(shè)計(jì)7</p><p>  4.3 中斷子程序8</p><p>  4.4 鍵盤(pán)函數(shù)的設(shè)計(jì)9</p><p>  第5章 調(diào)試與分析10</p><p>  5.1 硬件制作11</p><p>  5.2 硬件調(diào)試13</p><p>  5.3 存在問(wèn)題

9、與解決方案14</p><p>  第6章 課題總結(jié)15</p><p><b>  參考文獻(xiàn)16</b></p><p><b>  附錄 A17</b></p><p><b>  第1章 概述</b></p><p><b>

10、;  設(shè)計(jì)內(nèi)容及要求</b></p><p>  作息時(shí)間控制器常用于學(xué)校教學(xué)樓的時(shí)間控制,利用單片機(jī)內(nèi)部定時(shí)器實(shí)現(xiàn)時(shí)間基準(zhǔn)定時(shí),并配合“啟動(dòng)”、“復(fù)位”等按鍵的操作完成鈴聲、音樂(lè)的開(kāi)/??刂?,顯示的內(nèi)容要求有時(shí)、分、秒。</p><p>  本課題要求以單片機(jī)為核心,設(shè)計(jì)一個(gè)具有定時(shí)和計(jì)數(shù)功能的智能化作息時(shí)間控制器。該控制器要求有以下功能:</p><p&

11、gt;  按作息時(shí)間接通/斷開(kāi)電鈴;</p><p>  課間接通/斷開(kāi)播放音樂(lè)設(shè)備;</p><p><b>  時(shí)鐘顯示。</b></p><p><b>  本設(shè)計(jì)實(shí)現(xiàn)的功能</b></p><p><b>  本設(shè)計(jì)實(shí)現(xiàn)的功能為</b></p><p

12、>  使用LED顯示時(shí)間,顯示格式為“時(shí)、分”(其中時(shí)、分各用兩位LED等顯示,秒用第二位LED的小數(shù)點(diǎn)顯示);</p><p>  可自行設(shè)置時(shí)鐘時(shí)間,可對(duì)時(shí)間進(jìn)行調(diào)整,使其快速進(jìn)行到定時(shí)時(shí)間,并作出相應(yīng)的響鈴動(dòng)作;</p><p>  當(dāng)時(shí)鐘到達(dá)定時(shí)時(shí)間時(shí),啟動(dòng)響鈴功能,以此模擬上、下課自動(dòng)響鈴及課間自動(dòng)播放音樂(lè);</p><p>  以蜂鳴器、繼電器模擬

13、響鈴過(guò)程</p><p>  第2章 系統(tǒng)方案設(shè)計(jì)</p><p>  2.1 系統(tǒng)總體方案設(shè)計(jì)</p><p>  本設(shè)計(jì)用單片機(jī)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,所以降低了硬件電路的復(fù)雜性,也相應(yīng)的降低了其成本。</p><p>  根據(jù)設(shè)計(jì)要求,總電路分為鍵盤(pán)接口電路、單片機(jī)時(shí)鐘電路、復(fù)位電路、LED顯示電路、響鈴

14、電路、電源電路六個(gè)部分。其中鍵盤(pán)接口電路采用4個(gè)按鍵,分別實(shí)現(xiàn)對(duì)時(shí)針的加一功能、減一功能和對(duì)分針的加一功能、減一功能;時(shí)鐘電路,在本系統(tǒng)中采用內(nèi)部時(shí)鐘電路,由一個(gè)石英晶體管振蕩器和兩個(gè)微調(diào)電容組成;復(fù)位電路中給給RST引腳連續(xù)輸入2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)以上高電平,就可完成初始化操作;顯示電路采用4段7位LED顯示管顯示時(shí)間,其中前兩位顯示時(shí)針,后兩位顯示分針,前兩位與后兩位之間的小數(shù)點(diǎn)通過(guò)閃動(dòng)來(lái)實(shí)現(xiàn)秒針的顯示;響鈴電路中由

15、P1口輸出電平,經(jīng)三極管驅(qū)動(dòng)繼電器后通過(guò)電鈴?fù)瓿身戔?,本設(shè)計(jì)中采用蜂鳴器、繼電器代替;電源電路,本設(shè)計(jì)由外部電源對(duì)其供電。 </p><p>  2.2 系統(tǒng)總體方案框圖</p><p>  圖 2.1 系統(tǒng)設(shè)計(jì)框圖</p><p><b>  第3章 硬件設(shè)計(jì)</b></p><p>  3.1 時(shí)間顯示電路的設(shè)計(jì)&

16、lt;/p><p>  LED數(shù)碼管顯示方式有靜態(tài)顯示方式和動(dòng)態(tài)顯示方式兩種。靜態(tài)顯示方式雖然占用CPU較少,接口簡(jiǎn)單,但其硬件電路比較復(fù)雜,成本較高,所以本設(shè)計(jì)中采用動(dòng)態(tài)顯示方式。</p><p>  動(dòng)態(tài)顯示方式是指輪流電量各位LED數(shù)碼管,利用定時(shí)掃描的方式輪流點(diǎn)亮各位數(shù)碼管。LED公用一個(gè)8位的I/O,即P0口。4位LED的位選線分別由相對(duì)應(yīng)的P2.0-P2.3控制,段選線并聯(lián)后接地。

17、由于采用的是4位LED數(shù)碼管顯示,所以前兩位LED顯示“時(shí)針”,后兩位顯示“分針”,秒針利用時(shí)針的小數(shù)點(diǎn)進(jìn)行顯示,亮滅周期為一秒。到達(dá)定時(shí)時(shí)間時(shí),由計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一個(gè)脈沖信號(hào)然后觸發(fā)蜂鳴器引發(fā)鬧鈴。校時(shí)電路是用來(lái)對(duì)“時(shí)針”、“分針”顯示數(shù)字進(jìn)行校對(duì)調(diào)整。</p><p><b>  時(shí)間電路設(shè)計(jì)如下:</b></p><p>  3.2按鍵電路的設(shè)計(jì)</

18、p><p>  因考慮節(jié)省I/O線數(shù)量,方便操作,本設(shè)計(jì)采用矩陣式鍵盤(pán)。矩陣式鍵盤(pán)由I/O線組成行、列結(jié)構(gòu),行、列線不相通,通過(guò)一個(gè)設(shè)置在行、列交叉點(diǎn)上的按鍵來(lái)連通。本設(shè)計(jì)中采用四個(gè)按鍵,具體功能如下:</p><p>  同時(shí),本設(shè)計(jì)通過(guò)調(diào)用一個(gè)延時(shí)函數(shù),消除鍵盤(pán)的抖動(dòng)問(wèn)題,提高了時(shí)間調(diào)整額精度。</p><p><b>  按鍵電路設(shè)計(jì)如下:</b&

19、gt;</p><p>  3.3 響鈴電路的設(shè)計(jì)</p><p>  響鈴電路是通過(guò)函數(shù)對(duì)時(shí)鐘和設(shè)定響鈴時(shí)間進(jìn)行比較,當(dāng)時(shí)鐘值與響鈴設(shè)定值相當(dāng)時(shí),發(fā)出一個(gè)脈沖信號(hào),經(jīng)放大器驅(qū)動(dòng)送至揚(yáng)聲器發(fā)聲,從而實(shí)現(xiàn)響鈴功能。其中,對(duì)響鈴函數(shù)中所調(diào)用的延時(shí)函數(shù)進(jìn)行延時(shí)長(zhǎng)短的調(diào)整,可對(duì)所響鈴聲進(jìn)行改變。</p><p><b>  響鈴電路設(shè)計(jì)如下:</b>&

20、lt;/p><p>  3.4 內(nèi)部時(shí)鐘電路的設(shè)計(jì)</p><p>  單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為XTAL1引腳,輸出端為XTAL2引腳。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自己振蕩器,形成內(nèi)部時(shí)鐘方式的電路。其中微調(diào)電容選擇C1=C2=30uF。</p><p>  3.5 復(fù)位電路的設(shè)計(jì)</p>&

21、lt;p>  可靠的復(fù)位電路是保證單片機(jī)正常運(yùn)行的關(guān)鍵因素。將RST引腳連續(xù)輸入2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩期間)以上高電平,即可以完成單片機(jī)的初始化操作。本設(shè)計(jì)采用按鈕復(fù)位方式。</p><p>  3.6 單片機(jī)硬件資源分配</p><p>  表3.1 I/O口分配表</p><p><b>  第4章 軟件設(shè)計(jì)</b><

22、;/p><p>  4.1 系統(tǒng)軟件設(shè)計(jì)思路</p><p>  本系軟件設(shè)計(jì)中,利用單片機(jī)定時(shí)器設(shè)計(jì)時(shí)間計(jì)時(shí)處理,采用單片機(jī)內(nèi)部的T0定時(shí)器溢出中斷來(lái)實(shí)現(xiàn),工作在T1方式下,定時(shí)50微妙,則連續(xù)中斷20次即為一秒,得到了我們所需時(shí)間的最小單位。因?yàn)閰R編語(yǔ)言的移植性較差,而C語(yǔ)言則比較靈活,因此本設(shè)計(jì)采用C52編寫(xiě)程序。在程序中除了有主函數(shù)外還包含許多子函數(shù),如顯示函數(shù)、鍵盤(pán)函數(shù)、聲音函數(shù)、響

23、鈴函數(shù)、時(shí)間顯示函數(shù)、延時(shí)函數(shù)。</p><p>  4.2 主程序的設(shè)計(jì)</p><p>  主程序循環(huán)中掃描是否有鍵按下,如有鍵按下,則做出相應(yīng)的功能處理,同時(shí)掃描顯示時(shí)間數(shù)據(jù),并檢查時(shí)候到達(dá)響鈴設(shè)置時(shí)間。若無(wú)按鍵,則繼續(xù)執(zhí)行主程序。</p><p>  系統(tǒng)設(shè)計(jì)主框圖如下:</p><p>  圖4.1 系統(tǒng)設(shè)計(jì)主框圖</p>

24、;<p><b>  4.3 中斷子程序</b></p><p>  本設(shè)計(jì)采用中斷子程序。當(dāng)連續(xù)中斷20次時(shí),即為一秒,此時(shí)秒加一;當(dāng)秒值為60時(shí),分鐘加一,同時(shí)秒清零;當(dāng)分鐘值為60時(shí),小時(shí)加一,同時(shí)分鐘值清零;當(dāng)小時(shí)為24時(shí)小時(shí)清零 ,完成一天的計(jì)時(shí),所有程序初始化。</p><p>  中斷子程序設(shè)計(jì)圖如下:</p><p&g

25、t;  圖4.2 中斷子程序設(shè)計(jì)圖</p><p>  4.4 鍵盤(pán)函數(shù)的設(shè)計(jì)</p><p>  鍵盤(pán)程序是完成對(duì)時(shí)鐘的調(diào)整。當(dāng)按下S1、S2、S3、S4按鍵時(shí),執(zhí)行相應(yīng)的“對(duì)時(shí)針加1”、“對(duì)時(shí)針減1”、“對(duì)分針加1”、“對(duì)分針減1”功能。</p><p>  鍵盤(pán)函數(shù)設(shè)計(jì)圖如下:</p><p>  圖4.3 鍵盤(pán)函數(shù)設(shè)計(jì)圖</p&

26、gt;<p>  第5章 調(diào)試與分析</p><p><b>  5.1 硬件制作</b></p><p>  在焊接板子過(guò)程中,以“由低到高”為原則依次對(duì)其進(jìn)行焊接。</p><p>  主板焊接流程如下:電阻:10K(1個(gè))、2K(2個(gè))、1K(17個(gè))、200/100歐(1個(gè)),續(xù)流二極管IN4148(1個(gè)),整流二極管I

27、N4007(4個(gè)),晶振12M/11.0592M(1個(gè)),輕觸按鍵(2個(gè)),電容:30P(2個(gè)),104獨(dú)石(4個(gè)),104瓷片(4個(gè)),排阻,芯片插座(40腳、16腳、8腳各1個(gè)),三極管:9012(1個(gè))、9015(2個(gè)),電源指示LED(1個(gè)),P1口長(zhǎng)方形LED(8個(gè)),電解電容:22 UF(1個(gè))、1000UF(2個(gè)),蜂鳴器,繼電器,跳針(3個(gè)),擴(kuò)展排針(三排),電源接插件(1個(gè)),電源開(kāi)關(guān)(1個(gè))。</p>

28、<p>  鍵盤(pán)及數(shù)碼管副板焊接流程如下:電阻1K(12個(gè)),輕觸按鍵共16個(gè),4位撥碼開(kāi)關(guān)(1個(gè)),9015三極管(4個(gè)),四合一數(shù)碼管(1個(gè)),跳針(2個(gè)),擴(kuò)展排針(兩排)。</p><p><b>  5.2 硬件調(diào)試</b></p><p>  將編好程序在Keil uVision4中調(diào)試完成,程序沒(méi)有錯(cuò)誤的時(shí)候,通過(guò)STC_ISP_480下載到

29、單片機(jī)中,然后進(jìn)行調(diào)試。</p><p>  首先連接好外部電源,將電源打開(kāi)為單片機(jī)通電,顯示屏顯示初時(shí)設(shè)置時(shí)間為20:59(可調(diào)整),小數(shù)點(diǎn)閃爍為秒針。如圖5.1所示:</p><p>  圖5.1 顯示設(shè)置初值</p><p>  任意調(diào)到一個(gè)顯示值(現(xiàn)以15:59為例),在基礎(chǔ)上按下S1鍵,實(shí)現(xiàn)對(duì)時(shí)針的加一功能,時(shí)間變?yōu)?6:59,如圖5.2所示:</p

30、><p>  圖5.2 實(shí)現(xiàn)對(duì)時(shí)針的加一功能</p><p>  在15:59基礎(chǔ)上按下S2鍵,實(shí)現(xiàn)對(duì)時(shí)針的減一功能,時(shí)間變?yōu)?4:59,如圖5.3所示:</p><p>  圖5.3 實(shí)現(xiàn)對(duì)時(shí)針的減一功能</p><p>  在15:59基礎(chǔ)上按下S3鍵,實(shí)現(xiàn)對(duì)分針的加一功能,時(shí)間變?yōu)?6:00,如圖5.4所示:</p><

31、p>  圖5.4 實(shí)現(xiàn)對(duì)分針的加一功能</p><p>  在15:59基礎(chǔ)上按下S4鍵,實(shí)現(xiàn)對(duì)分針的減一功能,時(shí)間變?yōu)?5:58,如圖5.5所示:</p><p>  圖5.5 實(shí)現(xiàn)對(duì)分針的減一功能</p><p>  當(dāng)時(shí)鐘運(yùn)行至響鈴設(shè)定值時(shí),啟動(dòng)響鈴功能。如時(shí)鐘為22:00時(shí),蜂鳴器發(fā)出聲音,繼電器工作,模擬響鈴過(guò)程。如圖5.6所示:</p>

32、<p>  圖5.6 實(shí)現(xiàn)響鈴功能</p><p>  5.3 存在問(wèn)題與解決方案</p><p>  軟件調(diào)試過(guò)程遇到一些問(wèn)題,如在定義函數(shù)時(shí)忘記了定義全部的函數(shù),導(dǎo)致運(yùn)行結(jié)果出現(xiàn)未定義,經(jīng)過(guò)認(rèn)真查看修改以后。該問(wèn)題得以解決;即可實(shí)現(xiàn)要求功能。</p><p><b>  第6章 課題總結(jié)</b></p><

33、;p>  兩周的單片機(jī)課程設(shè)計(jì)已經(jīng)接近尾聲了,在這兩個(gè)星期里面,從拿到課題的課題的第一天起,大家就開(kāi)始忙忙碌碌的查資料,翻教材,不斷的努力著,慢慢從一開(kāi)始的不知道如何下手,到確定了設(shè)計(jì)方案,再到如今的完工,不得不感謝一下老師的耐心教導(dǎo)和同學(xué)的熱情幫助。單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事。如響鈴函數(shù)中,之前通過(guò)以時(shí)間與設(shè)定好的數(shù)組相對(duì)比,若相等

34、則進(jìn)行響鈴,但一直沒(méi)有辦法實(shí)現(xiàn),后來(lái)設(shè)置了一個(gè)標(biāo)志,利用switch語(yǔ)句,通過(guò)一個(gè)算式來(lái)進(jìn)行與時(shí)鐘的對(duì)比,則實(shí)現(xiàn)了響鈴功能。</p><p>  這個(gè)程序中還有一些可以改進(jìn)與完善的地方。如可通過(guò)24C02鎖存器對(duì)調(diào)整好的時(shí)間進(jìn)行鎖存,實(shí)現(xiàn)斷電保護(hù)功能;可通過(guò)一個(gè)按鍵,來(lái)實(shí)現(xiàn)對(duì)響鈴模式夏季與冬季模式的切換與調(diào)整,并實(shí)現(xiàn)記憶功能;還可以通過(guò)對(duì)所響鈴聲進(jìn)行編輯,模擬上下課響不同的鈴聲,以示區(qū)分。</p>

35、<p>  在這兩周的設(shè)計(jì)之中,每個(gè)人都有很多的收獲,我也不例外,出現(xiàn)了很多的問(wèn)題,從解決問(wèn)題之中學(xué)會(huì)了很多知識(shí)和技巧。到現(xiàn)在為止,已經(jīng)有做過(guò)多次的設(shè)計(jì)了,但是這次的設(shè)計(jì)讓我有了長(zhǎng)足的進(jìn)步,確實(shí)加強(qiáng)了對(duì)單片機(jī)硬件和軟件的兼顧和融會(huì)貫通。</p><p>  在這次課程設(shè)計(jì)中,感謝王迎旭老師的耐心指導(dǎo),感謝同組同學(xué)的鼓勵(lì)與配合。通過(guò)本次課程設(shè)計(jì),我認(rèn)識(shí)到了自己的許多缺點(diǎn)和不足,體會(huì)到了實(shí)踐是檢驗(yàn)真理的唯一

36、標(biāo)準(zhǔn)以及實(shí)踐出真知的道理。在以后的學(xué)習(xí)生活中,我會(huì)努力將學(xué)習(xí)知識(shí)要看做是自己的興趣愛(ài)好,要主動(dòng)學(xué)習(xí)。不僅要學(xué)會(huì)書(shū)本上的知識(shí),更要掌握學(xué)好知識(shí)的方法和技巧,這樣才能使自己在今后的科技道路上越走越遠(yuǎn)!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 王迎旭.單片機(jī)原理與應(yīng)用 [M].北京:機(jī)械工業(yè)出版社,2012[2]

37、60;三恒星科技.MCS-51 單片機(jī)原理與應(yīng)用實(shí)例 [M].北京:電子工業(yè)出版社,2008[3] 王守中.51單片機(jī)開(kāi)發(fā)入門(mén)與典型實(shí)例 [M].北京:人民郵電出版社,2007[4] 李全利.單片機(jī)原理及應(yīng)用技術(shù) [M].北京:高等教育出版社,2004[5] 林毓梁.單片機(jī)原理及應(yīng)用 [M].北京:機(jī)械工業(yè)出版社,2005 </p>&l

38、t;p><b>  附錄 A</b></p><p><b>  程序清單:</b></p><p>  #include<reg52.h></p><p>  #include<stdio.h></p><p>  #include<intrins.h>

39、</p><p>  #define uchar unsigned char</p><p>  unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} ;</p><p>  unsigned char wei[]={0x01,0x02,0x04,0x08,0x0

40、0} ;</p><p>  unsigned char temp,hourshi,hourge,minuteshi,minutege;</p><p>  unsigned int second=0,minute=59,hour=20;</p><p>  unsigned int dh[]={0,1,2,3,4,5};</p><p>

41、  unsigned int dm[]={1,2,3,4,5,6}; </p><p>  unsigned char count ;</p><p>  unsigned char s,i,temp,flag,f,h=0,m=0;</p><p>  sbit hour_add=P1^0;</p><p>  sbit hour_sub=

42、P1^1;</p><p>  sbit minute_add=P1^2;</p><p>  sbit minute_sub=P1^3;</p><p>  sbit ring=P1^4;</p><p>  sbit P0_7=P0^7;</p><p>  void display();

43、 //顯示函數(shù)</p><p>  void key(); //鍵盤(pán)函數(shù)</p><p>  void sound(); //聲音函數(shù)</p><p>  void voice(int,int);

44、 //響鈴函數(shù)</p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p>  temp=0xee;</p><p><b>  ring=1;</b&g

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

46、</p><p><b>  TR0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  hourshi=hour/10;</p><p>  hourge=hour%10;&l

47、t;/p><p>  minuteshi=minute/10;</p><p>  minutege=minute%10;</p><p>  display();</p><p>  voice(minute,hour);</p><p><b>  key();</b></p>&l

48、t;p><b>  } </b></p><p><b>  }</b></p><p>  void timer() interrupt 1 //時(shí)鐘顯示函數(shù)</p><p><b>  {</b></p><p>  TH

49、0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  count++;</b></p><p>  if(count==20)</p><p><b>  {</b></p><p><b

50、>  second++;</b></p><p><b>  count=0;</b></p><p>  if(second==60)</p><p><b>  {</b></p><p><b>  minute++;</b></p>&l

51、t;p>  second=0;</p><p>  if(minute==60)</p><p><b>  {</b></p><p><b>  hour++;</b></p><p>  minute=0; </p><p>  if(hour==24)<

52、/p><p><b>  {</b></p><p><b>  hour=0;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b>&l

53、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  void delay1ms(int n) //延時(shí)函數(shù)</p><p><b>  {</b></p><p&

54、gt;  unsigned char j;</p><p><b>  int t;</b></p><p>  for(j=n;j>0;j--)</p><p>  for(t=110;t>0;t--)</p><p><b>  ;</b></p><p>&

55、lt;b>  }</b></p><p>  void key() //鍵盤(pán)函數(shù)</p><p><b>  { </b></p><p>  if(hour_add==0) //時(shí)鐘加1

56、 </p><p><b>  { </b></p><p>  delay1ms(5);</p><p>  if(hour_add==0)</p><p><b>  {</b></p><p>  do delay1ms(4);</p><p

57、>  while(hour_add!=1);</p><p><b>  if(s==0)</b></p><p><b>  {</b></p><p><b>  hour++;</b></p><p>  if(hour==24)</p><p&

58、gt;<b>  hour=0;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(hour_sub==0)

59、 //時(shí)鐘減1 </p><p><b>  { </b></p><p>  delay1ms(5);</p><p>  if(hour_sub==0)</p><p><b>  {</b></p><p>  do de

60、lay1ms(4);</p><p>  while(hour_sub!=1);</p><p><b>  if(s==0)</b></p><p><b>  {</b></p><p><b>  hour--;</b></p><p>  if(

61、hour==-1)</p><p><b>  hour=23;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(m

62、inute_add==0) //分鐘加1 </p><p><b>  { </b></p><p>  delay1ms(5);</p><p>  if(minute_add==0)</p><p><b>  {</b>

63、;</p><p>  do delay1ms(4);</p><p>  while (minute_add!=1);</p><p>  if(s==0) </p><p><b>  { </b></p><p><b>  minute++;</b></p&

64、gt;<p>  if(minute==60)</p><p><b>  {</b></p><p><b>  minute=0;</b></p><p><b>  }</b></p><p><b>  }</b></p>

65、<p><b>  }</b></p><p><b>  }</b></p><p>  if(minute_sub==0) //分鐘減1 </p><p><b>  { </b></p><

66、;p>  delay1ms(5);</p><p>  if(minute_sub==0)</p><p><b>  {</b></p><p>  do delay1ms(4);</p><p>  while (minute_sub!=1);</p><p>  if(s==0)

67、</p><p><b>  { </b></p><p><b>  minute--;</b></p><p>  if(minute==-1)</p><p><b>  {</b></p><p>  minute=59;</p>

68、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

69、>  void display() //顯示函數(shù)</p><p><b>  {</b></p><p><b>  if(s==0)</b></p><p><b>  {</b></p><p><b&g

70、t;  P2=temp;</b></p><p>  P0=table[hourshi];</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1) ;</p><p><b>  P2=temp;</b></p><p>  P0=t

71、able[hourge];</p><p>  if(count<=10)</p><p><b>  {</b></p><p><b>  P0_7=1; </b></p><p><b>  }</b></p><p>  if(count&

72、gt;10)</p><p><b>  { </b></p><p><b>  P0_7=0;</b></p><p><b>  }</b></p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1)

73、;</p><p><b>  P2=temp;</b></p><p>  P0=table[minuteshi];</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1);</p><p><b>  P2=temp;</b&

74、gt;</p><p>  P0=table[minutege];</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1);</p><p><b>  }</b></p><p><b>  if(s==1)</b><

75、/p><p><b>  {</b></p><p><b>  P2=temp;</b></p><p>  P0=table[hour_temp/10];</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1);</p&

76、gt;<p><b>  P2=temp;</b></p><p>  P0=table[hour_temp%10];</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1);</p><p><b>  P2=temp;</b><

77、;/p><p>  P0=table[minute_temp/10];</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1);</p><p><b>  P2=temp;</b></p><p>  P0=table[minute_temp%10]

78、;</p><p>  delay1ms(5);</p><p>  temp=_crol_(temp,1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void sound()

79、 //聲音函數(shù)</p><p><b>  {</b></p><p><b>  ring=0;</b></p><p>  delay1ms(5000);</p><p><b>  ring=1;</b></p><p

80、><b>  }</b></p><p>  void voice(int h,int m) //響鈴函數(shù)</p><p><b>  {</b></p><p>  uchar bell=0,music=0;</p><p>  in

81、t time=0;</p><p>  time=h+m*60;</p><p>  switch(time)</p><p><b>  {</b></p><p>  case 390: bell=1;break; //6:30</p><p>  cas

82、e 400: bell=1;break; //6:40</p><p>  case 430: bell=1;break; //7:10</p><p>  case 465: bell=1;break; //7:45</p><p>  case 480: b

83、ell=1;break; //8:00</p><p>  case 525: bell=1;break; //8:45</p><p>  case 535: bell=1;break; //8:55</p><p>  case 580: bell=1;br

84、eak; //9:40</p><p>  case 610: bell=1;break; //10:10</p><p>  case 655: bell=1;break; //10:55</p><p>  case 665: bell=1;break;

85、 //11:05</p><p>  case 710: bell=1;break; //11:50</p><p>  case 855: bell=1;break; //14:15</p><p>  case 870: bell=1;break;

86、 //14:30</p><p>  case 915: bell=1;break; //15:15</p><p>  case 925: bell=1;break; /15:25</p><p>  case 970: bell=1;break;

87、 //16:10</p><p>  case 1000: bell=1;break; //16:40</p><p>  case 1045: bell=1;break; //17:25</p><p>  case 1055: bell=1;break;

88、 //17:35</p><p>  case 1100: bell=1;break; //18:20</p><p>  case 1170: bell=1;break; //19:30</p><p>  case 1290: bell=1;break;

89、//21:30</p><p>  case 1320: bell=1;break; //22:00</p><p>  default:break; //其余時(shí)間,直接跳轉(zhuǎn)</p><p><b>  }</b></p><p>  

90、if(bell==1) //鈴聲啟動(dòng)</p><p><b>  { </b></p><p><b>  sound(); </b></p><p>  } </p><p><b>  }</b

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論