2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計(jì)</p><p>  課程名稱 單片機(jī)原理與應(yīng)用 </p><p>  課題名稱 電子表 </p><p>  專 業(yè) 測控技術(shù)與儀器 </p><p>  班 級 測控1002 <

2、/p><p>  學(xué) 號 </p><p>  姓 名 </p><p>  指導(dǎo)教師 </p><p>  2013 年 5 月 31日</p><p><b>  目 錄<

3、/b></p><p><b>  第1章 概述6</b></p><p>  1.1設(shè)計(jì)內(nèi)容及要求6</p><p>  1.2本設(shè)計(jì)實(shí)現(xiàn)的功能6</p><p>  第2章 系統(tǒng)總體方案設(shè)計(jì)7</p><p>  2.1系統(tǒng)方案設(shè)計(jì)7</p><p> 

4、 2.2系統(tǒng)設(shè)計(jì)框圖7</p><p>  第3章 硬件設(shè)計(jì)8</p><p>  3.1 時(shí)間顯示電路的設(shè)計(jì)8</p><p>  3.2獨(dú)立按鍵電路的設(shè)計(jì)9</p><p>  3.3晶振電路的設(shè)計(jì)10</p><p>  3.4 復(fù)位電路的設(shè)計(jì)10</p><p>  3.5總

5、體設(shè)計(jì)電路圖11</p><p>  第4章 開發(fā)板焊接及其測試12</p><p>  4.1 焊接步驟及注意事項(xiàng)12</p><p>  4.2 調(diào)試及檢測步驟12</p><p>  第5章 軟件設(shè)計(jì)與說明14</p><p>  5.1 系統(tǒng)軟件設(shè)計(jì)思路14</p><p&g

6、t;  5.2 模塊程序的設(shè)計(jì)14</p><p>  5.2.1時(shí)鐘模塊14</p><p>  5.2.2跑秒模塊16</p><p>  5.3 顯示和按鍵的設(shè)計(jì)17</p><p>  5.3.1 顯示模塊17</p><p>  5.3.2按鍵設(shè)計(jì)18</p><p>  

7、第6章 調(diào)試步驟、結(jié)果、使用說明19</p><p>  6.1調(diào)試步驟和過程19</p><p>  6.2調(diào)試結(jié)果19</p><p>  6.3使用說明20</p><p>  第7章 設(shè)計(jì)總結(jié)21</p><p>  附件A 電路仿真圖23</p><p>  附件B 程

8、序清單24</p><p><b>  第1章 概述</b></p><p>  1.1設(shè)計(jì)內(nèi)容及要求</p><p>  本課主要是以單片機(jī)為核心設(shè)計(jì)一個(gè)多功能電子表,具有電子時(shí)鐘、時(shí)鐘設(shè)置和跑表功能。做時(shí)鐘時(shí)在4位LED 顯示器上顯示分、秒,做跑表時(shí)顯示范圍000.0秒~999.9秒,并具有時(shí)鐘啟動、時(shí)鐘停止、跑表啟動、跑表。</p

9、><p>  1.2本設(shè)計(jì)實(shí)現(xiàn)的功能</p><p>  (1)在8位LED數(shù)碼管上分別顯示時(shí)、分、秒。</p><p> ?。?)通過獨(dú)立按鍵分別可對時(shí)鐘的時(shí)、分進(jìn)行調(diào)整,可設(shè)置時(shí)鐘暫停、開啟。</p><p> ?。?)跑表功能,可以清零,啟動,實(shí)現(xiàn)隨停隨加。</p><p>  (4)時(shí)鐘和跑表之間可實(shí)現(xiàn)自由切換,當(dāng)

10、進(jìn)入跑表模式時(shí)時(shí)鐘繼續(xù)進(jìn)行,當(dāng)進(jìn)入時(shí)鐘模式時(shí),跑表停止。</p><p>  第2章 系統(tǒng)總體方案設(shè)計(jì)</p><p><b>  2.1系統(tǒng)方案設(shè)計(jì)</b></p><p>  本設(shè)計(jì)基于51單片機(jī),通過程序的設(shè)計(jì)實(shí)現(xiàn)其功能。</p><p>  根據(jù)設(shè)計(jì)要求,總電路分為單片機(jī)晶振電路、單片機(jī)復(fù)位電路、獨(dú)立按鍵接口電路

11、,數(shù)碼管顯示電路,電源電路五部分。其中共設(shè)3個(gè)獨(dú)立按鍵,通過獨(dú)立按鍵及按鍵組合實(shí)現(xiàn)不同的功能;時(shí)鐘電路,在本系統(tǒng)中采用內(nèi)部時(shí)鐘電路,由一個(gè)石英晶體管振蕩器和兩個(gè)微調(diào)電容組成;復(fù)位電路中給給RST引腳連續(xù)輸入2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)以上高電平,就可完成初始化操作;顯示電路采用8段8位共陰級LED顯示管顯示時(shí)間,其中前兩位顯示小時(shí),中間兩位顯示分鐘,后兩位顯示秒鐘,時(shí),分,秒間通過橫杠“—”顯示;</p><

12、p><b>  2.2系統(tǒng)設(shè)計(jì)框圖</b></p><p><b>  第3章 硬件設(shè)計(jì)</b></p><p>  3.1 時(shí)間顯示電路的設(shè)計(jì)</p><p>  為減少LED數(shù)碼管電路對硬件資源的占用,本設(shè)計(jì)中采用動態(tài)掃描法的顯示方式接電路。</p><p>  動態(tài)顯示方式是指輪流電量各

13、位LED數(shù)碼管,利用定時(shí)掃描的方式輪流點(diǎn)亮各位數(shù)碼管。LED公用一個(gè)8位的I/O,即P0口。P2口的的低3位接74LS138的輸入端,通過譯碼產(chǎn)生8位的位選信號來選中對應(yīng)的LED數(shù)碼管,顯示格式為“12-30-00”,表示十二點(diǎn)三十分零秒,同時(shí)可通過按鍵切換到跑表模式,只用到4位數(shù)碼管顯示,顯示格式為“000.0”。同時(shí)還可通過對應(yīng)的按鍵對其進(jìn)行時(shí)間設(shè)定。</p><p><b>  時(shí)間顯示電路圖:&

14、lt;/b></p><p><b>  圖3.1</b></p><p>  3.2獨(dú)立按鍵電路的設(shè)計(jì)</p><p>  因考慮節(jié)省I/O口,簡化操作,本設(shè)計(jì)采用3個(gè)獨(dú)立按鍵。獨(dú)立按鍵設(shè)計(jì)簡單,3個(gè)按鍵的一端分別接P3.2、P3.3、P3.4口,另一端都接地。本設(shè)計(jì)通過調(diào)用一個(gè)延時(shí)函數(shù),消除鍵盤的抖動,電路設(shè)計(jì)圖如下如下:</p

15、><p><b>  圖3.2</b></p><p>  在時(shí)鐘模式下按鍵功能如下:</p><p>  KEY1:調(diào)整時(shí)針,按下并釋放,時(shí)針加1;</p><p>  KEY2:調(diào)整分針,按下并釋放,分針加1;</p><p>  KEY3:時(shí)鐘暫停 / 開啟;</p><p&

16、gt;  依次按下KEY3、KEY2并依次釋放,進(jìn)入跑秒模式;</p><p>  在跑秒模式下按鍵功能如下:</p><p>  KEY1:按下并釋放,跑秒計(jì)時(shí)開始 / 暫停;</p><p>  KEY2:按下并釋放,跑秒復(fù)位到000.0;</p><p>  KEY3:按下恢復(fù)到時(shí)鐘模式;</p><p>  3

17、.3晶振電路的設(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>  內(nèi)部時(shí)鐘電路設(shè)計(jì)圖如下:</p><p><b>  圖3.3&l

18、t;/b></p><p>  3.4 復(fù)位電路的設(shè)計(jì)</p><p>  可靠的復(fù)位電路是保證單片機(jī)正常運(yùn)行的關(guān)鍵因素。將RST引腳連續(xù)輸入2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩期間)以上高電平,即可以完成單片機(jī)的初始化操作。本設(shè)計(jì)采用按鈕復(fù)位方式。</p><p>  復(fù)位電路設(shè)計(jì)圖如下:</p><p><b>  圖3.4&l

19、t;/b></p><p>  3.5總體設(shè)計(jì)電路圖</p><p>  總體設(shè)計(jì)電路圖如下:</p><p><b>  圖3.5</b></p><p>  單片機(jī)I/O接口分配如下表:</p><p><b>  表3.5</b></p><p

20、>  第4章 開發(fā)板焊接及其測試</p><p>  4.1 焊接步驟及注意事項(xiàng)</p><p>  在焊接板子過程中,以“由低到高”為原則依次對其進(jìn)行焊接。電烙鐵是最常用的焊接工具。先整理元器件(電阻、輕觸按鍵、電容、排阻、芯片插座、三極管、蜂鳴器等等)我們使用20W內(nèi)熱式電烙鐵。新烙鐵使用前,應(yīng)用細(xì)砂紙將烙鐵頭打光亮,通電燒熱,蘸上松香后用烙鐵頭刃面接觸焊錫絲,使烙鐵頭上均勻地

21、鍍上一層錫。這樣做,可以便于焊接和防止烙鐵頭表面氧化。舊的烙鐵頭如嚴(yán)重氧化而發(fā)黑,可用鋼挫挫去表層氧化物,使其露出金屬光澤后,重新鍍錫,才能使用。電烙鐵要用220V交流電源,使用時(shí)要特別注意安全。應(yīng)認(rèn)真做到以下幾點(diǎn):(1)電烙鐵插頭最好使用三極插頭。要使外殼妥善接地;(2)使用前,應(yīng)認(rèn)真檢查電源插頭、電源線有無損壞。并檢查烙鐵頭是否松動;(3)電烙鐵使用中,不能用力敲擊。要防止跌落。烙鐵頭上焊錫過多時(shí),可用布擦掉。不可亂甩,以防燙

22、傷他人;(4)焊接過程中,烙鐵不能到處亂放。不焊時(shí),應(yīng)放在烙鐵架上。注意電源線不可搭在烙鐵頭上,以防燙壞絕緣層而發(fā)生事故;(5)使用結(jié)束后,應(yīng)及時(shí)切斷電源,拔下電源插頭,冷卻后,再將電烙鐵收回工具箱;</p><p>  4.2 調(diào)試及檢測步驟</p><p>  首先:我們焊好板子之后,檢查下板子的焊接質(zhì)量,如:</p><p> ?。?)焊接時(shí),要保證每個(gè)焊

23、點(diǎn)焊接牢固、接觸良好。要保證焊接質(zhì)量。</p><p> ?。?)所示應(yīng)是錫點(diǎn)光亮,圓滑而無毛刺,錫量適中。錫和被焊物融合牢固。不應(yīng)有虛焊和假焊。</p><p> ?。?)虛焊是焊點(diǎn)處只有少量錫焊住,造成接觸不良,時(shí)通時(shí)斷。假焊是指表面上好像焊住了,但實(shí)際上并沒有焊上,有時(shí)用手一拔,引線就可以從焊點(diǎn)中拔出。這兩種情況將給電子制作的調(diào)試和檢修帶來極大的困難。只有經(jīng)過大量的、認(rèn)真的焊接實(shí)踐,

24、才能避免這兩種情況。焊接電路板時(shí),一定要控制好時(shí)間。太長,電路板將被燒焦,或造成銅箔脫落。從電路板上拆卸元件時(shí),可將電烙鐵頭貼在焊點(diǎn)上,待焊點(diǎn)上的錫熔化后,將元件拔出。</p><p>  然后:檢測焊接板是有順序的,操作不當(dāng)可能會燒壞芯片,其步驟:</p><p> ?。?):在沒插芯片之前,先檢測芯片插槽電源管腳的電壓是否在規(guī)定的范圍內(nèi);</p><p>  

25、(2:):然后插上芯片,再老師的幫助下,將編好程序在Keil uVision4中調(diào)試完成,程序沒有錯(cuò)誤的時(shí)候,通過STC_ISP_480下載到單片機(jī)中,然后進(jìn)行調(diào)試,看是否運(yùn)行正常,如程序能正常運(yùn)行,則表明焊接成功了。</p><p>  第5章 軟件設(shè)計(jì)與說明</p><p>  5.1 系統(tǒng)軟件設(shè)計(jì)思路</p><p>  程序?qū)崿F(xiàn)了模塊化,分主程序模塊,時(shí)鐘

26、顯示模塊,跑秒顯示模塊,跑秒模塊;程序結(jié)構(gòu)簡單,任務(wù)明確,易于編寫、調(diào)試和修改;程序可讀性好,對程序的修改可局部進(jìn)行,其他部分可以保持不變,便于功能的擴(kuò)展和版本的升級;便于多個(gè)模塊調(diào)用。</p><p><b>  圖5.1</b></p><p>  5.2 模塊程序的設(shè)計(jì)</p><p><b>  5.2.1時(shí)鐘模塊</b

27、></p><p>  在本程序,主程序的開始為初始化內(nèi)容。利用單片機(jī)定時(shí)器設(shè)計(jì)時(shí)間計(jì)時(shí)處理,采用單片機(jī)內(nèi)部的T0定時(shí)器溢出中斷來實(shí)現(xiàn),工作在方式1下,定時(shí)50毫秒,因采用的是11.0592MHz的晶振,所以設(shè)定初值為45872,則連續(xù)中斷20次即為一秒,得到了我們所需時(shí)間的最小單位。</p><p>  時(shí)鐘模塊設(shè)計(jì)流程圖如下:</p><p><b&

28、gt;  5.2.2跑秒模塊</b></p><p>  其次的跑表:因?yàn)榕鼙碜钚挝皇?.1秒,而且要與時(shí)鐘分開計(jì)時(shí),跑表停止時(shí),時(shí)鐘要繼續(xù)按正常時(shí)間走,我利用定時(shí)器T1,實(shí)現(xiàn)分開定時(shí),定時(shí)為10ms,連續(xù)中斷10次即為0.1s。兩個(gè)定時(shí)互不干涉,但進(jìn)入時(shí)鐘模式時(shí),為跑表計(jì)時(shí)的定時(shí)器T1的啟動為TR1置0,而停止計(jì)時(shí)。</p><p>  5.3 顯示和按鍵的設(shè)計(jì)</p

29、><p>  5.3.1 顯示模塊</p><p>  LED顯示器的選擇,在我的設(shè)計(jì)中,選擇2個(gè)4位一體的時(shí)鐘型共陽LED顯示器。8位8段共陽顯示器:六位是同時(shí)顯示六位阿拉伯?dāng)?shù)字,而每一個(gè)數(shù)字又是七段碼顯示的;七段是指一個(gè)數(shù)碼顯示的阿拉伯?dāng)?shù)字是由8位二進(jìn)制數(shù)控制的,共陰是指相應(yīng)的二進(jìn)制為0時(shí)不亮,為1時(shí)亮。其分析流程圖:</p><p><b>  5.3.

30、2按鍵設(shè)計(jì)</b></p><p>  第6章 調(diào)試步驟、結(jié)果、使用說明</p><p>  6.1調(diào)試步驟和過程</p><p> ?。?)先調(diào)試出顯示模塊,看動態(tài)掃描是否正常,帶點(diǎn)顯示是否正常。</p><p> ?。?)調(diào)試時(shí)間,使其達(dá)到精確的時(shí)間,比如我要測試時(shí)鐘走1分鐘,看看他的誤差是多少,然后調(diào)節(jié)其定時(shí)器初值TH0/

31、1和TL0/1。</p><p> ?。?)檢查各按鍵是否正常工作,能否實(shí)現(xiàn)預(yù)定功能。</p><p> ?。?)最后將各個(gè)模塊拼接接起來統(tǒng)一調(diào)試,直達(dá)穩(wěn)定達(dá)到想要的效果??词欠衲茉跁r(shí)鐘和跑秒模式中自由切換,切換的跑秒模式后時(shí)鐘是否繼續(xù)正常工作。</p><p><b>  6.2調(diào)試結(jié)果</b></p><p> ?。?/p>

32、1)實(shí)現(xiàn)了全部要求功能,時(shí)鐘顯示正常,跑秒顯示正常,按鍵實(shí)現(xiàn)全部功能,時(shí)鐘顯示模式和跑秒顯示模式能隨時(shí)切換。</p><p><b>  下圖為調(diào)試結(jié)果:</b></p><p>  時(shí)鐘顯示模式 圖6.3.1</p><p>  跑秒顯示模式 圖6.3.2</p><p><b>  6.3使用說明

33、</b></p><p>  設(shè)計(jì)按照要求,在通了電源后,顯示為“12-30-00”,并開始計(jì)時(shí),按下下排三個(gè)獨(dú)立按鍵的右邊按鍵,時(shí)鐘暫停,再按下時(shí)鐘繼續(xù)走,按下中間的按鍵秒針加1,按下左邊按鍵時(shí)針加1。在時(shí)鐘模式中,可隨時(shí)依次按下右邊按鍵和中間按鍵并依次松開,可進(jìn)入跑秒模式。在跑秒模式中,按下左邊按鍵的功能是跑秒計(jì)時(shí)開始/暫停,中間的按鍵為跑秒復(fù)位,右邊按鍵為切換回時(shí)鐘顯示模式。</p>

34、<p><b>  第7章 設(shè)計(jì)總結(jié)</b></p><p>  作為一名測控專業(yè)的大三學(xué)生,我覺得做單片機(jī)課程設(shè)計(jì)是十分有意義的。在已度過的大學(xué)時(shí)間里大多數(shù)接觸的是專業(yè)課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何把我們所學(xué)的專業(yè)基礎(chǔ)課理論知識運(yùn)用到實(shí)踐中去呢?我想做類似的課程設(shè)計(jì)就為我們提供了良好的實(shí)踐平臺。</p><p>  兩周的課程設(shè)計(jì)

35、已經(jīng)接近尾聲了,通過我的不懈努力終于完成了電子表的設(shè)計(jì)。在這一次課程設(shè)計(jì)當(dāng)中,在這里我要感謝指導(dǎo)老師周向紅老師對我的耐心指導(dǎo)。</p><p>  這次課程設(shè)計(jì)給我深刻的印象,積累了大量的經(jīng)驗(yàn)。在寫程序的過程中,我是分別寫了時(shí)鐘程序和跑秒程序,都很順利地各自調(diào)試成功了,因此我以為勝利在望了,其實(shí)不然。當(dāng)我試圖把兩個(gè)程序結(jié)合起來的時(shí)候,我遇到了真正讓我頭疼的部分,要么就是時(shí)鐘顯示正常但是近不了跑秒模式,要么就是進(jìn)入

36、跑秒模式后恢復(fù)不了,或者從跑秒恢復(fù)后時(shí)鐘顯示變快了……這一大堆問題讓我糾結(jié)了很長時(shí)間,是我舉步維艱,讓我一度沮喪。后來我還是打算休息半天,看下書,結(jié)果發(fā)現(xiàn)我基礎(chǔ)還不夠扎實(shí),發(fā)現(xiàn)不不會同時(shí)使用單片機(jī)的內(nèi)部定時(shí)器0/1,不會使用中斷嵌套。從書本中我發(fā)現(xiàn)了問題所在,結(jié)合了書本知識我修改了一下程序,結(jié)果發(fā)現(xiàn)結(jié)果正確。我認(rèn)識到了掌握基礎(chǔ)知識的重要性。在調(diào)試過程中要不斷改程序,由于沒有采用模塊話設(shè)計(jì),改起來十分困難,有時(shí)越改越錯(cuò)。最后我還是推倒重來

37、,分別寫子程序,修改起來方便了許多。</p><p>  在這次課程設(shè)計(jì)中,感謝同組同學(xué)的鼓勵(lì)與配合。通過本次課程設(shè)計(jì),我認(rèn)識到了自己的許多缺點(diǎn)和不足,體會到了實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)以及實(shí)踐出真知的道理。在以后的學(xué)習(xí)生活中,我會努力將學(xué)習(xí)知識看做是自己的興趣愛好,要主動學(xué)習(xí)。不僅要學(xué)會書本上的知識,更要掌握學(xué)好知識的方法和技巧,這樣才能使自己在今后的科技道路上越走越遠(yuǎn)!</p><p>

38、  在此,我要再一次感謝周向紅老師和給過我?guī)椭母魑恢笇?dǎo)老師和所有同學(xué),謝謝你們的的辛勤指導(dǎo)。</p><p>  電氣與信息工程系課程設(shè)計(jì)評分表</p><p>  指導(dǎo)教師簽名:________________</p><p>  日 期:________________ </p><p>  注:①表中標(biāo)*號項(xiàng)目是硬件制

39、作或軟件編程類課題必填內(nèi)容;</p><p> ?、诖吮硌b訂在課程設(shè)計(jì)說明書的最后一頁。課程設(shè)計(jì)說明書裝訂順序:封面、任務(wù)書、目錄、正文、評分表、附件(非16K大小的圖紙及程序清單)。 </p><p><b>  附件A 電路仿真圖</b></p><p><b>  附件B 程序清單</b></p>

40、<p>  #include<reg52.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uhar table_0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

41、,0x40};//共陰數(shù)碼管0-9段位碼</p><p>  uchar table_1[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//共陰數(shù)碼管帶點(diǎn)顯示0-9段位碼</p><p>  uchar sec,min=30,h=12,num,lsec0,hsec0,num0;

42、 //定義所需變量 </p><p>  sbit key1=P3^2; //分別未定義三個(gè)獨(dú)立按鍵</p><p>  sbit key2=P3^3;</p><p>  sbit key3=P3^4;</p&g

43、t;<p>  /**************************延時(shí)子程序*********************************/</p><p>  void delay_ms(uint del)</p><p><b>  {</b></p><p><b>  uint i,j;</b>

44、;</p><p>  for(i=0;i<del;i++)</p><p>  for(j=0;j<148;j++);</p><p><b>  }</b></p><p>  /******************時(shí)鐘模式顯示子程序*********************************/&l

45、t;/p><p>  void display()</p><p><b>  {</b></p><p>  P2=7;//送第一位位選信號</p><p>  P0=table_0[sec%10];//送第一位段選信號</p><p>  delay_ms(1);

46、//延時(shí)1ms</p><p>  P0=0x00;//消影</p><p><b>  P2=6;</b></p><p>  P0=table_0[sec/10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;<

47、;/b></p><p><b>  P2=5;</b></p><p>  P0=table_0[10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b>  P2=4;</b

48、></p><p>  P0=table_0[min%10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b>  P2=3;</b></p><p>  P0=table_0[min/10];

49、</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b>  P2=2;</b></p><p>  P0=table_0[10];</p><p>  delay_ms(1);</p><

50、;p><b>  P0=0x00;</b></p><p><b>  P2=1;</b></p><p>  P0=table_0[h%10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p>&

51、lt;p><b>  P2=0;</b></p><p>  P0=table_0[h/10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b>  }</b></p><p&

52、gt;  /*******************跑秒模式顯示子程序********************************/</p><p>  void display_0()</p><p><b>  {</b></p><p><b>  P2=7;</b></p><p>  P

53、0=table_0[lsec0%10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b>  P2=6;</b></p><p>  P0=table_1[lsec0/10];</p><p>  d

54、elay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b>  P2=5;</b></p><p>  P0=table_0[hsec0%10];</p><p>  delay_ms(1);</p><p><b>  P

55、0=0x00;</b></p><p><b>  P2=4;</b></p><p>  P0=table_0[hsec0/10];</p><p>  delay_ms(1);</p><p><b>  P0=0x00;</b></p><p><b&

56、gt;  }</b></p><p>  /**********************跑秒模式子程序*********************************/</p><p>  void run()</p><p><b>  {</b></p><p>  TMOD=0x11;//開

57、啟定時(shí)器1并工作于方式0</p><p>  TH1=(65536-45872)/256;//裝50ms定時(shí)初值</p><p>  TL1=(65536-45872)%256;</p><p>  TH0=(65536-45872)/256;</p><p>  TL0=(65536-45872)%256;</p>

58、<p>  ET1=1;//開啟定時(shí)器1中斷</p><p><b>  ET0=1;</b></p><p>  while(key3)//進(jìn)入跑秒顯示模式</p><p>  {//等待按鍵3按下 否則繼續(xù)循環(huán)</p><p>  display_0();//調(diào)用跑

59、秒模式顯示子程序</p><p>  if(key1==0)//按下按鍵1</p><p><b>  {</b></p><p>  while(!key1)</p><p><b>  {</b></p><p>  display_0();</p>

60、<p>  }//按鍵1釋放</p><p>  TR1=~TR1;//跑秒計(jì)時(shí)開始或暫停</p><p><b>  }</b></p><p>  if(key2==0)//按下按鍵2</p><p><b>  {</b></p><p&

61、gt;  while(!key2)</p><p><b>  {</b></p><p>  display_0();</p><p><b>  }</b></p><p>  TR1=0;//復(fù)位操作 定時(shí)器暫停</p><p>  lsec0=hsec0=0;

62、//跑秒顯示變量歸零 小時(shí)變?yōu)?00.0</p><p><b>  }</b></p><p>  }//按鍵3按下 跳出循環(huán)</p><p><b>  }</b></p><p>  /*********************主程序*********************

63、*******************/</p><p>  void main()</p><p><b>  {</b></p><p>  TMOD=0x01;//確定定時(shí)器0工作于方式1</p><p>  TH0=(65536-45872)/256;//給定時(shí)器裝入初值</p

64、><p>  TL0=(65536-45872)%256;//每50ms中斷一次</p><p>  EA=1;//開總中斷</p><p>  ET0=1;//開定時(shí)器0中斷</p><p>  TR0=1;//定時(shí)開始</p><p>&l

65、t;b>  while(1)</b></p><p><b>  {</b></p><p>  display();//調(diào)用小時(shí)模式顯示子程序</p><p>  if(key1==0|key2==0|key3==0)//判斷是否有按鍵按下</p><p><b> 

66、 {</b></p><p>  delay_ms(2);</p><p>  if(key3==0);//判斷按鍵3按下</p><p><b>  {</b></p><p>  while(!key3) //判斷按鍵3是否釋放,否則繼續(xù)循環(huán)</p>&l

67、t;p><b>  {</b></p><p>  display();</p><p>  /*以下為判斷是否進(jìn)入跑秒模式*/</p><p>  if(key2==0) //判斷按下按鍵3同時(shí)是否有按鍵2按下</p><p><b>  {</b></p>

68、<p>  while(!key2)//等待按鍵2釋放</p><p><b>  {</b></p><p>  display();</p><p>  }//按鍵2按鍵3同時(shí)按下</p><p>  run();//執(zhí)行跑秒子程序</p><p>

69、  TMOD=0x01;//恢復(fù)定時(shí)器0工作于方式1</p><p>  TH0=(65536-45872)/256;</p><p>  TL0=(65536-45872)%256;</p><p><b>  ET1=0;</b></p><p><b>  ET0=1;</b><

70、;/p><p><b>  TR0=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*以上為判斷是否進(jìn)入跑秒模式*/</p><p>  TR0=~TR0;//按下按鍵3而且沒有按鍵2按

71、下 時(shí)鐘暫停</p><p><b>  }</b></p><p>  if(key1==0)//判斷按鍵1按下</p><p><b>  {</b></p><p>  while(!key1)</p><p><b>  {</b>

72、;</p><p>  display();</p><p><b>  }</b></p><p>  h++;//小時(shí)變量自加</p><p>  if(h==24)</p><p><b>  {</b></p><p&

73、gt;  h=0;//如果加到24 </p><p><b>  }</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  if(key2==0)</p><p&g

74、t;<b>  {</b></p><p>  while(!key2)</p><p><b>  {</b></p><p>  display();</p><p><b>  }</b></p><p>  min++;</p

75、><p>  if(min==60)</p><p><b>  {</b></p><p><b>  min=0;</b></p><p><b>  }</b></p><p><b>  TR0=1;</b></p>

76、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /********************定時(shí)器0中斷服務(wù)程序***

77、**************************/</p><p>  void T0_time() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-45872)/256;</p><p>  TL0=(65536-45872)%256;</p>

78、<p><b>  num++;</b></p><p>  if(num==20)</p><p><b>  {</b></p><p><b>  num=0;</b></p><p>  sec++;//每20個(gè)50ms中斷來臨,秒的變量加1&l

79、t;/p><p>  if(sec==60)</p><p><b>  {</b></p><p>  sec=0;</p><p><b>  min++;</b></p><p>  if(min==60)</p><p><b&

80、gt;  {</b></p><p><b>  min=0;</b></p><p><b>  h++;</b></p><p><b>  if(h==24)</b></p><p><b>  {</b></p><

81、p><b>  h=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p&

82、gt;<b>  }</b></p><p>  /**************定時(shí)器1中斷服務(wù)程序***********************************/</p><p>  void T1_time() interrupt 3</p><p><b>  {</b></p><p&g

83、t;  TH1=(65536-45872)/256;</p><p>  TL1=(65536-45872)%256;</p><p><b>  num0++;</b></p><p>  if(num0==2)</p><p><b>  {</b></p><p>&l

84、t;b>  num0=0;</b></p><p>  lsec0++;//每2個(gè)50ms中斷來臨,1/10秒標(biāo)量加1</p><p>  if(lsec0==100)</p><p><b>  {</b></p><p><b>  lsec0=0;</b></

85、p><p><b>  hsec0++;</b></p><p>  if(hsec0==100)</p><p><b>  {</b></p><p><b>  hsec0=0;</b></p><p><b>  }</b>&l

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論