導航:首頁 > 操作系統 > 單片機音頻

單片機音頻

發布時間:2022-05-02 04:06:00

單片機播放音樂的原理

單片機發音原理:利用定時器或PWM功能,輸出PWM,經一級有源濾波後放大驅動揚聲器。
單片機演奏音樂基本是單音頻率,它不包含相應幅度的諧波頻率,
也就是說不能象電子琴那樣能奏出多種音色的聲音,但一定要弄清楚兩個概念即可,也就是「音調」和「節拍」 。音調 表示一個音符唱多高的頻率。節拍 表示一個音符唱多長的時間
1.要生產音頻脈沖,只要算出某一音頻的周期(1/頻率),然後將此周期除以2,即為半周期的時間.利用定時器計時這個半周期時間,每當計時到後就將輸出脈沖的I/O反相,然後重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。

2. 利用8051的內部定時器使用其工作在計數器模式MODE1下,改變計數值THO及TLO以產生不同頻率的方法。

⑵ 如何把音頻加入單片機

不同的單片機有不同的操作方法。
簡單點的,可能只需要把幾個頻率特徵碼作為數組存儲到存儲器中,供發音系統調用即可。
復雜些的,需要先錄音,再轉換格式,最後翻譯為源碼中的二進制文件。
也有可能單片機本身的系統支持音頻文件,可以在通訊或上位機支持下,直接將文件發送過去即可。
這個過程涉及到對單片機的編程或程序本身的設計,不同單片機、不同操作系統或不同人員有不同的思路。

⑶ 51單片機聲音輸出

看你要輸出什麼樣的音頻。
1、如果只是很簡單的像某些有聲賀卡那樣的話,接一個無源喇叭,自己控制I/O輸出一個方波,通過控制方波的頻率來調節音調,然後將不同的頻率組合起來,連續播放就是一首簡單的歌曲。
2、如果要輸出MP3,那就需要一塊音頻解碼晶元,比如VS1003。單片機將存儲在外部存儲器里(比如U盤)的歌曲信息通過介面晶元傳給音頻解碼晶元,解碼之後就能輸出歌曲了。

第二種情況相對比較復雜,涉及到如何高效讀取存儲的歌曲信息和高效傳輸這些信息。

⑷ 關於單片機的音頻存儲

不知你說的是哪種單片機,我以8051單片機為例說明
51的最大定址能力為64K沒錯,但還可以通過片選實多片64K外部擴展RAM的讀寫
至於可以存多少秒的音頻,要看你的A/D轉換的采樣頻率和采樣精度,采樣頻率是指你1秒內采樣多少次,是100次還是1000次還是10000次?這樣就對應了1秒內產生100個數據還是1000個或10000個
采樣精度是指你的A/D轉換晶元進行模數轉換後產生的數字量的位數,一般有8位10位16位,8位晶元一次產生一個位元組,10位和16位就要產生兩個位元組
這樣你應當能算出來了吧
其實用單片機做音頻存儲不大現實,人的聽力可達到20Hz--20000Hz,而20000Hz的音頻至少要以40000Hz的頻率進行采樣,對單片機和一般的A/D晶元來說都不大現實.

⑸ 用51單片機實現音樂播放的原理是什麼

發音原理:播放一段音樂需要的是兩個元素,一個是音調,另一個是音符。
音符的發音主要靠不同的音頻脈沖。例如:利用單片機的內部定時器/計數器0,使其工作在模式1,定時中斷,然後控制P3.7引腳的輸出音樂。只要算出某一音頻的周期(1/頻率),然後將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到後就將輸出脈沖的I/O反相,然後重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。音樂中的節拍用延時時間產生。

⑹ 單片機串口音頻控制

void
ser()interrupt
4
{
ri=0;
a=sbuf;/疑問三:/計算機往單片機發數據
flag=1;
}
/******************************************************************************************************************
單片機接收串口調試助手發來的數據後,進入中斷,清除ir接收標志,單片機把接收到的數據存放到變數a裡面,flag
=
1,應該是切換標志,flag
=
1,進入單片機發送狀態
*******************************************************************************************************************/
if(flag==1)
//進入發送狀態
{
es=0;
for(i=0;i<6;i++)
{
sbuf=table[i];//疑問1:這個是單片機往計算機上發數據
while(!ti);//發送完畢
ti=0;
}
/********************************************************************************************************************
這里sbuf=table[i];是單片機往串口調試助手發送數組
*******************************************************************************************************************/
sbuf=a;//疑問2:單片機往計算機上發數據
/*******************************************************************************************************************
sbuf=a;這里是單片機把接收到的數據存放到變數a裡面,然後再把接收到的數據返回給
口調試助手
******************************************************************************************************************、
while(!ti);
ti=0;
es=1;
//開啟中斷
flag=0;
//關閉發送標志進入接收
}
}
}

⑺ 怎麼用單片機播放有人唱的音樂

我知道有幾種方法。一是用單片機通過數模轉換的方法播放音樂文件。如WAV格式文件。但可能要涉及WAV格式和讀取外部數據(如SD卡)等問題。二是利用MP3播放專用單片機,如AT89C51SND1C來播放mp3格式的文件。三是可以利用音樂錄放晶元來實現,如ISD4004系列單片語音錄放電路或ZY1420B晶元來做。用單片機來控制ISD4004來錄取或播放各種音樂。第三種方法比較容易實現,只要掌握了ISD4004的錄放指令即可,語音數據的存儲都存在該晶元內。不過我沒實際做過,不能提供太具體的方法。你可以去查一下。

⑻ 單片機如何調用音頻文件

單片機好像只能用中斷變頻的方法播放midi音樂聲,不可能直接放出mp3類的音樂文件的

⑼ 誰能給我介紹下 單片機音樂播放器 是怎麼實現 播放音樂 功能的 其原理 重謝


電路連接很簡單,我用的是P3.0埠接個蜂鳴器就可以了(你可以根據你的具體硬體連接去改下
音樂程序的設計原理和程序如下:
設計原理
⑴ 總體原理:
樂曲中不同的音符,實質就是不同頻率的聲音。通過單片機產生不同的頻率的脈沖信號,經過放大電路,由蜂鳴器放出,就產生了美妙和諧的樂曲。
⑵ 單片機產生不同頻率脈沖信號的原理:
1)要產生音頻脈沖,只要算出某一音頻的脈沖(1/頻率),然後將此周期除以2,即為半周期的時間,利用定時器計時這個半周期的時間,每當計時到後就將輸出脈沖的I/O反相,然後重復計時此半周期的時間再對I/O反相,就可以在I/O腳上得到此頻率的脈沖。
2)利用8051的內部定時器使其工作在計數器模式MODE1下,改變計數值TH0及TL0以產生不同頻率的方法如下:
例如,頻率為523Hz,其周期天/523 S=1912uS,因此只要令計數器計時956uS/1us=956,在每計數956次時就將I/O反接,就可得到中音DO(532Hz)。
計數脈沖值與頻率的關系公式如下:
N=Fi/2/Fr
(N:計數值,Fi:內部計時一次為1uS,故其頻率為1MHz,Fr:要產生的頻率 )
⑶ 其計數值的求法如下:
T=65536-N=65536-Fi/2/Fr
計算舉例:
設K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1047=65059
⑷ C調個音符頻率與計數值T的對照表如下表所示:

表9.1 C調各音符頻率與計數值T的對照表
音符 頻率(Hz) 簡譜碼T值 音符 頻率(Hz) 簡譜碼T值
低1DO 262 63628 #4FA# 740 64860
#1DO# 277 63731 中5SO 784 64898
低2RE 294 63835 #5SO# 831 64923
#2RE# 311 63928 中6LA 880 64968
低3M 330 64103 #6 932 64994
低4FA 349 64103 中7SI 988 65030
#4FA# 370 64260 高1DO 1046 65058
低5SO 392 64260 #1DO# 1109 65085
#5SO# 415 64331 高2RE 1175 65110
低6LA 440 64400 #2RE# 1245 65124
#6 466 64463 高3M 1318 65157
低7SI 494 64524 高4FA 1397 65178
中1DO 523 64580 #4FA# 1480 65198

⑸ 每個音符使用1個位元組,位元組的高4位代表音符的高低,低4位代表音符的節拍,下表為節拍碼的對照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設定延遲時間就可求得節拍的時間。假設1/4節拍為1DELAY,則1拍應為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其餘的節拍就是它的倍數,如下表為1/4和1/8節拍的時間設定。
表9.2 節拍碼對照表
1/4節拍 1/8節拍
節拍碼 節拍數 節拍碼 節拍數
1 1/4拍 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拍
7 1又3/4拍 7 7/8拍
8 2拍 8 1拍
9 2又1/4拍 9 1又1/8拍
A 2又1/2拍 A 1又1/4拍
B 2又3/4拍 B 1又3/8拍
C 3拍 C 1又1/2拍
D 3又1/4拍 D 1又5/8拍
E 3又1/2拍 E 1又3/4拍
F 3又3/4拍 F 1又7/8拍
表9.3 各調節拍的時間設定表
1/4節拍 1/8節拍
曲調值 DELAY 曲調值 DELAY
調4/4 125毫秒 調4/4 62毫秒
調3/4 187毫秒 調3/4 94毫秒
調2/4 250毫秒 調2/4 125毫秒
⑹ 建立音樂的步驟:
1)先把吧樂譜的音符找出,然後由上表建立T值表的順序。
2)把T值表建立在TABLE1,構成發音符的計數值放在「TABLE」。
3)簡譜碼(音符)為高位,節拍為(節拍數)為低4位,音符節拍碼放在程序的「TABLE」處。

表9.4 簡譜對應的簡譜碼、T值、節拍數
簡譜 發音 簡譜碼 T值 節拍碼 節拍數
5 低5SO 1 64260 1 1/4拍
6 低6LA 2 64400 2 2/4拍
7 低7SI 3 64524 3 3/4拍
1 中1DO 4 64580 4 1拍
2 中2RE 5 64684 5 1又1/4拍
3 中3M 6 64777 6 1又2/4拍
4 中4FA 7 64820 7 1又3/4拍
5 中5SO 8 64898 8 2拍
6 中6LA 9 64968 9 2又1/4拍
7 中7SI A 65030 A 2又2/4拍
1 高1DO B 65058 B 2又3/4拍
2 高2RE C 65110 C 3拍
3 高3M D 65157 D 3又1/4拍
4 高4FA E 65178 E 3又2/4拍
5 高5SO F 65217 F 3又3/4拍
不發音 0

1/4拍的延遲時間=187毫秒
DELAY: MOV R7,#2
D2: MOV R4,#187
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
4.程序範例
ORG 0000H ;主程序起始地址
SJMP START ;跳至主程序
ORG 000BH ;TIMER0中斷起 始地址
LJMP TIM0 ;跳至TIMER0中斷子程序
START: MOV TMOD,#01H ;設T0在M1
MOV IE,#82H ;中斷使能
START0:MOV 30H,#00 ;取簡譜碼指針
NEXT: MOV A,30H ;簡譜碼指針載入A
MOV DPTR,#TAB ;至TAB取簡譜碼
MOVC A,@A+DPTR ;
MOV R2,A ;渠道的簡譜碼暫存於R2
JZ END0 ;是否渠道00(結束碼)
ANL A,#0FH ;不是,則取低4位(節拍碼)
MOV R5,A ;將節拍碼存入R5
MOV A,R2 ;將取到的簡譜碼再載入A
SWAP A ;高低4位交換
ANL A,#0FH ;取低4位(音符碼)
JNZ SING ;取到的音符碼是否為0?
CLR TR0 ;開始,則不發音
SJMP D1 ;跳至D1
SING: DEC A ;取到的音符碼減1(不含0)
MOV 22H,A ;存入(22H)
RL A ;乘2
MOV DPTR,#TAB1 ;至TABLE1取相對的高位位元組計數值
MOVC A,@A+DPTR ;
MOV TH0,A ;取到的高位位元組存入TH0
MOV 21H,A ;取到的高位位元組存入(21H)
MOV A,22H ;在載入取到的音符碼
RL A ;乘2
INC A ;加1
MOVC A,@A+DPTR ;至TABLE1取相對的低位位元組計數值
MOV TL0,A ;取到的低位位元組存入TL0
MOV 20H,A ;取到的低位位元組存入(20H)
SETB TR0 ;啟動TIMER0
D1: LCALL DELAY ;其本單位時間1/4拍187毫秒
INC 30H ;取簡譜碼指針加1
JMP NEXT ;取下一個簡譜碼
END0: CLR TR0 ;停止TIMER0
JMP START0 ;重復循環
TIM0: PUSH ACC ;將A的值暫存於堆棧
PUSH PSW ;將PSW的值暫存於堆棧
MOV TL0,20H ;重設計數值
MOV TH0,21H ;
CPL P3.0 ;將P3.0位反相,控制蜂鳴器發聲
POP PSW ;至堆棧取回PSW的值
POP ACC ;至堆棧取回A的值
RETI
DELAY:MOV R7,#02
D2: MOV R4,#187
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
TAB1: ;決定節拍
DW 64260,64400,64521,64580
DW 64684,64777,64820,64898
DW 64968,65030,65058,65110
DW 65157,65178,65217
TAB: ;樂曲名稱《梁祝》
DB 02H,82H,62H,52H,48H,02H,52H,32H,22H,18H
DB 83H,91H,72H,62H,51H,61H,71H,61H,83H,61H
DB 81H,51H,61H,71H,61H,51H,46H,82H,32H,52H
DB 22H,42H,16H,21H,41H,18H,0E4H,13H,21H,43H
DB 51H,21H,41H,12H,83H,81H,61H,81H,58H,53H
DB 61H,31H,22H,13H,21H,42H,52H,0E2H,42H,21H
DB 11H,91H,41H,18H,63H,81H,32H,52H,21H,41H,
DB 16H,0E4H,11H,21H,31H,51H,26H,11H,21H,43H
DB 51H,82H,62H,52H,61H,51H,42H,21H,11H,0E4H
DB 44H,21H,41H,21H,11H,0E1H,11H,21H,41H,18H
DB 61H,81H,51H,61H,51H,41H,32H,21H,41H,18H
DB 08H,0H,04H ;曲子最後靜音5拍長的時間
DB 00H ;樂曲結束
END

閱讀全文

與單片機音頻相關的資料

熱點內容
未來最值得投資的加密貨幣 瀏覽:526
ascii碼是編譯的時候用嗎 瀏覽:779
壓縮機感應包可以通用嗎 瀏覽:410
方舟伺服器怎麼發布到搜索列表 瀏覽:270
xml防反編譯 瀏覽:239
數據傳輸加密系統技術方案 瀏覽:842
程序員沒有準備去面試 瀏覽:4
51單片機usb滑鼠 瀏覽:879
qq伺服器的ip地址查詢 瀏覽:112
java仿qq聊天 瀏覽:400
解壓的ipa重新打包 瀏覽:142
程序員那麼可愛vip版 瀏覽:239
程序員怎麼升職 瀏覽:243
圖形化命令按鈕vb 瀏覽:987
vcu盤加密怎麼設置 瀏覽:414
如何加密備份微信聊天記錄 瀏覽:529
安卓手機如何模擬鍵盤 瀏覽:932
查看dns地址命令 瀏覽:768
android錄屏工具 瀏覽:841
成都互動直播系統源碼 瀏覽:956