版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 畢業(yè)設(shè)計說明書(論文)</p><p> 設(shè)計(論文)題目: 單片機音樂發(fā)生器 </p><p> 專 業(yè): 應(yīng)用電子 </p><p> 班 級: 應(yīng)電G09-3 </p><p> 學(xué) 號: &
2、lt;/p><p> 姓 名: </p><p> 指導(dǎo)教師: </p><p> 2011年4月20日</p><p><b> 目錄</b></p><p><b> 摘 要1&l
3、t;/b></p><p><b> 緒 論2</b></p><p> 1.1研究的目的和意義2</p><p> 1.2國內(nèi)外研究的現(xiàn)狀及發(fā)展趨勢2</p><p> 1.2.1國內(nèi)外研究的現(xiàn)狀2</p><p> 1.3音樂發(fā)生器的擴展3</p>&l
4、t;p> 第1章 設(shè)計方案4</p><p> 1.1 設(shè)計方案論證4</p><p> 1.1.1 方案一4</p><p> 1.1.2 方案二4</p><p> 1.1.3 方案三5</p><p> 1.1.3 方案比較6</p><p> 第2章 硬件
5、設(shè)計7</p><p> 2.1 電路組成及工作原理7</p><p> 2.1.1 電路組成7</p><p> 2.1.2 電路工作原理7</p><p> 2.2 AT89C51的簡介8</p><p> 2.2.1 AT89C51功能概述8</p><p> 2.
6、2.2 AT89C51的管腳圖9</p><p> 2.2.3 AT89C5 單片機的引腳介紹9</p><p> 2.2.4 晶振電路10</p><p> 2.3 揚聲器電路10</p><p> 2.4 顯示電路11</p><p> 2.5 更換歌曲電路11</p><
7、p> 2.6 復(fù)位電路12</p><p> 2.7 程序存儲器外部擴展電路12</p><p> 第3章 軟件系統(tǒng)設(shè)計13</p><p> 3.1 軟件流程設(shè)計13</p><p> 第4章 系統(tǒng)調(diào)試14</p><p> 4.1 常用調(diào)試工具14</p><p&g
8、t; 4.1.1 Keil C 軟件14</p><p> 4.1.2 PROTEUS軟件15</p><p> 4.2 系統(tǒng)調(diào)試及性能分析15</p><p><b> 心得體會16</b></p><p><b> 參考文獻(xiàn)17</b></p><p>
9、;<b> 附 錄18</b></p><p> 附錄1 音樂發(fā)生器電路原理圖18</p><p> 附錄2 元件明細(xì)表19</p><p> 附錄3 源程序代碼20</p><p><b> 摘 要</b></p><p> 近年來隨著科技的飛速發(fā)展,單
10、片機的應(yīng)用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月異更新。在實時檢測和自動控制的單片機應(yīng)用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,加以完善。</p><p> 當(dāng)今,利用單片機控制音樂播放多不勝舉,音樂芯片也相當(dāng)之多,而利用單片機存儲音樂,控制播放最為廣泛。它有功能多﹑價格優(yōu)﹑外圍電路簡單的特點,很受音樂愛好者及音樂芯
11、片制造商的青昧。本文中,用單片機芯片及少數(shù)外圍電路控制音樂播放。</p><p> 本設(shè)計是以單片機AT89C51為核心數(shù)據(jù)處理器件,由數(shù)碼管顯示調(diào)整歌曲的曲號和播放中,顯示歌曲的曲號,四個數(shù)據(jù)輸入按鍵組成七功能分別是對歌曲曲號進(jìn)行加一設(shè)置、對歌曲曲號進(jìn)行減一設(shè)置、對歌曲曲號進(jìn)行復(fù)位、對在播放中的歌曲進(jìn)行暫停;元件以低耗、高能、耐用、精確、易于操作等為優(yōu)先考慮因素。采用獨立式輸入按鈕,用作對歌曲播放的設(shè)置,通過
12、按鍵將單片機I/0 口的電平拉低,單片機檢測到I/O口電平為0時,在下一曲按鈕中,自動將歌曲的編號加一;在播放/暫停按鈕中,自動將歌曲暫停、播放;在上一曲按鈕中自動將歌曲的編號減一。當(dāng)播放歌曲時,會在數(shù)碼管上顯示該歌曲的序號。在顯示時使用的是由一個七段數(shù)碼管顯示,在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法?并通過查表法,將其在數(shù)碼管上顯示出來,P1口低7位為字選段輸入端。通過查表將字型碼送給7段數(shù)碼管顯示數(shù)字。軟件去抖動功能,如果“開始
13、鍵”按下就向下執(zhí)行,否者跳到開始。AT89C51單片機的內(nèi)存較小,就用了一個74LS373鎖存器和27512外部擴展芯片對該單片機進(jìn)行了內(nèi)存的擴充,增大了它的存儲空間,讓他可以存儲足夠多的歌曲。</p><p> 該音樂發(fā)生器的論文詳細(xì)介紹了其硬件結(jié)構(gòu)和設(shè)計方法,整個設(shè)計簡單實用,功能完整。</p><p><b> 結(jié)論</b></p><p
14、> 1.1研究的目的和意義</p><p> 音樂電聲的一個重要內(nèi)容就是電子音樂。電子琴的出現(xiàn),開辟了音樂的一個新天地。但是自從電子合成器問世以來,電子音樂就又進(jìn)入了一個更高的階段。 目前,由于電子音樂的普及,電子合成器(合成器實際上是一臺聲音的頻率合成儀,可以制作各種聲音,改變各種音色)可以解決相當(dāng)一部分的歌唱及舞廳的伴奏問題。可以事先制作伴奏音樂或背景音樂,而不需要樂隊,或者部分代替樂隊。由于音樂合
15、成器制作和修改方便,成本低,音樂豐滿,所以市場需求量很大,因此,世界許多國家的廠商都不斷地在發(fā)展并推出新的型號,每年都要更新?lián)Q代。當(dāng)前的發(fā)展趨勢是不斷的采用先進(jìn)技術(shù),例如有的合成器有“跟隨”功能,即經(jīng)預(yù)置,每一個音后可以跟隨一個二度或三度音,“重疊”功能,輕奏或重奏時可以發(fā)不同音調(diào)或音色;另外,合成器還向輕便、使用操作方便等方向發(fā)展。電腦音樂也許不會成為今后音樂的主流,但它在整個人類音樂史上的地位已經(jīng)不容置疑地確立了,相信它會越來越深入
16、地浸透到音樂創(chuàng)作和欣賞的領(lǐng)域中,并且將在一定程度上影響人們對音樂的理解和詮釋。用單片機制作的音樂發(fā)生器也會越來越多,這將必然成為一種趨勢。</p><p> 1.2國內(nèi)外研究的現(xiàn)狀及發(fā)展趨勢 </p><p> 1.2.1國內(nèi)外研究的現(xiàn)狀</p><p> 隨著以法、德、意為代表的歐洲和以美國為代表的電子音樂、計算機音樂早期的大力發(fā)展,國際上許多國家紛紛開始引
17、入電子音樂研究與創(chuàng)作。因此,電子音樂創(chuàng)作作為音樂科技領(lǐng)域發(fā)展的重要標(biāo)志,在風(fēng)格上也體現(xiàn)出比以往任何時代都鮮明的個性化特征。六十年代,美國物理學(xué)家Robert Moog 研制出了小型實用的電子合成器。從此,首先在歐美地區(qū),合成器作為新型的樂器被音樂家尤其是流行音樂家所采用并飛快的流行開來。由于美國雄厚的經(jīng)濟和科技基礎(chǔ),在早期計算機音樂獲得巨大成功后,越來越多的音樂家和科學(xué)家步入到計算機音樂的研究與開發(fā)的領(lǐng)域中來,他們一起工作、共同開展研究
18、,許多新產(chǎn)品和新設(shè)計不斷涌現(xiàn)。</p><p> 1.3音樂發(fā)生器的擴展</p><p> 熟練的運用89C51單片機定時器產(chǎn)生固定頻率的方波信號,推動喇叭發(fā)出旋律,按下單鍵可以演奏預(yù)先設(shè)置的歌曲旋律,最重要的是自己還可以通過程序設(shè)計輸入自己喜歡的歌曲來演奏中,本設(shè)計采用簡易音階編碼直覺式輸入法方便設(shè)計音樂旋律,可以擴充其功能如下:</p><p> 設(shè)計三個
19、按鍵操作來更改歌曲的序號;</p><p> 可以按照歌曲的序號來播放歌曲;</p><p> 可以顯示播放中歌曲的序號;</p><p><b> 可以存儲多首歌曲;</b></p><p><b> 第1章 設(shè)計方案</b></p><p> 1.1 設(shè)計方案論
20、證</p><p><b> 1.1.1 方案一</b></p><p> 利用AT89C51和LM386(音頻功放) 組成的音樂播放器</p><p><b> ?。?)功能特色。</b></p><p> LM386(音頻功放)來實現(xiàn)音樂的播放。</p><p>&
21、lt;b> (2)硬件設(shè)計。</b></p><p> 電路以AT89C51為主控制器,LM386(音頻功放)來實現(xiàn)的。晶振采用12MHz,音樂信號由P3.0口輸出,經(jīng)喇叭發(fā)聲而播放歌曲,框架圖如圖1-1所示。</p><p><b> (3)軟件設(shè)計。</b></p><p> 程序中根據(jù)每個音符對應(yīng)頻率由定時器T0
22、產(chǎn)生。為了程序調(diào)用方便,每個音符都對應(yīng)一個編碼,占用一個字節(jié)。</p><p><b> 1.1.2 方案二</b></p><p> 利用AT89C51、74LS373鎖存器和27512外部擴展組成的音樂播放器</p><p><b> ?。?)功能特色</b></p><p> 對內(nèi)存進(jìn)行
23、了擴展,可以播放三首以上的歌曲。</p><p><b> (2)硬件設(shè)計</b></p><p> 電路以AT89C51為主控制器,74LS373和27512進(jìn)行外部程序存儲器的擴展,播放/暫停鍵為播放/暫停歌曲,下一曲鍵和上一曲鍵分別為調(diào)整歌曲的下一曲和上一曲選擇鍵的按鈕。晶振采用12MHz,音樂信號由P3.0口輸出,經(jīng)喇叭發(fā)聲而播放歌曲如圖1-2所示框架圖。
24、</p><p><b> (3)軟件設(shè)計</b></p><p> 程序中根據(jù)音選取的是C調(diào)三個8度內(nèi)的音符,共16個音。每個音符對應(yīng)頻率由定時器T0產(chǎn)生。為了程序調(diào)用方便,每個音符都對應(yīng)一個編碼,占用一個字節(jié)。在程序中以查表的方式加載計數(shù)初值。當(dāng)值為00H時表示空拍,與節(jié)拍碼配合完成節(jié)拍發(fā)音。節(jié)拍碼也占一個字節(jié),其總時間長度等于基本時間乘以節(jié)拍碼的值。節(jié)拍碼值
25、為01H時,表示當(dāng)前樂曲結(jié)束,為00H時,表示全部樂曲結(jié)束。為了編碼簡單,一般節(jié)拍碼高半字節(jié)表示整拍,低半字節(jié)表示分?jǐn)?shù),只要基本延時設(shè)定恰當(dāng)即可并且在按開始按鈕后,可以播放歌曲。</p><p><b> 1.1.3 方案三</b></p><p><b> (1)功能特色</b></p><p> 本播放器是由4X
26、4組成的16個按鈕矩陣鍵盤,設(shè)計成16個音組成的聲音發(fā)生器并且能夠播放音樂。</p><p><b> ?。?)硬件設(shè)計</b></p><p> 電路以AT89C51為主控制器,下一曲、上一曲分別為上一曲、下一曲選擇鍵的按鈕并且采用利用4X4組成的16個按鈕矩陣鍵盤來每按一個鍵,發(fā)出一個音。晶振采用12MHz,音樂信號由P3.0口輸出,經(jīng)喇叭發(fā)聲而播放歌曲,如圖1
27、-3所示。</p><p><b> ?。?)軟件設(shè)計</b></p><p> 程序中音選取的是C調(diào)三個8度內(nèi)的音符,共16個音。每個音符對應(yīng)頻率由定時器T0產(chǎn)生。為了程序調(diào)用方便,每個音符都對應(yīng)一個編碼,占用一個字節(jié)。在程序中以查表的方式加載計數(shù)初值,為了編碼簡單,一般節(jié)拍高半字節(jié)表示整拍,低半字節(jié)表示分?jǐn)?shù),只要基本延時設(shè)定恰當(dāng)即可,為了及時響應(yīng)鍵盤操作,鍵掃描
28、指令安排在基本延時時間子程序中,按鍵每按下一次,樂曲數(shù)目計數(shù)器R5加"1"或減"1",根據(jù)R5的內(nèi)容轉(zhuǎn)向不同的樂曲并且在按下開始按鈕后,就開始播放歌曲。</p><p> 1.1.3 方案比較</p><p> 從以上三種方案,方案三只能利用按鍵發(fā)音,可以發(fā)出16個音并且只能播放三首歌曲,而方案二進(jìn)行了內(nèi)存的擴充而可以播放三首以上的歌曲,在播放的
29、過程中,方案二可以隨時的暫停播放歌曲的進(jìn)度,而方案一不具有該功能。方案二從實現(xiàn)的功能上優(yōu)于方案一、三,方案二在使用上及其功能的實現(xiàn)上都較方案三簡潔,并且由于單片機具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外AT89C51單片機采用12MHz的晶振,提高了信號的測量精度,并且使該系統(tǒng)可以通過軟件改進(jìn)來擴張功能。</p><p> 通過方案對比,最終選擇方案二,音樂發(fā)生器電路原理圖見附錄1所示。<
30、/p><p><b> 第2章 硬件設(shè)計</b></p><p> 2.1 電路組成及工作原理</p><p> 2.1.1 電路組成</p><p> 音樂發(fā)生器的電路設(shè)計方框圖如圖2-1所示,電路原理圖見附錄1所示,主要由單片機控制系統(tǒng)、調(diào)整歌曲序號、顯示歌曲序號、內(nèi)存外部擴充電路、復(fù)位電路等組成。</p&
31、gt;<p> 單片機AT89C51是本系統(tǒng)的核心,它主要負(fù)責(zé)控制各個部分協(xié)調(diào)工作。在其外圍接上:復(fù)位電路、數(shù)碼管、按鈕及揚聲器。元件為:晶振X1、電容、電阻、與非門、非門、數(shù)碼管、揚聲器、四個按鍵、74LS373鎖存器、27512外部程序存儲器擴展。其中,四個按鍵分別是上一曲、下一曲、暫停/播放、復(fù)位。P1.0-P1.6是位選口,P3.2、P3.6、P3.7共同為上、下歌曲的調(diào)整口,實現(xiàn)對歌曲的調(diào)整操作,并且加減調(diào)整歌
32、曲的曲號,P3.3口為歌曲的暫停/播放按鈕,可對播放中的歌曲進(jìn)行暫停/播放,P3.0為蜂鳴器的控制口。</p><p> 2.1.2 電路工作原理 </p><p> 本音樂發(fā)生器是用單片機來設(shè)計制作完成,其功能的實現(xiàn)主要通過軟件編程來完成, AT89C51單片機片內(nèi)帶有4KB和外部程序存儲器擴展的256K的內(nèi)存,并且允許在系統(tǒng)內(nèi)改寫或用編程器編程。該音樂發(fā)生器的效率較高,其誤差主要由
33、晶振自身的誤差所造成。存儲歌曲是采用的外部擴展,更改歌曲號是通過下一曲和上一曲來實現(xiàn)的,按鍵將單片機I/0 口的電平拉低,單片機檢測到I/O口電平為0時,自動改變顯示的數(shù),實現(xiàn)更改的功能。顯示是使用一個的七段共陰極數(shù)碼管顯示,設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法,其中通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字。當(dāng)播放歌曲時,會在數(shù)碼管上顯示該歌曲的編號提示現(xiàn)在正在播放的歌曲的序號。軟件去抖動,如果“開始鍵”按下就向下執(zhí)行,否者跳到開始。
34、采用延時程序進(jìn)行對歌曲的播放。</p><p> 2.2 AT89C51的簡介</p><p> 2.2.1 AT89C51功能概述</p><p> 自從1971年微型計算機問世以來,隨著大規(guī)模集成電路技術(shù)的進(jìn)一步發(fā)展,導(dǎo)致微型計算機正向兩個主要方向發(fā)展:一是高速度、高性能、大容量的高檔微型機及其系列化向大、中型計算機的挑戰(zhàn);另一個是穩(wěn)定可靠、小而廉、能適應(yīng)
35、各種控制領(lǐng)域需要的單片機。</p><p> MCS—51系列是Intel公司在1980年推出的高檔8位單片機,具有性能價格比高、品種多、兼容性強、開發(fā)用的仿真機較完善等優(yōu)點,所以在國際上和國內(nèi)的占有率相當(dāng)高。它擁有8位微處理器和控制器,內(nèi)含一個一位布爾運算處理器,可直接對數(shù)據(jù)的位進(jìn)行操作和運算,特別適用于邏輯控制。內(nèi)部含有4KB的程序ROM并且在外部擴展了256K的存儲空間,2個16位的計數(shù)/定時器。本次采用
36、的是AT89C51單片機,其電路如2-2所示,它的中斷功能比較強,有5個中斷源,即外部中斷2個,定時器中斷2個,串行中斷1個,有2個中斷優(yōu)先級。中斷控制電路主要包括用于中斷控制的四個寄存器:定時器控制寄存器TCON,串行口控制寄存器SCON,中斷允許控制寄存器IE,中斷優(yōu)先級控制寄存器IP等。內(nèi)部時鐘振蕩器,全雙工方式的串行接口(UART),兩極中斷優(yōu)先權(quán)的6個中斷源/5個中斷矢量的中斷邏輯。哈佛結(jié)構(gòu)的存儲器組織,支持高達(dá)64K為單周期
37、指令,支持六種尋址方式。最高時鐘振蕩頻率可達(dá)12MHZ,大部分指令執(zhí)行時間為1µs,乘、除指令為4µs。</p><p> 2.2.2 AT89C51的管腳圖</p><p> MCS-51系列單片機采用40引腳雙列直插式封裝(DIP),其引腳排列和邏輯符號如圖2-3所示,4個并行口共有32根引腳,可分別作地址線、數(shù)據(jù)線和I/O線;2根電源線;2根時鐘振蕩電路引腳和
38、4根控制線。</p><p> 2.2.3 AT89C5 單片機的引腳介紹</p><p> AT89C51單片機是高性能單片機,因為受引腳數(shù)目的限制,所以有許多引腳具有第二功能,各引腳功能說明如下:</p><p> ?。?)輸入/輸出口線</p><p> A. 口8位雙向口線</p><p> B.
39、 口8位雙向口線</p><p> C. 口8位雙向口線</p><p> D. 口8位雙向口線</p><p> ?。?)ALE地址鎖存控制信號</p><p> 在系統(tǒng)擴展時,ALE用于控制把口輸出的底8位地址送入鎖存器鎖存起來,以實現(xiàn)低位地址和數(shù)據(jù)的分時傳送。此外由于ALE是以六分之一晶振頻率的固定頻率輸出的正脈沖,因此
40、可作為外部時鐘或外部定時脈沖使用。</p><p> (3)外部程序存儲器讀選通信號</p><p> 在讀外部ROM時有效(低電平),以實現(xiàn)外部ROM單元的讀操作。</p><p> ?。?)訪問程序存儲器控制信號</p><p> 當(dāng)信號為低電平時,對ROM的讀操作限定在外部程序存儲器;而當(dāng)信號為高電平時,對ROM的讀操作是從內(nèi)部程
41、序存儲器開始,并可延續(xù)至外部程序存儲器。</p><p> ?。?)RST 復(fù)位信號</p><p> 當(dāng)輸入的復(fù)位信號延續(xù)2個機器周期以上高電平時即為有效,用以完成單片機的復(fù)位操作。</p><p> ?。?)XTAL1和XTAL2外接晶體引線端</p><p> 當(dāng)使用芯片內(nèi)部時鐘時,這兩個引線端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部
42、時鐘時,用于接外部時鐘脈沖信號。</p><p> ?。?)電源、地線GND</p><p> VCC、GND。VCC一般接+5V電源,GND接地。</p><p><b> 2.4 晶振電路</b></p><p> MCS-51片內(nèi)有一個高增益的反相放大器,其輸入端為引腳XTAL1和輸出端為引腳為XTAL2,用
43、于外接石英晶體振蕩器和微調(diào)電容,構(gòu)成穩(wěn)定的的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部的時鐘電路,如圖2-3所示。電容C1和C2對頻率有微調(diào)作用,電容一般取20pF左右。晶體振蕩頻率范圍是1.2MHz~12MHz,一般情況下,選用振蕩頻率為12MHz的石英晶體。振蕩脈沖信號經(jīng)過內(nèi)部時鐘發(fā)生器進(jìn)行二分頻之后,才成為單片機的時鐘信號。</p><p><b> 2.3 揚聲器電路</b></p
44、><p> 本設(shè)計是采用蜂鳴器用來發(fā)出聲音,當(dāng)你按下播放按鈕時,單片機就開始運行程序,蜂鳴器開始讀程序而播放你所要播放的歌曲,電路如圖2-4所示。</p><p><b> 2.4 顯示電路</b></p><p> 本設(shè)計顯示是采用一個七段共陰極LED顯示,當(dāng)片選信號為0時,數(shù)碼就會點亮,主要是用來顯示播放中歌曲的序號、選擇歌曲來播放等信息
45、。其分別利用單片機的P1.0口至P1.7口與數(shù)碼管相連接,完成字段碼顯示歌曲的號數(shù)。數(shù)碼管的另一引腳接低電平(接地)。電路如圖2-5所示。</p><p> 2.5 更換歌曲電路</p><p> 采用3個按鈕作為更換歌曲按鍵,上一曲、下一曲和播放/暫停按鍵分別是歌曲的序號的加、減和對歌曲進(jìn)行暫停/播放。利用三個上拉電阻和與非門、非門來實現(xiàn)歌曲的選擇和暫停,單片機的P3.2口至P3.7
46、口始終是高電平,當(dāng)沒有按鍵按下時,就會一直的播放歌曲。電路如圖2-6所示。</p><p><b> 2.6 復(fù)位電路</b></p><p> AT89C51的復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。復(fù)位引腳RST通過一個施密特觸發(fā)器用來抑制噪聲,施密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號。</p><p>
47、 本設(shè)計是采用上電自動復(fù)位,上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位。時鐘頻率用12MHZ時C取20PF。</p><p> 2.7 程序存儲器外部擴展電路</p><p> 本設(shè)計是采用了一個74LS373鎖存器和一個27512程序存儲器外部擴展組成,其主要的功能就是為了在外部擴展單片機內(nèi)存,使它有足夠的空間存放系統(tǒng)中
48、的程序,而達(dá)到使它實現(xiàn)所要得到的功能和應(yīng)用的領(lǐng)域,其圖如圖2-8所示</p><p> 第3章 軟件系統(tǒng)設(shè)計</p><p> 3.1 軟件流程設(shè)計</p><p> 主要程序流程有:主程序、顯示子程序、發(fā)聲子程序、更改歌曲曲號子程序。軟件實現(xiàn)的基本原理是,當(dāng)單片機P3.0口為0時,軟件去抖動功能,如果“開始鍵”按下就向下執(zhí)行,否者跳到開始。主程序流程圖校驗鍵
49、,歌曲曲號顯示,發(fā)聲程序等功能子程序組成,系統(tǒng)完成初始化后循環(huán)檢查各個功能當(dāng)用戶使用某個功能時,按下相應(yīng)的按鈕(或開關(guān))單片機進(jìn)入相應(yīng)的功能處理。主程序流程圖如圖3-1所示。而外來脈沖是通過按鍵產(chǎn)生的,因此實際上單步執(zhí)行就是按一次鍵執(zhí)行一條指令。</p><p><b> 第4章 系統(tǒng)調(diào)試</b></p><p> 調(diào)試是一個必不可少的環(huán)節(jié),它將會驗證你的成果,是
50、否實現(xiàn)了所要完成的功能。系統(tǒng)調(diào)試仿真時先要使用Keil C編譯器,把所寫的程序進(jìn)行編譯,同時在仿真器里設(shè)置生成HEX文件,編譯無錯誤時還要進(jìn)行PROTEUS仿真,查看功能是否能夠?qū)崿F(xiàn)。下面就將仿真將會用到的軟件進(jìn)行簡單的介紹,并對仿真過程予以簡介。</p><p> 4.1 常用調(diào)試工具</p><p> 4.1.1 Keil C 軟件</p><p> Ke
51、il C軟件是集成調(diào)試環(huán)境,集成了編緝器、編譯器、調(diào)試器,支持軟件模擬,支持項目管理功能強大的觀察窗口,支持所有的數(shù)據(jù)類型。樹狀結(jié)構(gòu)顯示,一目了然,支持ASM(匯編)、C語言,多語言多模塊源程序混合調(diào)試,在線直接修改、編譯、調(diào)試源程序,錯誤指令定位。功能很強大。用于對程序的調(diào)試和編輯。</p><p> Keil C軟件界面如圖4-1所示。</p><p> 4.1.2 PROTEUS
52、軟件</p><p> 系統(tǒng)仿真還用到了PROTEUS軟件,可通過仿真可以完全顯示出所設(shè)計系統(tǒng)的功能,對于程序的調(diào)試等有很大的幫助。</p><p> 首先要新建一個文檔是DNS型的找出需要的器件,可以使用搜索功能。接著把各個器件放到合適的位置都要放到藍(lán)色框內(nèi)。然后根據(jù)自己的設(shè)計要求連線。把所有的元件都連接好,做出完整的電路圖。</p><p> 4.2 系統(tǒng)
53、調(diào)試及性能分析</p><p> 系統(tǒng)的調(diào)試開始是把偉福編譯生成的無錯誤后綴名為.HEX的文件加載到AT89C51單片機中,方法是雙擊單片機彈出一個對話框,在program file后選擇要添加文件,文件要求必須是HEX文件。然后可以點擊運行觀察現(xiàn)象,當(dāng)出現(xiàn)錯誤時,大多都是軟件出了問題,經(jīng)過不斷的改進(jìn)調(diào)試。對按鍵檢測、加減歌曲序號與按鍵之間產(chǎn)生的不一致、歌曲調(diào)用子程序等軟件的修改后,系統(tǒng)基本實現(xiàn)了所要設(shè)計的功能
54、。</p><p> 在進(jìn)行系統(tǒng)的測試過程中。當(dāng)調(diào)節(jié)歌曲的序號時,程序是給了一個初始值“1”,假如調(diào)節(jié)歌曲的序號后,歌曲播放的就是顯示屏上顯示的歌曲序號的歌曲。如按下復(fù)位鍵后時間會回到初始時間,即從頭開始。數(shù)碼管也跟隨顯示歌曲的序號為“1”,同時蜂鳴器發(fā)出了聲響,為第一首歌曲。通過調(diào)試系統(tǒng)達(dá)到設(shè)計的任務(wù)要求。</p><p><b> 心得體會</b></p
55、><p> 本設(shè)計報告主要介紹了用單片機實現(xiàn)的音樂發(fā)生器的設(shè)計方法。系統(tǒng)介紹了該電路的硬件構(gòu)成和軟件工作過程,系統(tǒng)以AT89C51為核心,主要采用中斷控制系統(tǒng),結(jié)合所學(xué)的單片機的知識,實現(xiàn)系統(tǒng)的功能要求。設(shè)計中很好的使軟、硬件相結(jié)合,基本上達(dá)到了設(shè)計的要求。通過這次畢業(yè)設(shè)計,使我對單片機及其附屬電路有了一定的了解,對課本上的知識有了近一步的掌握,也深刻明白了自己的不足。</p><p>
56、完成本次課程設(shè)計的過程,是一個從無到有的過程,經(jīng)歷了興奮、自信、失落、奮發(fā)、所悟、完成幾個過程。課程設(shè)計時,仔細(xì)閱讀設(shè)計的題目和要求,以為沒什么困難的,所用的知識書上都有。可是當(dāng)我動手開始做的時候,才發(fā)現(xiàn)其中的算法,設(shè)計是那么繁瑣。經(jīng)過一天的努力,毫無結(jié)果。失落的心情油然而生。于是,再到圖書館和網(wǎng)上查找資料,在經(jīng)過借鑒很多類似的資料,文獻(xiàn)后,總算是有點眉目了。埋頭苦干的過程是痛苦的,尤其是在思考算法和程序框架時,迷茫,煩躁,特別是當(dāng)苦思
57、出來一個結(jié)果,又被自己推翻,心痛的無法言繪,在這不斷循環(huán)中,終于最后完善了程序。其中的煎熬是很痛苦的,深刻明白攻克自己“未知領(lǐng)域”的困難。但當(dāng)課程設(shè)計完成時,那感覺是甜蜜的,沒有耕耘,哪來得收獲的喜悅,不懂付出怎么能知道回報的快樂,一分耕耘一分收獲,有付出才會有回報,就在這樣的痛與快樂的交換中,我學(xué)到了知識, 學(xué)到了做人的道理。</p><p> 通過這短短幾個月的制作,我感覺到自己從課本上學(xué)到的理論知識和實踐
58、仍有很大的差距。很多元器件根本不知道有什么功效,在仿真儀器中是什么代碼。有的知識,自己感覺已經(jīng)掌握得差不多了,但是實際操作起來就有問題出現(xiàn)了。我遇到了不少問題,花費了很多的時間。這讓我重新反思我們的學(xué)習(xí),深刻領(lǐng)悟到我們這個專業(yè)動手,實踐的重要性。理論不經(jīng)過實踐考驗,是沒法實施的,就像我們編的程序,很多方面考慮的都不夠,幾乎沒有涉及到實際應(yīng)用時的防范方法措施。</p><p> 這次的課程設(shè)計,讓我學(xué)到了很多書本
59、上學(xué)不到的東西,學(xué)到了實際應(yīng)用時,是取用成本的最小化,做設(shè)計不僅要考慮大的方面,小的方面也必須做到完美。最大的收獲是:對按鍵,顯示器,單片機匯編語言的應(yīng)用有了深刻的了解。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 樊明龍.任麗靜編.單片機原理與應(yīng)用[M].化學(xué)工業(yè)出版社,2005.</p><p> [2] 徐
60、愛卿編.單片微型計算機應(yīng)用和開發(fā)系統(tǒng)[M].北京航空航天大學(xué)出版社,1998.</p><p> [3] 戴梅芳編.微型計算機技術(shù)及應(yīng)用[M].清華大學(xué)出版社,1996.</p><p> [4] 李廣弟,朱月秀,王秀山編.單片機基礎(chǔ)[M].北京航空航天大學(xué)出版社,2001.</p><p> [5] 吳金戌編.8051單片機實踐與應(yīng)用[M].清華大學(xué)出版社,
61、2003.</p><p><b> 附 錄</b></p><p> 附錄1 音樂發(fā)生器電路原理圖</p><p><b> 附錄2 元件明細(xì)表</b></p><p><b> 附錄3 源程序代碼</b></p><p> /*******
62、************************************************************</p><p> SOUND PLAY FOR 51MCU</p><p> /****************************說**********明*************************</p><p> 曲譜存貯格
63、式 unsigned char code MusicName{音高,音長,音高,音長...., 0,0};末尾:0,0 表示結(jié)束(Important)</p><p> *******************************************************************/</p><p> #ifndef __SOUNDPLAY_H_REVISION
64、_FIRST__</p><p> #define __SOUNDPLAY_H_REVISION_FIRST__</p><p> //******************************************************************</p><p> #define SYSTEM_OSC 12000000//定義晶振頻
65、率12000000HZ</p><p> #define SOUND_SPACE 4/5 //定義普通音符演奏的長度分率,//每4分音符間隔</p><p> sbit BeepIO=P3^0; //定義輸出管腳 </p><p> sbitkey_int0=P3^3;</p><p> sbit
66、key_add=P3^6;</p><p> sbitkey_dec=P3^7;</p><p> sbit key_led=P3^1;</p><p> unsigned char code table[]={0x06,0x5b,0x4f};</p><p> unsigned int code FreTab[12] =
67、 { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始頻率表</p><p> unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在頻率表中的位置</p><p> unsigned char code LengthTab[7]= { 1,2,4,8,
68、16,32,64 };unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定時器初值暫存 </p><p> unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音長定時器初值暫存</p><p> unsigned char cnt=0;</p><p>
69、; unsigned char temp=0;</p><p> unsigned char flag=1;</p><p> void Delay1ms(unsigned int count); //初始化函數(shù)</p><p> void InitialSound(void)</p><p> {BeepIO
70、 = 0; //喇叭關(guān)閉</p><p> Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256;// 計算TL1應(yīng)裝入的初值 (10ms的初裝值)</p><p> Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256;// 計算TH1應(yīng)裝入的初值 <
71、/p><p> TH1 = Sound_Temp_TH1;</p><p> TL1 = Sound_Temp_TL1;</p><p> TMOD |= 0x11;//設(shè)置定時器0、1的工作方式為工作方式1</p><p> ET0 = 1;//開啟定時啤/計數(shù)中斷0</p><p> ET
72、1 = 0;//開啟定時啤/計數(shù)中斷1</p><p> TR0 = 0;//啟動定時計數(shù)器0</p><p> TR1 = 0;//啟動定時計數(shù)器1</p><p> EA = 1;</p><p><b> EX0=1;</b></p><p&g
73、t;<b> EX1=1;}</b></p><p> //定時器0的中斷程序</p><p> void BeepTimer0(void) interrupt 1//音符發(fā)生中斷</p><p> {BeepIO = !BeepIO;</p><p> TH0 = Sound_Temp_TH0;&l
74、t;/p><p> TL0 = Sound_Temp_TL0; }</p><p><b> //播放程序</b></p><p> int Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)</p>
75、;<p> {unsigned int NewFreTab[12]; //新的頻率表</p><p> unsigned char i,j;</p><p> unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;</p><p> un
76、signed char Tone,Length,SL,SH,SM,SLen,XG,F(xiàn)D;</p><p> for(i=0;i<12;i++) // 根據(jù)調(diào)號及升降八度來生成新的頻率表 </p><p> {j = i + Signature;if(j > 11)</p><p> {j = j-12;NewFreTab[i] = Fr
77、eTab[j]*2;}</p><p><b> else</b></p><p> NewFreTab[i] = FreTab[j];</p><p> if(Octachord == 1)</p><p> NewFreTab[i]>>=2;</p><p> else
78、 if(Octachord == 3)</p><p> NewFreTab[i]<<=2;}</p><p> SoundLength = 0;</p><p> while(Sound[SoundLength] != 0x00) //計算歌曲長度</p><p> {SoundLength+=2;}<
79、;/p><p> Point = 0;</p><p> Tone = Sound[Point];</p><p> Length = Sound[Point+1]; // 讀出第一個音符和它時時值</p><p> LDiv0 = 12000/Speed;// 算出1分音符的長度(幾個10ms) </p&g
80、t;<p> LDiv4 = LDiv0/4; // 算出4分音符的長度 </p><p> LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最長間隔標(biāo)準(zhǔn) </p><p> TR0 = 0;</p><p> TR1 = 1;</p><p> while(Point
81、 < SoundLength)</p><p> { if(cnt!=temp) //判斷有無中斷</p><p> { return 0;//如果有則跳出此函數(shù)}</p><p> if(flag==0)//暫停程序.......</p><p> {flag=1;while(flag
82、==1)</p><p> { Delay1ms(5); BeepIO=0;}</p><p> flag=1;//暫停程序........} </p><p> SL=Tone%10; //計算出音符 </p><p> SM=Tone/10%10; //計算出高低音 </
83、p><p> SH=Tone/100; //計算出是否升半 </p><p> CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出對應(yīng)音符的頻率 </p><p><b> if(SL!=0)</b></p><p> {if (SM==1) Current
84、Fre >>= 2; //低音 </p><p> if (SM==3) CurrentFre <<= 2; //高音</p><p> Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//計算計數(shù)器初值</p><p> Sound_Temp_TH0
85、 = Temp_T/256; </p><p> Sound_Temp_TL0 = Temp_T%256; </p><p> TH0 = Sound_Temp_TH0; </p><p> TL0 = Sound_Temp_TL0 + 12; //加12是對中斷延時的補償 }</p><p> if(cnt!=temp)
86、 //判斷有無中斷</p><p> { return 0; }</p><p> {flag=1;while(flag==1){}</p><p> flag=1;}//暫停程序........</p><p> SLen=LengthTab[Length%10]; //算出是幾分音符</p&g
87、t;<p> XG=Length/10%10; //算出音符類型(0普通1連音2頓音) </p><p> FD=Length/100;</p><p> LDiv=LDiv0/SLen; //算出連音音符演奏的長度(多少個10ms)</p><p> if (FD==1) </p><p> LDiv
88、=LDiv+LDiv/2;</p><p> if(XG!=1)</p><p> if(XG==0) //算出普通音符的演奏長度 </p><p> if (SLen<=4);LDiv1=LDiv-LDiv4;</p><p><b> else</b></p><p>
89、 LDiv1=LDiv*SOUND_SPACE;</p><p><b> else</b></p><p> LDiv1=LDiv/2; //算出頓音的演奏長度 </p><p><b> else</b></p><p> LDiv1=LDiv;</p><
90、;p> if(SL==0) LDiv1=0;</p><p> LDiv2=LDiv-LDiv1; //算出不發(fā)音的長度 </p><p> if (SL!=0)</p><p><b> {TR0=1;</b></p><p> for(i=LDiv1;i>0;i--) //發(fā)規(guī)定
91、長度的音 </p><p> {while(TF1==0);</p><p> TH1 = Sound_Temp_TH1;</p><p> TL1 = Sound_Temp_TL1;</p><p><b> TF1=0;}}</b></p><p> if(cnt!=temp)
92、 //判斷有無中斷 </p><p> { return 0;}</p><p> {flag=1;while(flag==1)</p><p><b> {}</b></p><p> flag=1; } </p><p> if(LDiv2
93、!=0)</p><p> {TR0=0; BeepIO=0;</p><p> for(i=LDiv2;i>0;i--) //音符間的間隔</p><p> {while(TF1==0);</p><p> TH1 = Sound_Temp_TH1;</p><p> TL1 =
94、Sound_Temp_TL1;</p><p> TF1=0;}}</p><p> Point+=2; </p><p> Tone=Sound[Point];</p><p> Length=Sound[Point+1]; }</p><p> BeepIO = 0;cnt++; }</
95、p><p><b> #endif</b></p><p> #include <reg51.h></p><p> #include "SoundPlay.h"</p><p> void Delay1ms(unsigned int count)</p><p&g
96、t; {unsigned int i,j;</p><p> for(i=0;i<count;i++)</p><p> for(j=0;j<120;j++); }</p><p><b> //揮著翅膀的女孩</b></p><p> unsigned char code Music_fi
97、le[3][500]=</p><p> { { 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,</p><p> 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,</p><p> 0x19,0x02, 0x16,0x03, 0x17,
98、0x03, 0x18,0x02, 0x18,0x03,</p><p> 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,</p><p> 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,</p><p> 0x17,0x02, 0x17,
99、0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,</p><p> 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,</p><p> 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,</p><p> 0x18,
100、0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,</p><p> 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,</p><p> 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,</p><p
101、> 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,</p><p> 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,</p><p> 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,</p
102、><p> 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,</p><p> 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,</p><p> 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,
103、0x03,</p><p> 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,</p><p> 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,</p><p> 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,
104、0x03, 0x1B,0x03,</p><p> 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,</p><p> 0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,</p><p> 0x17,0x04, 0x18,0x0E, 0x18,
105、0x03, 0x17,0x04, 0x18,0x0E,</p><p> 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,</p><p> 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,</p><p> 0x20,0x03, 0x21,
106、0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,</p><p> 0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,</p><p> 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,</p><p> 0x15,
107、0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,</p><p> 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,</p><p> 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,</p><p
108、> 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,</p><p> 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,</p><p> 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,</p
109、><p> 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,</p><p> 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00},</p><p><b> //同一首歌</b></p><p>
110、{ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,</p><p> 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,</p><p> 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,</p>
111、<p> 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,</p><p> 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,</p><p> 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03
112、,</p><p> 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,</p><p> 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,</p><p> 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D
113、, 0x17,0x03,</p><p> 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,</p><p> 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,</p><p> 0x19,0x03, 0x1A,0x01, 0x1B,0x02
114、, 0x1B,0x03, 0x1B,0x03,</p><p> 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,</p><p> 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,</p><p> 0x10,0x03, 0x10,0x03
115、, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,</p><p> 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,</p><p> 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,</p><p> 0x16,0x03
116、, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,</p><p> 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,</p><p> 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,</p><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è)設(shè)計---基于51單片機的音樂發(fā)生器設(shè)計
- 畢業(yè)設(shè)計說明書---單片機音樂發(fā)生器
- 單片機函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)-基于單片機的信號發(fā)生器設(shè)計
- 基于51單片機的波形發(fā)生器設(shè)計-畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計--基于單片機的信號發(fā)生器
- 單片機的函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機函數(shù)發(fā)生器系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計---基于單片機函數(shù)發(fā)生器系統(tǒng)設(shè)計
- 畢業(yè)論文---單片機_函數(shù)發(fā)生器的設(shè)計
- 畢業(yè)設(shè)計----基于單片機的信號發(fā)生器設(shè)計
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機的函數(shù)信號發(fā)生器
- 單片機多功能函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-----基于單片機的函數(shù)信號發(fā)生器
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 基于單片機的函數(shù)信號發(fā)生器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于單片機的方波信號發(fā)生器
- 基于單片機的波形發(fā)生器的設(shè)計畢業(yè)設(shè)計
評論
0/150
提交評論