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

下載本文檔

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

文檔簡介

1、<p>  《單片機應(yīng)用與仿真訓(xùn)練》設(shè)計報告</p><p>  基于單片機的電子琴設(shè)計</p><p>  2012年5月 19 日</p><p><b>  摘要</b></p><p>  當代,愛好音樂的人越來越多,有不少人自己練習彈奏樂器作為業(yè)余愛好和一種放松的手段,鑒于一些樂器學習難度大需要太多的

2、學習時間,且其價格又太過于高昂,使得一部分有這種想法的人不得不放棄這種想法。而一些簡易的電子樂器價格相對便宜,學習上手快,一般人容易負擔的起,能夠滿足一般愛好者的需求,故簡易電子琴的研制具有一定的社會意義。本次課程設(shè)計主要研究基于AT89S52單片機的簡易電子琴設(shè)計。整個系統(tǒng)主要包括以下幾個部分組成:</p><p>  單片機的最小系統(tǒng):最小應(yīng)用系統(tǒng)設(shè)計是單片機應(yīng)用系統(tǒng)的設(shè)計基礎(chǔ)。它包括單片機的選擇、時鐘系統(tǒng)設(shè)

3、計、復(fù)位電路設(shè)計、簡單的I/O口擴展、掉電保護等。</p><p>  矩陣鍵盤:當按鍵數(shù)目較多時,為了節(jié)省I/O口線,通常采用矩陣式鍵盤接口電路。本設(shè)計采用5*8矩陣鍵盤(共40個按鍵,其中36個按鍵用來顯示高中低音的1、1#、2、2#、3、4、4#、5、5#、6、6#、7的36個音調(diào),其它4個按鍵可以隨意的播放已存歌曲)。</p><p>  產(chǎn)生外部中斷的系統(tǒng):它由兩個四輸入與非門7

4、4LS20和一個兩輸入或非門74LS02組成,把矩陣的五行與與非門74LS20和或非門74LS02相接后接在了單片機的P3.2口,下降沿觸發(fā)產(chǎn)生中斷INT0。</p><p>  發(fā)音電路:此電子琴發(fā)音電路是由或非門來驅(qū)動揚聲器發(fā)音的,控制單片機的P2.7口產(chǎn)生不同頻率使揚聲器發(fā)出不同的音調(diào)。</p><p>  本文主要對單片機設(shè)計簡易電子琴進行了分析,并介紹了基于單片機電子琴的硬件組成

5、。并且從原理圖,主要芯片,各模塊的原理和各個模塊的程序調(diào)試來闡述。利用單片機產(chǎn)生不同頻率來獲得我們要求的音階,最終可以隨意彈奏想要表達的音樂,還設(shè)計了一按鍵用來自動播放一首曲子。系統(tǒng)運行穩(wěn)定,其優(yōu)點是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比高等,具有一定的使用和參考價值。</p><p><b>  目錄</b></p><p><b>  1 概述

6、1</b></p><p>  1.1 本次課程設(shè)計的目的意義1</p><p>  1.2本次課程設(shè)計的任務(wù)及要求1</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計2</p><p>  2.1設(shè)計原理分析2</p><p><b>  2.2設(shè)計方案2</b><

7、/p><p>  2.2.1原理框圖2</p><p>  2.2.2定時/計數(shù)器的設(shè)計和狀態(tài)字定義:3</p><p>  2.2.3 矩陣鍵盤設(shè)計及相關(guān)應(yīng)用技術(shù)5</p><p>  2.2.4 LED顯示設(shè)計及相關(guān)應(yīng)用技術(shù)5</p><p>  2.2.5發(fā)音電路設(shè)計6</p><p&g

8、t;  2.2.6產(chǎn)生外部中斷電路設(shè)計6</p><p>  2.2.7單片機最小系統(tǒng)設(shè)計7</p><p><b>  3軟件設(shè)計8</b></p><p><b>  3.1系統(tǒng)分析8</b></p><p>  3.1.1系統(tǒng)軟件的組成8</p><p>  

9、3.1.2系統(tǒng)程序總體流程圖8</p><p><b>  3.2參數(shù)計算9</b></p><p>  3.3程序設(shè)計10</p><p>  3.3.1彈奏程序流程圖10</p><p>  3.3.2自動播放歌曲程序流程圖11</p><p>  4實驗仿真測試13</p&

10、gt;<p>  5課程設(shè)計體會14</p><p><b>  1 概述</b></p><p>  1.1 本次課程設(shè)計的目的意義</p><p>  本論文是基于單片機的電子琴設(shè)計,電子琴是現(xiàn)代科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它是現(xiàn)代音樂扮演著的重要角色,單片機具有強大的控制功能和靈活的編程實現(xiàn)特性,它融入現(xiàn)

11、代人們的生活中,成為不可替代的一部分。因此說,學會運用單片機做一些簡單的課程設(shè)計是我們工程技術(shù)人員必需掌握的一向技能。本次設(shè)計要求我們綜合利用所學單片機知識完成一個單片機應(yīng)用系統(tǒng)設(shè)計并仿真實現(xiàn),從而加深對單片機軟硬知識的理解,獲得初步的應(yīng)用經(jīng)驗,為走出校門從事單片機應(yīng)用的相關(guān)工作打下基礎(chǔ)。另外,通過本次課程設(shè)計,對我們還有以下幫助:</p><p>  1、 進一步熟悉和掌握單片機的內(nèi)部結(jié)構(gòu)和工作原理,了解單片機

12、應(yīng)用系統(tǒng)設(shè)計的基本方法和步驟</p><p>  2、掌握單片機仿真軟件Proteus的使用方法; </p><p>  3、掌握鍵盤和顯示器在的單片機控制系統(tǒng)中的應(yīng)用。</p><p>  4、掌握撰寫課程設(shè)計報告的方法。</p><p>  1.2本次課程設(shè)計的任務(wù)及要求</p><p>  實現(xiàn)電子琴發(fā)聲控制系統(tǒng)

13、,要求電路實現(xiàn)如下功能:</p><p>  利用揚聲器或者蜂鳴器作為發(fā)聲部件,兩個數(shù)碼管作為顯示部件,設(shè)置多個按鍵,實現(xiàn)高音、中音、低音的1、2、3、4、5、6、7的發(fā)音。并在存儲一首歌曲的內(nèi)容,可以實現(xiàn)自動播放。</p><p>  說明:單片機的工作時鐘頻率為12MHz。</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計</p><p>

14、<b>  2.1設(shè)計原理分析</b></p><p>  一定頻率產(chǎn)生聲音,頻率高低決定音調(diào)。利用單片機輸出脈沖信號經(jīng)放大后送給喇叭,便可發(fā)出聲音。利用單片機的定時器,讓定時器中斷一次就對改變喇叭的狀態(tài)一次,即形成矩形方波,這也是數(shù)字電路產(chǎn)生聲音的方法。由于一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,對于單片機來產(chǎn)生不同

15、的頻率非常方便,我們可以利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。</p><p><b>  2.2設(shè)計方案</b></p><p><b>  2.2.1原理框圖</b></p><p><b>  原理圖如下圖所示</b></p&

16、gt;<p>  2.2.2定時/計數(shù)器的設(shè)計和狀態(tài)字定義:</p><p>  用單片機播放音樂,或者彈奏電子琴,實際上是按照特定的頻率,輸出一連串的方波。為了輸出合適的方波,首先應(yīng)該知道音符與頻率的關(guān)系。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P2.7反相,然后重復(fù)計時再反相。就可在P2.7口引腳上得到

17、此頻率的脈沖。利用AT89S52的內(nèi)部定時器使其工作計數(shù)器模式(MODE1)下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計數(shù)器計時956μs/1μs=956,每計數(shù)956次時將I/O反相,就可得到中音DO(523Hz)。計數(shù)脈沖值與頻率的關(guān)系式是:N=fi/2/fr,式中,N是計數(shù)值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr

18、是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下:T=65536-N=65536-fi/2/fr</p><p>  例如:設(shè)K=65536,fi=1MHz,求中音DO(261Hz)。T=65536-N=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。</p><p>  單片機12MHZ

19、晶振,音符與計數(shù)T0相關(guān)的計數(shù)值如表所示:</p><p>  采用查表程序進行查表時,可以為這個音符建立一個表格,有助于單片機通過查表的方式來獲得相應(yīng)的數(shù)據(jù):低音0-11之間,中音在12-23之間,高音在24-35之間</p><p>  TABLE:0xF8,0x8B,0xF8,0xF2,0xF9,0x5B,0xF9,0xB7,0xFA,0x14,0xFA,0x66,0xFA,0xB9

20、,0xFB,0x03,0xFB,0x4A,0xFB,0x8F,0xFB,0xCF,0xFC,0x0B,//低音</p><p>  0xFC,0x43,0xFC,0x78,0xFC,0xAB,0xFC,0xDB,0xFD,0x08,0xFD,0x33,0xFD,0x5B,0xFD,0x81,0xFD,0xA5,0xFD,0xC7,0xFD,0xE7,0xFE,0x05,//中音</p><

21、p>  0xFE,0x21,0xFE,0x3C,0xFE,0x55,0xFE,0x6D,0xFE,0x84,0xFE,0x99,0xFE,0xAD,0xFE,0xC0,0xFE,0xD2,0xFE,0xE3,0xFE,0xF3,0xFF,0x02//高音</p><p>  把這個數(shù)據(jù)表,放在程序中,需要播音的時候,就從表中取出一個數(shù)據(jù)送到定時器,當定時器溢出中斷的時候,再對輸出引腳取反,那么,在揚聲器

22、中,即可聽到上表中對應(yīng)頻率的聲音。</p><p>  音樂的音拍,一個節(jié)拍為單位(C調(diào))</p><p>  對于不同的曲調(diào)我們也可以用單片機的另外一個定時/計數(shù)器來完成。</p><p>  在這個程序中用到了兩個定時/計數(shù)器來完成的。其中T0用來產(chǎn)生音符頻率延時函數(shù)用來產(chǎn)生音拍。</p><p>  2.2.3 矩陣鍵盤設(shè)計及相關(guān)應(yīng)用技

23、術(shù)</p><p>  采用5X8行列式鍵盤識別;</p><p> ?。?)把“單片機系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線連接到“5X8行列式鍵盤”區(qū)域中的列C1-C8端口上,把P2.0-P2.4端口連接到“5X8行列式鍵盤”區(qū)域中的行R1-R5上;</p><p> ?。?)把“單片機系統(tǒng)”區(qū)域中的P0.0-P0.7端口用8芯排線連接到“7段數(shù)碼顯示模

24、塊”區(qū)域中的任一個a-h(huán)端口上;要求:P0.0對應(yīng)著a,P0.1對應(yīng)著b,……,P0.7對應(yīng)著h。</p><p>  2.2.4 LED顯示設(shè)計及相關(guān)應(yīng)用技術(shù)</p><p>  LED顯示模塊,是采用兩位一體的數(shù)碼管顯示的。利用AT89S52單片機的P0端口的P0.0-P0.7連接到一個七段數(shù)碼管的a-h(huán)的筆段上,數(shù)碼管的公共端接地。第一個顯示0、1、2,分別表示高、中、低音,第二個用

25、來顯示1、1#、2、2#、3、4、4#、5、5#、6、6#、7等十二個音調(diào),分別用0、1、2、3、4、5、6、7、8、9、A、b顯示出來。</p><p> ?。?)LED數(shù)碼顯示原理:七段LED顯示器內(nèi)部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。 LED數(shù)碼管的a~g七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,

26、這種組合稱之為字形碼,下面給出共陰極的字形碼表:</p><p> ?。?)由于顯示的數(shù)字0-9的字形碼沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求了。這樣我們按著數(shù)字0-9的順序,把每個數(shù)字的筆段代碼按順序排好!建立的表格如下所示:TABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。</p><p>  2.2.5發(fā)音電路設(shè)計</

27、p><p>  如左圖所示,發(fā)音電路是由揚聲器、或非門74LS02構(gòu)成。由或非門來驅(qū)動揚聲器發(fā)音的,可通過控制單片機的P2.7口產(chǎn)生不同頻率使揚聲器發(fā)出不同的音調(diào)。</p><p>  2.2.6產(chǎn)生外部中斷電路設(shè)計</p><p>  它由兩個四輸入與非門74Ls20和一個兩輸入或非門74LS02組成,把矩陣的五行與與非門74LS20和或非門74LS02相接后接在了單

28、片機的P3.2口,下降沿觸發(fā)產(chǎn)生中斷INT0。矩陣鍵盤的列在程序中初始化為低電平,當有按鍵按下,行與列接通,行也變?yōu)榈碗娖?,即使P2.0-P2.4為“0”,通過上面電路,使INT0端口為“0”,產(chǎn)生中斷。利用程序控制,作用與發(fā)音電路發(fā)出聲音。</p><p>  2.2.7單片機最小系統(tǒng)設(shè)計</p><p>  最小應(yīng)用系統(tǒng)設(shè)計是單片機應(yīng)用系統(tǒng)的設(shè)計基礎(chǔ)。它包括單片機的選擇、時鐘系統(tǒng)設(shè)計、

29、復(fù)位電路設(shè)計、簡單的I/O口擴展、掉電保護等。</p><p>  本次設(shè)計采用的是AT89S52,其特點是8字節(jié)FLASH閃速存儲器,256字節(jié),32個I/O口線,3個16位定時/計數(shù)器,掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位.主演的是它與C51系列產(chǎn)品指令和引腳完全兼容.</p><p>  最小系統(tǒng)的時鐘電路采用12MHZ晶振,機器周期為

30、1us,連接兩個30pF的電容,連接到AT89S52的XATL1,XATL2上面,如左圖所示。</p><p>  復(fù)位電路采用的是上電+按鈕電平復(fù)位,是利用電容充電來實現(xiàn)上電復(fù)位。當按鈕按下后,電源施加在單片機復(fù)位端RST上,實現(xiàn)單片機復(fù)位功能。</p><p><b>  3軟件設(shè)計</b></p><p><b>  3.1系統(tǒng)

31、分析</b></p><p>  3.1.1系統(tǒng)軟件的組成</p><p> ?。?)鍵盤掃描程序:檢測是否有按鍵按下,有按鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序;無按鍵按下,則返回鍵盤掃描程序繼續(xù)檢測。</p><p> ?。?)功能轉(zhuǎn)移程序:對檢測到的按鍵值進行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳轉(zhuǎn)至相應(yīng)的功能程序,我們設(shè)計的功能程

32、序有兩種,即音色調(diào)節(jié)功能和自動播放樂曲的功能。</p><p> ?。?)琴鍵處理程序:根據(jù)檢測到的按鍵值,查詢音調(diào)表,給計時器賦值,使發(fā)出相應(yīng)頻率的聲音。</p><p>  (4)自動播放歌曲程序:檢測到按鍵按下的是自動播放歌曲功能鍵后執(zhí)行該程序,電子琴會自動播放事先已經(jīng)存放的歌曲,歌曲播放完畢之后自動返回至鍵盤掃描程序,繼續(xù)等待是否有按鍵按下。</p><p>

33、;  3.1.2系統(tǒng)程序總體流程圖</p><p><b>  3.2參數(shù)計算</b></p><p>  計數(shù)脈沖值與頻率的關(guān)系式是:N=fi/2/fr,式中,N是計數(shù)值;fi是機器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下:T=65536-N=65536-fi/2/fr</p><p>

34、  例如:設(shè)K=65536,fi=1MHz,求中音DO(261Hz)。T=65536-N=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。</p><p><b>  3.3程序設(shè)計</b></p><p>  3.3.1彈奏程序流程圖</p>

35、<p>  3.3.2自動播放歌曲程序流程圖</p><p><b>  4實驗仿真測試</b></p><p><b>  5課程設(shè)計體會</b></p><p>  這次設(shè)計從軟件方面來講不是很難,程序相對長一點,但都是書本上所學的知識,主要是中斷及其服務(wù)程序的編寫。在protues上仿真,則起到很好的效果,

36、因為元器件都是理想狀態(tài)的,但做出實物來卻不是那么簡單啦。經(jīng)過多次調(diào)試、修改才得以出結(jié)果。將程序載入芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。同時可以播放一首示例歌曲,但是也有不足之處的,聲音雜音時而有點大,不穩(wěn)定。</p><p>  經(jīng)過本次課程設(shè)計,我們比較好的把理論知識與實踐相結(jié)合,而我們在也本次設(shè)計中收獲不少。設(shè)計過程中,首先,對于C語言多了一層了解,其次,還有硬件的接線,還有單片機AT89S52芯片的

37、引腳方面,都讓我們收獲不少。加強了自身的動手能力。</p><p><b>  參考文獻</b></p><p><b>  參考文獻格式:</b></p><p><b>  期刊論文:</b></p><p>  [序號] 主要責任者. 文獻題名. 刊名,年,卷(期):起止

38、頁碼</p><p>  如:[1] 金顯賀,王昌長,王忠東,等.一種用于在線檢測局部放電的數(shù)字濾波技術(shù).清華大學學報(自然科學版),1993,33(4):62-67</p><p><b>  書、專著:</b></p><p>  [序號] 主要責任者.文獻題名.出版地:出版社,出版年.起止頁碼</p><p>  

39、如:[1] 劉國鈞,陳紹業(yè),王鳳翥.圖書館目錄.北京:高等教育出版社,1957.15-18</p><p><b>  電子文獻:</b></p><p>  [序號] 主要責任者.電子文獻題名.電子文獻的出處或可獲得地址,發(fā)表或更新日期/引用日期</p><p>  如:[1] 王明亮.關(guān)于中國學術(shù)期刊標準化數(shù)據(jù)庫系統(tǒng)工程的進展. </

40、p><p><b>  附1 源程序代碼</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  void

41、PlayKey(uchar,uchar);//運行按鍵</p><p>  void Run();//運行</p><p>  void KeyScan();//掃描鍵盤</p><p>  void delay_1ms(uchar);//1ms延時</p><p>  void Pla

42、yMusic(uchar code *p);//演奏音樂</p><p>  void Display(uchar);</p><p>  sbit Speaker=P2^7;</p><p>  sbit G=P2^6;</p><p>  sbit D=P2^5;</p><p>  sbit Led=P1

43、^0;</p><p>  uchar KeyValue;//按鍵值</p><p>  uchar Th0,Tl0;//TH0,TL0</p><p>  uchar KeyPinlv;//按鍵對應(yīng)頻率</p><p>  uchar flag;</p><p>  u

44、char code table_d[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管編碼</p><p><b>  //音調(diào)頻率</b></p><p>  uchar code pinlv[]={ </p><

45、;p>  0xF8,0x8B,0xF8,0xF2,0xF9,0x5B,0xF9,0xB7,0xFA,0x14,0xFA,0x66,0xFA,0xB9,0xFB,0x03,0xFB,0x4A,0xFB,0x8F,0xFB,0xCF,0xFC,0x0B,//低音</p><p>  0xFC,0x43,0xFC,0x78,0xFC,0xAB,0xFC,0xDB,0xFD,0x08,0xFD,0x33,0xFD

46、,0x5B,0xFD,0x81,0xFD,0xA5,0xFD,0xC7,0xFD,0xE7,0xFE,0x05,//中音</p><p>  0xFE,0x21,0xFE,0x3C,0xFE,0x55,0xFE,0x6D,0xFE,0x84,0xFE,0x99,0xFE,0xAD,0xFE,0xC0,0xFE,0xD2,0xFE,0xE3,0xFE,0xF3,0xFF,0x02//高音</p>

47、<p><b>  };</b></p><p>  uchar code music[]={1,16,1,24,1,24,1,23,1,21,1,16,1,16,1,16,1,24,1,23,1,21,2,19,1,21,1,19,1,19,1,17,1,19,1,19,1,12,1,12,1,17,1,17,1,16,1,12,1,14,1,16,1,14,1,16,1,24

48、,1,24,1,23,1,21,1,16,1,16,1,16,1,24,1,23,1,21,2,19,1,21,1,19,1,19,1,17,1,19,1,19,1,12,1,12,2,17,1,16,1,9,1,12,1,12,1,9,0,0,1,9,0,0,1,7,1,9,1,16,1,17,1,17,1,19,1,21,1,28,1,28,1,26,1,28,1,28,1,21,1,26,1,26,1,24,2,26,1,21,1

49、,26,1,26,1,24,1,26,1,26,1,26,1,26,1,26,1,26,1,28,1,24,1,21,1,21,1,21,1,28,1,28,1,26,1,28,1,28,1,21,1,26,1,26,1,24,2,</p><p>  void Display(uchar Key)</p><p><b>  {</b></p><

50、;p>  P0=table_d[Key/12];</p><p><b>  G=0;D=1;</b></p><p>  delay_1ms(10);//P2.5低位 P2.6高位</p><p>  P0=table_d[Key%12];</p><p><b>  G=1;D=

51、0;</b></p><p>  delay_1ms(10);</p><p><b>  }</b></p><p>  void delay_1ms(uchar i)//1ms延時</p><p><b>  {</b></p><p>  uc

52、har x,j;</p><p>  for(j=0;j<i;j++)</p><p>  for(x=0;x<=148;x++)</p><p><b>  ;</b></p><p><b>  }</b></p><p>  void KeyScan()

53、 //檢測按鍵</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  uchar temp;</p><p>  uchar table0[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};</p>&l

54、t;p>  EX0=0;//掃描鍵盤,關(guān)外部中斷</p><p>  for(j=0;j<8;++j)</p><p><b>  {</b></p><p>  P1=table0[j];//delay();</p><p>  temp=0x01;</p><p&g

55、t;  for(i=0;i<5;++i)</p><p><b>  {</b></p><p>  if(!(P2&temp))</p><p><b>  {</b></p><p>  KeyValue=i*8+j;</p><p>  EX0=1;

56、 //開外部中斷</p><p><b>  P1=0x00;</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  temp<<=1;</b></p&g

57、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  EX0=1;</b></p><p><b>  }</b></p><p>  void Run()//運行<

58、;/p><p><b>  {</b></p><p>  uchar code *p;</p><p>  if(KeyValue<36)</p><p><b>  {</b></p><p>  PlayKey(pinlv[KeyValue*2],pinlv[KeyV

59、alue*2+1]);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  p=music;</b></p><p>  Pla

60、yMusic(p);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void PlayKey(uchar PLH,uchar PLL) //運行按鍵</p><p><b>  {</b></p>&

61、lt;p><b>  Th0=PLH;</b></p><p><b>  Tl0=PLL;</b></p><p><b>  TR0=1;</b></p><p>  delay_1ms(187);</p><p><b>  TR0=0;</b>

62、;</p><p>  Speaker=1;</p><p><b>  }</b></p><p>  void PlayMusic(uchar code *p)</p><p><b>  {</b></p><p><b>  uint i,j;</b

63、></p><p><b>  flag=0;</b></p><p>  for(i=0;p[2*i]!=0xFF;++i)</p><p><b>  {</b></p><p><b>  j=p[2*i];</b></p><p><

64、b>  if(j!=0)</b></p><p><b>  {</b></p><p>  while(j--)</p><p><b>  {</b></p><p>  if(flag==1)</p><p><b>  return;<

65、;/b></p><p>  PlayKey(pinlv[p[2*i+1]*2],pinlv[p[2*i+1]*2+1]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(j==0)</b></p

66、><p><b>  {</b></p><p>  delay_1ms(187);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><

67、p>  void Device_init() //初始化</p><p><b>  {</b></p><p>  TMOD = 0x01; //使用定時器0 的16 位工作模式</p><p><b>  TR0 = 0; </b></p><p>  ET0 = 1;

68、 //定時器0 中斷</p><p><b>  EX0=1;</b></p><p>  IT0=1; //下降沿中斷</p><p>  EA = 1; //打開總中斷</p><p>  flag=0;//沒有按鍵</p><p><b>  P1=0

69、x00;</b></p><p><b>  }</b></p><p>  timer0() interrupt 1 using 0//定時器中斷</p><p><b>  {</b></p><p>  TH0=Th0;TL0=Tl0;</p><p&g

70、t;  Speaker=!Speaker;</p><p><b>  }</b></p><p>  Int0() interrupt 0 using 1//外部中斷</p><p><b>  {</b></p><p><b>  EX0=0;</b></

71、p><p><b>  flag=1;</b></p><p><b>  P1=0x00;</b></p><p><b>  EX0=1;</b></p><p><b>  }</b></p><p>  void main()&

72、lt;/p><p><b>  {</b></p><p>  Device_init();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  if(flag)</b&g

73、t;</p><p><b>  {</b></p><p>  KeyScan();</p><p><b>  Run();</b></p><p><b>  flag=0;</b></p><p><b>  }</b>&l

74、t;/p><p>  Display(KeyValue);</p><p><b>  }</b></p><p><b>  }</b></p><p>  附2 系統(tǒng)原理圖</p><p>  設(shè)計儀器、設(shè)備和材料清單: </p><

75、p>  主要儀器設(shè)備:個人計算機和相關(guān)的軟件</p><p>  主要元器件:按鍵40個、單片機芯片AT89S52一片</p><p><b>  12MHz晶振一個</b></p><p><b>  不同阻值電阻數(shù)個</b></p><p><b>  開關(guān)一個</b>

溫馨提示

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

評論

0/150

提交評論