版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p> 第1章 課程設(shè)計的要求、目的1</p><p> 1.1課程設(shè)計的要求1</p><p> 1.2課程設(shè)計的目的1</p><p> 第2章 總體設(shè)計方案3</p><p> 2.1 總體方案的選擇3</p
2、><p> 2.2總體方案的說明3</p><p> 第3章 系統(tǒng)方框圖與工作原理4</p><p> 3.1系統(tǒng)設(shè)計框圖4</p><p> 3.2 基本工作原理5</p><p> 第4章 各單元硬件設(shè)計及說明6</p><p> 4.1單片機的選擇7</p>
3、;<p> 4.2復(fù)位電路的設(shè)計7</p><p> 4.3晶振電路的設(shè)計8</p><p> 4.4音樂播放電路8</p><p> 第5章 器件說明9</p><p><b> 5.1 單片機9</b></p><p> 5.2 LED顯示器11<
4、/p><p> 第6章 軟件設(shè)計與說明12</p><p> 6.1 定時顯示子程序12</p><p> 6.2 系統(tǒng)軟件設(shè)計方案的確定13</p><p> 6.3 音樂定時常數(shù)的確定14</p><p> 第7章 調(diào)試步驟、結(jié)果、使用說明15</p><p> 第8章 設(shè)
5、計總結(jié)17</p><p> 附錄B:程序清單18</p><p> 第1章 課程設(shè)計的要求、目的</p><p> 1.1 課程設(shè)計的要求</p><p> 音樂提示定時器要求通過設(shè)計4個按鍵設(shè)置現(xiàn)在想要倒數(shù)的時間:K1--可調(diào)整倒數(shù)時間為1-60分鐘,能夠?qū)崿F(xiàn)時間可調(diào);K2—設(shè)置倒數(shù)計時時間為5分鐘,顯示為“0500”;K3
6、—設(shè)置倒數(shù)計時時間為10分鐘,顯示為“1000”;K4—設(shè)置倒數(shù)計時時間為20分鐘,顯示為“2000”;一旦按鍵后則開始倒計時,當(dāng)計時為0則演奏一曲音樂,而且可循環(huán)播放,可隨時人為停止;內(nèi)定倒數(shù)計時時間為5分鐘,顯示為0500。</p><p> 1.2 課程設(shè)計的目的</p><p> ?。?)加深對基礎(chǔ)知識的理解,進(jìn)一步熟悉和掌握單片機的結(jié)構(gòu)及工作原理。(2)掌握單片機的接口技術(shù)及
7、相關(guān)外圍芯片的外特性,控制方法。明確原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過程及順序。(3) 通過課程設(shè)計,掌握以單片機核心的電路設(shè)計的基本方法和技術(shù),了解有關(guān)電路參數(shù)的計算方法。(4) 通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。了解程序設(shè)計總體功能及結(jié)構(gòu),對各子模塊的功能以及各子模塊之間的關(guān)系有較詳細(xì)的描述。(5) 通過完成一個包括電路設(shè)計和程序開發(fā)的完整過程,通過實際操作,將理論用于實踐,提
8、高對本課程的實際運用能力,在設(shè)計的過程中發(fā)現(xiàn)問題、解決問題,掌握更多的知識。</p><p> 第2章 總體設(shè)計方案</p><p> 2.1 總體方案的選擇</p><p> 本課題要求以單片機為核心設(shè)計一個音樂提示定時器,具備倒數(shù)計時、時間設(shè)置、音樂演奏等功能。設(shè)計20分鐘、10分鐘、5分鐘的設(shè)置開關(guān)或按鍵,例如20分鐘,顯示為“20.00”,內(nèi)定倒數(shù)計
9、時時間為5分鐘,顯示為05.00(開機狀態(tài))。一旦按鍵后則開始倒計時,當(dāng)計時為0則演奏一曲音樂,而且可循環(huán)播放,可隨時停止。</p><p> 根據(jù)題目要求,音樂定時系統(tǒng)由核心處理模塊、數(shù)碼管顯示模塊、音樂模塊、及倒計時模塊等組成。通過對P2口的查詢,實現(xiàn)不同時間的設(shè)定和調(diào)整,系統(tǒng)晶振為11.0592MHz,利用單片機的RESET管腳作為系統(tǒng)開關(guān)。利用查詢方式設(shè)定倒計時時間。進(jìn)行總體設(shè)計前需先設(shè)計出各子功能模塊
10、的程序,并進(jìn)行調(diào)試,各子模塊調(diào)試成功后,再用一定的連接方法把各子程序連接起來,再次進(jìn)行調(diào)試,直至正確可以實現(xiàn)總體功能為止。</p><p> 2.2 總體方案的說明</p><p> 通過計算某一音頻周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用單片機定時器計時這個半周期時間,每當(dāng)計時到后就將輸出脈沖的I/O口反相,然后重復(fù)計時此半周期時間再對I/O口反相,這樣就能在此I
11、/O口上得到此頻率的脈沖,再結(jié)合中斷延時程序,程序中節(jié)拍控制是通過調(diào)用延時子程序DELAY的次數(shù)來實現(xiàn),產(chǎn)生音樂。利用P2.3、P2.4、P2.5管腳,對應(yīng)開關(guān)K2、K3、K4,分別啟動不同的倒計時程序5分鐘、10分鐘、20分鐘。通過查詢方式對P3.2管腳進(jìn)行查詢,進(jìn)入1到60分鐘的時間調(diào)整程序。P0引腳作為顯示輸出連至LED顯示器,P2.0、P2.1、P2.2、P2.3為位選信號,控制不同位的數(shù)碼管。程序中使用定時器T0方式1來產(chǎn)生歌
12、譜中各音符對應(yīng)頻率的音頻脈沖,由P3.7通放大輸出,,1拍為748 ms。確定了設(shè)計思路后,就可以具體設(shè)計了。先編寫程序,然后加入硬件進(jìn)行調(diào)試。</p><p> 第3章 系統(tǒng)方框圖與工作原理</p><p> 3.1 系統(tǒng)設(shè)計框圖</p><p> 3.2 基本工作原理</p><p> 音樂的產(chǎn)生主要是通過單片機的I/O口輸出高
13、低不同的脈沖信號來控制蜂鳴器發(fā)音。要想產(chǎn)生音頻脈沖信號,需要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用單片機定時器計時這個半個周期時間,每當(dāng)計時到后就將輸出脈沖的I/O口反相,然后重復(fù)計時此半周期時間再對I/O口反相,這樣就能在此I/O口上得到此頻率的脈沖。</p><p> 通常,利用單片機的內(nèi)部定時器0,工作在方式1下,改變計數(shù)初值TH0和TL0來產(chǎn)生不同頻率。</p&
14、gt;<p> 對于音樂的節(jié)拍,每個音符使用1個字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍。如果1拍為0.4S,1/4拍為0.1S,只要設(shè)定延遲時間就可求得節(jié)拍的時間。假設(shè)1/4拍為1DELAY,那么1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY,其余的節(jié)拍就是它的倍數(shù)。</p><p> 總而言之,一首樂曲是由音階和節(jié)拍兩大要素構(gòu)成。一首樂曲演奏的原理是:不同音階
15、分別對應(yīng)不同的頻率,發(fā)出不同的音調(diào),而節(jié)拍則控制發(fā)出音調(diào)時間的長短;若將樂曲的音調(diào)連續(xù)發(fā)出,并使其按相應(yīng)的節(jié)拍變化,即可演奏一首樂曲。根據(jù)這一特點,我們采用單片機輔以相應(yīng)的接口來設(shè)計音樂播放器[3]。</p><p> 第4章 各單元硬件設(shè)計及說明</p><p> 4.1 單片機的選擇 </p><p> 單片機/EA管腳始終接高電平,單片機復(fù)位方式采用
16、按鍵電平觸發(fā)復(fù)位,通過計算可知單片機頻率為11.0592MHz時,計時誤差最小,精度越高,因此內(nèi)部時鐘頻率設(shè)為11.0592MHz。ST89C51系列與MCS-51系列單片機相比,有兩大優(yōu)勢:第一,片內(nèi)程序存儲器采用閃速存儲器,使程序的寫入更方便;第二,提供了更小尺寸的芯片,使整個硬件電路的體積更小。它以較小的體積、良好的性能價格比倍受青睞。本次課程設(shè)計采用89C51單片機。</p><p><b>
17、 4.2 復(fù)位電路</b></p><p><b> 復(fù)位電路</b></p><p> 根據(jù)應(yīng)用的要求,復(fù)位操作有兩種基本形式:上電復(fù)位和上電或開關(guān)復(fù)位。</p><p> 當(dāng)MCS-5l系列單片機的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)
18、復(fù)位狀態(tài)。 上電復(fù)位要求接通電源后,自動實現(xiàn)復(fù)位操作。電容C13和電阻R19對電源十5V來說構(gòu)成微分電路。上電后,保持RST一段高電平時間,由于單片機內(nèi)的等效電阻的作用,不用圖中電阻R19,也能達(dá)到上電復(fù)位的操作功能。 要求電源接通后,單片機自動復(fù)位,并且在單片機運行期間,用開關(guān)操作也能使單片機復(fù)位。由于電容C13的充電和反相門的作用,使RST持續(xù)一段時間的高電平。當(dāng)單片機已在運行當(dāng)中時,按下復(fù)位鍵K后松開
19、,也能使RST為一段時間的高電平,從而實現(xiàn)上電或開關(guān)復(fù)位的操作。本系統(tǒng)的復(fù)位電路采用上電復(fù)位。</p><p> RET按鍵可以選擇專門的復(fù)位按鍵,也可以選擇輕觸開關(guān)。</p><p><b> 4.3 晶振電路</b></p><p><b> 晶振電路</b></p><p> 單片機工
20、作的時間基準(zhǔn)是由時鐘電路控制的。在單片機的XTAL1和XTAL2兩個管腳,接一只晶振及兩只電容就構(gòu)成了單片機的時鐘電路。</p><p> 電路中,電容器C14和C15對振蕩頻率有微調(diào)作用,通常的取值范圍為30PF左右。石英晶體選擇12MHZ就可以。</p><p> 本次設(shè)計應(yīng)用的電壓有+5V。220V交流電源經(jīng)變壓器,整流,濾波后分別進(jìn)入芯片7805,產(chǎn)生+5V,這些電源的具體應(yīng)用
21、情況如下:+5V電源:單片機及外圍電路所用電源+9V電源:壓電喇叭所用電源</p><p> 4.4 音樂播放電路</p><p> 蜂鳴器有長聲有短聲兩種,可以根據(jù)需要進(jìn)行選擇,通過軟件編程控制。在程序里可以設(shè)計不同的歌曲來通過播放器進(jìn)行播放,所以,在這個設(shè)計里,是可以有不同的鈴聲的。</p><p><b> 第5章 器件說明</b&
22、gt;</p><p><b> 5.1 單片機</b></p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT8
23、9C51是一種高效微控制器,</p><p><b> 1.主要特性:</b></p><p> ·與MCS-51 兼容</p><p> ·4K字節(jié)可編程閃爍存儲器</p><p> .壽命:1000寫/擦循環(huán).數(shù)據(jù)保留時間:10年</p><p> ·
24、全靜態(tài)工作:0Hz-24Hz</p><p> · 三級程序存儲器鎖定</p><p> ·128*8位內(nèi)部RAM</p><p> ·32可編程I/O線</p><p> ·兩個16位定時器/計數(shù)器</p><p><b> ·5個中斷源</
25、b></p><p><b> ·可編程串行通道</b></p><p> ·低功耗的閑置和掉電模式</p><p> ·片內(nèi)振蕩器和時鐘電路 </p><p><b> 2.振蕩器特性:</b></p><p> XTAL1和X
26、TAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。</p><p><b> 3.芯片擦除:</b></p><p> 整個PEROM陣列和三個鎖定位的電
27、擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。</p><p> 5.2 LED顯示器</p><p><b> LED顯示器</b></p><p> 數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動
28、是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,
29、就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p> 第6章 軟件設(shè)計與說明</p><p> 6.
30、1 定時顯示子程序</p><p> 6.2 系統(tǒng)軟件設(shè)計方案的確定</p><p> 根據(jù)設(shè)計要求,首先要確定軟件設(shè)計方案,即確定該軟件應(yīng)該完成哪些功能;其次是規(guī)劃這些功能需要分成多少個功能模塊,以及每一個程序模塊的具體任務(wù)是什么。</p><p> 6.3 音樂定時常數(shù)的確定</p><p> 產(chǎn)生音樂通過單片機的I/O口輸出高低
31、不同的脈沖信號來控制蜂鳴器發(fā)音。利用AT89C52單片機的內(nèi)部定時器0,工作在方式1下,改變計數(shù)初值TH0和TL0來產(chǎn)生不同的頻率。若單片機采用12MHz晶振,要產(chǎn)生頻率為587Hz的音頻脈沖時,其音頻脈沖信號的周期T=1/587=1703.577us,約1704us,半周期的時間852us,因此只要今計數(shù)器計數(shù)=852us/1us=852,在每計數(shù)852次時將I/O口反相,就可得C調(diào)中音Re。</p><p>
32、 計數(shù)脈沖值與頻率的關(guān)系如下:</p><p><b> N=Fi/2/Fr</b></p><p><b> 式中:N—計數(shù)值</b></p><p> Fi—機器頻率。晶體振蕩器為12MHz時,內(nèi)部計時一次為1us,故其頻率為1MHz</p><p> Fr—想要產(chǎn)生的頻率</p
33、><p> 所以定時常數(shù)(計數(shù)值T)的求法:</p><p> T=65536-N=65536-Fi/2/Fr</p><p> 例如,設(shè)Fi=1MHz,求低音Do(262Hz)、中音Do(523Hz)和高音Do(1046Hz)的計數(shù)初值。</p><p> 解:T=65536-N=65536-Fi/2/Fr=65536-500000/F
34、r </p><p> 低音Do的T=65536-500000/262=63628 </p><p> 中音Do的T=65536-500000/523=64580 </p><p> 高音Do的T=65536-500000/1046=65058</p><p> C調(diào)各音符頻率與計數(shù)值T的關(guān)系</p><p>
35、; 第7章 調(diào)試步驟、結(jié)果、使用說明</p><p> P2.4接開關(guān)K1,P2.5接開關(guān)K2,P2.6接開關(guān)K3,P2.7口接開關(guān)K4,P1.7口接起動按鈕K5,當(dāng)按下K1,倒計時時間加一分鐘,可選擇1到60分鐘的定時;按下K2,計時時間為5分鐘;按下K3,計時時間為10分鐘;按下K4,計時時間為20分鐘;按下起動按鈕K5,定時器開始計時,再次按下,停止計時。同時利用P2.0、P2.1、P2.2、P2.3作
36、為位選管腳,從P0口輸出代碼至LED顯示器,設(shè)計消影功能和顯示延時程序?qū)崿F(xiàn)動態(tài)顯示。當(dāng)計時結(jié)束時跳轉(zhuǎn)到音樂產(chǎn)生子程序。當(dāng)需要音樂停止時,按下復(fù)位按鈕STOP,音樂即停止,顯示器顯示內(nèi)定的倒計時時間0500</p><p><b> 第8章 設(shè)計總結(jié)</b></p><p> 學(xué)校每次課程設(shè)計都能讓我全身心投入,廢寢忘食也不為過,因為我始終覺得實踐才能讓我們成長。同
37、時還能學(xué)到很多專業(yè)知識,加深對課本內(nèi)容的理解,雖然會遇到很多困難,卻總能得到收獲。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。如今電子行業(yè)已經(jīng)慢慢取代手工業(yè)了,而單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為電子信息工程專業(yè)的學(xué)生來說掌握單片機的開發(fā)技術(shù)是十分重要的。 我的題目是音樂提示定時器的設(shè)計,對于
38、我們這些工科學(xué)生來說,這是一次小小的鍛煉。因為平時老師的細(xì)心教導(dǎo),和自己也自學(xué)過單片機,所以這次課程設(shè)計還算簡單。但是這次課程設(shè)計我還是學(xué)到很多很多的東西,學(xué)會了怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識,掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡單的編程。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是
39、遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知</p><p> 在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,以及對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,對單片機C語言掌握得不夠熟練等。這次課程設(shè)計通過自己的努力,同學(xué)的幫助,還有老師的辛勤指導(dǎo)下,最終順利完成了。謝謝老師!!</p><p><b> 附錄:程序清單</b></p><p> #inc
40、lude <reg52.h> </p><p> #define uint unsigned int </p><p> #define uchar unsigned char</p><p> uchar pre_time;//時鐘標(biāo)志</p><p> uchar time,tz,tz1;//tz調(diào)整標(biāo)志
41、,tz調(diào)整所在位</p><p> char fen1,fen,miao1,miao;//時鐘</p><p> uchar shu,ding;</p><p><b> uchar l;</b></p><p> sbit ADDR0 = P1^0;</p><p> sbit AD
42、DR1 = P1^1;</p><p> sbit ADDR2 = P1^2; </p><p> sbit ADDR3 = P1^3;</p><p> sbit ENLED1 = P1^4;</p><p> sbit SPK=P1^2;</p><p> sbit k1=P3^2;<
43、;/p><p> sbit k2=P3^3;</p><p> sbit k3=P3^4;</p><p> sbit k4=P3^5;</p><p> sbit dula=P2^6;//段鎖存器</p><p> sbit wela=P2^7;//位鎖存器</p><p>
44、sbit k5=P2^0;</p><p> uchar code duanma[]=//段碼列表(0-9)</p><p><b> {</b></p><p> 0xc0,0xf9,0xa4,0xb0,0x99,</p><p> 0x92,0x82,0xf8,0x80,0x90</p>&l
45、t;p><b> };</b></p><p> uchar code weima[]=//位碼列表(8個數(shù)碼管)</p><p><b> {</b></p><p> 0x80,0x40,0x20,0x10,</p><p> 0x08,0x04,0x02,0x01</
46、p><p><b> };</b></p><p> uchar code song[]={0X54,0XC4,0X12,0X32,0X34,0X52,0X52,0X52,0X52,0X42,0X32,0X34,</p><p> 0XC1,0XC2,0X52,0XC2,0X12,0X32,0X34,0X11,0X12,0X31,0X12,0
47、XC2,</p><p> 0X78,0X72,0X52,0X52,0X42,0X32,0X42,0X52,0X11,0XC1,0XC4,0XC1,</p><p> 0XC1,0XC1,0XC1,0X12,0X32,0X32,0X12,0X42,0X42,0X44,0XC2,0X12,</p><p> 0X32,0X42,0X52,0X72,0X72,0X
48、82,0X41,0X51,0X42,0X48,0X42,0X12,</p><p> 0X3C,0X72,0X62,0X3C,0X72,0X62,0X3C,0X72,0X62,0x21,0x31,0x41,</p><p> 0x51,0x61,0x71,0x81,0x91,0x61,0x71,0x81,0x91,0X3F,0X3F,0X54,</p><p>
49、 0XC2,0XC2,0X42,0XC2,0XC4,0X34,0X32,0X42,0X52,0XC2,0XC4,0XD2,</p><p> 0XC2,0X12,0X22,0X38,0X12,0X22,0X32,0X42,0X48,0xFF};//</p><p> uchar yin[]={ 0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xF
50、C,</p><p> 0xAC,0xFD,0x09,0xFD,0x34,0xFD,0x82,0xFD,0xC8,</p><p> 0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85}; </p><p> void timer0() interrupt 3 </p><
51、p><b> { </b></p><p> TH1=yin[2*1];</p><p> TL1=yin[2*1+1];</p><p> SPK = !SPK; </p><p><b> }</b></p><p><b> // <
52、/b></p><p><b> // </b></p><p> void delay187ms()</p><p><b> {</b></p><p> unsigned char i,j,k;</p><p> for(i=200;i>0;i-
53、-)</p><p> for(j=20;j>0;j--)</p><p> for(k=15;k>0;k--) ;</p><p><b> }</b></p><p><b> // </b></p><p> //置對應(yīng)音符頻率數(shù)值</p&
54、gt;<p> void sing_song()</p><p><b> {</b></p><p> unsigned int data j=0;</p><p> unsigned char data i;</p><p> unsigned char data k;</p>
55、<p> while(*(song+j)!=0xFF)</p><p><b> {</b></p><p> k=*(song+j)&0x0F;</p><p> l=*(song+j)>>4;</p><p> TH1=yin[2*l];</p><p>
56、; TL1=yin[2*l+1];</p><p><b> TR1=1;</b></p><p> if ((yin[2*l]==0xff)&&(yin[2*l+1]==0xff))</p><p><b> {</b></p><p> TR0=0;SPK=1;<
57、/p><p><b> }</b></p><p> for(i=k;i>0;--i)</p><p><b> {</b></p><p> delay187ms();</p><p><b> }</b></p><p
58、><b> TR1=0;</b></p><p><b> j++;</b></p><p> }// </p><p> }// &
59、lt;/p><p><b> // </b></p><p> // //延時函數(shù)</p><p> void delay(uint z)</p><p><b> {</b></p><p> uint x,y;</p><p> f
60、or(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }//</b></p><p> // //時鐘顯示</p><p> void display(uint fen1,uint fen2,uint miao2,uint miao1)&
61、lt;/p><p><b> {</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p> P0=weima[3];</p><p><b> wela=0;</
62、b></p><p><b> dula=1;</b></p><p> P0=duanma[fen1];</p><p><b> dula=0;</b></p><p><b> delay(1);</b></p><p><b&
63、gt; P0=0xff;</b></p><p><b> wela=1;</b></p><p> P0=weima[2];</p><p><b> wela=0;</b></p><p><b> dula=1;</b></p><
64、;p> P0=duanma[fen2];</p><p><b> dula=0;</b></p><p><b> delay(1);</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b&
65、gt;</p><p> P0=weima[1];</p><p><b> wela=0;</b></p><p><b> dula=1;</b></p><p> P0=duanma[miao2];</p><p><b> dula=0;</
66、b></p><p><b> delay(1);</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p> P0=weima[0];</p><p><b>
67、 wela=0;</b></p><p><b> dula=1;</b></p><p> P0=duanma[miao1];</p><p><b> dula=0;</b></p><p><b> delay(1);</b></p>
68、<p><b> TR0=0;</b></p><p><b> }</b></p><p> void t0() interrupt 1</p><p><b> {</b></p><p> TL0=(65536-50000)%256;</p>
69、;<p> TH0=(65536-50000)/256;</p><p><b> shu++;</b></p><p> if(shu==20)</p><p><b> {</b></p><p><b> shu=0;</b></p>
70、<p><b> miao--;</b></p><p> if(miao==-1)</p><p><b> {</b></p><p><b> miao=9;</b></p><p><b> miao1--;</b></
71、p><p> if(miao1==-1)</p><p><b> {</b></p><p><b> miao1=5;</b></p><p><b> fen--;</b></p><p> if(fen==-1)</p>&l
72、t;p><b> {</b></p><p><b> fen=9;</b></p><p><b> fen1--;</b></p><p> if(fen1==-1)</p><p><b> {</b></p><
73、p><b> fen1=5;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><
74、;p><b> }</b></p><p><b> } </b></p><p><b> // 主程序</b></p><p> void main()</p><p><b> {</b></p><p>&l
75、t;b> shu=0;</b></p><p> TMOD=0X01;</p><p> TL0=(65536-50000)%256;</p><p> TH0=(65536-50000)/256;</p><p> ET0=1; //允許開T0定時器中斷</p><p>&l
76、t;b> ET1=1;</b></p><p> EA=1; //開總中斷</p><p> TR0=0; //定時器0工作</p><p> ///P3=0XFF;</p><p> //P2=0XFF;</p><p> //P1=0XFF;</p
77、><p> //P0=0XFF;</p><p><b> miao=0;</b></p><p><b> miao1=0;</b></p><p><b> fen=5;</b></p><p><b> fen1=0;</b
78、></p><p><b> ding=0; </b></p><p><b> while(1)</b></p><p><b> { </b></p><p> display(fen1,fen,miao1,miao);</p><
79、p><b> if(k1==0)</b></p><p><b> {</b></p><p> delay(20);</p><p><b> if(k1==0)</b></p><p><b> { </b></p>&
80、lt;p><b> miao1=0;</b></p><p><b> miao=0;</b></p><p><b> fen++;</b></p><p> if(fen==10)</p><p><b> {</b></p>
81、;<p><b> fen=0;</b></p><p><b> fen1++;</b></p><p> if(fen1==6)</p><p><b> { </b></p><p><b> fen1=0;</b>&l
82、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> while(!k1);</p><
83、p><b> if(k2==0)</b></p><p><b> {</b></p><p> delay(20);</p><p><b> if(k2==0)</b></p><p><b> { </b></p>&l
84、t;p><b> miao1=0;</b></p><p><b> miao=5;</b></p><p><b> fen=0;</b></p><p><b> fen1=0;</b></p><p><b> }</
85、b></p><p><b> }</b></p><p> while(!k2);</p><p> //k3為10分鐘 </p><p><b> if(k3==0)</b></p><p><b> {</b>
86、;</p><p> delay(20);</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p><b> miao1=0;</b></p><p><b> miao=0;<
87、;/b></p><p><b> fen=0;</b></p><p><b> fen1=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> while(!
88、k3);</p><p> //k4為20分鐘 </p><p><b> if(k4==0)</b></p><p><b> {</b></p><p> delay(20);</p><p><b> if(k4==0)&l
89、t;/b></p><p><b> { </b></p><p><b> miao1=0;</b></p><p><b> miao=0;</b></p><p><b> fen=0;</b></p><p>
90、<b> fen1=2;</b></p><p><b> }</b></p><p><b> }</b></p><p> while(!k4); </p><p> //k5為啟動鍵 </p><p><b> if(
91、k1==0)</b></p><p><b> {</b></p><p> delay(20);</p><p><b> if(k1==0)</b></p><p><b> {</b></p><p><b> di
92、ng++;</b></p><p> if(ding==2)</p><p><b> {</b></p><p><b> ding=0;</b></p><p><b> }</b></p><p><b> }<
93、;/b></p><p><b> }</b></p><p> while(!k1); </p><p> if(ding==0)</p><p><b> {</b></p><p><b> TR0=1;</b></
94、p><p><b> }</b></p><p><b> else </b></p><p> TR0=1;//倒計時結(jié)束</p><p> display(fen1,fen,miao1,miao);</p><p> if(fen1==0&&fen=
95、=0&&miao1==0&&miao==0)</p><p><b> {</b></p><p> sing_song(); </p><p><b> } </b></p><p><b> } </b></p>
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 音樂提示定時器單片機原理與應(yīng)用課程設(shè)計
- 基于單片機匯編編程的音樂提示定時器課程設(shè)計報告
- 音樂提示定時器--課程設(shè)計
- 單片機課程設(shè)計--秒表定時器
- 單片機課程設(shè)計--定時器實驗
- 單片機課程設(shè)計---加熱定時器
- 單片機課程設(shè)計智能定時器
- 單片機經(jīng)典數(shù)字定時器課程設(shè)計
- 使用定時器延時單片機課程設(shè)計報告
- 單片機定時器
- 電子定時器-單片機原理及應(yīng)用課程設(shè)計
- 基于單片機的9h定時器課程設(shè)計
- 基于單片機的音樂定時器畢業(yè)設(shè)計
- 單片機控制技術(shù)課程設(shè)計--定時器控制電路
- 音樂倒數(shù)定時器課程設(shè)計
- 單片機實驗二 定時器
- 畢業(yè)論文 --單片機定時器設(shè)計
- 課程設(shè)計---基于定時器的單片機仿真和c語言開發(fā)
- 單片機課程設(shè)計定時器控制4只led滾動閃爍系統(tǒng)
- 單片機定時器的使用總結(jié)
評論
0/150
提交評論