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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì)</p><p>  課程名稱 單片機(jī)原理及應(yīng)用 </p><p>  課題名稱 課間作息時(shí)間控制器 </p><p>  專 業(yè) 自動(dòng)化 </p><p&

2、gt;  班 級(jí) </p><p>  學(xué) 號(hào) 2011 </p><p>  姓 名 </p><p>  指導(dǎo)教師 </p><p

3、>  2012年 12 月 02 日</p><p>  課 程 設(shè) 計(jì) 任 務(wù) 書</p><p>  課程名稱 單片機(jī)原理及應(yīng)用 </p><p>  課 題 單片機(jī)作息時(shí)間控制器 </p><p>  專業(yè)班級(jí) </p><p> 

4、 學(xué)生姓名 </p><p>  學(xué) 號(hào) </p><p>  任務(wù)書下達(dá)日期 2012 年 12 月02 日</p><p>  任務(wù)完成日期 2012年 12 月15 日</p><p><b>  

5、目 錄</b></p><p><b>  概述</b></p><p>  1.1課題任務(wù)簡(jiǎn)介........................................................................................1</p><p>  1.2課題設(shè)計(jì)的目的及意義....

6、....................................................................1</p><p>  課題方案設(shè)計(jì).................................................................................2</p><p>  2.1課題方案設(shè)計(jì)........

7、................................................................................2</p><p>  2.2 課題方案簡(jiǎn)要原理...............................................................................2</p><p>  第

8、三章 硬件設(shè)計(jì)........................................................................................3</p><p>  3.1 單片機(jī)芯片選擇...................................................................................4<

9、/p><p>  3.2 電源電路..........................................................................................4</p><p>  3.3 時(shí)鐘電路...................................................................

10、.......................4</p><p>  3.4 復(fù)位電路..........................................................................................4</p><p>  3.5 蜂鳴器輸出電路....................................

11、..........................................5</p><p>  3.7 按鍵輸入電路..................................................................................6</p><p>  3.8 LED數(shù)碼驅(qū)動(dòng)電路.....................

12、....................................................6</p><p>  第四章 軟件設(shè)計(jì).....................................................................................8</p><p>  4.1 主程序的設(shè)計(jì)............

13、........................................................................8</p><p>  4.2 顯示程序的設(shè)計(jì)...............................................................................11</p><p>  4.3 計(jì)

14、時(shí)程序的設(shè)計(jì)...............................................................................11</p><p>  4.4 輔助子程序的設(shè)計(jì)...........................................................................13</p><p&g

15、t;  第五章 系統(tǒng)調(diào)試......................................................................................15</p><p>  5.1 調(diào)試準(zhǔn)備.....................................................................................

16、......15</p><p>  5.2 調(diào)試結(jié)果...........................................................................................15</p><p>  5.2.1 軟件仿真顯示................................................

17、..........................16</p><p>  5.2.2 硬件顯示..................................................................................16.</p><p>  5.3 調(diào)試故障及分析...................................

18、............................................18</p><p>  總結(jié)...............................................................................................19</p><p>  參考文獻(xiàn).........................

19、...............................................................................19</p><p>  附錄................................................................................................................20

20、</p><p><b>  第1章 概述</b></p><p>  1.1 課題任務(wù)簡(jiǎn)介</p><p>  以單片機(jī)為核心,設(shè)計(jì)一個(gè)具有定時(shí)和計(jì)數(shù)功能的智能化作息時(shí)間控制器。該控制要求具有以下功能:</p><p>  (1)使用4位七段顯示器來(lái)顯示現(xiàn)在的時(shí)間,顯示格式為“時(shí)分”,時(shí)和分中間的小數(shù)點(diǎn)閃動(dòng)做秒計(jì)

21、數(shù)。</p><p> ?。?)通過(guò)按鍵能夠進(jìn)行時(shí)間校準(zhǔn)。</p><p> ?。?)作息時(shí)間已達(dá),發(fā)出指令控制電鈴開(kāi)、關(guān)操作。</p><p> ?。?)上電初始時(shí)間13:00.然后通過(guò)按鍵設(shè)置當(dāng)前時(shí)間。</p><p>  1.2 課題設(shè)計(jì)的目的及意義</p><p>  應(yīng)用STC90C52RC為核心控制器件

22、的作息時(shí)間控制器,由鍵盤、聲音輸出模塊、電源轉(zhuǎn)換模塊和存儲(chǔ)模塊四部分組成。它利用STC90C52RC的定時(shí)/計(jì)數(shù)器來(lái)計(jì)算時(shí)間,并用存儲(chǔ)器記錄數(shù)據(jù),保證了系統(tǒng)的可靠性。單片機(jī)是整個(gè)設(shè)計(jì)的核心控制器件,根據(jù)從鍵盤接受的數(shù)據(jù)控制整個(gè)系統(tǒng)的工作流程,整體性好,人性化強(qiáng),可靠性高。</p><p>  實(shí)現(xiàn)了對(duì)時(shí)間控制的智能化,擺脫了傳統(tǒng)由人來(lái)控制時(shí)間的長(zhǎng)短不便,可對(duì)一些以24小時(shí)為周期的開(kāi)關(guān)量進(jìn)行自動(dòng)控制。如上下課打鈴及

23、擴(kuò)音設(shè)備的開(kāi)與關(guān)。設(shè)有四位數(shù)碼管可以實(shí)時(shí)顯示時(shí)間、系統(tǒng)還設(shè)有輸入鍵盤,用以修改實(shí)時(shí)時(shí)鐘,體現(xiàn)了系統(tǒng)簡(jiǎn)單、工作穩(wěn)定可靠、價(jià)廉、控制時(shí)間精準(zhǔn)及系統(tǒng)體積小等優(yōu)點(diǎn)。</p><p>  第2章 課題方案設(shè)計(jì) </p><p><b>  2.1課題方案設(shè)計(jì)</b></p><p>  根據(jù)系統(tǒng)的功能要求,擬定系統(tǒng)硬件電路結(jié)構(gòu)由單片機(jī)、電源電路、時(shí)鐘

24、電路、復(fù)位電路、按鍵輸入電路、蜂鳴器模擬電路和LED數(shù)碼管驅(qū)動(dòng)顯示電路。其結(jié)構(gòu)框圖如圖2-1所示。</p><p><b>  圖2-1結(jié)構(gòu)框圖</b></p><p>  2.2 課題方案原理簡(jiǎn)述</p><p>  作息時(shí)間控制器系統(tǒng)使用4位七段顯示器來(lái)顯示現(xiàn)在的時(shí)間,顯示格式為“時(shí)分”,由LED小數(shù)點(diǎn)閃動(dòng)作為秒計(jì)數(shù)表示。可以使用按鍵輸入電

25、路設(shè)定作息時(shí)間。能夠根據(jù)預(yù)先設(shè)定好的作息時(shí)間表自動(dòng)啟停蜂鳴器電路,完成對(duì)外部電路的實(shí)時(shí)控制。</p><p>  由按鍵輸入控制設(shè)置年月日以及當(dāng)前時(shí)間、并可設(shè)置鬧鐘定時(shí)、時(shí)間到由蜂鳴器發(fā)出響聲并作出相應(yīng)動(dòng)作:二極管閃亮,同時(shí)播放音樂(lè)。</p><p>  第3章 硬件設(shè)計(jì)</p><p>  在作息時(shí)間控制器中,硬件設(shè)計(jì)主要是完成單片機(jī)芯片型號(hào)的選擇,電源電路、

26、時(shí)鐘電路和復(fù)位電路、蜂鳴器模擬響鈴電路、按鍵輸入電路和LED數(shù)碼驅(qū)動(dòng)顯示電路的設(shè)計(jì)。</p><p>  3.1 單片機(jī)芯片選擇</p><p>  STC90C52RC單片機(jī)的芯片,它具有超強(qiáng)的抗干擾和抗靜電能力、成本低、超低功耗、更強(qiáng)的復(fù)位效果等優(yōu)點(diǎn)。</p><p>  芯片引腳和對(duì)應(yīng)的輸出功能如圖3-1-1和3-1-2所示: <

27、/p><p>  圖3-1-1 芯片引腳圖</p><p>  圖3-1-2 輸出功能圖</p><p>  3.2 電源電路</p><p>  電源電路是任何一個(gè)電子系統(tǒng)都需要供電電路,即電源,單片機(jī)也不例外。單片機(jī)的供電電源可以是開(kāi)關(guān)電源、線性電源、常用的電源裝換芯片和USB電源等。無(wú)論哪一種電源設(shè)計(jì)都要嚴(yán)格考慮它的各項(xiàng)指標(biāo)。在這里

28、選擇的是可調(diào)直流電源適配器,輸出電壓正負(fù)極性可轉(zhuǎn)換,試用范圍廣泛。此單片機(jī)中電源電路由開(kāi)關(guān)按鈕、整流橋、濾波電路和二次整數(shù)及濾波電路組成。</p><p>  3.3 時(shí)鐘電路 </p><p>  本系統(tǒng)采用的是內(nèi)部時(shí)鐘方式。 采用12MHZ的晶振(機(jī)器周期為1us)和兩個(gè)30Pf的電解電容。具體接線圖如圖3-3所示</p><p><b>  圖3-

29、3 時(shí)鐘電路</b></p><p><b>  3.4 復(fù)位電路</b></p><p>  只需要給RST引腳連續(xù)輸入2個(gè)機(jī)器周期以上高電平,就可以完成單片機(jī)的初始化操作。在此次課程設(shè)計(jì)中復(fù)位電路采用的是一個(gè)規(guī)格為1K和一個(gè)規(guī)格為10K的電阻,再加一個(gè)規(guī)格為22uF的電解電容,具體電路連線圖如圖3-4所示。 </p><p>

30、;<b>  圖3-4 復(fù)位電路</b></p><p>  3.5 蜂鳴器模擬響鈴電路</p><p>  將單片機(jī)P3^7口上接入蜂鳴器期間需要放大電路才可驅(qū)動(dòng)蜂鳴器發(fā)出聲。放大電路主要利用具有放大特性的電子元器件:晶體三極管,三極管加上工作電壓后,輸入端的微小電流變化可以引起輸出端較大的電流變化,輸出端的變化要比輸入端的變化很多。電路圖如圖3-5所示:<

31、/p><p>  圖3-5 蜂鳴器模擬電路</p><p>  3.7 按鍵輸入電路 </p><p>  按鍵輸入電路主要實(shí)現(xiàn)對(duì)時(shí)間的設(shè)定,本系統(tǒng)采用四個(gè)獨(dú)立鍵盤,k1鍵是實(shí)現(xiàn)設(shè)定小時(shí)和分鐘設(shè)定的模式切換,k2鍵是對(duì)小時(shí)或者分鐘進(jìn)行加1,k3是對(duì)小時(shí)或者分鐘進(jìn)行減1,K4是對(duì)前三個(gè)的設(shè)置進(jìn)行退出。如圖3-7所示</p><p>  圖3-7

32、按鍵輸入電路</p><p>  3.8 LED數(shù)碼驅(qū)動(dòng)顯示電路</p><p>  該設(shè)計(jì)中采用的是共陽(yáng)極數(shù)碼管,數(shù)碼管由斷碼和位碼組成,由反相器組成驅(qū)動(dòng)電路實(shí)現(xiàn)時(shí)分的顯示功能。a b c d e f g dp 為斷碼分別接入單片機(jī)P0I/O口,位碼W1、W2、W3、W4分別經(jīng)驅(qū)動(dòng)后接入P2.4、P2.5、P2.6 、P2.7。第一個(gè)數(shù)碼管顯示小時(shí)的十位第二個(gè)數(shù)碼管顯示小時(shí)的各位,第

33、三個(gè)數(shù)碼管顯示分鐘的十位,第四個(gè)數(shù)碼管顯示分鐘的各位。中間小數(shù)點(diǎn)閃爍代表秒。電路設(shè)計(jì)如圖3-8所示。</p><p>  圖3-8 LED 數(shù)碼驅(qū)動(dòng)顯示電路</p><p>  第4章 軟件設(shè)計(jì)</p><p>  該控制器的軟件設(shè)計(jì)是用keil軟件用c編程。利用單片機(jī)的定時(shí)中斷進(jìn)行計(jì)時(shí),通過(guò)按鍵掃描來(lái)設(shè)置當(dāng)前時(shí)間。主要包含這些程序段,分別是主程序、顯示子程

34、序和計(jì)時(shí)子程序,此外還包初始化子程序、延時(shí)子程序、時(shí)間顯示輔助程序。以及程序中包含的頭文件和宏定義構(gòu)成了整個(gè)程序的設(shè)計(jì)。</p><p>  4.1 主程序的設(shè)計(jì)</p><p>  主程序中主要的作用是調(diào)用初始化子程序,按鍵掃描和調(diào)用顯示子程序。</p><p><b>  按鍵掃描部分</b></p><p>

35、  Key=1表示選中第一個(gè)按鍵,進(jìn)行小時(shí)和分鐘的設(shè)置,key=1按鍵的次數(shù)進(jìn)行存入X1,當(dāng)X1=1進(jìn)入小時(shí)的設(shè)置,當(dāng)X1=2進(jìn)入分的設(shè)置。當(dāng)X1=3回到初始狀態(tài)。</p><p>  Key=2表示選中第2個(gè)按鍵,此時(shí)在key=1的次數(shù)等于1小時(shí)加1調(diào)整設(shè)置,key=1的次數(shù)等于2表示進(jìn)行分鐘加1的調(diào)整設(shè)置。小時(shí)的范圍為0—23,分鐘的范圍為0—59。</p><p>  Key=3表示

36、選中第3個(gè)按鍵,此時(shí)在key=1的次數(shù)等于1小時(shí)減1調(diào)整設(shè)置,key=1的次數(shù)等于2表示進(jìn)行分鐘減1的調(diào)整設(shè)置。</p><p>  Key=4表示選中第一個(gè)按鍵,當(dāng)執(zhí)行按鍵1、2、3的功能時(shí),均可退出到初始狀態(tài)。</p><p><b>  鬧鈴部分</b></p><p>  以下是學(xué)校課間作息時(shí)間表,依此來(lái)對(duì)程序設(shè)計(jì)進(jìn)行打鈴。</p

37、><p>  表4-1 課間時(shí)間作息表</p><p>  當(dāng)時(shí)間到達(dá)設(shè)置點(diǎn)時(shí),對(duì)鬧鐘標(biāo)志位P3.7置0來(lái)確定鬧鈴響,例如,當(dāng)8點(diǎn)鐘的時(shí)間到,第一節(jié)課準(zhǔn)備開(kāi)始上課,對(duì)打鈴時(shí)間設(shè)置30S,當(dāng)8:45時(shí)間到,鬧鈴響,開(kāi)始下課,鈴聲響30S ,完成打鈴,依此類推。圖4-1是主程序流程圖。</p><p>  圖4-1 主程序流程圖</p><p>  

38、4.2 顯示子程序的設(shè)</p><p>  設(shè)置P2=0xff,則選中小時(shí)的十位數(shù)碼管,即W1,然后送斷碼給P0口,顯示相應(yīng)的數(shù)字。其中有一個(gè)條件,當(dāng)設(shè)置小時(shí)有效,即X1==1和計(jì)數(shù)大于10時(shí)便返回,每一個(gè)數(shù)碼管可以顯示0-9十個(gè)數(shù)字,然后調(diào)用延時(shí)即可。設(shè)置P2=0xbf,則選中小時(shí)的各位數(shù)碼管,即W2,設(shè)置P2=0xdf,則選中分的十位數(shù)碼管,即W3,設(shè)置P2=0xef,則選中分的各位數(shù)碼管,即W4。具體流

39、程圖如下。</p><p>  圖4-2 顯示程序流程圖</p><p>  4.3 計(jì)時(shí)程序的設(shè)計(jì)</p><p>  首先運(yùn)用定時(shí)擴(kuò)展的方法構(gòu)成最小單位的定時(shí),在定時(shí)/計(jì)數(shù)器T0方式1下定時(shí)50ms,計(jì)數(shù)20次構(gòu)成1s為單位的數(shù)值。當(dāng)1s計(jì)數(shù)次數(shù)sec==60時(shí)條件成立便構(gòu)成1min,當(dāng)1min計(jì)數(shù)次數(shù)m==60成立構(gòu)成了1hour,當(dāng)1hour計(jì)數(shù)次數(shù)h=

40、=24條件成立構(gòu)成了一天,然后返回。</p><p>  圖4-3 計(jì)時(shí)程序流程圖</p><p>  4.4 輔助子程序</p><p>  此部分包含包含數(shù)碼管顯示輔助子程序、初始化子程序、按鍵掃描輔助函數(shù)和延時(shí)子程序。</p><p>  數(shù)碼管顯示子程序主要是把小時(shí)分解到千位和百位,分鐘分解到十位和各位。程序見(jiàn)void bi

41、anhuan1(void)部分的編寫。</p><p>  對(duì)應(yīng)的端口號(hào)、數(shù)字、和斷碼表如表4-4所示</p><p>  表4-4 I/O分配表</p><p> ?。?)初始化子程序中主要設(shè)置定時(shí)計(jì)數(shù)器T0定時(shí)下的工作方式1,即TMOD=0x01,計(jì)數(shù)初值為(65536-50000)=15536,化成十六進(jìn)制為3cb0,所以TH0=0x3c,TL0=0xb0,此

42、外還要啟動(dòng)定時(shí)器T0,即TR0=1,T0開(kāi)中斷允許和開(kāi)總中斷,即ET0=1和EA=1。其程序參見(jiàn)附錄void init (void)部分的編寫。</p><p>  (3)按鍵掃描函數(shù)主要完成將P2低四位賦為1,若有按鍵按下則P2口對(duì)應(yīng)的位會(huì)為0,也就會(huì)出現(xiàn)0x0f&P2=0x07、0x0b、0x0b、0x0d和0x0e四種情況,分別是四個(gè)按鍵按下的狀態(tài)。其程序見(jiàn)unsigned char scankey

43、(void) 部分的編寫。</p><p> ?。?)延時(shí)子程序供其它子程序的調(diào)用,延時(shí)0.1毫秒。其程序參見(jiàn)void delay(uchar)部分的編寫。</p><p><b>  第五章 系統(tǒng)調(diào)試</b></p><p>  5.1 調(diào)試準(zhǔn)備</p><p>  根據(jù)硬件的設(shè)計(jì),把線路接好,采用RS232標(biāo)準(zhǔn)

44、的DB-9連接器,和串口轉(zhuǎn)USB接口線進(jìn)行數(shù)據(jù)的傳輸,通過(guò)STC-ISP-V483軟件進(jìn)行程序的下載,選擇MCUType中STC90C52RC芯片,設(shè)置端口號(hào)COM5以及波特率,打開(kāi)程序進(jìn)行下載,上電。</p><p>  5.2 調(diào)試結(jié)果</p><p>  5.2.1 軟件仿真顯示</p><p>  軟件仿真整體效果如圖5-1所示,初始上電顯示時(shí)間13:0

45、0。小數(shù)點(diǎn)閃爍一次代表一秒。</p><p>  圖5-1 軟件仿真圖</p><p>  5.2.2 硬件顯示</p><p> ?。?)上電后根據(jù)程序的初始設(shè)置,顯示時(shí)間為13:00,中間的小數(shù)點(diǎn)閃動(dòng)一次代表時(shí)間進(jìn)行1秒。如圖5-2所示</p><p>  圖5-2 硬件顯示圖1</p><p> ?。?)小時(shí)的

46、設(shè)置。按下第一個(gè)鍵進(jìn)行小時(shí)的設(shè)置,再按下第二個(gè)鍵兩次時(shí)間顯示15:00(按第一次時(shí)蜂鳴器會(huì)根據(jù)預(yù)設(shè)時(shí)間響鈴30S)。按下第三個(gè)鍵三次時(shí)間顯示12:00。按下第一個(gè)鍵三次或者按下第四個(gè)鍵停止當(dāng)前操作。如圖5-3和5-4所示。</p><p>  圖5-3 硬件顯示圖2</p><p>  圖5-4 硬件顯示圖3</p><p>  (3)分鐘的設(shè)置。按下第一個(gè)鍵兩次

47、進(jìn)行分鐘的設(shè)置,再按下第二個(gè)鍵兩次時(shí)間顯示12:02,按下第三個(gè)鍵三次進(jìn)入時(shí)間顯示12:59。按下第一個(gè)鍵三次或者按下第四個(gè)鍵停止當(dāng)前操作。如圖5-5和5-6所示。</p><p>  圖5-5 硬件顯示圖4</p><p>  圖5-6 硬件顯示圖5</p><p>  5.3 調(diào)試故障及分析</p><p>  上電后,數(shù)碼管f段不顯

48、示。</p><p>  分析:檢查程序調(diào)試無(wú)誤后,檢查單片機(jī)硬件經(jīng)電表測(cè)試,f端沒(méi)焊接好。</p><p>  蜂鳴器上電后到設(shè)置時(shí)間不打鈴</p><p>  分析:檢查程序調(diào)試無(wú)誤后,檢查單片機(jī)硬件連接,P3.7口沒(méi)短接。</p><p>  按鍵進(jìn)行時(shí)鐘加設(shè)置時(shí)加到時(shí)鐘加到16出現(xiàn)紊亂。</p><p>  分

49、析:檢查程序是對(duì)時(shí)鐘h進(jìn)行賦值時(shí)把 “==”寫出“=”</p><p>  部分小數(shù)點(diǎn)沒(méi)有實(shí)現(xiàn)秒閃作用。</p><p>  分析:這一部分的設(shè)置和小時(shí)的各位段斷碼dp直接設(shè)置會(huì)有沖突,要錯(cuò)開(kāi)進(jìn)行設(shè)置,當(dāng)0.5秒時(shí)就是亮一次,再過(guò)0.5秒就滅一次,這樣閃亮就是1S。</p><p><b>  第6章 總結(jié)</b></p>&

50、lt;p>  單片機(jī)課程設(shè)計(jì)分為兩周,第一周在老師的指導(dǎo)下我們完成了對(duì)我們組課題作息時(shí)間控制器的方案確定,設(shè)計(jì)了原理圖,再仿真,焊接。這一過(guò)程讓我收獲頗多,讓我明白了就自動(dòng)化專業(yè)而言,我們所學(xué)的東西都是一層連一層的,再對(duì)原理圖的設(shè)計(jì)時(shí),我們感覺(jué)甚至對(duì)以前學(xué)的簡(jiǎn)單數(shù)模電知識(shí)都忘記了,再緊張的時(shí)間里一邊查閱以前所學(xué)的課程,像模電、數(shù)電、電路、C語(yǔ)言、微機(jī)原理、proteus都引用到了本次課程設(shè)計(jì)。</p><p&g

51、t;  我們組員在這場(chǎng)課程設(shè)計(jì)中有了明確的分工合作,畫原理圖硬件設(shè)計(jì)、程序設(shè)計(jì)分析調(diào)試、對(duì)整個(gè)單片機(jī)的調(diào)試與分析。反反復(fù)復(fù),有時(shí)一個(gè)小的錯(cuò)誤要檢查很久,但我們組員至始至終沒(méi)有放棄,最終在老師檢查與指導(dǎo)我們終于完成了這次單片機(jī)課程設(shè)計(jì)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 王迎旭等.單片機(jī)原理及及應(yīng)用.【M】機(jī)械工業(yè)出版社.2012

52、年</p><p>  [2] 周向紅.51單片機(jī)課程設(shè)計(jì).【M】華中科技大學(xué)出版社.2011年</p><p>  [3] 陳世清.c語(yǔ)言課程設(shè)計(jì).【M】浙江大學(xué)出版社.2012年</p><p>  [4] 張迎新.單片機(jī)微型計(jì)算機(jī)原理及接口技術(shù).【M】國(guó)防工業(yè)出版社.2009年</p><p><b>  附錄</b&g

53、t;</p><p>  #include<reg52.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uchar code a[10]={0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x2

54、4,0xEA,0x20,0xA0};</p><p>  sbit be=P3^7;</p><p>  sbit DP=P1^5;</p><p>  bit flag=0;</p><p>  bit KeyFlag=0;</p><p>  bit SFlag=1;</p><p>  u

55、char m=00,h=13,sec=00,cnt=0,qian,bai,shi,ge,X1=0,key,cnnt;</p><p>  void delay(uchar t); //延時(shí)函數(shù)</p><p>  void init(void);//初始化函數(shù)</p><p>  void display(void); //顯示函數(shù)</p>&

56、lt;p>  void bianhuan1(uchar h);//時(shí)間顯示輔助函數(shù)</p><p>  unsigned char scankey(void); //按鍵掃描程序</p><p>  void init(void)</p><p><b>  {</b></p><p>  TMOD=0x01;

57、 //寫入工作方式字</p><p>  TH0=0x3c; //寫入計(jì)數(shù)初值</p><p><b>  TL0=0xb0;</b></p><p>  ET0=1; //開(kāi)放中斷</p><p><b>  TR0=1;</b></p><p><b&

58、gt;  EA=1;</b></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  { </b></p><p><b>  init();</b></p><p><

59、;b>  while(1)</b></p><p><b>  {</b></p><p>  key=scankey(); //按鍵輸入程序</p><p>  if((KeyFlag==1)&&(SFlag==0))</p><p><b>  {</b&

60、gt;</p><p>  KeyFlag=0;</p><p>  if(key==1) </p><p><b>  {</b></p><p><b>  X1++;</b></p><p><b>  }</b></p>&

61、lt;p>  if(X1==1)//時(shí)間調(diào)整</p><p><b>  {</b></p><p>  if(key==2)</p><p>  { </p><p><b>  h++;</b></p><p><b>  if(h

62、==24)</b></p><p><b>  {</b></p><p><b>  h=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key=

63、=3)</p><p><b>  {</b></p><p><b>  if(h==0)</b></p><p><b>  {</b></p><p><b>  h=24;</b></p><p><b>  }&

64、lt;/b></p><p><b>  h--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(X1==2) //分鐘調(diào)整</p><p><b>  {&

65、lt;/b></p><p>  if(key==2)</p><p><b>  {</b></p><p><b>  m++;</b></p><p><b>  if(m==60)</b></p><p><b>  {</

66、b></p><p><b>  m=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key==3)</p><p><b>  {</b></p&

67、gt;<p><b>  if(m==0)</b></p><p><b>  {</b></p><p><b>  m=60;</b></p><p><b>  }</b></p><p><b>  m--;</b&g

68、t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(X1==3)//停止操作返回</p><p><b>  {</b></p><p><b>  X1=0;</b&g

69、t;</p><p><b>  }</b></p><p>  if(key==4)</p><p><b>  {</b></p><p><b>  X1=0;</b></p><p><b>  }</b></p>

70、;<p><b>  }</b></p><p>  P2=P2|0x0f;</p><p>  if((P2&0x0f)==0x0f)</p><p><b>  SFlag=1;</b></p><p>  display(); //顯示打鈴函數(shù)</p&g

71、t;<p><b>  be=1;</b></p><p><b>  if(h==8)</b></p><p>  {if(m==0||m==45||m==55){if(sec<30)be=0;else be=1;}}</p><p>  if(h==9&&m==40){if(sec&

72、lt;30)be=0;}</p><p>  if(h==10){if((m==10||m==55)&&sec<30)be=0;else be=1;}</p><p>  if((h==11)&&(m==5)&&(sec<30))</p><p><b>  be=0;</b><

73、/p><p>  if(h==11&&m==50&&sec<30)</p><p><b>  be=0;</b></p><p><b>  if(h==14)</b></p><p>  {if(m==0||m==45||m==55){if(sec<30)

74、be=0;else be=1;}}</p><p>  if(h==15&&m==40){if(sec<30)be=0;}</p><p><b>  if(h==16)</b></p><p>  {if((m==10||m==55)&&sec<30)be=0;else be=1;}</p&g

75、t;<p>  else if(h==17){if((m==5||m==50)&&sec<30)be=0;else be=1;}</p><p><b>  if(h==19)</b></p><p>  {if(m==0||m==45||m==55){if(sec<30)be=0;else be=1;}}</p>

76、<p>  if(h==20){if((m==40||m==50)&&sec<30)be=0;else be=1;}</p><p>  if(h==21){if((m==0||m==40)&&sec<30)be=0;</p><p>  else be=1;}</p><p><b>  }<

77、;/b></p><p><b>  //}</b></p><p><b>  } </b></p><p>  void display() //顯示函數(shù)</p><p><b>  {</b></p><p>  if(X1==1&a

78、mp;&cnt>=10)P2=0xff;</p><p>  P1=a[qian];</p><p><b>  P2=0x7F;</b></p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p>  if

79、(X1==1&&cnt>=10)P2=0xff;</p><p>  P1=a[bai];</p><p>  if(flag==1)</p><p><b>  DP=0; </b></p><p><b>  else</b></p><p><

80、;b>  DP=1;</b></p><p><b>  P2=0xbf;</b></p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p>  if(X1==2&&cnt>=10)P2=0xff;<

81、;/p><p>  P1=a[shi];</p><p><b>  P2=0xdf;</b></p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p>  if(X1==2&&cnt>=10)P2=0

82、xff;</p><p><b>  P1=a[ge];</b></p><p><b>  P2=0xef;</b></p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p><b> 

83、 }</b></p><p>  void bianhuan1(uchar h) //時(shí)間輔助函數(shù)</p><p><b>  {</b></p><p>  qian=h/10;</p><p><b>  bai=h%10;</b></p><p><

84、b>  shi=m/10;</b></p><p><b>  ge=m%10;</b></p><p><b>  }</b></p><p>  unsigned char scankey(void)//按鍵掃描函數(shù)</p><p><b>  {</b>

85、;</p><p>  unsigned char temp=0;</p><p>  P2=P2|0x0f;</p><p>  temp=0x0f&P2;</p><p>  switch(temp)</p><p><b>  {</b></p><p>  

86、case 0x07: if((KeyFlag==0)&&SFlag==1)</p><p><b>  { </b></p><p>  KeyFlag=1;</p><p><b>  SFlag=0;</b></p><p>  return 4;} break;</p&

87、gt;<p>  case 0x0B:if((KeyFlag==0)&&SFlag==1)</p><p><b>  { </b></p><p>  KeyFlag=1;</p><p><b>  SFlag=0;</b></p><p>  return 3;}

88、 break;</p><p>  case 0x0D:if((KeyFlag==0)&&SFlag==1)</p><p><b>  { </b></p><p>  KeyFlag=1;</p><p><b>  SFlag=0;</b></p><p&

89、gt;  return 2;} break;</p><p>  case 0x0E:if((KeyFlag==0)&&SFlag==1)</p><p><b>  { </b></p><p>  KeyFlag=1;</p><p><b>  SFlag=0;</b><

90、;/p><p>  return 1;} break;</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void delay(uchar t )

91、 //延時(shí)函數(shù)</p><p><b>  {</b></p><p>  while(t--);</p><p><b>  }</b></p><p>  void time0(void)interrupt 1 // 時(shí)鐘函數(shù)</p><p><b>  

92、{</b></p><p><b>  TH0=0x3c;</b></p><p><b>  TL0=0xb0;</b></p><p><b>  cnt++;</b></p><p><b>  cnnt++;</b></p>

93、<p>  if(cnt==20)</p><p><b>  {</b></p><p>  flag=~flag;</p><p><b>  sec++;</b></p><p><b>  cnt=0;</b></p><p> 

94、 if(sec==60)</p><p><b>  {</b></p><p><b>  sec=0;</b></p><p><b>  m++;</b></p><p><b>  if(m==60)</b></p><p>

95、;<b>  {</b></p><p><b>  m=0;</b></p><p><b>  h++;</b></p><p><b>  if(h==24)</b></p><p><b>  {</b></p>

96、<p><b>  h=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  bianhuan1(h);</p><p>

97、;<b>  }</b></p><p><b>  }</b></p><p>  電氣與信息工程系課程設(shè)計(jì)評(píng)分表</p><p>  指導(dǎo)教師簽名:________________</p><p>  日 期:________________ </p><p&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論