2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(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>  《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告</p><p>  基于單片機(jī)的電子琴設(shè)計(jì)</p><p>  2012年5月 19 日</p><p><b>  摘要</b></p><p>  當(dāng)代,愛(ài)好音樂(lè)的人越來(lái)越多,有不少人自己練習(xí)彈奏樂(lè)器作為業(yè)余愛(ài)好和一種放松的手段,鑒于一些樂(lè)器學(xué)習(xí)難度大需要太多的

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

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

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

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

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

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

8、t;  2.2.6產(chǎn)生外部中斷電路設(shè)計(jì)6</p><p>  2.2.7單片機(jī)最小系統(tǒng)設(shè)計(jì)7</p><p><b>  3軟件設(shè)計(jì)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ù)計(jì)算9</b></p><p>  3.3程序設(shè)計(jì)10</p><p>  3.3.1彈奏程序流程圖10</p><p>  3.3.2自動(dòng)播放歌曲程序流程圖11</p><p>  4實(shí)驗(yàn)仿真測(cè)試13</p&

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

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

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

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

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

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

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

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

18、是想要產(chǎn)生的頻率。其計(jì)數(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>  單片機(jī)12MHZ

19、晶振,音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表所示:</p><p>  采用查表程序進(jìn)行查表時(shí),可以為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過(guò)查表的方式來(lái)獲得相應(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>  把這個(gè)數(shù)據(jù)表,放在程序中,需要播音的時(shí)候,就從表中取出一個(gè)數(shù)據(jù)送到定時(shí)器,當(dāng)定時(shí)器溢出中斷的時(shí)候,再對(duì)輸出引腳取反,那么,在揚(yáng)聲器

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

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

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

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

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

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

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

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

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

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

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

33、;  3.1.2系統(tǒng)程序總體流程圖</p><p><b>  3.2參數(shù)計(jì)算</b></p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系式是:N=fi/2/fr,式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計(jì)數(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è)計(jì)</b></p><p>  3.3.1彈奏程序流程圖</p>

35、<p>  3.3.2自動(dòng)播放歌曲程序流程圖</p><p><b>  4實(shí)驗(yàn)仿真測(cè)試</b></p><p><b>  5課程設(shè)計(jì)體會(huì)</b></p><p>  這次設(shè)計(jì)從軟件方面來(lái)講不是很難,程序相對(duì)長(zhǎng)一點(diǎn),但都是書(shū)本上所學(xué)的知識(shí),主要是中斷及其服務(wù)程序的編寫(xiě)。在protues上仿真,則起到很好的效果,

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

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

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

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

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);//運(yùn)行按鍵</p><p>  void Run();//運(yùn)行</p><p>  void KeyScan();//掃描鍵盤(pán)</p><p>  void delay_1ms(uchar);//1ms延時(shí)</p><p>  void Pla

42、yMusic(uchar code *p);//演奏音樂(lè)</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;//按鍵對(duì)應(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延時(shí)</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、 //檢測(cè)按鍵</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;//掃描鍵盤(pán),關(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、 //開(kāi)外部中斷</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()//運(yùn)行<

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) //運(yùn)行按鍵</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; //使用定時(shí)器0 的16 位工作模式</p><p><b>  TR0 = 0; </b></p><p>  ET0 = 1;

68、 //定時(shí)器0 中斷</p><p><b>  EX0=1;</b></p><p>  IT0=1; //下降沿中斷</p><p>  EA = 1; //打開(kāi)總中斷</p><p>  flag=0;//沒(méi)有按鍵</p><p><b>  P1=0

69、x00;</b></p><p><b>  }</b></p><p>  timer0() interrupt 1 using 0//定時(shí)器中斷</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è)計(jì)儀器、設(shè)備和材料清單: </p><

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

溫馨提示

  • 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)論