單片機音樂播放器畢業(yè)論文_第1頁
單片機音樂播放器畢業(yè)論文_第2頁
單片機音樂播放器畢業(yè)論文_第3頁
單片機音樂播放器畢業(yè)論文_第4頁
單片機音樂播放器畢業(yè)論文_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機音樂播放器畢業(yè)論文 i 目 錄 摘 要.1 前 言.2 第 1 章 設計綜述 .3 1.1 單片機產生音調的基本原理 .3 1.2 開發(fā)環(huán)境簡介 .3 1.3 設計內容與目標 .4 第 2 章 音樂播放器的功能與組成.5 2.1 音樂播放器的功能 .5 2.2 音樂播放器的組成 .5 第 3 章 系統總體設計與關鍵技術.7 3.1 系統總體設計 .7 3.1.1 音樂播放器的工作原理.7 3.1.2 音階對應頻率計數初值的計算.8 3.1.3 樂曲節(jié)拍的計算.8 3.1.4 樂譜在程序中的編制.9 3.2 系統中應用的關鍵技術 .9 第 4 章音樂播放器的硬件設計.10 4.1 單片機最

2、小系統 .10 4.1.1 單片機復位電路.10 4.1.2 單片機晶振電路.10 4.2 鍵盤接口電路的設計.11 4.3 led 顯示接口電路的設計 .12 4.4 揚聲器控制電路的設計.13 4.5 硬件原理圖 .13 第 5 章 音樂播放器的軟件設計.15 5.1 主控軟件的設計與流程圖 .15 5.2 定時中斷服務子程序的設計與流程圖 .16 5.3 鍵盤控制模塊的設計與流程圖 .17 單片機音樂播放器畢業(yè)論文 ii 5.4 演奏樂曲模塊的設計與流程圖 .22 第 6 章 系統的實現與調試.25 6.1 硬件系統的焊接與調試 .25 6.2 軟件調試 .26 6.2.1 測試 led

3、 顯示模塊.26 6.2.2 測試鍵盤控制模塊.27 6.2.3 測試 p3.0 口輸出.28 6.3 調試中遇到的問題及解決 .28 第 7 章 結 論.30 參 考 文 獻.34 致 謝.35 單片機音樂播放器畢業(yè)論文 1 摘摘 要要 隨著科技的不斷發(fā)展,目前市場上出現了許許多多的音樂播放器,人們對播放器的 需求也越來越廣泛,對其要求也越來越高。 本文分析了基于單片機的音樂播放器的工作原理,詳細介紹了音樂播放器的功能及 其硬件設計和軟件設計的方法,給出了基于 mcs-51 單片機的音樂播放器的具體實現方案 并重點講述了其硬件實現與軟件編寫,實現了單片機音樂播放器對音樂的演奏。 關鍵詞關鍵詞

4、 : 音樂播放器、mcs-51 單片機、led 顯示器 單片機音樂播放器畢業(yè)論文 2 abstract with the continuous development of science and technology, the market appeared many music players, the demand of players has become increasingly extensive and increasing their demands. this paper analyzes the scm-based music players working princip

5、le, described in detail the function of music player and its hardware design and software design methods, given mcs-51 single- chip based on the music player to achieve the specific program and focus on the achievement of its hardware and software development, to achieve a single chip music player f

6、or playing music. keywords : music player、mcs-51 single-chip microcomputer、led 單片機音樂播放器畢業(yè)論文 3 前前 言言 幾千年來,各種樂器的發(fā)聲無一不是依靠琴弦、簧片、哨片引起管柱振動而作為聲 源的。隨著現代電子工業(yè)技術的飛速發(fā)展,一種用新的聲源來制造音響的新型樂器脫穎 而出,這就是目前人們熟知的電子音樂播放器1。目前市場上的音樂播放器形形色色, 例如大家所熟悉的mp3,隨著電子技術的不斷發(fā)展,音樂播放器的發(fā)展也會進一步發(fā)展。 目前單片機的應用滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機 的蹤跡。導彈的

7、導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工 業(yè)自動化過程的實時控制和數據處理,廣泛使用的各種智能 ic 卡,民用豪華轎車的安全 保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這 些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫(yī)療器械了2。 本課題即是在這種背景下,對基于 mcs51 單片機的音樂播放器的設計與實現進行了 硬件及軟件的設計,并給出了一套完整的解決方案,實現了單片機音樂播放器對音樂的 演奏。 單片機音樂播放器畢業(yè)論文 第第1 1章章 設設計計綜綜述述 1.11.1 單片機產生音調的基本原理單片機產生音調的基本原理 音樂播放

8、器是利用單片機產生樂曲音符,再把樂曲音符翻譯成計算機音樂語言,用 單片機進行信息處理,再通過蜂鳴器或喇叭放出音樂。 音樂的產生主要是通過單片機的 i/o 口輸出高低不同的脈沖信號來控制蜂鳴器發(fā)音。 要想產生音頻脈沖信號,需要算出某一音頻的周期(1/頻率),然后將此周期除以 2,即為 半周期的時間。利用單片機定時器計時這個半個周期時間,每當計時到后就將輸出脈沖 的 i/o 口反相,然后重復計時此半周期時間再對 i/o 口反相,這樣就能在此 i/o 口上得 到此頻率的脈沖。 通常,利用單片機的內部定時器 0,工作在方式 1 下,改變計數初值 th0 和 tl0 來產 生不同頻率。 對于音樂的節(jié)拍,

9、每個音符使用 1 個字節(jié),字節(jié)的高 4 位代表音符的高低,低 4 位 代表音符的節(jié)拍。如果 1 拍為 0.4s,1/4 拍為 0.1s,只要設定延遲時間就可求得節(jié)拍的 時間。假設 1/4 拍為 1delay,那么 1 拍應為 4delay,以此類推。所以只要求得 1/4 拍的 delay,其余的節(jié)拍就是它的倍數。 總而言之,一首樂曲是由音階和節(jié)拍兩大要素構成。一首樂曲演奏的原理是:不同 音階分別對應不同的頻率,發(fā)出不同的音調,而節(jié)拍則控制發(fā)出音調時間的長短;若將 樂曲的音調連續(xù)發(fā)出,并使其按相應的節(jié)拍變化,即可演奏一首樂曲。根據這一特點, 我們采用單片機輔以相應的接口來設計音樂播放器3。 1.

10、21.2 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 隨著單片機的不斷發(fā)展,以c為主流的單片機高級語言也不斷被更多的單片機愛好者 和工程師所喜愛。使用c語言肯定要使用到c編譯器,以便把寫好的c程序編譯為機器碼, 這樣單片機才能執(zhí)行編寫好的程序。keil uvision2是眾多單片機應用開發(fā)軟件中優(yōu)秀的 軟件之一,它支持眾多不同公司的mcs-51架構的芯片,它集編輯,編譯,仿真等于一體, 同時還支持,plm,匯編和c 語言的程序設計,它的界面和常用的微軟vc+的界面相似, 界面友好,易學易用,在調試程序,軟件仿真方面也有很強大的功能4。 本系統采用的開發(fā)環(huán)境為 keil uvision2,軟件開發(fā)環(huán)境主界面見圖

11、1-1。 單片機音樂播放器畢業(yè)論文 圖 1-1 keil uvision2 集成開發(fā)環(huán)境主界面 1.31.3 設計內容與目標設計內容與目標 本設計以 at89c51 單片機為核心。通過對其定時器的設定來實現音樂的播放,通過 對鍵盤的設置可以實現人機對話,借助鍵盤可以向計算機系統輸入程序,置數、送操作 命令、控制程序的執(zhí)行走向等,并最終通過 led 顯示器顯示出播放的樂曲。 重點研究內容有: 單片機最小系統的設計與實現 鍵盤電路的設計與控制 揚聲器控制電路的設計與實現 led 顯示器的驅動及顯示 定時初值的計算 軟件模塊的設計與編寫 單片機音樂播放器畢業(yè)論文 第第2 2章章 音樂播放器的功能與組

12、成音樂播放器的功能與組成 2.12.1 音樂播放器的功能音樂播放器的功能 基于單片機的定時和控制裝置在許多行業(yè)中有著廣泛的應用,而音樂播放器是 其應用之一。在基于單片機的音樂播放器電路中,除了基本的單片機系統和外圍電 路外,還需要外部的控制和顯示裝置。在本設計中,輸入裝置是按鍵開關,由于控 制音樂播放器的運行模式,顯示裝置是 led 七段數碼管5。 此次設計的音樂播放器要求具有以下功能: 音樂播放器按照從頭到尾的順序自動播放預先設定的 14 共 4 首樂曲,全部樂曲 播放完畢則停止。 音樂播放器按照從頭到尾的順序自動循環(huán)播放預先設定的全部樂曲。 選定某一樂曲,隨即輸入選定樂曲的序列號(14),

13、即按下 14 數字鍵之一,音 樂播放器對選定的某一樂曲開始循環(huán)播放。 選定某一樂曲,隨即輸入選定樂曲的序列號(14),即按下 14 數字鍵之一,音 樂播放器就從選定的某一樂曲開始播放,按照順序自動播放到最后一首樂曲,樂曲播放 完畢則停止。 當用戶按下暫停鍵時,音樂播放器打斷正在播放的某一樂曲,用戶再次按下暫停 鍵時,該樂曲繼續(xù)播放。 當用戶按下復位鍵時,音樂播放器終止正在播放的某一樂曲。 2.22.2 音樂播放器的組成音樂播放器的組成 根據系統音樂播放器的功能要求,一個完整的音樂播放器電路相當于一個簡單的單 片機系統,該系統由按鍵開關、單片機、led 顯示電路、揚聲器控制電路 4 個方面構成。

14、 51 單片機。51 單片機為整個系統的核心部分,是帶動整個系統工作的重要部件。 鍵盤輸入。鍵盤輸入用來控制輸入指令,發(fā)出指令至單片機,使單片機按照指令 工作。 揚聲器。揚聲器作為輸出部分按照鍵盤給單片機的指令發(fā)出樂曲。 led 顯示電路。led 顯示器也作為輸出部分,按照鍵盤給單片機的指令,顯示正在 演奏的樂曲。 單片機音樂播放器畢業(yè)論文 音樂播放器的系統組成框圖如圖 2-1 所示: 圖 2-1 音樂播放器的系統組成框圖 cpu at89c51 鍵盤輸入揚聲器 led 顯示電路 單片機音樂播放器畢業(yè)論文 第第3 3章章 系統總體設計與關鍵技術系統總體設計與關鍵技術 3.13.1 系統總體設計

15、系統總體設計 根據系統的功能與組成,進行系統分析,系統除 cpu 核心部分外還需要與鍵盤連接 以接收輸入指令,連接 led 顯示器將要演奏的樂曲序號顯示出來,通過連接揚聲器使其 發(fā)出音樂。系統總體結構如圖 3-1 所示。 圖 3-1 系統總體結構框圖 3.1.13.1.1 音樂播放器的工作原理音樂播放器的工作原理 音樂播放器可利用單片機的定時器構成電子振蕩器來發(fā)聲。振蕩器是電子樂曲播放 器的聲源,專門用來制造音響,也稱信號發(fā)生器,其作用相當于常規(guī)樂器的琴弦、簧片、 哨片。振蕩器在音樂播放器的應用中有兩個特點,可產生聲音的頻率與不同波形的振蕩。 通過對單片機的定時器設置不同的定時初值,可發(fā)出音樂

16、的不同音階,通過調整振蕩波 形與泛音的分布,可產生和變換各種音色。 在我們所設計的音樂播放器中,是通過單片機的定時器,產生不同頻率的方波信號, 而沒有調整振蕩波形,因此音樂播放器發(fā)出的聲音,是矩形波產生的音響,純粹的矩形 波聲音類似于單簧管的音色。 一首樂曲演奏的原理是:一首樂曲是由音階和節(jié)拍兩大要素構成,不同音階分別對 應不同的頻率,發(fā)出不同的音調,而節(jié)拍則控制發(fā)出音調時間的長短;若將樂曲的音調 連續(xù)發(fā)出,并使其按相應的節(jié)拍變化,即可演奏一首樂曲。根據這一特點,我們采用單 片機輔以相應的接口來設計音樂播放器。 晶振、復位電路 單片機 鍵盤輸入控制 led 顯示電路 揚聲器 單片機音樂播放器畢

17、業(yè)論文 3.1.23.1.2 音階對應頻率計數初值的計算音階對應頻率計數初值的計算 單片機的振蕩頻率為fosc12mhz ,通過定時器 t0 溢出后對 p3.0 口取反產生方波, 故定時器溢出時間為 1/2f 。 由: , 則定時初值為: nosc n ff x 2 112 )2( 1616 2 24 osc n n f x f 以音階“1”為例:f523 hz,則 t1/f 定時初值: 6 1616 12 10 226458044 2424 523 osc n n f xfch f 用同一方法可求出其它音階所對應的頻率定時初值,將其制表放在程序中,通過查 表向定時器 t0 裝入所要求的定時初

18、值,即可產生某一音階所對應的頻率的方波信號。c 調的音階及其頻率、在單片機中的定時初值對應如下: 音 名 c d e f g a b 簡譜音階 1 2 3 4 5 6 7 頻率/ hz 262 294 330 349 392 440 494 定時初值 63628 63835 64021 64103 64260 64400 64524 表中序號 1 2 3 4 5 6 7 音 名 c d e f g a b 簡譜音階 1 2 3 4 5 6 7 頻率/ hz 523 587 659 698 784 880 988 定時初值(hex) 64580 64684 64777 64820 64898 6

19、4968 65030 表中序號 8 9 10 11 12 13 14 音 名 c d e f g a b 簡譜音階 1 2 3 4 5 6 7 頻率/ hz 1046 1175 1318 1397 1568 1760 1967 定時初值(hex) 65058 65110 65157 65178 65217 65252 65283 表中序號 15 16 17 18 19 20 21 3.1.33.1.3 樂曲節(jié)拍的計算樂曲節(jié)拍的計算 取樂曲節(jié)拍的長度為 0.4s ,即 1 拍0.4s ,由定時器 t1 控制延時。設置定時器 單片機音樂播放器畢業(yè)論文 t1 的定時中斷 t50ms ,采用定時方式

20、1。 由: ,則定時初值 x3c0bht f x osc 12 )2( 16 因此 1 拍0.4s8*50ms,即通過定時器 t1 的定時中斷 8 次,產生 8*50ms 的定時, 就可以滿足 1 節(jié)拍的定時要求。以此類推,通過定時中斷 n 次,可產生 n*50ms 的定時以 滿足 1/4 拍、1/2 拍、1 拍、2 拍等不同節(jié)拍的定時要求。由此可知,節(jié)拍值只能是整數 值。不同節(jié)拍在單片機中的中斷次數(音長)對應如下: 節(jié) 拍 1/8 1/4 1/2 3/4 1 3/2 2 3 4 時間長度 0.05s 0.1s 0.2s 0.3s 0.4s 0.6s 0.8s 1.2s 1.6s 音長(de

21、c) 1 2 4 6 8 12 16 24 32 音長(hex) 01h 02h 04h 06h 08h 0ch 10h 18h 20h 3.1.43.1.4 樂譜在程序中的編制樂譜在程序中的編制 將樂譜轉換為代碼,應包含樂曲的總長度、音階、音長(節(jié)拍)等信息。 具體設計如下: (1) 將音階代碼組成一個字節(jié),節(jié)拍代碼組成一個字節(jié),按照:音階代碼,節(jié)拍代 碼,音階代碼,節(jié)拍代碼 的順序,將一個樂譜轉換為一定長度的代碼數據表。 (2) 在程序執(zhí)行時順序查此表,取出音階代碼,并根據音階代碼查頻率表,以得到 該音階對應的頻率,隨后將對應的定時初值送定時器 t0,使定時器 t0 產生該音階對應的 頻率

22、,并通過 p3.0 口輸出,驅動外接揚聲器發(fā)聲。 (3) 取出節(jié)拍代碼 n,由定時器 t1 控制延時,通過定時中斷 n 次,產生 n*50ms 的定 時。 t0、t1 啟動后,根據樂譜表,某一個音階發(fā)出相應頻率的聲音,并持續(xù)相應的節(jié)拍, 連續(xù)起來,我們就可以聽到一個完整樂曲的演奏。 3.23.2 系統中應用的關鍵技術系統中應用的關鍵技術 基于單片機的音樂播放器在設計時需要解決以下 4 個方面的問題: 有關單片機中定時器的使用。 利用鍵盤控制實現對單片機的控制。 led 顯示模塊的驅動和編制。 揚聲器控制電路,用于發(fā)出不同頻率的音調。 單片機音樂播放器畢業(yè)論文 第第4 4章章音樂播放器的硬件設計

23、音樂播放器的硬件設計 一個完整的音樂播放器電路相當于一個簡單的單片機系統,該系統由按鍵開關、 單片機、晶振和復位電路、led 顯示電路、揚聲器控制電路 5 個方面構成。其中, 除了單片機是集成的 ic 芯片,而其他 4 個部分則需根據應用要求而設計。 4.14.1 單片機最小系統單片機最小系統 單片機芯片,配以必要的外部器件就能構成單片機最小系統。單片機具有較強的外 部擴展、通信能力,能方便地擴展至應用系統所要求的規(guī)模。 當使用帶 rom 或 eprom 的 mcs51 系列單片機時,只要一個芯片即可構成一個單片機 的最小系統。選用 80c51 或 8051 或 at89c51 單片機作為主機

24、,它們都具有 4k 片內 rom,128 字節(jié)片內 ram,片外 rom 尋址范圍達 64k,片外 ram 尋址范圍達 64k,2 個 16 位 計數器,5 個中斷源,4 個并行口,1 個串行口。簡易自動樂曲播放器采用單片機最小系 統足以滿足系統設計要求,同時要設計單片機最小系統的晶振和復位電路。 4.1.14.1.1 單片機復位電路單片機復位電路 復位是單片機的初始化操作,其作用是使 cpu 中的各個部件都處于一個確定的 初始狀態(tài),并從這個狀態(tài)開始工作。當 8051 的 ale 及 兩腳輸出高電平,rst 引腳 高電平時,單片機復位。 8051 單片機的復位電路有上電復位和手動按鈕復位兩種形

25、式,rst/vpd 端的高 電平直接由上電瞬間產生高電平則為上電復位;若通過按鈕產生高電平復位信號稱 為手動按鈕復位。圖 4-1 為兼有上電復位與按鈕復位的電路。圖中,上電瞬間 rst 端的電位與 vcc 相同,隨著電容充電電流的減小,+5v 立即加到了 rst/vpd 端,該 高電平使 8051 復位。若運行過程中,需要程序從頭開始執(zhí)行,這只需按圖 4-1 中 的按鈕即可。按下按鈕則直接把+5v 加到了 rst/vpd 端從而復位,這稱為手動復位。 在實際應用系統中,有些外圍芯片也需要復位,如果這些復位端的復位電平要求與 單片機的要求一致,則可以與之相連。 4.1.24.1.2 單片機晶振電

26、路單片機晶振電路 晶振是給單片機提供工作信號脈沖的,這個脈沖就是單片機的工作速度。比如 12m 晶 單片機音樂播放器畢業(yè)論文 振,單片機工作速度就是每秒 12m。當然,單片機的工作頻率是有范圍的,不能太大, 一般 24m 就不上去了,不然不穩(wěn)定 。圖 4-2 為晶振電路。 圖 4-1 復位電路 圖 4-2 晶振電路 4.24.2鍵盤接口電路的設計鍵盤接口電路的設計 單片機應用系統中的人機對話通道是用戶為了對應用系統進行干預以及了解應用系 統運行狀態(tài)所設置的通道。主要有鍵盤、顯示器等通道接口。 在單片機應用系統中,為了控制系統的工作狀態(tài)以及向系統中輸入數據,應用系統 單片機音樂播放器畢業(yè)論文 設

27、置鍵盤,用于系統復位,功能轉換以及數字輸入。鍵盤的設置可以實現人機對話,借 助鍵盤可以向計算機系統輸入程序、置數、送操作命令、控制程序的執(zhí)行走向等。 在本次設計中鍵盤由 p1 口輸入, 按鍵設置:14 四個數字鍵,af 六個功能鍵。 數字鍵(14): 用于輸入 14 共 4 首樂曲的序列號。 功能鍵(af): a 鍵:樂曲從 14 按順序播放 b 鍵:樂曲從 14 循環(huán)播放 c 鍵:循環(huán)播放某一樂曲 d 鍵:從某一樂曲開始播放至最后一首樂曲 e 鍵:暫停/播放 f 鍵:停止播放 各功能鍵(af)的意義與操作: a 鍵:樂曲從 14 按順序播放。 當用戶按下 a 鍵后,led 顯示器清屏,簡易自

28、動樂曲播放器按照從頭到尾的順序自動 播放預先設定的 14 共 4 首樂曲,全部樂曲播放完畢則停止。 b 鍵:樂曲從 14 循環(huán)播放。 當用戶按下 b 鍵后,led 顯示器清屏,簡易自動樂曲播放器按照從頭到尾的順序自動 循環(huán)播放預先設定的全部樂曲。 c 鍵:循環(huán)播放某一樂曲 當用戶按下 c 鍵后,并選定某一樂曲,隨即輸入選定樂曲的序列號(14),即按下 14 數字鍵之一,簡易自動樂曲播放器對選定的某一樂曲循環(huán)播放。 d 鍵:從某一樂曲開始播放至最后一首樂曲 當用戶按下 d 鍵后,并選定某一樂曲,隨即輸入選定樂曲的序列號(14),即按下 14 數字鍵之一,簡易自動樂曲播放器就從選定的某一樂曲開始播

29、放,直到樂曲播放完 畢則停止。 e 鍵:暫停/播放。 當用戶按下 e 鍵時,簡易自動樂曲播放器打斷正在播放的某一樂曲,用戶再次按下 e 鍵時,該樂曲繼續(xù)播放。 f 鍵:停止播放。 當用戶按下 f 鍵時,簡易自動樂曲播放器終止正在播放的某一樂曲。 本設計中按鍵作為輸入部分,由 p1 口輸入。 單片機音樂播放器畢業(yè)論文 4.34.3ledled 顯示接口電路的設計顯示接口電路的設計 在單片機應用系統中,使用的顯示器主要有 led 顯示器(發(fā)光二極管顯示器) 。這種 顯示器成本低廉,配置靈活,與單片機接口方便。在本系統的設計中采用 led 顯示器。 led 顯示器由 8 位 led 數碼管組成,用于

30、顯示系統在各種不同條件下的狀態(tài)。 用單片機驅動 led 數碼管有很多方法,按顯示方式分,有靜態(tài)顯示和動態(tài)顯示,按 譯碼方式分為硬件譯碼和軟件譯碼。 靜態(tài)顯示是顯示驅動電路具有輸出鎖存功能,單片機將要顯示的數據送出后不再控 制 led,直到下次顯示時再傳送一次新的顯示數據。靜態(tài)顯示的數據穩(wěn)定,占用 cpu 時間 少。 動態(tài)顯示要 cpu 時刻對顯示器件進行數據刷新,顯示數據會有閃爍,占用的 cpu 時 間多。 這兩種顯示方式各有利弊:靜態(tài)顯示雖然數據顯示穩(wěn)定,占用很少的 cpu 時間,但 每個顯示單元都需要單獨的顯示驅動電路,使用的電路硬件較多;動態(tài)顯示雖然閃爍, 占用的 cpu 時間多,但使用

31、的硬件少,能節(jié)省線路板空間。 在本設計中由于顯示部分比較簡單,所以選用了靜態(tài)顯示方式,led 顯示器由 74ls373 來驅動,為了擴展外部存儲器需一塊 74ls373(地址鎖存器) 。 led 發(fā)光器件一般常用的有兩類:數碼管和點陣。常用的數碼管一般為 8 字型數碼管, 分為 a、b、c、d、e、f、g、dp 八段,其中 dp 為小數點。數碼管常用的有 10 根管腳, 每一段有一根管腳,另外兩根管腳為一個數碼管的公共端,兩根之間相連通。 數碼管從電路上來看可分為共陰和共陽兩種,在本設計中用了共陽的 led。 4.44.4揚聲器控制電路揚聲器控制電路的設計的設計 揚聲器控制電路用于發(fā)出不同頻率

32、的音調,是在 p3.0 口加一反相器再連接到喇叭這 樣就可夠成。 4.54.5 硬件原理圖硬件原理圖 通過以上分析,本次設計的音樂播放器的電路原理圖如圖 4-4 所示。 單片機音樂播放器畢業(yè)論文 圖 4-4 音樂播放器的原理圖 單片機音樂播放器畢業(yè)論文 開機加電 顯示等待提示狀態(tài) f 讀取鍵盤 是否有鍵輸入? n 是否是a鍵? y 是否是 b 鍵? n 是否是d鍵? n y a 鍵子程序 y b 鍵子程序 關閉定時器 t0、t1 置定時器 t0、t1 工作方式 y d 鍵子程序 是否是 c 鍵? c 鍵子程序 n y 第第5 5章章 音樂播放器的軟件設計音樂播放器的軟件設計 軟件設計的重點在于

33、定時中斷的設計、鍵盤控制、顯示的實現、樂曲的演奏等方面。 5.15.1 主控軟件的設計主控軟件的設計與流程圖與流程圖 主模塊是系統軟件的框架。本系統的主模塊的程序框圖可用圖 5-1 來表示。主控模 塊用于控制系統的工作。該模塊先初始化,接著接受到復位信號后讀取鍵盤信號,再調 用各鍵子程序。 圖 5-1 主控模塊的流程圖 主控程序主要源程序代碼如下: start: mov sp, #60h mov tmod, #11h mov ie, #8ah 單片機音樂播放器畢業(yè)論文 中斷入口 產生周期方波 啟動定時器 t0 查頻率表重裝音頻初值 中斷返回 關閉定時器 t0 mov ip, #08h ;t1

34、中斷優(yōu)先于 t0 中斷 mov th1, #3ch mov tl1, #0bh;以上為系統初始化,t=50ms w1: mov p2, #10001110b ;等待提示f lcallgetkey cjne a, #0ffh, w1 mov a, b cjne a, #0ah, w2 lcall key_a ;輸入鍵是a,轉 key_a sjmpw1 w2: cjnea, #0bh, w3 lcall key_b ;輸入鍵是b,轉 key_b w3: cjnea, #0ch, w4 lcall key_c ;輸入鍵是c,轉 key_c w4: cjnea, #0dh, w5 lcall key_

35、d sjmpw1 ;輸入鍵是d,轉 key_d 5.25.2 定時中斷服務子程序定時中斷服務子程序的設計與流程圖的設計與流程圖 定時器 t0 用于產生不同頻率的音階,如圖 5-2 為定時器 t0 的中斷服務子程序。而 定時器 t1 控制延時來實現不同的節(jié)拍,定時時間設定為 50ms,圖 5-3 為定時器 t1 的中 斷服務子程序。 圖 5-2 定時器 t0 的中斷服務流程圖 單片機音樂播放器畢業(yè)論文 中斷入口 裝入定時常數=3c0bh 啟動定時器 t1 節(jié)拍數減 1 中斷返回 關閉定時器 t1 圖 5-3 定時器 t1 中斷服務流程圖 其程序如下所示 int_t0: clr tr0 ;定時器

36、0 中斷子程序 mov tl0, 20h mov th0, 21h cpl p3.0 setb tr0 reti int_t1: clr tr1 ;定時器 1 中斷子程序 clr tr0 lcallkey_e mov th1, #3ch mov tl1, #0bh djnz 60h, out mov 60h, #20 out:setbtr1 reti 5.35.3 鍵盤控制模塊鍵盤控制模塊的設計與流程圖的設計與流程圖 鍵盤控制模塊分為 6 個功能鍵和讀 4 個數字鍵。下面分別介紹各個鍵的流程圖和程 序: 單片機音樂播放器畢業(yè)論文 入口 系統復位 系統返回 入口 led 顯示 e tr0、tr1

37、 取反 系統返回 e鍵被按下? n y f 鍵子模塊 f 鍵是用于實現系統復位 圖 5-4 f 鍵流程圖 e 鍵子模塊 e 鍵用于實現對樂曲的暫停和播放 圖 5-5 e 鍵子程序流程圖 按下 e 鍵的主要源程序代碼如下 key_e: jbp3.1, l2 ;中斷鍵盤檢測 lcalldelay2 ;消除抖動 jb p3.1, l2 ;如果是高電平就跳到 l2 jnb p3.1, $ ;如果仍然是低電平就執(zhí)行中斷程序 mov p2, #10000110b ;讓 led 顯示 e l3: jb p3.1, $ ;檢測低電平,直到低電平時才跳出該指令 lcalldelay2 jb p3.1, l3 j

38、nb p3.1, $ ;如果再來一個高電平才跳出中斷 mov p2,r5 單片機音樂播放器畢業(yè)論文 入口 led顯示器清屏 調 a鍵子程序 系統返回 l2: setb tr0 ret a 鍵子模塊 當用戶按下 a 鍵后,led 顯示器清屏,簡易自動樂曲播放器按照從頭到尾的順序自動 播放預先設定的 14 共 4 首樂曲,全部樂曲播放完畢則停止。 入口 led 顯示器清屏 調 music1 music4 子程序 即按順序自動播放 4 首樂 曲,并顯示相應的序號 系統返回 圖 5-6 a 鍵子程序流程圖 a 鍵主要源程序代碼如下: key_a: lcallmusic1 ;樂曲我和你 lcallmus

39、ic2 ;樂曲萬水千山總是情 lcallmusic3 ;樂曲送別 lcallmusic4 ;樂曲北京歡迎您 ret b 鍵子模塊 當用戶按下 b 鍵后,led 顯示器清屏,簡易自動樂曲播放器按照從頭到尾的順序自動 循環(huán)播放預先設定的全部樂曲。 單片機音樂播放器畢業(yè)論文 入口 led 顯示器清屏 數字鍵按下? n y y 系統返回 是否是4? 是否是3? 是否是2? 是否是1? 樂曲 4 music 4并顯示 樂曲 3 music 3并顯示 樂曲 2 music 2并顯示 樂曲 1 music 1并顯示 y y y n n n n 圖 5-7 b 鍵子程序流程圖 b 鍵主要源程序代碼如下: ke

40、y_b: ;b 鍵子程序(從 14 循環(huán)播放) t11:lcallkey_a sjmpt11 ret d 鍵子模塊 當用戶按下 d 鍵后,并選定某一樂曲,隨即輸入選定樂曲的序列號(14),即按下 14 數字鍵之一,簡易自動樂曲播放器就從選定的某一樂曲開始播放。 圖 5-8 d 鍵子程序流程圖 d 鍵源程序代碼如下: 單片機音樂播放器畢業(yè)論文 入口 系統返回 顯示輸入數據 保存輸入數據 讀取鍵盤 有鍵輸入? y 置合法輸入標志 ff y 抖動? n n key_d: ;d 鍵子程序(從某一樂曲開始播放,播放完后停止) t2: lcallgetword cjnea, #0ffh, t2 mov a

41、, b cjnea, #00h, b1 sjmpc0 b1: cjnea, #01h, b2 sjmpc1 b2: cjnea, #02h, c3 sjmpc2 c0: lcallmusic1 ;樂曲我和你 c1: lcallmusic2 ;樂曲 萬水千山總是情 c2: lcallmusic3 ;樂曲送別 c3: lcallmusic4 ;樂曲北京歡迎您 ret 讀數字鍵 讀取正在播放樂曲的序號,讀取鍵盤后消去鍵盤抖動接著顯示和保存數據。 單片機音樂播放器畢業(yè)論文 圖 5-9 getword 子程序(讀數字鍵 0)流程圖 讀數字鍵主要源程序代碼如下: getword: ;讀音樂序號子程序 s1

42、: jb p1.4, s2 ;讀 1 鍵 lcalldelay2 jb p1.4, s1 jnb p1.4, $ mov p2, #11111001b ;顯示 1 mov r5, #11111001b mov a, #0ffh mov b, #00h ret 5.45.4 演奏樂曲模塊演奏樂曲模塊的設計與流程圖的設計與流程圖 (1) 將音階代碼組成一個字節(jié),節(jié)拍代碼組成一個字節(jié),按照:音階代碼,節(jié)拍代 碼,音階代碼,節(jié)拍代碼 的順序,將一個樂譜轉換為一定長度的代碼數據表。 (2) 在程序執(zhí)行時順序查此表,取出音階代碼,并根據音階代碼查頻率表,以得到 該音階對應的頻率,隨后將對應的定時初值送定時

43、器 t0,使定時器 t0 產生該音階對應的 頻率,并通過 p3.0 口輸出,驅動外接揚聲器發(fā)聲。 (3) 取出節(jié)拍代碼 n,由定時器 t1 控制延時,通過定時中斷 n 次,產生 n*50ms 的定 時。 演奏樂曲的流程圖如圖 5-10 所示。 單片機音樂播放器畢業(yè)論文 入口 定時器 t1 裝入定時常數 3c0bh 由音階值查音頻表重裝音頻初值 開中斷 由樂譜表取音階值 由樂譜表取節(jié)拍值 啟動定時器 t0、t1 發(fā)音定時沒到則等待 返 回 圖 5-10 演奏樂曲的流程圖 演奏樂曲主要源程序代碼如下: music: mov r3,#00h;音樂解碼器 next20: mov a, r3 mov d

44、ph, 52h mov dpl, 53h movca, a+dptr mov r2, a jz stop anl a, #0fh mov r1, a mov a, r2 swap a anl a, #0fh jnz sing clr tr0 jmp w11 單片機音樂播放器畢業(yè)論文 入口 調 music 子程序 查樂譜表 table10 關閉定時器 t0、t1 返 回 樂曲演奏結束? n y e 鍵是否按下? e 鍵是否按下? n y 停止播放樂曲 y n 具體的在這里任選一首樂曲(我和你)說明樂曲的播放。演奏一首樂曲的流程圖 如圖 5-11 所示。 圖 5-11 一首樂曲的流程圖 樂曲我和你

45、主要源程序如下: music1: ;第一首我和你 mov p2, #11111001b;顯示 1 mov r5, #11111001b mov 52h, #high table10 mov 53h, #low table10 lcall music ret 單片機音樂播放器畢業(yè)論文 第第6 6章章 系統的實現與調試系統的實現與調試 系統焊接與調試分為硬件的焊接調試與軟件的調試。硬件的焊接與調試側重于原理 設計的正確性驗證和焊接工藝;軟件的調試則側重于子模塊的功能驗證和模塊與模塊的 接口配合。下面結合本設計實例加以討論。 6.16.1 硬件系統的焊接與調試硬件系統的焊接與調試 硬件焊接前首先要仔

46、細核對硬件系統設計原理的正確性,包括參數選用的正確性與 原理的正確性。確認正確后在通用實驗板直接焊接實際電路來進行實物調試和驗證。 調試分為斷電調試和上電調試。 第一步:斷電調試第一步:斷電調試 為安全起見,首先必須進行斷電調試。斷電調試的內容至少包括短路檢測和原理正 確性確認。 (1)短路檢測 系統電路焊接完成后,必須進行短路檢測。檢測方法很簡單,選用合適的萬用表歐 姆擋(例如,20k 擋或 200k 擋) ,用紅黑表筆接電路板的+5v 電源的+、-極,如果存在充 放電現象(即電阻指示從大到小再到大或從小到大) ,最后電阻穩(wěn)定在一個適當的位置 (一般為幾千歐姆) ,則基本可排除系統短路現象。

47、如果無充放電現象或電阻值穩(wěn)定在很 小的位置(例如幾歐姆) ,則說明系統中可能存在短路故障,不能通電試驗,必須對系統 進行徹底排查,直至解決。 (2)原理正確性確認 關于這個問題,不同的電路有不同的工作原理,因此,必須針對具體電路進行具體 分析。這里按照圖 4-4,檢查各個器件的引腳是否連接正確。 第二步:通電調試第二步:通電調試 1) 系統時鐘是否起振 凡是微處理器系統,正常運行的必要條件是系統時鐘穩(wěn)定正常。在實際工作中,因 為各種原因導致系統時鐘不正常而出現系統無法正常運行的情況也時有出現,因此系統 時鐘是否起振應是通電檢查的首要一環(huán)。檢查方法如下: (1)邏輯筆法。利用邏輯筆看時鐘引腳 1

48、8、19,應出現脈沖跳變現象(即高低電平和 脈沖指示燈同時閃亮) ,否則,說明時鐘沒有起振。 (2)數字萬用表法。用數值萬用表的直流電壓擋(20v) ,分別測量 18、19 腳的電壓, 其中讀數應在 2.5v 左右。 單片機音樂播放器畢業(yè)論文 (3)示波器法。波形應為 6mhz 的脈沖方波。 2)復位電路是否正常 復位不正常也會導致系統不工作,例如,9 腳(復位腳)如果始終為高,則系統始終處于 復位狀態(tài);如果始終為低電平(不能產生復位所需的高電平脈沖),則系統也可能無法正常 工作.檢查的重點是相關電路是否正確。 6.26.2 軟件調試軟件調試 結構化軟件的調試一般可以將重點放在分模塊調試上,通

49、調是最后一環(huán)。軟件調試可 以采取離線調試和在線調試兩種方式。前者不需要硬件仿真器,借助于軟件仿真器即可; 后者一般需要仿真系統的支持。在本次設計中利用的是 keil c51 軟件仿真器,其評估版 本可以免費獲取,只是有 2kb 代碼限制。 基于 mcs51 的音樂播放器的設計與實現的調試,主要集中在對揚聲器的輸出音樂 部分的調試以及鍵盤控制和 led 顯示部分的調試上。在編寫完整的音樂播放器程序前, 可以先按照如下的順序分別調試各個功能模塊的程序。 6.2.16.2.1 測試測試ledled顯示模塊顯示模塊 (1)調試目的 使用 p2 口作為輸出口實現 led 的顯示,從而檢測 p2 口及 l

50、ed 顯示模塊是否正常工 作。 (2)調試程序 main: mov tmod, #10h ;定時器 t1 工作在方式 1 mov th1, #3ch mov tl1, #0b0h;t=50ms start: mov r1,#00h ;計數顯示初始化 mov dptr,#tab disp: mov a,r1 movc a,a+dptr ;查表得顯示的字型碼 mov p2,a ;數碼管顯示 0 acall delay1s ;延時 1s inc r1 ;計數值加 1 cjne r1,#10,disp ;秒值不到 10,繼續(xù)顯示;否則清 0 單片機音樂播放器畢業(yè)論文 mov r1,#00h ;計數值清

51、 0 sjmp disp tab: db 0c0h,0f9h,0a4h ;0,1,2 db 0b0h,99h,92h ;3,4,5 db 82h,0f8h,80h ;6,7,8 db 90h ;9 delay1s: ;延時子程序 mov r3,#14h ;置 50ms 計數循環(huán)初值 setbtr1 ;啟動 t1 lp1: jbc tf1,lp2 ;查詢計數溢出 sjmp lp1 ;未到 50ms 繼續(xù)計數 lp2: mov th1,#3ch ;重新置定時器初值 mov tl1,#0b0h djnz r3,lp1 ;未到 1s 繼續(xù)循環(huán) ret ;返回主程序 (3)調試結果 led 數碼管從 0

52、 到 9 自動循環(huán)顯示,表明硬件與軟件正確。 6.2.26.2.2 測試鍵盤控制模塊測試鍵盤控制模塊 (1)調試目的 通過鍵盤的控制可使 led 數碼管顯示相應的內容。 (2)調試程序 getkey: ;讀 a 鍵盤子程序 sa: jb p1.0, sb ;讀 a lcalldelay2 jb p1.0, sa jnb p1.0, $ mov p2, #10001000b;顯示 a mov r5, #10001000b mov a, #0ffh mov b, #0ah ret 單片機音樂播放器畢業(yè)論文 (3)調試結果 鍵盤按下后 led 顯示相應的內容,表明軟硬件正確。 6.2.36.2.3

53、測試測試p3.0p3.0口輸出口輸出 (1)調試目的 使用 p3.0 口做輸出口使揚聲器工作 (2)調試程序 start: mov sp, #60h mov tmod, #11h mov ie, #8ah mov ip, #08h ;t1 中斷優(yōu)先于 t0 中斷 mov th1, #3ch mov tl1, #0b0h;以上為系統初始化,t=50ms here:sjmp here int_t0: clr tr0 mov tl0, 20h mov th0, 21h cpl p3.0 setbtr0 reti (3)調試結果 揚聲器有聲音發(fā)出,揚聲器正常工作。 6.36.3 調試中遇到的問題及解決

54、調試中遇到的問題及解決 (1)編程前要畫流程圖,這樣會使思路清晰。 (2)編程時要注意,在程序開始時,要寫入各定時器中斷的入口地址。 (3)有時會出現程序一點錯誤也沒有,但就是不能正常運行的現象,最后我們發(fā)現 是因為程序中有的指令書寫得不規(guī)范導致的,例如有的 ret 返回指令一定要按正確格式 書寫。 單片機音樂播放器畢業(yè)論文 (4)程序中的跳轉指令的運用很重要,為保險起見,都用 ljmp,我們就遇到過跳轉指 令用錯程序無法正常運行的現象。 (5)編程過程中要注意加注釋或分割線,否則,在程序過長時容易變得很亂,不便 于查找或更改。 (6)開始時候沒有將單片機的第 31 號引腳接到高電平,結果使音樂播放器的播放 性能不穩(wěn)定(有時候能工作,有時候卻工作不了) ,當接一高電平以后,播放器能正常工 作了。 (7)開始沒有考慮鍵盤的消抖,造成的按鍵工作紊亂,具體的現象是:按 1 次鍵卻 被要機器認為是按了 1 次或多次,這就使播放器有時候可以正常工作,有時候卻不可以。 給鍵盤程序加了消抖呼程序以后,按鍵就工作正常了。 (8)兩個定時器同時工作,存在中斷時序問題,剛開始時我們把定時器 1 設定在方 式 3,計 250us

溫馨提示

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

評論

0/150

提交評論