6=440Hz,#6=440*1.059463=466.2Hz,7=440*1.059463*1.059463=493.9Hz?
#5=440÷1.059463=415.3Hz
5=440÷1.059463÷1.059463=392Hz
相鄰半音階的關(guān)系為1.059463倍,只要知道"A"=440Hz,即可算出其余半音階的頻率,比A高的用"*",比A低的用"÷"
1.059463=12√2(即2開12次根)
440Hz為鋼琴中央C組的A(即"6"音)
ok
這是本人一個產(chǎn)品中的音樂單元,很完整,供愛好者參考.?
???????ORG?????0000H
????????AJMP????CSH?????????????主程序進入點
????????ORG?????000BH
????????LJMP????TIM0????????????定時中斷T0入口
;
;**********
;*?初始化?*
;**********
;
????????ORG?????0020H
CSH:????MOV?????R0,#7FH?????????內(nèi)部RAM(00H~7FH)清零
CSH1:???MOV?????@R0,#00H
????????DJNZ????R0,CSH1
????MOV?????SP,#60H?????????堆棧60H~7FH,【使用89C51】
????????MOV?????TMOD,#01H???????TMOD=11H,T0作16位計數(shù)器(4M晶振)
????????CLR?????TCON.4??????????T0禁止動作
????????SETB????IE.1????????????T0允許中斷
????????SETB????PT0?????????????T0中斷優(yōu)先
????????SETB????IE.7????????????系統(tǒng)允許中斷
;
;**********
;*?主程序?*
;**********
;
MAIN:???MOV?????5CH,#00?????????取簡碼譜指針
????????LCALL???MUSIC
????MOV?????5CH,#49?????????取簡碼譜指針
????????LCALL???MUSIC
????MOV?????5CH,#66?????????取簡碼譜指針
????????LCALL???MUSIC
????MOV?????5CH,#100????????取簡碼譜指針
????????LCALL???MUSIC
????MOV?????5CH,#108????????取簡碼譜指針
????????LCALL???MUSIC
????MOV?????5CH,#136????????取簡碼譜指針
????????LCALL???MUSIC
????MOV?????5CH,#174????????取簡碼譜指針
????????LCALL???MUSIC
????????AJMP????MAIN
;
;*************************
;*?音樂子程序?MUSIC??????*
;*?入口:?5CH←簡碼譜指針?*
;*************************
;
MUSIC:??MOV?????A,5CH???????????簡碼譜指針裝入A
????????MOV?????DPTR,#TABLE?????至TABLE取簡碼
????????MOVC????A,@A+DPTR
????????MOV?????R2,A????????????取到的簡碼暫存于R2
????????JZ??????END1????????????是否取到00(結(jié)束碼)?
????????ANL?????A,#0FH??????????不是,則取低四位(節(jié)拍碼)
????????MOV?????R6,A????????????將節(jié)拍碼存入R6
????????MOV?????A,R2????????????將取到的簡碼再裝入R2
????????SWAP????A???????????????高低四位交換
????????ANL?????A,#0FH??????????取低四位(音符碼)
????????JNZ?????SING????????????取到的音符碼是否為0?
????????CLR?????TR0?????????????是,則不發(fā)音
????????AJMP????D1??????????????跳到D1
;
SING:???DEC?????A???????????????取到的音符碼減1
????????MOV?????4BH,A???????????存入(4BH)
????????RL??????A???????????????乘2
????????MOV?????DPTR,#TABLE1????至TABLE1取相對的高字節(jié)計數(shù)值
????????MOVC????A,@A+DPTR
????????MOV?????TH0,A???????????取到的高字節(jié)存入TH0
????????MOV?????4AH,A???????????取到的高字節(jié)存入(4AH)
????????MOV?????A,4BH???????????再裝入取到的音符碼
????????RL??????A???????????????乘2
????????INC?????A???????????????加1
????????MOVC????A,@A+DPTR???????至TABLE1取相對的低位
????????MOV?????TL0,A???????????取到的低字節(jié)存入TL0
????????MOV?????49H,A???????????取到的低字節(jié)存入(49H)
????????SETB????TR0?????????????啟動TIMER0
D1:?????CALL????DELAY???????????基本單位時間1/4拍187毫秒
????????INC?????5CH?????????????取簡碼譜指針加1
????????AJMP????MUSIC???????????取下一個碼
DD1:????RET
;
STOP:???NOP
;????JB??????P3.7,STOP1????在軟件延時中摻插做其他動作
;???????SETB????P2.7????????????P2.7←"1"
????????NOP
????????NOP
STOP0:??NOP
????????RET
STOP1:??NOP
;????JB??????P3.6,STOP0????在軟件延時中摻插做其他動作
;???????SETB????P2.6????????????P2.6←"1"
????????RET
;
END1:???CLR?????TR0?????????????停止TIMER0
????????RET
;
TIM0:???PUSH????A???????????????將A的值暫存于堆棧區(qū)
????????PUSH????PSW?????????????將PSW的值暫存于堆棧區(qū)
????????MOV?????TL0,49H?????????重設(shè)計數(shù)值
????????MOV?????TH0,4AH
????????CPL?????P1.7????????????將輸出端P1.1取反(P1.7接至無源蜂鳴器)
????????POP?????PSW?????????????至堆棧區(qū)取回PSW的值
????????POP?????A???????????????至堆棧區(qū)取回A的值
????????RETI????????????????????返回主程序
;
DELAY:??MOV?????R7,#02??????????187毫秒
D2:?????MOV?????R4,#24
D3:?????MOV?????R3,#48
????????DJNZ????R3,$
????????ACALL???STOP????????在軟件延時中摻插做其他動作
????????DJNZ????R4,D3
????????DJNZ????R7,D2
????????DJNZ????R6,DELAY????????決定節(jié)拍
????????RET
;?????????????????.5???.6?????.7????1
TABLE1:?DW??????65111,65150,65199,65217???4M晶振時的定時中斷時間常數(shù)
;??????????????????2????3?????4?????5?????若采用其它頻率,則要根據(jù)樂音的
????????DW??????65252,65283,65297,65323???頻率計算,例中央C的A音為440Hz,
;??????????????????6????7?????1`????2`????440Hz=2.273ms,把T0設(shè)置為2.273ms
????????DW??????65347,65367,65377,65394???中斷即可發(fā)出A音.
;?????????????????3`????4`????#6
????????DW??????65410,65417,65357
;
;***************************************************************
;*?音符代碼??1??2??3??4??5??6??7??8??9??A??B??C??D??E??F???0???*
;*?音高?????.5?.6?.7??1??2??3??4??5??6??7??1`?2`?3`?4`?5`?休止?*
;*-------------------------------------------------------------*
;*?節(jié)拍代碼??1???2???3??4???5??????6????8???A????C???F?????????*
;*?節(jié)拍?????1/4?2/4?3/4?1?1(1/4)?1(1/2)?2?2(1/2)?3?3(3/4)??????*
;*-------------------------------------------------------------*
;*?結(jié)束代碼?00H????????????????????????????????????????????????*
;*-------------------------------------------------------------*
;*?樂譜格式??每字節(jié)的高字節(jié)為音符代碼,低字節(jié)為節(jié)拍代碼?????????*??
;*-------------------------------------------------------------*?
;*?例子:????????⑴??⑵??⑶??⑷??⑸??⑹??⑺??⑻??⑼??⑽??⑾?????*
;*??????DB??????A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H,00H????*
;*??????⑴?A→唱"7"?,?4→?1?拍?????????????????????????????????*
;*??????⑵?0→休止??,?2→2/4拍?????????????????????????????????*?
;*??????⑶?8→唱"5"?,?4→?1?拍?????????????????????????????????*?
;*??????⑷?0→休止??,?2→2/4拍?????????????????????????????????*?
;*??????⑸?A→唱"7"?,?4→?1?拍?????????????????????????????????*
;*??????⑹?0→休止??,?2→2/4拍?????????????????????????????????*
;*??????⑺?8→唱"5"?,?4→?1?拍?????????????????????????????????*?
;*??????⑻?0→休止??,?2→2/4拍?????????????????????????????????*
;*??????⑼?D→唱"3`",?8→?2?拍?????????????????????????????????*
;*??????⑽?0→休止??,?4→?1?拍?????????????????????????????????*
;*??????⑾?00H→樂曲結(jié)束???????????????????????????????????????*
;***************************************************************??
;
TABLE:
;【00】?
????????DB??????98H,02H,B4H,01H,94H,01H,68H,02H,94H,01H
????????DB??????64H,01H,48H,02H,64H,01H,44H,01H,28H,02H
????????DB??????64H,01H,94H,01H,B4H,01H,94H,01H,B4H,01H
????????DB??????94H,01H,B4H,01H,D4H,01H,94H,01H,64H,01H
????????DB??????44H,01H,64H,01H,98H,02H,01H,01H,00H
;【49】?
????????DB??????A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H
????????DB??????C8H,01H,01H,01H,01H,01H,00H
;【66】?
????????DB??????42H,52H,62H,72H,82H,92H,A2H,B2H,42H,52H
????????DB??????62H,72H,82H,92H,A2H,B2H,00H
;【100】
????????DB??????61H,81H,B1H,D1H,B1H,81H,61H,00H
;【108】
????????DB??????11H,41H,61H,81H,61H,41H,11H,00H
;【136】
????????DB??????24H,04H,34H,04H,44H,04H,54H,04H,64H,04H,44H,04H,64H,04H,94H,04H
????????DB??????83H,01H,93H,01H,83H,01H,63H,01H,46H,02H,66H,02H
????????DB??????91H,21H,91H,21H,91H,21H,91H,21H,94H,00H
;【174】
????????DB??????94H,04H,A4H,04H,B4H,04H,C4H,04H,D4H,04H
????????DB??????B4H,04H,D8H,08H,C4H,04H,F4H,04H,CCH,00H
;
????END
單片機編音樂程序
- 單片機(614606)
- 音樂程序(10708)
相關(guān)推薦
單片機怎么寫入程序并燒錄程序?快收藏
單片機是一個微型的控制中心,相當于我們的電腦主機,而沒有燒錄的單片機是沒有任何功能的,那么如何把程序寫進深圳單片機。下次跟安瑪科技小編一起來看看。 首先你需要寫一個好的程序。不同的單片機使用不
2023-05-24 18:03:062274
基于51單片機的播放音樂實驗設(shè)計資料源程序文件
基于51單片機的播放音樂實驗設(shè)計資料源程序文件
經(jīng)常看到一些剛學單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這
樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興
2023-04-27 15:06:250
基于51單片機的單片機播放音樂實驗設(shè)計資料源程序
經(jīng)常看到一些剛學單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這
樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興
趣而又不知其解的朋友能有所啟迪。
一般說來
2023-04-26 15:38:170
單片機里的程序是如何運行?
我們想要理解單片機是如何運行程序的,我們首先需要了解單片機的組成,我們這里以80C51單片機為例來理解程序在單片機中是如何運行的。
2023-02-17 10:47:571944
關(guān)于單片機程序的執(zhí)行過程
我們想要理解單片機是如何運行程序的,我們首先需要了解單片機的組成,我們這里以80C51單片機為例來理解程序在單片機中是如何運行的。
2022-10-12 15:02:103180
單片機音樂程序設(shè)計(含源程序代碼)
單片機音樂程序設(shè)計(含源程序代碼)利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發(fā)間實驗出發(fā),談談音樂程序的設(shè)計原理,并給出具體實例,以供參考。 單片機的基本發(fā)音
2009-05-15 23:27:00
單片機中級項目12丨蜂鳴器音樂之八月桂花
] C51音樂程序(八月桂花) [功能] 通過單片機演奏音樂 /********************************************************...
2021-11-22 09:36:099
單片機音樂演奏(STC89C51)
/************************************************************************ [文件名] C51音樂程序(八月桂花) [功能] 通過單片機演奏音樂 接線說明:參考蜂鳴器實驗接線 /*************************************
2021-11-21 21:06:059
基于51單片機的音樂播放器
基于51單片機的音樂播放器音樂播放器摘要1、引言2、總體設(shè)計方案2.1、設(shè)計思路2.2、方案確立2.3、設(shè)計原理分析2.4、音樂播放器控制電路設(shè)計三、程序代碼摘要本次設(shè)計的題目是基于STC89C52
2021-11-21 11:21:03101
單片機應用系統(tǒng)設(shè)計技術(shù)——播放音樂
程序驅(qū)動單片機工作。二、實驗內(nèi)容一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當然對于單片機來產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時/計數(shù)器
2021-11-16 16:36:020
單片機開發(fā)小程序
如何使用單片機開發(fā)小程序單片機一般都是通過燒寫hex或是bin文件來進行程序升級,這個方法是在8、16、32位單片機上常用的更新程序的方法。這里實現(xiàn)單片機小程序的方法是通過在單片機上移植腳本來實現(xiàn)
2021-11-13 12:36:0210
基于51單片機的音樂盒設(shè)計
一.硬件方案本設(shè)計以51單片機原理和控制理論設(shè)計音樂演奏控制器的硬件電路,并利用C語言進行程序設(shè)計。通過控制單片機內(nèi)部的定時器來產(chǎn)生不同頻率的方波,驅(qū)動蜂鳴器發(fā)出不同音調(diào)的音樂,再利用延遲來控制
2021-11-13 09:51:0620
基于單片機的音樂播放器的設(shè)計
設(shè)計簡介:本設(shè)計是基于單片機的音樂播放器,主要實現(xiàn)以下功能:可實現(xiàn)LCD12864顯示歌曲的名字和時間以及歌曲序號; 可實現(xiàn)通過語音模塊控制歌曲的播放以及聲音的大?。?可實現(xiàn)通過按鍵控制音樂的播放
2021-11-12 16:51:0028
單片機按鍵使用程序 (51單片機)
單片機獨立按鍵使用程序 (51單片機)獨立按鍵是單片機中很重要的一個器件,在這篇文章里,通過這個用獨立按鍵控制LED燈的小程序來介紹獨立按鍵開關(guān)的使用。...
2021-11-11 18:36:0291
基于51單片機的音樂播放器音樂盒仿真原理圖方案設(shè)計
硬件電路設(shè)計(下方附文件)設(shè)計框圖:原理圖:仿真圖軟件程序設(shè)計單片機發(fā)聲概述一般來說,單片機不像其他專業(yè)樂器那樣能奏出多種音色的聲音,即不包含相應幅度的諧振頻率。單片機演奏的音樂基本都是單音
2021-11-04 17:21:013
單片機音樂程序的設(shè)計原理解析資料下載
電子發(fā)燒友網(wǎng)為你提供單片機音樂程序的設(shè)計原理解析資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
2021-04-10 08:55:519
使用51單片機實現(xiàn)音樂播放的程序資料概述
利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發(fā)間實驗出發(fā),談談音樂程序的設(shè)計原理,并給出具體實例,以供參考。下面提供2個列子,大家根據(jù) 需要自行選擇
2020-06-21 11:04:508150
使用單片機實現(xiàn)按鍵選播電子音樂的程序和仿真資料免費下載
本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)按鍵選播電子音樂的程序和仿真資料免費下載。
2020-06-18 17:29:0024
使用51單片機實現(xiàn)音樂盒的設(shè)計論文
本設(shè)計是一個基于STC89C51RC系列單片機的音樂盒,依據(jù)單片機技術(shù)原理,通過硬件電路制作以及軟件編譯,設(shè)計制作出一個多功能多功能音樂盒。該音樂盒主要由按鍵電路、復位電路、時鐘電路以及蜂鳴器組成
2020-06-16 17:40:4799
使用單片機實現(xiàn)按鍵控制定時器選播多段音樂的程序和仿真資料免費下載
本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)按鍵控制定時器選播多段音樂的程序和仿真資料免費下載。
2020-06-11 17:30:3115
使用單片機實現(xiàn)音樂程序設(shè)計的詳細資料說明
利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發(fā)間實驗出發(fā),談談音樂程序的設(shè)計原理,并給出具體實例,以供參考。
2020-04-06 12:37:002230
使用單片機設(shè)計音樂程序的資料說明
利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發(fā)間實驗出發(fā),談談音樂程序的設(shè)計原理,并給出具體實例,以供參考。
2019-10-21 08:00:000
單片機 | 音樂程序設(shè)計原理解析
利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音
2019-06-05 17:18:473114
51單片機匯編語言教程之音樂程序設(shè)計的詳細資料說明
利用單片機(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機的基本發(fā)間實驗出發(fā),談談音樂程序的設(shè)計原理,并給出具體實例,以供參考。單片機的基本發(fā)音實驗
2019-06-05 16:49:454
單片機音樂程序的設(shè)計原理解析
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào)。
2019-05-20 16:08:483236
使用單片機進行音樂盒的設(shè)計資料合集免費下載
音樂編碼----生日快樂歌,基于c51單片機編寫簡單蜂鳴器音樂程序的方法,樂普編輯應用程序,譜曲軟件,音樂樂譜提取軟件,制作51單片機音樂盒的程序資料合集免費下載。
2019-05-05 08:00:0049
使用單片機實現(xiàn)音樂播放器的源代碼程序免費下載
本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)音樂播放器的源代碼程序免費下載?;?2單片機的源代碼
2019-04-17 17:28:0019
51單片機的五個匯編音樂程序資料免費下載
本文檔的主要內(nèi)容詳細介紹的是51單片機的五個匯編音樂程序資料免費下載。包括了:1.兩只老虎,2.祝你平安,3.生日歌 ,4.八月桂花香,5.蘭花草
2019-03-06 11:41:2820
使用51單片機設(shè)計的C語言音樂程序代碼資料免費下載
本文檔的主要內(nèi)容詳細介紹的是使用51單片機設(shè)計的C語言音樂程序代碼資料免費下載。
2018-12-21 08:00:0017
使用C51單片機進行演奏生日快樂音樂程序的詳細資料免費下載
本文檔的主要內(nèi)容詳細介紹的是如何使用C51單片機進行演奏生日快樂音樂程序的詳細資料免費下載,利用中級定時器以及蜂鳴器設(shè)計。
2018-12-17 08:00:0020
基于Proteus單片機的音樂演奏實現(xiàn)系統(tǒng)
本文提出的一種基于 Proteus 的單片機演奏音樂的方法,非常簡單實用,且該方法基于軟件來實現(xiàn)的,所以成本非常低,調(diào)試方便,效果也很不錯,適合于愛好音樂的單片機學習者。 單片機系統(tǒng)的設(shè)計分兩大部分:硬件設(shè)計部分和軟件設(shè)計部分。
2018-04-08 09:27:004676
如何使用Keil3開發(fā)51單片機程序
51單片機是比較簡單也是使用比較廣泛的一種,初學單片機的朋友51單片機是必學的一門課程。可能很多朋友剛開始不知道怎么創(chuàng)建一個工程,然后寫程序,最后再將寫好的程序燒寫到51單片機開發(fā)板上,下面小編將帶領(lǐng)大家一步步開啟Keil3開發(fā)51單片機程序之旅吧!
2017-11-26 08:38:026521
基于單片機的音樂盒設(shè)計
本設(shè)計是一個基于AT89C51系列單片機的音樂盒,依據(jù)單片機技術(shù)原理,通過硬件電路制作以及軟件編譯,設(shè)計制作出一個多功能多功能音樂盒。該音樂盒主要由按鍵電路、復位電路、時鐘電路以及蜂鳴器組成。
2016-01-13 15:38:2242
單片機蜂鳴器_各種發(fā)聲程序
單片機蜂鳴器 各種發(fā)聲程序【匯編版】
單片機蜂鳴器 各種發(fā)聲程序【匯編版】
單片機蜂鳴器 各種發(fā)聲程序【匯編版】
2015-12-29 15:50:2213
單片機學習知識點全攻略(完結(jié)篇)
導語:本期是本次單片機學習知識點的最終回,我們會列出前三回一起方便讀者回顧學習。本次主要知識點為單片機串口通信、接口和實際案例實踐——單片機音樂程序設(shè)計的學習。單
2012-06-21 16:19:3628590
單片機的音樂盒設(shè)計制作(C程序)
本內(nèi)容提供了單片機的 音樂盒 設(shè)計制作(C程序)的詳細制作過程,當您對單片機知識有一定的基礎(chǔ),看了這篇文章以后,也可以通過一片單片機外加幾個常用的電子元件,制作一個屬于自己
2011-08-17 11:28:111082
單片機入門教程實戰(zhàn)二:唱歌程序
單片機入門教程實戰(zhàn)二:唱歌程序
本文從單片機的基本發(fā)間實驗出發(fā),談談音樂程序的設(shè)計原理,并給出具體實例,以供參考。
2010-01-07 15:15:572466
用PIC單片機實現(xiàn)音樂播放的實例程序
PIC單片機實現(xiàn)音樂播放的實例程序********************************* PIC單片機實現(xiàn)音樂播放 *********************************
2009-01-16 11:33:112116
評論
查看更多