單片機音樂播放器設(shè)計報告.doc
《單片機音樂播放器設(shè)計報告.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機音樂播放器設(shè)計報告.doc(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
目 錄 1 方案與論證 1 1 1 顯示電路 1 1 2 時鐘電路 1 2 電子音樂產(chǎn)生原理 1 2 1 音調(diào) 1 2 2 節(jié)拍 3 3 系統(tǒng)硬件設(shè)計 6 3 1 系統(tǒng)總框圖 6 3 2 電路設(shè)計 7 3 2 1 單片機時鐘電路 7 3 2 2 復位電路 8 3 2 3 電源電路 8 3 2 4 USB 程序下載電路 9 3 2 5 蜂鳴器驅(qū)動電路 10 3 2 6 顯示電路 11 3 2 8 矩陣電路 11 4 系統(tǒng)軟件設(shè)計 12 5 總結(jié)與展望 14 6 參考文獻 14 附 錄 15 附錄 1 系統(tǒng)總電路 15 附錄 2 源代碼 16 1 方案與論證 1 1 顯示電路 方案 1 采用LED數(shù)碼管來顯示 電路簡單 成本低 方案 2 采用LCD液晶顯示器來顯示 電路簡單 成本高 方案3 采用TFT真彩液晶顯示 電路復雜 成本高 但顯示的分辨率高 綜上所述 選擇方案一進行設(shè)計 1 2 時鐘電路 方案 1 選擇DS1302實時時鐘芯片來實現(xiàn)音樂播放器 時間準確 但要增加額外 開銷 方案 2 選擇單片機的軟件實時來實現(xiàn)音樂播放器 靈活性高 時間不準確 方案 3 選擇單片機內(nèi)部可編程定時器來實現(xiàn)音樂播放器 在不增加額外的開銷 前提下 時間可以做到準確 綜上所述 選擇方案三進行設(shè)計 2 電子音樂產(chǎn)生原理 單片機發(fā)音原理 單片機演奏音樂基本是單音頻率 它不包含相應幅度的諧波頻 率 也就是說不能象電子琴那樣能奏出多種音色的聲音 但一定要弄清楚兩個概念即 可 也就是 音調(diào) 和 節(jié)拍 音調(diào) 表示一個音符唱多高的頻率 節(jié)拍 表示一個音符唱多長的時間 下面 就此兩點 闡述說明 2 1 音調(diào) 在音樂中所謂 音調(diào) 其實就是我們常說的 音高 在音樂中常把中央 C 上方 的 A 音定為標準音高 其頻率 f 440Hz 其余與其比較 f1 和 f2 為兩個音符 當這兩 個音符的頻率相差一倍時 也即 f2 2 f1 時 則稱 f2 比 f1 高一個倍頻程 在音樂中 1 與 2 與 正好相差一個倍頻程 在音樂學中稱它相差一個八度音 在一個 八度音內(nèi) 有 12 個半音 以 1 i 八音區(qū)為例 12 個半音是 1 1 1 2 2 2 2 3 3 4 4 4 4 5 5 一 5 5 6 6 6 6 7 7 i 這 12 個音階的分度基本上是以對數(shù)關(guān)系來劃分的 如果我們只要知道了這十二個音符 的音高 也就是其基本音調(diào)的頻率 我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音 調(diào)的頻率 確定一個頻率所對應的定時器的定時初值的方法 以標準音高 A 為例 標準音高 A 的頻率 f 440 Hz 其對應的周期為 T 1 f 1 440 2272 s 因此 需要在單片機 I O 端口輸出周期為 T 2272 s 的方波脈沖 如下圖所示 圖 1 方波脈沖 由上圖可知 單片機上對應喇叭的 I O 口來回取反的時間應為 t T 2 2272 2 1136 s 此處分兩種方式敘述 請比較選用 其實結(jié)果相同 這個時間 t 也就是單片機上定時器應有的中斷觸發(fā)時間 一般情況下 單片機奏樂時 其定時器 為工作方式 1 它以振蕩器的十二分頻信號為計數(shù)脈沖 設(shè)振蕩器頻率為 f0 則定時 器的予置初值由下式來確定 t 12 T ALL THL f0式中 T ALL 216 65536 T HL為定時器待確定的計數(shù)初值 因此定時器的高低計數(shù)器的初值為 TH THL 256 TALL t f0 12 256 TL THL 256 TALL t f0 12 256 將 t 1136 s 代入上面兩式 注意 計算時應將時間和頻率的單位換算一致 即 可求出標準音高 A 在單片機晶振頻率 f0 12Mhz 定時器在工作方式 1 下的定時器高低 計數(shù)器的預置初值為 TH440Hz 65536 1136 12 12 256 FBH TL440Hz 65536 1136 12 12 256 90H 根據(jù)上面的求解方法 我們就可求出其他音調(diào)相 應的計數(shù)器的予置初值 假設(shè)單片機晶振頻率 f0 12Mhz 定時器在工作方式 1 計數(shù) 脈沖值與頻率的關(guān)系為 N FI 2 FR 其中 N 計數(shù)值 FI 內(nèi)部計時一次為 1us 故其頻率為 1MHz FR 要產(chǎn)生 的頻率 其計數(shù)值的求法為 T 65536 N 65536 F I 2 FR 則標準音高 A 頻率 f 440 Hz 的計數(shù)值為 T 65536 N 65536 F I 2 FR 65536 1000000 2 FR 65536 500000 440 65536 1136 64400 0FB90H 下面給出 C 調(diào)各音符頻率值和定時器 定時初值 晶振頻率 f0 12Mhz 定時器在工作方式 1 表 1 C 調(diào)各音符頻率值和定時初值對照表 C 調(diào) 音符 1 1 2 2 3 4 4 5 5 6 6 7 頻率 Hz 262 277 293 311 329 349 370 392 415 440 466 494 TH TL F88B F8F2 F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FBCF FC0B C 調(diào) 音符 1 1 2 4 5 6 頻率 Hz 523 553 586 621 658 697 739 783 830 879 931 987 TH TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05 C 調(diào) 音符 1 1 2 2 3 4 4 5 5 6 6 7 頻率 Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1791 TH TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02 對于非 C 調(diào)的歌曲 要對各音符的頻率做相應的變化 調(diào)號 音樂上指用以確定樂曲主音高度的符號 升 C 調(diào) 1 C 也就是降 D 調(diào) 1 bD 277 頻率 升 D 調(diào) 1 D 也就是降 E 調(diào) 1 bE 311 升 F 調(diào) 1 F 也就是降 G 調(diào) 1 bG 369 升 G 調(diào) 1 G 也就是降 A 調(diào) 1 bA 415 升 A 調(diào) 1 A 也就是降 B 調(diào) 1 bB 4 所謂 1 A 就是說 這首歌曲的 導 即作為基調(diào)的中音 DO 要唱得同 A 音 符一樣高 其它各音符依次向后遞推 通常把這首歌曲叫做 A 調(diào)歌曲 或叫 唱 A 調(diào) 1 C 就是說 這首歌曲的 導 要唱得同 C 一樣高 或者說 這歌曲唱 C 調(diào) 同樣 是 導 不同的調(diào)唱起來的高低是不一樣的 在遞推的時候要嚴格按各音符間音程關(guān) 系進行 全音還是半音 只有 3 4 和 7 i 之間是半音關(guān)系 其它音之間都是全音關(guān) 系 下面以 1 D 調(diào)進行說明 參照上面的鋼琴鍵盤圖和表 1 確定出 D 調(diào)各音符對應的頻率值為 到后來制表 時就以各音符對應的新頻率值確定定時初值 2 2 節(jié)拍 音符的節(jié)拍我們可以舉例來說明 在一張樂譜中 我們經(jīng)常會看到這樣的表達式 如 1 C 1 G 等等 這里 1 C 1 G 表示樂譜的曲調(diào) 和我們前面所談的音調(diào)43 有很大的關(guān)聯(lián) 就是用來表示節(jié)拍的 以 為例加以說明 它表示樂譜中以四4343 分音符為節(jié)拍 每一小結(jié)有三拍 比如 其中 1 2 為一拍 3 4 5 為一拍 6 為一拍共三拍 1 2 的時長為四分音符 的一半 即為八分音符長 3 4 的時長為八分音符的一半 即為十六分音符長 5 的 時長為四分音符的一半 即為八分音符長 6 的時長為四分音符長 那么一拍到底該唱 多長呢 一般說來 如果樂曲沒有特殊說明 一拍的時長大約為 400 500ms 我們以 一拍的時長為 400ms 為例 則當以四分音符為節(jié)拍時 四分音符的時長就為 400ms 八 分音符的時長就為 200ms 十六分音符的時長就為 100ms 若樂譜有特別說明則另行對 待 如有樂譜中注明每分鐘 86 拍 則一拍時間為 60 86s 698ms 可見 在單片機上控 制一個音符唱多長可采用循環(huán)延時的方法來實現(xiàn) 首先 我們確定一個基本時長的延 時程序 比如說以十六分音符的時長為基本延時時間 那么 對于一個音符 如果它 為十六分音符 則只需調(diào)用一次延時程序 如果它為八分音符 則只需調(diào)用二次延時 程序 如果它為四分音符 則只需調(diào)用四次延時程序 依次類推 具體來說 每個音符使用一個字節(jié) 字節(jié)的高 4 位代表音符的高低 低 4 位 代表音符的節(jié)拍 節(jié)拍與節(jié)拍碼的對照 如下表所示 表 2 節(jié)拍與節(jié)拍碼的對照表 節(jié)拍碼 節(jié)拍數(shù) 節(jié)拍碼 節(jié)拍數(shù) 1 十六分音符 1 4 拍 為 1DELAY 1 1 8 拍 2 八分音符 2 4 拍 2 1 4 拍 3 3 4 拍 3 3 8 拍 4 四分音符 1 拍 4 1 2 拍 5 1 又 1 4 拍 5 5 8 拍 6 1 又 1 2 拍 6 3 4 拍 8 二分音符 2 拍 8 1 拍 10 A 2 又 1 2 拍 A 1 又 1 4 拍 12 C 3 拍 C 1 又 1 2 拍 15 F 3 又 3 4 拍 16 全音符 4 拍 以 1 4 拍 十六分音符 為一個基準定時單位 1DELAY 則 2 4 拍 八分音 符 為 2DELAY 1 拍 四分音符 為 4DELAY 2 拍 二分音符 為 8DELAY 4 拍 全音符 為 16DELAY 1 4 和 1 8 節(jié)拍的時間設(shè)定 如下表所示 表 3 各調(diào)節(jié)拍時間設(shè)定表 1 4 節(jié)拍的時間設(shè)定 1 8 節(jié)拍的時間設(shè)定 曲調(diào)值 DELAY 曲調(diào)值 DELAY 調(diào) 4 4 125ms 調(diào) 4 4 62ms 調(diào) 3 4 187ms 調(diào) 3 4 94ms 調(diào) 2 4 250ms 調(diào) 2 4 125ms 通過上面介紹的音符音調(diào)和節(jié)拍的相關(guān)知識 以及它們在單片機系統(tǒng)中的確定方 法 我們就可以在單片機上實現(xiàn)演奏音樂了 具體的實現(xiàn)方法為 將樂譜中的每個音 符的音調(diào)及節(jié)拍變換成相應的音調(diào)參數(shù)和節(jié)拍參數(shù) 將他們做成數(shù)據(jù)表格 存放在存 儲器中通過程序取出一個音符的相關(guān)參數(shù) 播放該音符 該音符唱完后 接著取出下 一個音符的相關(guān)參數(shù) 如此直到播放完畢最后一個音符 根據(jù)需要也可循環(huán)不停 地播放整個樂曲 請注意 用單片機上實現(xiàn)音樂演奏關(guān)鍵在于 根據(jù)樂譜制作出數(shù)據(jù) 表格 編程在其次 這個過程很耗費時間和精力 另外 對于樂曲中的休止符 一般 將其音調(diào)參數(shù)設(shè)為 FFH 或 00H 其節(jié)拍參數(shù)與其它音符的節(jié)拍參數(shù)確定方法一致 樂曲 結(jié)束用節(jié)拍參數(shù)為 00H 來表示 實例說明建立音樂的方法 1 建立簡譜對應的簡譜碼 T 值及節(jié)拍數(shù)表 畫在草稿紙上 先對照歌曲的簡譜把其中所有出現(xiàn)的音符找出 從 低音到高音依次排序 確定各音的數(shù)值 編寫查表程序時將此值減 1 即得對應音符相 對于 TABL1 表頭的偏移量 對于不是 C 調(diào)的歌曲 要對各音符的頻率做相應的變化 對照歌曲的簡譜確定各音符的節(jié)拍數(shù)相對于基準定時單位的倍數(shù) 從小到大排列 各音符時值的倍數(shù)關(guān)系是確定不變的 關(guān)鍵要正確確定其值 這需要懂一點簡譜知識 才能準確的確定出樂譜中音符節(jié)拍數(shù) 以歌曲蘭花草為例 如下表 表 4 簡譜 發(fā)音 這一列知道就行不必寫出 簡譜碼 T 值 節(jié)拍碼 節(jié)拍數(shù) 低 3 低音 MI 1 64021 1 1 4 拍 低 4 低音 FA 2 64103 2 2 4 拍 低 5 低音 SO 3 64260 3 3 4 拍 低 6 低音 LA 4 64400 4 1 拍 低 7 低音 TI 5 64254 5 1 又 1 4 拍 中 1 中音 DO 6 64580 6 1 又 1 2 拍 中 2 中音 RE 7 64684 8 2 拍 中 3 中音 MI 8 64777 10 A 2 又 1 2 拍 中 4 中音 FA 9 64820 12 C 3 拍 中 5 中音 SO A 64898 15 F 3 又 3 4 拍 中 6 中音 LA B 64968 16 4 拍 中 7 中音 TI C 65030 休止符 不發(fā)音 0 關(guān)定時器 注 以四分音符為一拍 現(xiàn)在以 1 4 拍為定時的基準單位 為 1DELAY 則 1 拍應 為 4 倍 DELAY 依次類推 所以只要求得 1 4 拍的 DELAY 時間 其余的節(jié)拍數(shù)就是它的 倍數(shù) 2 把各音符頻率對應的定時 T 值建立在 TABLE1 表 各音符頻率對應的定時值 表 TABLE1 DW 64021 64103 64260 64400 DW 64524 64580 64684 64777 DW 64820 64898 64968 65030 3 根據(jù)第一步建立的表 建立樂曲對應音符 節(jié)拍碼表 TABLE 其中簡譜碼 音符 在高 4 位 但是此種方法只能排 16 個音 若樂 譜中音符較多可占一個字節(jié)來表示 節(jié)拍碼 節(jié)拍數(shù) 在低 4 位 但此種方法也只能 最大延時 15 個基準定時單位的時間 TABLE 歌曲蘭花草的音符與節(jié)拍碼表 高 4 位為簡譜碼 音符 低 4 位為該音符對應的節(jié)拍數(shù) DB 42H 82H 82H 82H 84H 02 72H DB 62H 72H 62H 52H 48H DB0B2H 0B2H 0B2H 0B2H 0B4H 02H 0A2HDB12H 0A2H 0D2H 92H 88H DB 82H 0B2H 0B2H 0A2H 84H 02H 72H DB 62H 72H 62H 52H 44H 02H 12H DB 12H 62H 62H 52H 44H 02H 82H DB 72H 62H 52H 32H 48H DB 00H 3 系統(tǒng)硬件設(shè)計 3 1 系統(tǒng)總框圖 電路主要由AT89C51芯片 LED發(fā)光二極管 喇叭 晶振電路組成 由引腳輸出定 時器產(chǎn)生的各種固定頻率的方波信號 然后由喇叭產(chǎn)生各種頻率的聲音 同理 方波 信號通過發(fā)光二極管可以使二極管閃爍發(fā)光 產(chǎn)生韻律燈的效果 由于該方案中使用 內(nèi)部振蕩電路 XTAL1 XTAL2引腳外界石英晶體和微調(diào)電容構(gòu)成的晶振電路 晶振電路 存儲器擴展電路 4 4 矩陣電路 A T 8 9 C 5 1 復位電路 蜂鳴器 數(shù)碼管 圖2 系統(tǒng)框圖 3 2 電路設(shè)計 音樂播放器的硬件電路主要是以下8大部分 3 2 1 單片機時鐘電路 1 2 3 4 5 6 A B C D 654321 D C B A Title Nu mber R ev isio nS ize B Date 1 2 Ju n 2 0 11 S heet o f F ile F 動動 p ro tel 動動動動動動 動動動動 動動動動動動 Dd bDrawn B y C 4 3 0p C 5 3 0p Y2 1 1 0 59 2 M X 1 X 2 圖3 單片機時鐘電路 單片機時鐘電路是用來配合外部晶體實現(xiàn)振蕩的電路 這樣可以為單片機提供運 行時鐘 如果運行時鐘為 0 的話 單片機就不工作 當然超出單片機的工作頻率的時 鐘也會導致單片機不工作 在 MCS 51 單片機片內(nèi)有一個高增益的反相放大器 反相 放大器的輸入端為 XTAL1 輸出端為 XTAL2 由該放大器構(gòu)成的振蕩電路和時鐘電路一 起構(gòu)成了單片機的時鐘方式 根據(jù)硬件電路的不同 單片機的時鐘連接方式可分為內(nèi) 部時鐘方式和外部時鐘方式 在內(nèi)部方式時鐘電路中 必須在 XTAL1 和 XTAL2 引腳兩 端跨接石英晶體振蕩器和兩個微調(diào)電容構(gòu)成振蕩電路 通常 C1 和 C2 一般取 30pF 晶 振的頻率取值在 1 2MHz 12MHz 之間 對于外接時鐘電路 要求 XTAL1 接地 XTAL2 腳 接外部時鐘 對于外部時鐘信號并無特殊要求 只要保證一定的脈沖寬度 時鐘頻率 低于 12MHz 即可 晶體振蕩器的振蕩信號從 XTAL2 端送入內(nèi)部時鐘電路 它將該振蕩 信號二分頻 產(chǎn)生一個兩相時鐘信號 P1 和 P2 供單片機使用 時鐘信號的周期稱為狀 態(tài)時間 S 它是振蕩周期的 2 倍 P1 信號在每個狀態(tài)的前半周期有效 在每個狀態(tài)的 后半周期 P2 信號有效 CPU 就是以兩相時鐘 P1 和 P2 為基本節(jié)拍協(xié)調(diào)單片機各部分有 效工作的 3 2 2 復位電路 S1RETC2uf0K4V 圖4 復位電路 復位電路就好比電腦的重啟部分 當電腦在使用中出現(xiàn)死機 按下重啟按鈕電腦 內(nèi)部的程序從頭開始執(zhí)行 單片機也一樣 當單片機系統(tǒng)在運行中 受到環(huán)境干擾出 現(xiàn)程序跑飛的時候 按下復位按鈕內(nèi)部的程序自動從頭開始執(zhí)行 在單片機系統(tǒng)中 系統(tǒng)上電啟動的時候復位一次 當按鍵按下的時候系統(tǒng)再次復位 如果釋放后再按下 系統(tǒng)還會復位 所以可以通過按鍵的斷開和閉合在運行的系統(tǒng)中控制其復位 在電路圖中 電容的的大小是 10uF 電阻的大小是 10k 所以根據(jù)公式 可以算 出電容充電到電源電壓的 0 7 倍 單片機的電源是 5V 所以充電到 0 7 倍即為 3 5V 需要的時間是 10K 10UF 0 1S 也就是說在電腦啟動的 0 1S 內(nèi) 電容兩端的電壓時在 0 3 5V 增加 這個時候 10K 電阻兩端的電壓為從 5 1 5V 減少 串聯(lián)電路各處電壓之和 為總電壓 所以在 0 1S 內(nèi) RST 引腳所接收到的電壓是 5V 1 5V 在 5V 正常工作的 51 單片機中小于 1 5V 的電壓信號為低電平信號 而大于 1 5V 的電壓信號為高電平信 號 所以在開機 0 1S 內(nèi) 單片機系統(tǒng)自動復位 RST 引腳接收到的高電平信號時間為 0 1S 左右 3 2 3 電源電路 AC1V 23 4DkBP 0RK uf75inGdLM8NJO9s 圖5 電源電路 電 源 電 路 是 指 提 供 給 用 電 設(shè) 備 電 力 供 應 的 電 源 部 分 的 電 路 設(shè) 計 使 用 的 電 路 形 式 和 特 點 電 源 有 交 流 電 源 也 有 直 流 電 源 直 流 電 源 電 路 分 為 開 關(guān) 電 源 和 非 開 關(guān) 電 源 兩 種 形 式 電 路 也 大 不 相 同 開 關(guān) 電 源 一 般 不 使 用 變 壓 器 非 開 關(guān) 電 源 是 傳 統(tǒng) 的 設(shè) 計 方 式 電 源 電 路 里 多 使 用 變 壓 器 來 變 壓 后 再 整 流 濾 波 的 方 式 幾 個 組 件 通 過 導 線 互 相 連 接 形 成 電 路 也 可 以 稱 為 網(wǎng)絡 更 特 定 地 電 路 是 可 以 形 成 閉合回路 的 網(wǎng) 絡 支 路 是 電 路 的 一 部 分 每 一 個 組 件 都 有 它 獨 屬 的 支 路 任 意 兩 條 或 多 條 支 路 的 相 交 點 稱 為 節(jié) 點 幾 個 組 件 通 過 導 線 互 相 連 接 形 成 電 路 也 可 以 稱 為 網(wǎng) 絡 更 特 定 地 電 路 是 可 以 形 成 閉 合 回 路 的 網(wǎng) 絡 3 2 4 USB 程序下載電路 6IbUS 圖6 USB下載電路 USB 即 Universal Serial Bus 中文名稱為通用串行總線 這是近幾年逐步 在 PC 領(lǐng)域廣為應用的新型接口技術(shù) USB 接口具有傳輸速度更快 支持熱插拔以及連 接多個設(shè)備的特點 目前已經(jīng)在各類外部設(shè)備中廣泛的被采用 目前 USB 接口有兩種 USB1 1 和 USB2 0 USB 接口的輸出電壓為直流 5V 輸出電流不大于 500 毫安 PC 機的 USB 接口可以連接外設(shè) 復合設(shè)備和集線器 最多可以連接 5 級集線器 最多可連接 127 臺外設(shè)和集線器 USB1 1 的高速模式為 12Mb s 低速模式為 1 5Mb s USB 采用 半雙工傳輸方式 但當一個 USB 連接多個設(shè)備時 各個設(shè)備共享 12Mb s 的傳輸帶寬 在傳輸?shù)男畔⒅羞€攜帶有狀態(tài) 控制和差錯校驗信息 實際的信息傳輸速率要低一些 只連接一臺設(shè)備時 最高有效傳輸速率約為 9 6Mb s USB2 0 的最高傳輸速率為 480Mb s USB 采用平衡傳輸方式 抗干擾性好 USB 帶糾錯能力 可完成對軟件透明 的檢錯和重發(fā) 3 2 5 蜂鳴器驅(qū)動電路 R3ES2Q1890JDPAKVC 圖7 蜂鳴器驅(qū)動電路 蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器 他廣泛應用于計算機 打印機 復印機 報警器 電話機等電子產(chǎn)品中作發(fā)聲器件 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型 電磁式蜂鳴器由振蕩器 電磁線圈 磁鐵 振動膜片及外殼等組成 接通電源后 振蕩器產(chǎn)生的音頻信號電流通過電磁線圈 使電磁線圈產(chǎn)生磁場 振動膜片在電磁線 圈和磁鐵的相互作用下 周期性地振動發(fā)聲 蜂鳴器發(fā)聲原理是電流通過電磁線圈 使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的 因此需要一定的電流才能驅(qū)動它 單片機 IO 引腳輸出的電流較小 單片機輸出的 TTL 電平基本上驅(qū)動不了蜂鳴器 因此需要增加一個電流放大的電路 S51 增強型單片機實 驗板通過一個三極管 C8550 來放大驅(qū)動蜂鳴器 原理圖見下面圖 3 蜂鳴器的正極接到 VCC 5V 電源上面 蜂鳴器的負極接到三極管的發(fā)射極 E 三極管的基級 B 經(jīng)過限流電阻 R1 后由單片機的 P3 7 引腳控制 當 P3 7 輸出高電平時 三極管 T1 截止 沒有電流流過線圈 蜂鳴器不發(fā)聲 當 P3 7 輸出低電平時 三極管 導通 這樣蜂鳴器的電流形成回路 發(fā)出聲音 因此 我們可以通過程序控制 P3 7 腳 的電平來使蜂鳴器發(fā)出聲音和關(guān)閉 3 2 6 顯示電路 本設(shè)計顯示是采用液晶顯示器LCD1602進行顯示 LCD1602的功能 P0口是一個地 址 數(shù)據(jù)復用的雙向I O口 當使用P0口訪問外部存儲器和數(shù)據(jù)存儲器時 P0口內(nèi)部已 有上拉電阻 當 P0口作程序檢驗 輸出指令字節(jié)時 必須外界上拉電阻 LCD1602的控 制信號RS RW E分別接到單片機的P2 0 P2 1 P2 2 本設(shè)計中主要用LCD1602顯示 開機畫 VS1D23R4W560789BLAKJCP GN 圖8 液晶顯示 3 2 8 矩陣電路 采用4 4行列式鍵盤來實現(xiàn)選擇歌曲播放 以及對歌曲號做基本的操作 即上一曲 下一曲以及暫停 播放 H 圖8 矩陣電路 4 系統(tǒng)軟件設(shè)計 本設(shè)計采用了自定義下的流程圖 主要程序流程有 主程序 判斷有無按鍵子程 序 鍵盤掃描子程序 顯示鍵號 歌曲號子程序 開機畫面子程序 按鍵值播放歌曲子 程序等 程序中使用了兩個定時中斷 定時中斷 0 用于產(chǎn)生整個音程的頻率 以便驅(qū) 動揚聲器 程序的總體流程是當 P1 由按鍵按下時 讀鍵盤 并儲存鍵值 若為 F 鍵則 通過查表的方式 調(diào)用字符串下手鍵號 曲目子程序 將鍵號顯示出來 若為 1 A 程 序根據(jù)儲存的鍵號 將相應歌曲的表頭地主賦給 DPTR 取出曲譜 判斷是否為休止符 通過查表的方式將表中的定時器初值裝入定時器 T0 在定時中斷 0 里面 重裝初值 將輸出口取反 完成發(fā)聲 在此設(shè)計中 每發(fā)一個調(diào) 調(diào)用一個 30MS 的延時 一次當 做曲譜的節(jié)拍碼 在此過程中若有功能鍵按下 將當前歌曲的表頭地址加 513 減 513 或等待 于此同時調(diào)用播放時間初始化子程序 顯示 00 00 00 裝定時器 T1 的初值 準備更新播放時間 程序流程如圖 9 所示 開始 顯示初始 化 內(nèi)存初始 化 有無按鍵 判斷鍵值并存儲 取鍵值 ASCII 碼顯 示 1 A 鍵 播放時間初始 化 按鍵值存儲相應曲譜首 地址 開機畫面 取樂譜進行演奏 F 鍵 有無功能鍵 裝 T1 初值刷新播放時間 單獨唱完 全部唱完 結(jié)束 暫停 上 1 曲 下 1 曲 樂譜首地址加 513 樂譜首地址減 513 等待 再一次按下 下 是 無 有 否 否 是 是 是 是否 否 否 否 否 有 無 是 是 是 圖 9 音樂播放器程序流程圖 5 總結(jié)與展望 通過這幾天的單片機的實訓 我在理論的基礎(chǔ)上更深刻的掌握了單片機的深層內(nèi) 容及實際生活中的應用 實訓鍛煉了自己的動手能力和思維能力 還有在軟件方面的 編程能力 讓我受益匪淺 學會了如何制作單片機應用程序 并且可以在今后的日常 生活中靈活運用 在單片機音樂播放器的制作過程中 在設(shè)計中因為牌組的方向出現(xiàn)錯誤 導致電 路無法連接成功 但是經(jīng)過修改正確后 效果還是比較理想 也說明動手能力還有不 足 仍有待提高 現(xiàn)將本次的設(shè)計總結(jié)如下 5 1 加深了對 16 位單片機結(jié)構(gòu)和原理的了解 5 2 基本掌握了用 Altium Desinger Summer09 Keil uvision4 Protues7 Profession Microsoft Visio 的制圖的方法 5 3 再次溫習數(shù)字電路與模擬電路 提高了分析電路原理圖的能力 綜合了解了不同的 使用與制圖方法 總結(jié)了分析電路原理的方法 5 4 遇到不懂時 多動腦 多看 多聽 虛心接受別人給予的意見但不改變自己的初衷 在肯定成績的同時也要指出缺點和不足 5 5 今后 我會更加努力學習 認真掌握老師所講的知識 勤動腦 勤動手 相信有一 天 我會以優(yōu)秀的成績來回報老師 回報學校 回報社會 6 參考文獻 1 侯玉寶 陳忠平 李成群 基于 Proteus 的 51 系列單片機設(shè)計與仿真 M 北京 電子工業(yè)出版 社 2008 2 沈德金 陳粵初 MCS 51 系列單片機接口電路與應用程序?qū)嵗?M 北京航空航天大學出版 社 1990 3 胡漢才 單片機原理及接口技術(shù) M 清華大學出版社 1996 4 何立民 MCS 51 系列單片機應用系統(tǒng)設(shè)計 M 北京航空航天大學出版社 1990 1 5 張毅剛 彭喜元 姜守達 喬立巖 新編 MCS 51 系列單片機應用設(shè)計 M 哈爾濱工業(yè)大學出 版社 2003 6 附 錄 附錄 1 系統(tǒng)總電路 P 02345678RST9 XD INWALGE OVpcCUKFYMHzJB Qinoutsb 附錄 2 源代碼 include 包含頭文件 一般情況不需要改動 頭文件包含 特殊功能寄存器的定義 sbit speaker P1 2 定義音樂輸出端口 需要連接到對應的喇叭 請參 考電路圖 unsigned char timer0h timer0l time 送別數(shù)據(jù)表 code unsigned char sszymmh 6 2 3 5 2 1 3 2 2 5 2 2 1 3 2 6 2 1 5 2 1 6 2 4 3 2 2 5 2 1 6 2 1 5 2 2 3 2 2 1 2 1 6 1 1 5 2 1 3 2 1 2 2 4 2 2 3 3 2 1 5 2 2 5 2 1 6 2 1 3 2 2 2 2 2 1 2 4 5 2 3 3 2 1 2 2 1 1 2 1 6 1 1 1 2 1 5 1 6 0 0 0 音階頻率表 高八位 code unsigned char FREQH 0 xF2 0 xF3 0 xF5 0 xF5 0 xF6 0 xF7 0 xF8 0 xF9 0 xF9 0 xFA 0 xFA 0 xFB 0 xFB 0 xFC 0 xFC 1 2 3 4 5 6 7 8 i 0 xFC 0 xFD 0 xFD 0 xFD 0 xFD 0 xFE 0 xFE 0 xFE 0 xFE 0 xFE 0 xFE 0 xFE 0 xFF 音階頻率表 低八位 code unsigned char FREQL 0 x42 0 xC1 0 x17 0 xB6 0 xD0 0 xD1 0 xB6 0 x21 0 xE1 0 x8C 0 xD8 0 x68 0 xE9 0 x5B 0 x8F 1 2 3 4 5 6 7 8 i 0 xEE 0 x44 0 x6 B 0 xB4 0 xF4 0 x2D 0 x47 0 x77 0 xA2 0 xB6 0 xDA 0 xFA 0 x16 延時函數(shù) void delay unsigned char t unsigned char t1 unsigned long t2 for t1 0 t1 t t1 for t2 0 t2 8000 t2 TR0 0 定時器中斷函數(shù) void t0int interrupt 1 TR0 0 speaker speaker TH0 timer0h TL0 timer0l TR0 1 音樂處理函數(shù) void song TH0 timer0h TL0 timer0l TR0 1 delay time 主函數(shù) void main void unsigned char k i TMOD 1 置 CT0 定時工作方式 1 EA 1 ET0 1 IE 0 x82 CPU 開中斷 CT0 開中斷 while 1 i 0 while i 100 音樂數(shù)組長度 唱完從頭再來 k sszymmh i 7 sszymmh i 1 1 timer0h FREQH k timer0l FREQL k time sszymmh i 2 i i 3 song- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機 音樂 播放 設(shè)計 報告
鏈接地址:http://m.appdesigncorp.com/p-9613442.html