|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求音樂編程方法,各位大俠幫忙 |
作者:williamL 欄目:技術(shù)交流 |
現(xiàn)在做了一個項目,需要音樂蜂鳴,我已經(jīng)有了一張樂譜,但是實在不知道,1,2,3,4,5,6,7的頻率是多少,還有什么重音在軟件上怎么處理(頻率加倍?)還有什么大括號,雙劃線等等都不知道怎么處理。還望哪位大俠可以指點在下,假如可以提供學(xué)習(xí)的鏈接網(wǎng)站的話,也不勝感激,謝謝 |
2樓: | >>參與討論 |
作者: zhuls 于 2005/1/27 17:08:00 發(fā)布:
還不如直接用音樂片! |
3樓: | >>參與討論 |
作者: tyw 于 2005/1/28 9:30:00 發(fā)布:
這是本人一個產(chǎn)品中的音樂單元,很完整,供參考. 這是本人一個產(chǎn)品中的音樂單元,單音演奏的,多重和音不宜用這方法,一般用硬件的音源加單片機控制方法完成,有興趣可去合泰網(wǎng)站http://www.holtek.com.cn/docum/consumer/8950.htm看看.HT8950提供了一個產(chǎn)生樂音包絡(luò)用的硬件平臺(a/d,d/a等),用軟波表數(shù)據(jù)來完成音階及包絡(luò),單片機只是進行控制,以前8bit聲卡中YM3812與此差不多功能. 中央C的A音為440Hz,半音價之間關(guān)系為2開12次方(12√2=1.05946) 中央C的#A音為440Hz*1.05946=466.163Hz 中央C的B音為440Hz*1.05946*1.05946=493.883Hz 用定時器來模擬這個頻率,精度取決于時鐘快慢,一般小數(shù)點后保留一位,音準已可忍受了,生日快樂芯片是小數(shù)點前一位的,耳朵容易聽壞的拉. 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 |
4樓: | >>參與討論 |
作者: williamL 于 2005/1/28 10:42:00 發(fā)布:
謝謝tyw,程序結(jié)構(gòu)很清楚,太感謝了 謝謝,我先study了 |
5樓: | >>參與討論 |
作者: t14495716 于 2005/1/28 16:38:00 發(fā)布:
這年頭還是好人多啊 |
|
|
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |