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