單片機課程設計--基于單片機的數字音樂盒_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  1概述</b></p><p>  本設計是以AT89C51芯片的電路為基礎,外部加上放音設備,以此來實現音樂演奏控制器的硬件電路,通過軟件程序來控制單片機內部的定時器及計數器使其演奏出優(yōu)美動聽的音樂。用戶可以按照自己的喜好選擇音樂并將其轉化成機器碼存入單片機的存儲器中。對于不同型號的單片機只需要相應的改變一下地址即可。該軟、硬件系統(tǒng)具有很好的通用性,很高的實際

2、使用價值,為廣大的單片機和音樂愛好者提供了很好的借鑒。</p><p><b>  1.1 課題意義</b></p><p>  音樂盒的起源,可追溯至中世紀歐洲文藝復興時期。當時為使教會的鐘塔報時,而將大小的鐘表裝上機械裝置,被稱為“可發(fā)出聲音的組鐘”。音樂盒有著300多年的發(fā)展歷史,是人類文明發(fā)展的歷史見證。</p><p>  傳統(tǒng)的音樂

3、盒多是機械音樂盒,其工作原理是通過齒輪帶動一個帶有鐵釘的鐵桶轉動,鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機械式的音樂盒體積比較大,比較笨重,且發(fā)音單調。水、灰塵等外在因素,容易使內部金屬發(fā)音條變形,從而造成發(fā)音跑調。另外,機械音樂盒放音時為了讓音色穩(wěn)定,必須放平不能動搖,而且價格昂貴,不能實現大批量生產。</p><p>  本文設計的音樂盒,是基于單片機設計制作的電子式音樂盒。與傳統(tǒng)的機械式音樂盒

4、相比更小巧,音質更優(yōu)美且能演奏和弦音樂。電子式音樂盒動力來源是電池,制作工藝簡單,可進行批量生產,所以價格便宜?;趩纹瑱C制作的電子式音樂盒,控制功能強大,可根據需要選歌,使用方便。根據存儲容量的大小,可以盡可能多的存儲歌曲。</p><p><b>  1.2設計題目:</b></p><p>  通過對設計方案的分析與研究,設計基于單片機的數字音樂盒,通過單片機來

5、產生固定的頻率的方波來驅動蜂鳴器,發(fā)出不同的音調,通過單片機的定時器來控制該方波持續(xù)的時間,從而演奏樂曲,采用LED數碼管在開機時顯示開機信息,在播放時顯示歌曲序號;通過功能鍵選擇樂曲、暫停、播放;以單片機的最小系統(tǒng)為基礎設計硬件,用匯編語言、或C語言設計軟件。通過基于單片機的數字音樂盒設計這一課程設計,鍛煉學生的創(chuàng)新思維。</p><p><b>  1.3設計方案</b></p&g

6、t;<p>  設計基于單片機的數字音樂盒,通過單片機來產生固定的頻率的方波來驅動蜂鳴器,發(fā)出不同的音調,通過單片機的定時器來控制該方波持續(xù)的時間,從而演奏樂曲;采用LED數碼管在開機時顯示開機信息,在播放時顯示歌曲序號;使用兩個按鍵,一個用來切換歌曲,分別是上一曲、下一曲、播放/暫停; </p><p><b>  1.4研究內容</b></p><p&g

7、t;  1)電路的工作模式為演奏音樂模式</p><p>  演奏音樂模式:演奏完整的一首的歌曲,陰極LED顯示器演奏歌曲為第幾首。</p><p>  2)按下上一曲,切換歌曲到上一曲,LED顯示器顯示歌曲,共三首歌曲。</p><p>  3)按下下一曲,切換歌曲到下一曲,LED顯示器顯示歌曲,共三首歌曲。</p><p>  4)按下播

8、放/暫停,切換至暫停,再按一下,切換至播放。</p><p>  2 系統(tǒng)總體方案介紹</p><p>  2.1 系統(tǒng)組成框圖</p><p>  音樂盒的系統(tǒng)結構以AT89C51單片機位控制核心,加上3個按鍵、時鐘復位電路、蜂鳴器、LED顯示模塊組成。單片機負責接收按鍵的輸入,根據輸入控制音樂播放曲目以及蜂鳴器發(fā)音。系統(tǒng)組成框圖如圖2.1所示。</p>

9、;<p>  圖2.1 系統(tǒng)組成框圖</p><p>  2.2 音樂盒的功能結構圖</p><p>  音樂盒的功能結構如圖2.2所示。按下上一曲,切換歌曲到上一曲,LED顯示器顯示歌曲,共三首歌曲;按下下一曲,切換歌曲到下一曲,LED顯示器顯示歌曲,共三首歌曲;按下播放/暫停,切換至暫停,再按一下,切換至播放。</p><p>  圖2.2 音樂盒

10、功能結構圖</p><p>  2.3 主要設計軟件介紹</p><p>  本設計利用PROTEUS仿真軟件對音樂盒源程序進行編程并調試,并且PROTEUS仿真軟件對硬件進行仿真調試,軟件的簡介如下:</p><p>  2.3.1 PROTEUS軟件簡介</p><p>  Proteus軟件是英國Labcenter electronic

11、s公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完

12、整設計。</p><p><b>  AT89C51簡介</b></p><p>  AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的

13、單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排列如圖3.2所示</p><p>  圖3

14、.0 AT89C51系列單片機</p><p><b>  3.1設計目的</b></p><p>  設計一個音樂播放器,有三個按鍵及控制按鈕:播放/暫停、下一曲、上一曲;通過控制按鈕控制單片機,播放所要求的音樂,并通過放大電路和喇叭輸出聲音。同時通過LED燈顯示器,用來顯示所選曲目,該顯示器在音樂播放中關閉,一曲演奏結束時,或選曲時才顯示曲目信息,從而利于操作。

15、</p><p><b>  3.2電路設計原理</b></p><p>  圖3.2電路設計原理圖</p><p>  3.3 總體電路設計</p><p>  圖3.3 總體電路圖</p><p>  3.4單片機電路設計</p><p>  89C51單片機擁有4KB

16、的片內ROM和128B的片內RAM。ROM和RAM的片外尋址范圍都為64KB。單片機擁有32個并行口和1個串行口。在89C51單片機中存在5個中斷源,其中有兩個外部中斷源、兩個內部中斷源和一個串行中斷源。</p><p>  圖3.4  89C51單片機引腳圖</p><p>  通過TXAL1 與TXAL2輸入時鐘信號,通過p1.0~p1.7輸出控制現實控制信號的顯示,有p3.2、p3.

17、3與p3.5分別作為上一曲、下一曲和開始暫停的控制輸入。</p><p><b>  3.5顯示電路設計</b></p><p>  顯示電路是一個8位共陰極LED數碼管。 單片機的P0.0-P0.7分別與數碼管的A、B、C、D、E、F、G、DP相連接。</p><p>  圖3.5 8位共陰極LED燈</p><p>

18、  3.6 晶振時間電路設計</p><p>  晶振電路由兩個30pF的電容和一個6Mhz的晶體振蕩器組成。節(jié)點1與單片機的XTAL2相連接,節(jié)點2與單片機的XTAL1相連接,從而為單片機提供時間信號,為音樂的播放節(jié)拍控制提供基本時間單位:當晶體振蕩頻率為6MHz,定時器工作在方式1下時,若各音階相對應的定時器計數初值為X,則可根據下式計算X:</p><p><b>  圖3

19、.6 晶振電路</b></p><p>  3.7 控制電路設計</p><p>  控制電路,鍵一與p3.2相連、鍵二與p3.3相連、鍵3與p3.5相連。當電鍵按下時接口接低電平,從而實現對音樂播放器的控制。鍵一聯(lián)通實現上一曲更換,鍵二聯(lián)通實現下一曲更換,鍵三聯(lián)通實現開始暫停操作。</p><p><b>  圖3.7 復位電路</b&

20、gt;</p><p>  3.8 輸出電路設計</p><p>  發(fā)聲電路由數字揚聲器連接p2.0接口實現音樂的輸出,由控制電路發(fā)出操作指令后,單片機調用相應程序,并將音樂信號由p2.0口輸出,通過驅動揚聲器發(fā)出美妙的音樂。</p><p><b>  圖3.8 輸出電路</b></p><p><b> 

21、 4.系統(tǒng)軟件設計</b></p><p><b>  4.1 總體流程圖</b></p><p>  主程序實現對單片機進行初始化后,進入曲目識別子程序,進行歌曲曲目判斷。確定歌曲曲目后,數碼管再進行顯示。然后,子程序對是否播放進行循環(huán)判斷,得到播放中斷的指令后再進行播放。</p><p>  執(zhí)行播放后,關閉數碼管顯示并調用查表

22、子程序進行播放音樂。在播放音樂的過程中,查表子程序循環(huán)判斷音樂是否結束。當音樂結束時,程序跳轉回曲目識別子程序。</p><p>  圖4.1 總體流程圖</p><p>  4.2單片機音階代碼實現</p><p>  音調的高低用音階表示,不同的音階對應不同的頻率。因此,不同頻率的方波就可以產生音階,音階與頻率的關系見表1。由于頻率的倒數是周期,因此可由單片機中

23、的定時控制方波周期,當定時器計數溢出時產生中斷。將與揚聲器連接的P1.7取反后就可得到方波的周期,從而達到了控制頻率,即音階的目的。</p><p>  音階與頻率的關系及 如下表:</p><p>  注:0表示簡譜中的空拍</p><p>  表4-2 方式1下定時器的初值</p><p>  當晶體振蕩頻率為6.144MHz,定時器工作

24、在方式1下時,若各音階相對應的定時器計數初值為X,則可根據下式計算X:</p><p>  音調的長短用節(jié)拍數表示(例如1/4拍、2/4拍、……),不同節(jié)拍數的不同音符的組合形成樂譜。程序中,音的節(jié)拍可由延時子程序實現。延時子程序設定為四分之一拍,節(jié)拍值只能是它的整數倍。</p><p>  4.3 單片機產生不同頻率脈沖信號的原理:</p><p> ?。?)要產

25、生音頻脈沖,只要算出某一音頻的脈沖(1/頻率),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期的時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期的時間再對I/O反相,就可以在I/O腳上得到此頻率的脈沖。</p><p>  (2)利用8051的內部定時器使其工作在計數器模式MODE1下,改變計數值TH0及TL0以產生不同頻率的方法如下:</p><p>  

26、例如,頻率為523Hz,其周期天/523 S=1912uS,因此只要令計數器計時956uS/1us=956,在每計數956次時就將I/O反接,就可得到中音DO(532Hz)。</p><p>  計數脈沖值與頻率的關系公式如下:N=Fi/2/Fr</p><p> ?。∟:計數值,Fi:內部計時一次為1uS,故其頻率為1MHz,Fr:要產生的頻率 )</p><p>

27、; ?。?) 其計數值的求法如下:</p><p>  T=65536-N=65536-Fi/2/Fr</p><p><b>  計算舉例:</b></p><p>  設K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數值。</p><p&

28、gt;  T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr</p><p>  低音DO的T=65536-500000/262=63627</p><p>  中音DO的T=65536-500000/523=64580</p><p>  高音DO的T=65536-500000/1047=65059

29、</p><p> ?。?)C調個音符頻率與計數值T的對照表如下表所示: </p><p>  表4-3-1 C調各音符頻率與計數值T的對照表</p><p> ?。?)每個音符使用1個字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,下表為節(jié)拍碼的對照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設定延遲時間就可求得節(jié)拍的時間。假設1/4節(jié)拍為1DELA

30、Y,則1拍應為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其余的節(jié)拍就是它的倍數,如下表為1/4和1/8節(jié)拍的時間設定。</p><p>  表4-2-2 節(jié)拍碼對照表</p><p>  表4-3-3 各調節(jié)拍的時間設定表</p><p>  四分之一拍延時代碼設計:</p><p>  1/4拍的延遲時間=187毫秒&l

31、t;/p><p>  DELAY: MOV R7,#2</p><p>  D2: MOV R4,#187</p><p>  D3: MOV R3,#248</p><p>  DJNZ R3,$</p><p>  DJNZ R4,D3</p><p>  

32、DJNZ R7,D2</p><p><b>  RET</b></p><p>  4.4 音樂代碼實現</p><p>  4.4.1音樂代碼庫的建立方法</p><p> ?。?)先找出樂曲的最低音和最高音范圍,然后確定音符表T的順序。</p><p> ?。?)把T值表建立在TABLE1

33、,構成發(fā)音符的計數值放在“TABLE”。</p><p>  (3)簡譜碼(音符)為高位,節(jié)拍為(節(jié)拍數)為低4位,音符節(jié)拍碼放在程序的“TABLE”處。</p><p>  (4)音符節(jié)拍碼00H為音樂結束標記。</p><p><b>  4.4.2選曲</b></p><p>  在一個程序中,需要演奏兩首或兩首以

34、上的歌曲時,音樂代碼庫的建立有兩種方法:</p><p> ?。?)將每首歌曲建立相互獨立的音符表T和發(fā)音符計數值TABLE。</p><p>  (2)在建立公用音符表T后,再寫每首歌的發(fā)音計數值TABLE中的代碼</p><p>  不管采用那種方法,每首歌曲結束時,在TABLE中均需加上音樂結束符00H。</p><p>  4.4.3

35、歌曲的設計</p><p>  下面以歌曲《軍港之夜》的設計為例,講述歌曲在單片機中的實現。曲譜如下圖所示</p><p>  圖4.4.3《軍港之夜》樂譜</p><p>  從歌中可看出,最低音為低7Si,最高音為高1Do。根據音樂軟件的設計方法,簡譜對應的簡譜碼、T值、節(jié)拍數如表所示。</p><p>  表4-4-3 簡譜對應的簡譜碼

36、、T值、節(jié)拍數</p><p>  《軍港之夜》代碼實現如下:</p><p>  SONG1: DB 04H ;1=C 2/4 軍港之夜</p><p>  DB 32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0

37、E1H,0D2H,0C2H,14H,14H</p><p>  DB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24H</p><p>  DB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,3

38、2H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H</p><p>  DB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H</p>

39、;<p>  DB 32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H</p><p>  DB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,

40、0C2H,14H,14H</p><p>  DB 32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H</p><p>  DB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H

41、,21H,12H,24H,24H</p><p>  DB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H</p><p>  DB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,5

42、2H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H</p><p>  DB 32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H&

43、lt;/p><p>  DB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H</p><p>  DB 32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14H</p><p><b>  DB 00H&

44、lt;/b></p><p>  TABLE2:DW 63835,64021,64103,64260,64400,64524,64580,64684,64777</p><p>  DW 64820,64898,64968,65030,65058,65110,65157,65178</p><p>  《死了都要愛》代碼實現如下:</p><

45、;p>  SONG2: DB 02H;1=C 4/4 死了都要愛</p><p>  DB 04H,94H</p><p>  DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H</p><p>  DB 0A4H,0A2H,0B2H,0B4H,0C4H,

46、84H,82H,92H,94H,0A4H</p><p>  DB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92H</p><p>  DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H</p><p>  DB 0A4

47、H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8H</p><p>  DB 0C8H,0C8H,08H,08H,78H,28H,38H,34H,24H</p><p>  DB 24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H

48、,24H</p><p>  DB 24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H ;#音不準</p><p>  DB 58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08H</p><p>  DB 84

49、H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H</p><p>  ;;*************************************************</p><p>  DB 0A8H,0A4H,0A2H,0B2H,0C4H,

50、0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H</p><p>  DB 04H,0C4H,0D4H,0C4H,0C8H,04H,94H</p><p>  DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B

51、4H,84H,84H,92H,92H,94H,92H,02</p><p>  DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H</p><p>  DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,9

52、2H,92H,94H,92H,02</p><p>  DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H</p><p>  ;*************</p><p>  DB 0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,

53、0D8H</p><p>  DB 0C8H,0C8H,0C8H,08H</p><p><b>  DB 00H</b></p><p>  《中華人民共和國國歌》代碼實現如下:</p><p>  ONG3: DB 03H ;G=2/4 中華人民共和國國歌</p><p>

54、  DB 04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54H</p><p>  DB 32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52H,32H,21H,31H,12H,11

55、H,21H,34H,04H</p><p>  DB 52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,51H,22H,22H,22H,0D2H,0D1H,0D1H,24H,22H,0C2H,14H,12H,12H,34H,32H,32H,54H,54H,54H,54H</p><p>  DB 12H,11H,31H,52H,51H,51H,64H,54H

56、,32H,31H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H</p><p>  DB 0A2H,0A1H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H,0C4H,14H,0C4H,14H,14H,04H</p><p>  DB 04H,04H,04H,04H</p><p><b&g

57、t;  DB 00H</b></p><p><b>  END;</b></p><p><b>  4.5 鍵控子程序</b></p><p>  鍵控子程序主要由播放/暫停子程序、上一曲子程序、下一曲子程序組成,分別由一個計數器中斷和兩個外部中斷實現。</p><p>  4.5.

58、1 播放/暫停子程序</p><p>  播放/暫停在程序利用內部中斷T0口。將T0口設為計數中斷并工作在方式2下。標識符初值賦值為R1=00H,計數初值設為TH0=0FFH,TL0=0FFH。當按鍵第一次產生中斷信號時,播放/暫停子程序改變標志符R1,將其賦值為01H。此時播放器由暫停狀態(tài)進入播放狀態(tài)。當按鍵第二次產生中斷信號時,播放/暫停子程序判斷R1是否為02H后,將R1再次賦值為00H。此時,播放器由播放

59、狀態(tài)進入暫停狀態(tài)。</p><p>  圖4.5.1 播放/暫停子程序流程圖</p><p><b>  代碼實現如下:</b></p><p>  POP DPL ;恢復現場</p><p><b>  POP DPH</b></p><p><b> 

60、 POP ACC</b></p><p><b>  SETB EA</b></p><p>  RETI ;中斷返回</p><p>  START_PAUSE:CPL F0 ;開始/暫停中斷處理程序,將標置位取反</p><p>  JB F0,

61、RETURN ;為1返回</p><p>  SETB TR0 ;為0則播放</p><p>  RETURN: RETI ;中斷返回</p><p>  DELAY: MOV 27H,26H ;音符演奏時間控制</p><p>  D2:

62、 MOV 28H,#125</p><p>  D3: MOV 29H,#248 </p><p>  DJNZ 29H,$</p><p>  DJNZ 28H,D3 </p><p>  DJNZ 27H,D2 </p><p>  DJNZ R2,DELAY</p><

63、;p><b>  RET</b></p><p>  4.5.2 曲目選擇子程序</p><p>  曲目選擇子程序分為上一曲子程序和下一曲子程序。上一曲和下一曲功能實現方式類似,分別由外部中斷和外部中斷。下面以實現上一曲功能為例:首先設置標識符R7初始值為00H。當按鍵產生中斷信號,上一曲中斷子程序改變標識符R7的值為01H并改變曲目R0的值。播放子程序判斷出

64、標識符R7改變后,先將R7賦值為00H,然后跳轉到曲目識別子程序。</p><p>  圖4.5.2 曲目選擇子程序流程圖</p><p><b>  代碼實現如下:</b></p><p>  POP DPL;恢復現場</p><p><b>  POP DPH</b></p>

65、;<p><b>  POP ACC</b></p><p><b>  SETB EA</b></p><p>  RETI ;中斷返回</p><p>  LAST_SONG: PUSH ACC ;上一曲中斷程序處理開始,保護

66、現場 </p><p><b>  PUSH DPH</b></p><p>  PUSH DPL </p><p>  CLR EA ;關中斷</p><p>  MOV A,22H ;曲目數送A</p&g

67、t;<p>  CJNE A,#1,QQ ;是否是第一首</p><p>  MOV 22H,#N ;是第一首歌曲</p><p>  MOV B,#4 ;將R7指向最后一首歌曲</p><p>  MOV A,#N-1</p><p><b>  MU

68、L AB</b></p><p><b>  MOV R7,A</b></p><p>  AJMP BACK2 ;處理結束</p><p>  QQ: DEC 22H </p><p>  MOV A,R7 ;R7減4</p><p>

69、;<b>  SUBB A,#4</b></p><p><b>  MOV R7,A</b></p><p>  BACK2: MOV R4,#00H </p><p><b>  MOV A,22H</b></p><p>  MOV DPTR,#OUT_TAB&l

70、t;/p><p>  MOVC A,@A+DPTR</p><p>  MOV OUT_NUM,A ;數碼管顯視相應歌曲的編號</p><p><b>  5.電路仿真調試</b></p><p><b>  5.1 仿真平臺</b></p><p>  仿真平臺為Pr

71、oteus軟件。Proteus軟件是世界上著名的EDA工具,能完成原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件,是目前最好的仿真單片機及外圍器件的工具。</p><p><b>  5.2 仿真測試</b></p><p>  開始仿真后,音樂播放器處于暫停狀態(tài)如圖:</p&

72、gt;<p>  圖5.2.1 初始數碼管顯示圖</p><p>  點擊播放,播放器進入播放狀態(tài),數碼管顯示為一,開始默認從第一首《軍港之夜》開始播放如圖:</p><p>  圖5.2.2 開始播放仿真實現</p><p>  按鍵一及p3.2低電位,開始播放上一曲(第三首《中華人民共和國國歌》)如圖:</p><p>  

73、圖5.2.3開始播放上一曲仿真</p><p>  按鍵二及p3.3低電位,開始播放下一曲(第二首《死了也要愛》)如圖:</p><p>  圖5.2.3播放下一曲仿真</p><p>  再次點擊播放/暫停鍵,播放進入播放狀態(tài),數碼管關閉。</p><p><b>  5.3 測試總結</b></p>&

74、lt;p>  音樂播放器很好的實現了播放/暫停、上一曲、下一曲的功能,并滿足了數碼管顯示的特殊要求。 音效良好,能很好聽出樂曲的曲名。當然設計的音樂播放器也存在著不足之處。8位LED數碼管只能顯示10以內的歌曲曲目,超過10將無法顯示。</p><p>  調試過程中所遇到的問題:</p><p>  1)運行程序時LED4位共陰數碼管顯示程亂碼。</p><p&

75、gt;  原因分析:數碼管初始設置有錯。</p><p>  解決方案:重新設置數碼管顯示參數,</p><p>  2)數碼管顯示的時間與真正的時間進度不一致。</p><p>  原因分析:定時器初值設置有誤。本次設計的晶振為6MHZ,而程序中的初值卻設置成了6MHZ晶振所采用的值5000,導致顯示的時間比真正的時間要慢。</p><p>

76、;  解決方案:將定時器初值改為6MHZ晶振初值的一半,及2500即可。</p><p><b>  6.設計心得</b></p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。隨著科學技術發(fā)展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域,在生活中可以說得是

77、無處不在。因此作為自動化專業(yè)的學生來說掌握單片機的開發(fā)技術是十分重要的。 我的題目是音樂播放器硬軟件的設計,對于我們這些工科學生來說,這是一次考驗。怎么才能找到課堂所學與實際應用的最佳結合點?怎樣讓自己的業(yè)余更接近專業(yè)?怎樣讓自己的計劃更具有序性,而不會忙無一用?這都是我們所要考慮和努力的。這次課程設計我學到很多很多的東西,學會了怎么樣去制定計劃,怎么樣去實現這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。不僅鞏固了

78、以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識,掌握了一種系統(tǒng)的研究方法,可以進行一些簡單的編程。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。</p><p>  同時在設計的過程中發(fā)現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠

79、牢固,對單片機匯編語言掌握得不夠好。這次課程設計通過自己的努力,同學的幫助,還有老師的辛勤指導下,最終順利完成。</p><p><b>  參考文獻</b></p><p>  [1] 魏立峰.單片機原理及應用.北京大學出版社,2003。</p><p>  [2] 譚浩強.C程序設計(第二版).清華大學出版社,1999。</p>

80、<p>  [3] 王曉君.安國臣等. MCS—51及兼容單片機原理與選型. 北京-電子工業(yè)出版社, 2003。</p><p>  [4] 陳明熒. 80C51單片機課程設計 .清華大學出版社.2005。</p><p>  [5] 蘭吉昌.51單片機應用設計百例.化學工業(yè)出版社.2009。</p><p>  [6] 吳戈.案例學單片機C語言開發(fā).

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論