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

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p>  論文題目:基于單片機(jī)的簡單電子琴設(shè)計(jì) </p><p>  學(xué) 院: 電子工程學(xué)院 </p><p>  專 業(yè): 電子信息工程 </p><p>  畢業(yè)屆別:

2、 </p><p>  姓 名: </p><p>  指導(dǎo)教師: </p><p>  職 稱: </p><p><b>  目錄</b></p>

3、<p><b>  1引言1</b></p><p><b>  2 總體設(shè)計(jì)2</b></p><p>  2.1 設(shè)計(jì)目的與要求2</p><p>  2.2 電子琴系統(tǒng)的組成2</p><p>  2.3 系統(tǒng)設(shè)計(jì)框圖3</p><p><

4、b>  3 詳細(xì)設(shè)計(jì)4</b></p><p>  3.1 硬件設(shè)計(jì)4</p><p>  3.2 硬件簡介5</p><p>  3.2.1 AT89C51簡介5</p><p>  3.2.2 LED數(shù)碼管10</p><p>  3.3整體程序處理流程圖設(shè)計(jì)11</p>

5、<p>  3.4矩陣式鍵盤的識(shí)別和顯示與設(shè)計(jì)12</p><p>  3.4.1矩陣式鍵盤的結(jié)構(gòu)與工作原理12</p><p>  3.4.2矩陣式鍵盤的按鍵識(shí)別方法13</p><p>  3.4.3鍵盤接口必須具有的4個(gè)基本功能15</p><p>  3.5音樂播放設(shè)計(jì)16</p><p>

6、;  3.5.1音樂發(fā)聲原理16</p><p>  3.5.2音樂播放流程圖18</p><p>  3.5.3放歌子程序流程圖18</p><p><b>  4實(shí)現(xiàn)聯(lián)調(diào)20</b></p><p>  4.1 Proteus 簡介20</p><p>  4.2 keil 簡介2

7、0</p><p>  4.3利用keil與Proteus進(jìn)行的調(diào)試21</p><p>  5 總結(jié)與展望23</p><p><b>  參考文獻(xiàn)25</b></p><p>  Abstract:.26</p><p><b>  致謝27</b></p

8、><p>  附錄A:程序設(shè)計(jì)28</p><p>  附錄B 印制電路板(PCB)設(shè)計(jì)34</p><p>  基于單片機(jī)的簡單電子琴設(shè)計(jì)</p><p>  摘要:電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代

9、的一部分。本文主要對(duì)使用單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析與設(shè)計(jì),并介紹了基于單片機(jī)電子琴的系統(tǒng)硬件組成。該文設(shè)計(jì)是一種基于AT89C51的簡單音樂發(fā)生器,利用單片機(jī)技術(shù)、鍵盤和一組發(fā)光二極、SPEARK等實(shí)現(xiàn)原理圖設(shè)計(jì),并用C51語言進(jìn)行鍵盤識(shí)別程序設(shè)計(jì)和音頻脈沖輸出程序的設(shè)計(jì)。經(jīng)過軟件和硬件的聯(lián)調(diào),并仿真出來。該音樂發(fā)生器不僅能通過鍵盤彈奏出來簡單的樂曲,而且不彈奏時(shí)按播放鍵可以播放內(nèi)置音樂,音調(diào)和節(jié)拍都由單片機(jī)控制實(shí)現(xiàn)。本系統(tǒng)運(yùn)行穩(wěn)定

10、,其優(yōu)點(diǎn)是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用和參考價(jià)值。</p><p>  關(guān)鍵詞:單片機(jī);鍵盤;揚(yáng)聲器;電子琴1引言</p><p>  單片微型計(jì)算機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,屬第四代電子計(jì)算機(jī),它具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。它的應(yīng)用必定導(dǎo)致傳統(tǒng)的控制技術(shù)從根本上發(fā)生變革。因此,單片機(jī)的開發(fā)應(yīng)用已成為高科技

11、和工程領(lǐng)域的一項(xiàng)重大課題。</p><p>  雖然單片機(jī)出現(xiàn)的歷史并不長,但發(fā)展十分迅猛,在集成度、功能、速度、可靠性、應(yīng)用領(lǐng)域等全方位向更高水平發(fā)展。目前單片機(jī)已用于工業(yè)控制、機(jī)電一體化設(shè)備、儀器儀表、信號(hào)處理、現(xiàn)代兵器、交通能源、商用設(shè)備、醫(yī)療設(shè)備及家用電器等各個(gè)領(lǐng)域,隨著單片機(jī)性能的不斷提高,它的應(yīng)用將會(huì)更加廣泛。單片機(jī)技術(shù)發(fā)展非???,及時(shí)掌握最新的單片機(jī)技術(shù),在條件允許的情況下,盡可能地利用最新的單片機(jī)

12、技術(shù)來研制其應(yīng)用系統(tǒng),再利用單片機(jī)體積小、價(jià)格低、功能強(qiáng)等特點(diǎn),以保證所設(shè)計(jì)的產(chǎn)品在未來的一段時(shí)間內(nèi)仍具生命力。在生活和生產(chǎn)的各個(gè)領(lǐng)域中,凡是有自動(dòng)控制要求的地方都會(huì)有單片機(jī)的身影出現(xiàn);從簡單到復(fù)雜,從空中、地面到地下,凡是能想象到的地方幾乎都有使用單片機(jī)的需求。現(xiàn)在,盡管單片機(jī)的應(yīng)用已經(jīng)很普遍了,但仍有許多可以用單片機(jī)控制而尚未實(shí)現(xiàn)的項(xiàng)目,因此,單片機(jī)的應(yīng)用大有可以想象和拓展的空間。</p><p>  單片機(jī)

13、的應(yīng)用有利于產(chǎn)品的小型化、多功能化和智能化,有助于提高勞動(dòng)效率,減輕勞動(dòng)強(qiáng)度,提高產(chǎn)品質(zhì)量,改善勞動(dòng)環(huán)境,減少能源和材料消耗,保證安全等。</p><p>  但是,單片機(jī)應(yīng)用的意義絕不僅限于它的廣闊范圍以及所帶來的經(jīng)濟(jì)效益上,更重要的意義還在于:單片機(jī)的應(yīng)用正從根本上改變著傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分控制功能,現(xiàn)在已能使用單片機(jī)通過軟件(編程序)方法實(shí)現(xiàn)了。這種以軟

14、件取代硬件并能提高系統(tǒng)性能的控制系統(tǒng)“軟化”技術(shù),稱之為微控制技術(shù)。微控制技術(shù)是一種全新的概念,是對(duì)傳統(tǒng)控制技術(shù)的一次革命。隨單片機(jī)應(yīng)用的推廣普及,微控制技術(shù)必將不斷發(fā)展、日益完善和更加充實(shí)。</p><p>  電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器,它在現(xiàn)代音樂扮演著重要的角色,簡易電子琴系統(tǒng)就是以單片機(jī)為主要元器件設(shè)計(jì)的一個(gè)簡易電子琴。這只是單片機(jī)應(yīng)用的一個(gè)點(diǎn),由點(diǎn)及面,希望可以更好的了

15、解和應(yīng)用單片機(jī)技術(shù)。 之所以以單片機(jī)設(shè)計(jì)簡易的電子琴為選題,目的在于從日常生活能接觸到的細(xì)微處著手,通過理論與實(shí)踐的結(jié)合,更明確自己的所學(xué)所用,也在實(shí)踐中發(fā)現(xiàn)理論的不足,對(duì)目前日益廣泛應(yīng)用的單片機(jī)有了更加理性化和感性化的認(rèn)識(shí),使理論和實(shí)踐跟家很好的結(jié)合。 通過單片機(jī)設(shè)計(jì)簡易電子琴這個(gè)選題,更深層次的了解了單片機(jī)技術(shù),以前只是有理論,實(shí)踐的機(jī)會(huì)不是很多,在做單片機(jī)設(shè)計(jì)簡易電子琴這個(gè)選題的過程中,更加熟練的掌握了一些單片機(jī)芯

16、片的應(yīng)用,也解決了很多以前理論和實(shí)踐脫節(jié)的問題,可謂對(duì)單片機(jī)的認(rèn)識(shí)有了一個(gè)小的飛躍。</p><p>  本文的主要內(nèi)容是用AT89C51單片機(jī)為核心控制元件,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個(gè)按鍵和揚(yáng)聲器。并且主要對(duì)使用單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。并且本文分別從原理圖,主

17、要芯片,各模塊原理及各模塊的程序的調(diào)試來詳細(xì)闡述。</p><p><b>  2 總體設(shè)計(jì)</b></p><p>  2.1 設(shè)計(jì)目的與要求</p><p>  本系統(tǒng)分為兩個(gè)部分,一個(gè)是音樂播放,另一個(gè)就是電子琴彈奏。 關(guān)于聲音的處理,使用單片機(jī)C語言,利用定時(shí)器來控制頻率,而每個(gè)音符的符號(hào)只存在定義的表中。具體要求如下: 1

18、.要求達(dá)到電子琴的基本功能,可以用彈奏出簡單的樂曲。 2.用鍵盤作出電子琴的按鍵,每一個(gè)鍵代表一個(gè)音符。 3.各音符按一定的順序排列,必須符合電子琴的按鍵排列順序。 4.固定音樂播放由按鍵控制:“播放”按鍵,“彈奏/停止”按鍵。 5.彈奏電子琴時(shí)能播放出準(zhǔn)確的聲音,不彈奏時(shí)可以播放內(nèi)置音樂。</p><p>  2.2 電子琴系統(tǒng)的組成</p><p>  單片機(jī)因體積小

19、、功能強(qiáng)、價(jià)格低廉而得到廣泛應(yīng)用。AT89C51單片機(jī)設(shè)計(jì)微型電子琴的方法,僅需AT89C51最小系統(tǒng),擴(kuò)展一組矩陣鍵盤,再接一組發(fā)光二極管用來指示電子琴的工作狀態(tài)。</p><p>  本系統(tǒng)分為兩個(gè)部分,一個(gè)是音樂的播放,另一個(gè)就是電子琴的彈奏。</p><p>  音樂播放部分:音樂實(shí)際上是有固定周期的信號(hào)。本文介紹用AT89C51的兩個(gè)定時(shí)器(如T0,T1)控制,在P3.7腳上輸出

20、方波周期信號(hào),產(chǎn)生樂音,通過矩陣鍵盤按鍵產(chǎn)生不同的音符,由此操作人員可以隨心所欲的彈奏自己所喜愛的樂曲,當(dāng)不想彈奏時(shí)通過按播放鍵可以演奏事先存放在單片機(jī)中的幾首簡單的曲子。當(dāng)歌曲演奏完時(shí),通過按復(fù)位鍵便可回到初始狀態(tài),這樣就做出了一臺(tái)簡易電子琴。</p><p>  由于一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生

21、不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。樂曲中,每一音符對(duì)應(yīng)著固定的頻率,我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。</p><p>  電子琴彈奏部分:實(shí)際上就是把每個(gè)按鍵所對(duì)應(yīng)的值經(jīng)過處理后發(fā)給單片機(jī),再在

22、單片機(jī)內(nèi)把數(shù)字當(dāng)作指針指向所對(duì)應(yīng)的音符。</p><p>  2.3 系統(tǒng)設(shè)計(jì)框圖</p><p>  該系統(tǒng)通過電子琴按鍵隨意鍵入所要表達(dá)的音符,作為電平送給主體電路,中央處理器通過識(shí)別,解碼輸出音符,在揚(yáng)聲器中發(fā)出有效的聲音。通過這樣可以不斷的彈奏音樂。該設(shè)計(jì)由嵌入式電路,按鍵電路,LED顯示電路和兩個(gè)功能鍵組成,通過功能鍵可以選擇播放音樂。其主要模塊由五個(gè)部分組成,具體關(guān)系如下圖2-

23、1所示。</p><p>  圖2-1 電子琴的主模塊</p><p>  上圖即為此次設(shè)計(jì)中的電子琴的硬件結(jié)構(gòu)圖,我們運(yùn)用單片機(jī)的最小系統(tǒng)。</p><p><b>  3 詳細(xì)設(shè)計(jì)</b></p><p><b>  3.1 硬件設(shè)計(jì)</b></p><p>  本設(shè)計(jì)采

24、用AT89C51作為主控部件,擴(kuò)展一組4*4矩陣鍵盤,再接一組發(fā)光二極管,LED顯示器和SPEARK,再接兩個(gè)按鍵,一個(gè)用于播放內(nèi)置音樂,一個(gè)用于用戶彈奏與復(fù)位。電路原理圖如下圖3-1所示。</p><p>  圖3-1系統(tǒng)板硬件連線</p><p><b>  3.2 硬件簡介</b></p><p>  3.2.1 AT89C51簡介<

25、;/p><p>  AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)

26、器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖3-2所示:</p><p>  圖3-2 AT89C51管腳圖</p><p> ?。?)AT89C51的主要特性</p><p>  ·與MCS-51 兼容 

27、 ·4K字節(jié)可編程閃爍存儲(chǔ)器  ·壽命:1000寫/擦循環(huán)  ·數(shù)據(jù)保留時(shí)間:10年  ·全靜態(tài)工作:0Hz-24MHz  ·三級(jí)程序存儲(chǔ)器鎖定  ·128×8位內(nèi)部RAM  ·32可編程I/O線  ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器  ·5個(gè)中斷源  ·可編程串行通道  ·低功耗的閑置和掉電模式  &#

28、183;片內(nèi)振蕩器和時(shí)鐘電路</p><p> ?。?)8051單片機(jī)內(nèi)部結(jié)構(gòu)圖</p><p>  圖3-3 8051單片機(jī)內(nèi)部結(jié)構(gòu)圖</p><p><b> ?。?)主要管腳說明</b></p><p>  VCC:供電電壓。 </p><p><b>  GND:接地。 <

29、/b></p><p>  MCS-51單片機(jī)有4個(gè)雙向的8位I/O口P0-P3。在無片外存儲(chǔ)器的系統(tǒng)中,這4個(gè)I/O口的每一位都可以作為準(zhǔn)雙向通用I/O口使用。在有片外存儲(chǔ)器的系統(tǒng)中,P2口作為地址的高8位,P0口作為地址的低8位和雙向數(shù)據(jù)總線。</p><p>  P0口: P0口的位內(nèi)部結(jié)構(gòu)如圖3-4所示。它由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)及控制電路組成。它既可作

30、為I/O口,又可作為地址/數(shù)據(jù)總線。本設(shè)計(jì)中它只作為I/O口使用。</p><p>  作為輸出口使用時(shí),內(nèi)部控制端發(fā)0電平使與門輸出為0,場效應(yīng)管T1截止,此時(shí)多路開關(guān)MUX與鎖存器的端接通。內(nèi)部數(shù)據(jù)加在鎖存器D端,當(dāng)CL端的寫脈沖出現(xiàn)后,與內(nèi)部總線相連的D端數(shù)據(jù)取反后出現(xiàn)在端,經(jīng)場效應(yīng)管T2反向出現(xiàn)在P0的引腳上。</p><p>  當(dāng)作輸入口時(shí),讀脈沖將圖中下方的三態(tài)輸入緩沖器打開

31、,這樣端口上的數(shù)據(jù)經(jīng)緩沖器送至內(nèi)部總線。圖中上方的緩沖器并不直接讀端口引角上的數(shù)據(jù),而是讀鎖存器Q端的數(shù)據(jù),Q端與引角上的數(shù)據(jù)是一致的。</p><p>  圖3-4 P0口的位結(jié)構(gòu)</p><p>  P1口:P1口的位內(nèi)部結(jié)構(gòu)如圖3-5所示。P1口是通用I/O準(zhǔn)雙向靜態(tài)端口,輸出的信息有鎖存。P1端口與P0端口的主要區(qū)別在于,P1端口用內(nèi)部上拉電阻代替了場效應(yīng)管T1,且輸出信息僅來自內(nèi)

32、部總線。若輸出時(shí)D端的數(shù)據(jù)為1,T截止輸出為1;若D端數(shù)據(jù)為0,則T導(dǎo)通,引腳輸出為低電平。當(dāng)作輸入使用時(shí),必須向鎖存器寫1,使場效應(yīng)管截止,才可以作輸入用。</p><p>  P1端口是單片機(jī)中唯一僅有單功能的I/O端口,輸出信號(hào)鎖存在端口上,故又稱為通用靜態(tài)端口。</p><p>  圖3-5 P1口的位結(jié)構(gòu)</p><p>  P2口:P2口的位內(nèi)部結(jié)構(gòu)如圖

33、3-6所示。和P1口比較,P2口多了轉(zhuǎn)換控制部分。當(dāng)P2口作通用I/O口使用時(shí),多路開關(guān)MUX連接鎖存器的Q端,構(gòu)成一個(gè)準(zhǔn)雙向口。當(dāng)系統(tǒng)擴(kuò)展片外程序存儲(chǔ)器時(shí),P2端口就用來周期性地輸出從外存中取指令的高8位地址(A8-A15),此時(shí)MUX在CPU的控制下切換到與內(nèi)部地址總線相連。因地址信號(hào)是不間斷的,此時(shí)P2口就不能用作I/O端口使用了。</p><p>  圖3-6 P2口的位結(jié)構(gòu)</p><

34、;p>  P3口:P3口的位內(nèi)部結(jié)構(gòu)如圖3-7 所示。和P1口比較,P3口增加了一個(gè)與非門和一個(gè)緩沖器,使其各端口線有兩種功能選擇。當(dāng)處于第一功能時(shí),第二輸出功能線為1,此時(shí)輸出與P1口相同,內(nèi)部總線信號(hào)經(jīng)鎖存器和場效應(yīng)管輸出。當(dāng)作輸入時(shí),“讀引角”信號(hào)有效,下面的三態(tài)緩沖器打開(增加的一個(gè)為常開),數(shù)據(jù)通過緩沖器送到CPU內(nèi)部總線。</p><p>  當(dāng)處于第二功能時(shí),鎖存器由硬件自動(dòng)置1,使與非門對(duì)第

35、二功能信號(hào)暢通。此時(shí),“讀引腳”信號(hào)無效,左下的三態(tài)緩沖器不通,引腳上的第二輸入功能信號(hào)經(jīng)右下的的緩沖器送入“第二功能輸入端”。</p><p>  圖3-7 P3口的位結(jié)構(gòu)</p><p>  用AT89C51的并行口P0接4×4矩陣鍵盤,以P0.0-P0.3作輸入線,以P0.4-P0.7作輸出線;在數(shù)碼管上顯示每個(gè)按鍵的“0-F”序號(hào)。</p><p&g

36、t;  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。復(fù)位電路如下圖3-8所示。</p><p><b>  圖3-8 復(fù)位電路</b></p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 </p><p>  XTAL2:來自反向振蕩器的輸出。</p><p>

37、;  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。構(gòu)成的內(nèi)部時(shí)鐘電路如下圖3-9所示。</p><p>  圖3-9 內(nèi)部時(shí)鐘電路</p><p>  3.2.2 LED數(shù)碼管</p><p>  (1)數(shù)碼管如圖3-8 所示: </p><p><b>  圖3-8&l

38、t;/b></p><p>  數(shù)碼管(如圖3-8所示)使用條件:</p><p>  1)、段及小數(shù)點(diǎn)上加限流電阻</p><p>  2)、使用電壓:段:根據(jù)發(fā)光顏色決定;小數(shù)點(diǎn):根據(jù)發(fā)光顏色決定</p><p>  3)、使用電流:靜態(tài):總電流 80mA(每段 10mA);動(dòng)態(tài):平均電流 4-5mA.</p><

39、;p>  峰值電流 100mA</p><p>  數(shù)碼管使用注意事項(xiàng)說明:</p><p>  1)、數(shù)碼管表面不要用手觸摸,不要用手去弄引角;</p><p>  2)、焊接溫度:260度;焊接時(shí)間:5S</p><p>  3)、表面有保護(hù)膜的產(chǎn)品,可以在使用前撕下來。</p><p> ?。?)數(shù)碼管的驅(qū)

40、動(dòng)方式:數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。主要用動(dòng)態(tài)驅(qū)動(dòng)。動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,所以只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮

41、。</p><p>  3.3整體程序處理流程圖設(shè)計(jì)</p><p><b>  圖3-10</b></p><p>  3.4矩陣式鍵盤的識(shí)別和顯示與設(shè)計(jì)</p><p>  3.4.1矩陣式鍵盤的結(jié)構(gòu)與工作原理</p><p>  在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列

42、成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。</p><p>  矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也

43、要復(fù)雜一些,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別方法如下所述。</p><p>  3.4.2矩陣式鍵盤的按鍵識(shí)別方法</p><p>  圖3-11(4*4

44、鍵盤)</p><p>  確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”?! ⌒袙呙璺?行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法,如上圖2-4所示鍵盤,介紹過程如下?! ?、判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置高電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下

45、。整個(gè)工作可分為4個(gè)階段,說明如下:</p><p>  (1)在第一階段,主要目的是判斷3,2,1及0鍵有沒有按下。首先將1110B信號(hào)送入X3,X2,X1,X0,也就是只有X0為低電平,其它各行均為高電平。接著讀取Y3,Y2,Y1,Y0的狀況。</p><p>  ·若Y3,Y2,Y1,Y0為1110,表示0鍵被按下。</p><p>  ·

46、若Y3,Y2,Y1,Y0為1101,表示1鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1011,表示2鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為0111,表示3鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1111,表示0,1,2,3都沒被按下,進(jìn)入第二階段。</p><

47、;p>  (2)在第二階段,主要目的是判斷鍵7,6,5,4有沒有按下,首先將1101B信號(hào)送入X3,X2,X1,X0,也就是只有X1為低電平,接著讀取Y3,Y2,Y1,Y0的狀態(tài)。</p><p>  ·若Y3,Y2,Y1,Y0為1110,表示4鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1101,表示5鍵被按下。</p><p

48、>  ·若Y3,Y2,Y1,Y0為1011,表示6鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為0111,表示7鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1111,表示7,6,5,4都沒按下,進(jìn)入第三階段。</p><p>  (3)在第三階段,主要目的是判斷鍵B,A,9,8有沒有按下,首先將101

49、1B信號(hào)送入X3,X2,X1,X0,也就是只有X2為低電平,接著讀取Y3,Y2,Y1,Y0的狀態(tài)。</p><p>  ·若Y3,Y2,Y1,Y0為1110,表示8鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1101,表示9鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1011,表示A鍵被按下。</p

50、><p>  ·若Y3,Y2,Y1,Y0為0111,表示B鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1111,表示8,9,A,B都沒按下,進(jìn)入第四階段。</p><p>  (4)在第四階段,主要目的是判斷鍵F,E,D,C有沒有按下,首先將0111B信號(hào)送入X3,X2,X1,X0,也就是只有X3為低電平,接著讀取Y3,Y2,Y1,Y

51、0的狀態(tài)。</p><p>  ·若Y3,Y2,Y1,Y0為1110,表示C鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1101,表示D鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1011,表示E鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為0111,表示F

52、鍵被按下。</p><p>  ·若Y3,Y2,Y1,Y0為1111,表示C,D,E,F都沒按下,進(jìn)入第一階段,從新開始,繼續(xù)掃描。</p><p>  2、判斷閉合鍵所在的位置,在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與

53、置為低電平的行線交叉處的按鍵就是閉合的按鍵。</p><p><b>  對(duì)應(yīng)的程序設(shè)計(jì)為:</b></p><p>  /* 鍵掃描函數(shù) */</p><p>  uchar getkey(void)</p><p><b>  {</b></p><p>  uchar

54、scancode,tmpcode;</p><p>  if ((P0&0xf0)==0xf0)</p><p>  return(0);</p><p>  scancode = 0xfe;</p><p>  while((scancode&0x10)!=0)// 逐行掃描</p><p>

55、;<b>  {</b></p><p>  P0 = scancode;// 輸出行掃描碼</p><p>  if ((P0&0xf0)!=0xf0)// 本行有鍵按下</p><p><b>  {</b></p><p>  tmpcode = (P0&0xf0)

56、|0x0f;</p><p>  /* 返回特征字節(jié)碼,為1的位即對(duì)應(yīng)于行和列 */</p><p>  return((~scancode)+(~tmpcode));</p><p><b>  }</b></p><p>  else scancode = (scancode<<1)|0x01;//

57、行掃描碼左移一位</p><p><b>  }</b></p><p><b>  }</b></p><p>  3.4.3鍵盤接口必須具有的4個(gè)基本功能</p><p> ?。?)去抖動(dòng):每個(gè)按鍵在按下或松開時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為5-20mm。所謂抖動(dòng)是

58、指在識(shí)別被按鍵是必須避開抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識(shí)別正確無誤。去抖問題可通過軟件延時(shí)或硬件電路解決。對(duì)應(yīng)的程序設(shè)計(jì)為:</p><p>  /* 鍵消抖延時(shí)函數(shù) */</p><p>  void delay(void)</p><p><b>  {</b></p><p><b> 

59、 uchar i;</b></p><p>  for (i=300;i>0;i--);</p><p><b>  }</b></p><p> ?。?)防串鍵:防串鍵是為了解決多個(gè)鍵同時(shí)按下或者前一按鍵沒有釋放又有新的按鍵按下時(shí)產(chǎn)生的問題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩個(gè)或兩個(gè)以上的按鍵按下時(shí),

60、只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。N鍵輪回,是當(dāng)檢測到有多個(gè)鍵被按下時(shí),能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。</p><p>  (3)被按鍵識(shí)別:如何識(shí)別被按鍵是接口解決的主要問題,一般可通過軟硬結(jié)合的方法完成。常用的方法有行掃描法和線反轉(zhuǎn)法兩種。行掃描法的基本思想是,由程序?qū)︽I盤逐行掃描,通過檢測到的列輸出狀態(tài)來確定閉合鍵,為此,需要設(shè)置入口、輸出口一個(gè),該方法在微機(jī)系統(tǒng)中被廣泛使用。線反轉(zhuǎn)法

61、的基本思想是通過行列顛倒兩次掃描來識(shí)別閉合鍵,為此需要提供兩個(gè)可編程的雙向輸入/輸出端口。對(duì)應(yīng)的程序設(shè)計(jì)為:</p><p>  /* 外部中斷0 ,這里是彈唱按鍵*/</p><p>  void EX0_INT() interrupt 0</p><p><b>  {</b></p><p>  FY=0; LE

62、D1=1; LED2=0; </p><p><b>  }</b></p><p>  /* 外部中斷1 ,這里是播放按鍵*/</p><p>  void EX1_INT() interrupt 2</p><p><b>  {</b></p><p>  FY=1;

63、 LED1=0; LED2=1; </p><p><b>  }</b></p><p> ?。?)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個(gè)鍵盤編碼表,通過查表獲得被按鍵的鍵碼。對(duì)應(yīng)的程序設(shè)計(jì)為:</p><p>  /* 音符與計(jì)數(shù)值對(duì)應(yīng)表 */</p><p>  uint co

64、de tab[]=</p><p>  { 63628,63835,64021,64103,64260,64400,64524,</p><p>  64580,64684,64777,64820,64898,64968,65030,</p><p>  65058,65110,65157,65178,65217,65252,65283,65085 </p&

65、gt;<p><b>  };</b></p><p><b>  3.5音樂播放設(shè)計(jì)</b></p><p>  3.5.1音樂發(fā)聲原理</p><p>  音樂發(fā)聲原理:一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片

66、機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。</p><p>  若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)的半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P3.7反相,然后重復(fù)計(jì)時(shí)再反相。就可在P3.7引腳上得到此頻率的脈沖。</p><p> 

67、 利用AT89C51的內(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)。</p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系式是:</p><p><b>  N=f

68、i÷2÷fr</b></p><p>  式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。</p><p>  其計(jì)數(shù)初值T的求法如下:</p><p>  T=65536-N=65536-fi÷2÷fr</p><p>  例如:設(shè)K=

69、65536,fi=1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的計(jì)數(shù)值。</p><p>  T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr</p><p> ?。?5536-500000/fr</p><p>  低音DO的T=65536-5000

70、00/262=63628</p><p>  中音DO的T=65536-500000/523=64580</p><p>  高音DO的T=65536-500000/1046=65058 [6]</p><p>  我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。</p><p>  單片機(jī)12MHZ晶振,高中低音符與計(jì)數(shù)

71、T0相關(guān)的計(jì)數(shù)值如表3-1所示:</p><p>  表3-1 音符頻率表</p><p>  音樂的音拍,一個(gè)節(jié)拍為單位(C調(diào)),如下表3-2所示。</p><p><b>  表3-2 曲調(diào)值表</b></p><p>  對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來完成。在這個(gè)程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)

72、器來完成的。其中T0用來產(chǎn)生音符頻率,T1用來產(chǎn)生音拍。[7]</p><p>  3.5.2音樂播放流程圖</p><p>  圖3-12音樂播放流程圖</p><p>  3.5.3放歌子程序流程圖</p><p>  圖3-12放歌子程序流程圖</p><p><b>  4實(shí)現(xiàn)聯(lián)調(diào)</b>

73、</p><p>  4.1 Proteus 簡介</p><p>  Proteus(海神)的ISIS是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機(jī),元件庫齊全,使用方便,是不可多得的專業(yè)的單片機(jī)軟件仿真系統(tǒng)?! ≡撥浖奶攸c(diǎn): ?、?全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢。 ?、诰哂心M電路仿真、數(shù)字電路仿

74、真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS-232動(dòng)態(tài)仿真、C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等?! 、?目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。 ?、?支持大量的存儲(chǔ)器和外圍芯片??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大

75、 ,可仿真51、AVR、PIC。</p><p>  4.2 keil 簡介</p><p>  單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼, Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣

76、布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。</p><p>  運(yùn)行Keil軟件需要16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。</p><p>  應(yīng)用Keil軟件進(jìn)行單片機(jī)軟件調(diào)試有以

77、下步驟:</p><p>  建立一個(gè)工程項(xiàng)目。選擇芯片,確定選項(xiàng)。</p><p><b>  建立C源文件。</b></p><p>  用項(xiàng)目管理器生成各種應(yīng)用文件。</p><p>  檢查并修改原文件中的錯(cuò)誤。</p><p><b>  編程操作。</b><

78、/p><p>  4.3利用keil與Proteus進(jìn)行的調(diào)試</p><p><b>  使用步驟:</b></p><p>  打開keil,建立工程,輸入程序</p><p>  編譯和生成hex文件,如圖4-1所示</p><p><b>  圖4-1</b></p

79、><p>  圖4-2 利用keil進(jìn)行編譯</p><p>  打開Proteus,設(shè)計(jì)硬件電路圖,見圖4-3</p><p>  圖4-3 硬件電路圖</p><p>  導(dǎo)入hex文件,見圖4-4</p><p><b>  圖4-4</b></p><p>  將鼠標(biāo)置

80、于電路圖中AT89C51器件上,右擊后再左擊,彈出圖4-4中的對(duì)話框,在紅線框中導(dǎo)入dzq.hex文件。</p><p>  點(diǎn)擊面板左下角的,開始調(diào)試</p><p><b>  5 總結(jié)與展望</b></p><p>  將程序?qū)階T89C51芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。本課題通過用單片機(jī)設(shè)計(jì)簡易電子琴,將幾個(gè)模塊很好的融

81、合起來,對(duì)使用單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。說明一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,于是我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可,然后我們利用功放電路來將音樂聲音放大,

82、同時(shí)通過顯示模塊來確知自己所彈的音符。</p><p>  通過這次課程設(shè)計(jì),我感覺收獲了很多:</p><p>  首先,通過實(shí)踐,加深對(duì)單片機(jī)系列知識(shí)及其系統(tǒng)的認(rèn)識(shí)。這個(gè)設(shè)計(jì)題目并不是新的,但從中能體現(xiàn)到一個(gè)系統(tǒng)開發(fā)設(shè)計(jì)的過程,足于讓我們受益。</p><p>  第二,通過設(shè)計(jì)學(xué)習(xí)到了很多軟件的使用。本次設(shè)計(jì),軟件部分用到了protues進(jìn)行硬件設(shè)計(jì),用kei

83、l進(jìn)行程系編譯。</p><p>  同時(shí)感謝我們的聶老師教育了我們單片機(jī)相關(guān)知識(shí)。 </p><p>  本設(shè)計(jì)的不足之處在于設(shè)計(jì)時(shí)很好的實(shí)現(xiàn)復(fù)位電路的設(shè)計(jì),未能焊制電路板實(shí)物,本設(shè)計(jì)還可以擴(kuò)展其他功能,比如記憶功能,即可以存儲(chǔ)彈奏者所彈奏的音樂且保存,待彈奏完后播放給彈奏者聽。還可以做得更加娛樂一點(diǎn),增加一些彩燈使彩燈隨著音調(diào)變化而產(chǎn)生不同的樣式。 </p><p

84、><b>  參考文獻(xiàn)</b></p><p>  [1] 張靖武,周靈彬.單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真[M].北京:電子工業(yè)出版社,2007.4,195~206.</p><p>  [2] 謝維成,楊加國. 單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.8,12~24.</p><p>  [3] 張

85、義和,王敏男,袁彩霞.例說51單片機(jī)(C語言版)[M].北京:人民郵電出版社,2008.4,268~302.</p><p>  [4] 周堅(jiān).單片機(jī)C語言輕松入門 [M].北京:北京航空航天大學(xué)出版社,2006.7,</p><p><b>  153~161.</b></p><p>  [5] 朱清惠,張鳳蕊.Protues教程——電子線

86、路設(shè)計(jì)、制板與仿真[M].北京:清華大學(xué)出版社,2008.9,46~52,332~362.</p><p>  [6] 周琛暉.基于 AT89S51單片機(jī)的電子琴設(shè)計(jì)[J] .中國礦業(yè)大學(xué)計(jì)算機(jī)學(xué)院,江蘇徐州(221008).</p><p>  [7] 韓改寧.基于AT89C52實(shí)現(xiàn)簡單音樂發(fā)生器[J] .咸陽師范學(xué)院計(jì)算機(jī)科學(xué)系.陜西成陽(712000).</p><

87、;p>  [8] Chen Tianzhou,Zbao Yi,Hu We.Assigning program to cache-aware scratchpad concerning the influence of the whole embedded sys- tem [C].Networking,Architecture,and Storages.IEEE Conf of International Workshop on

88、Aug.2006,5.</p><p>  [9] 4 M Verma,S Steinke,P Marwedel.Data for maximal scratchpad usage[C].Proeeedings of the 2003 conference on Asia South Pacific design automation,2003,77—83.</p><p>  The d

89、esigns of A simple Electronic keyboard Based on SCM</p><p>  (Electronic and Information Engineering ,Grade 2006, College of Information Science and Technology ,Gansu Agricultural University,)</p><

90、;p>  Abstract:Electronic organ is a modern electronic music technology and the product is a new type of keyboard instruments. It played an important role in modern music. SCM has powerful control functions and flexibl

91、e programming characteristics. It has converged with modern people's lives, become an irreplaceable part. In this paper, the use of single chip designs were analyzed and simple flower design, and introduces a system

92、based on single chip hardware keyboard. In this paper, the design is bas</p><p>  Key words : SCM;  keyboard;  speaker;  electronic organ;</p><p><b>  致謝</b></p>

93、<p>  在這次畢業(yè)設(shè)計(jì)中,要特別感謝我的指導(dǎo)老師——老師。 老師在我畢業(yè)論文的撰寫過程中,給我提供了極大的幫助和指導(dǎo)。從開始選題到中期修正,再到最終定稿,老師給我提供了許多寶貴建議。使我有機(jī)會(huì)拿到這個(gè)很有意義的設(shè)計(jì)題目,而且他一次又一次耐心的指導(dǎo)我們,并犧牲寶貴的時(shí)間與我討論,給我很多有益的建議。另外,老師在畢業(yè)設(shè)計(jì)時(shí)很關(guān)注我們畢業(yè)設(shè)計(jì)的進(jìn)展,每次都主動(dòng)跟我們聯(lián)系,問我們有什么問題。使我在完成設(shè)計(jì)的同時(shí),對(duì)學(xué)習(xí)近4年的

94、專業(yè)知識(shí)做了一次系統(tǒng)的復(fù)習(xí)總結(jié),并且對(duì)目前所從事的項(xiàng)目以及相關(guān)的學(xué)科有了一定的了解和認(rèn)識(shí),獲益非淺。</p><p>  老師淵博的專業(yè)知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng),誨人不倦的高尚師德,樸實(shí)無華、平易近人的人格魅力對(duì)我影響深遠(yuǎn)。不僅使我樹立了遠(yuǎn)大的學(xué)術(shù)目標(biāo)、掌握了基本的研究方法,還使我明白了許多待人接物與為人處世的道理。</p><p>  最后對(duì)老師,同學(xué)和家人再次致以我最衷

95、心的感謝!教導(dǎo)過我的老師,你們的人格魅力永記我心間。身邊的同學(xué)和朋友,有你們,我的大學(xué)才算完整。寢室的好友,你們的天賦猶如上天恩賜,有了你們我的生活更加精彩。感謝那些同做畢業(yè)設(shè)計(jì)的舍友,那段光輝歲月不管成敗,友情最可貴。</p><p><b>  附錄A:程序設(shè)計(jì)</b></p><p>  #include <reg51.h></p>&

96、lt;p>  #include <absacc.h></p><p>  #include <stdio.h></p><p>  #include <math.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsig

97、ned int</p><p>  uchar STH0; </p><p>  uchar STL0; </p><p>  bit FY=0; </p><p>  uchar Song_Index=0,Tone_Index=0; </p><p>  uchar k, key;</p>

98、;<p>  sbit SPK=P3^7;</p><p>  sbit LED1=P1^0;</p><p>  sbit LED2=P1^1;</p><p>  uchar code DSY_CODE[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,</p><p>  0x7f,

99、0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71</p><p><b>  };</b></p><p>  uchar code Song[][50]= </p><p>  { {1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-

100、1},</p><p>  {3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,5,3,3,2,1,1,-1},</p><p>  {3,2,1,3,2,1,1,2,3,2,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1},</p><p>  {10,10,10,9,10,9,10,9,9,6,6,

101、7,8,9,8,7,6,5,6,-1},</p><p>  {10,10,10,9,10,13,12,13,12,12,9,9,10,11,12,11,10,9,8,10,10,-1},</p><p>  {13,14,13,12,12,10,12,10,12,9,13,12,10,9,10,10,-1},</p><p>  {9,13,13,13,8,13,

102、13,13,13,14,15,14,13,14,13,14,10,10,-1},</p><p>  {13,14,13,12,12,10,12,10,12,13,14,13,14,13,14,10,-1},</p><p>  {9,13,13,13,8,13,13,13,13,14,15,14,13,13,14,12,13,-1},</p><p>  {5,5

103、,10,9,8,5,5,5,5,10,9,8,6,6,6,11,10,9,6,-1},</p><p>  {6,12,12,11,9,10,8,5,5,10,9,8,5,5,5,10,9,8,6,-1},</p><p>  {6,6,11,10,9,12,12,12,12,13,12,11,9,8,10,10,10,-1},</p><p>  {10,10,1

104、0,10,12,8,9,10,11,1,11,11,11,10,10,10,10,10,9,9,8,9,12,12,12,11,9,8,-1},</p><p>  {13,13,8,13,13,13,13,14,15,14,13,14,13,14,10,10,13,14,13,12,12,10,12,10,12,13,14,13,14,13,14,10,9,13,13,13,8,13,13,13,13,14,1

105、5,14,13,13,14,12,13,-1},</p><p>  {1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1},</p><p>  {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,-1}</p><p><b> 

106、 };</b></p><p>  uchar code Len[][50]= </p><p>  { {1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,-1},</p><p>  {1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,

107、1,1,1,1,2,2,-1},</p><p>  {1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1},</p><p>  {1,1,1,1,2,1,1,1,1,0,1,1,0,1,1,0,1,1,2,-1},</p><p>  {1,1,1,1,0,1,1,1,1,1,0,

108、1,1,0,1,1,0,1,1,3,1,-1},</p><p>  {0,1,1,0,1,1,2,1,1,0,1,1,0,1,1,2,-1},</p><p>  {0,1,1,2,0,1,1,0,1,1,0,1,1,0,1,1,2,1,-1},</p><p>  {0,1,1,0,1,1,2,1,1,0,1,1,0,1,1,4,-1},</p>

109、<p>  {0,1,1,2,0,1,1,0,1,1,0,1,1,0,1,4,-1},</p><p>  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},</p><p>  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},</p><p>  {1,1,1,1,1,1,1,1,

110、1,1,1,1,1,1,1,1,1,-1},</p><p>  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},</p><p>  {1,1,2,0,1,1,0,1,1,0,1,1,0,1,1,2,1,0,1,1,0,1,1,2,1,1,0,1,1,0,1,1,4,0,1,1,2,0,1,1,0,1,1,0,1,

111、1,0,1,4,-1},</p><p>  {1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,-1},</p><p>  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1}</p><p><b>  };</b></p>

112、<p>  uint code tab[]=</p><p>  { 63628,63835,64021,64103,64260,64400,64524,</p><p>  64580,64684,64777,64820,64898,64968,65030,</p><p>  65058,65110,65157,65178,65217,65252,6

113、5283,65085 </p><p><b>  }; </b></p><p>  void delay1(uint ms) </p><p><b>  {</b></p><p><b>  uchar t;</b></p><p>

114、;  while(ms--) for (t=0;t<120;t++);</p><p><b>  }</b></p><p>  void delay(void)</p><p><b>  {</b></p><p><b>  uchar i;</b></p&

115、gt;<p>  for (i=300;i>0;i--);</p><p><b>  }</b></p><p>  uchar getkey(void)</p><p><b>  {</b></p><p>  uchar scancode,tmpcode;</p&g

116、t;<p>  if ((P0&0xf0)==0xf0)</p><p>  return(0);</p><p>  scancode = 0xfe;</p><p>  while((scancode&0x10)!=0)</p><p><b>  {</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論