1. 51單片機聲音輸出
看你要輸出什麼樣的音頻。
1、如果只是很簡單的像某些有聲賀卡那樣的話,接一個無源喇叭,自己控制I/O輸出一個方波,通過控制方波的頻率來調節音調,然後將不同的頻率組合起來,連續播放就是一首簡單的歌曲。
2、如果要輸出MP3,那就需要一塊音頻解碼晶元,比如VS1003。單片機將存儲在外部存儲器里(比如U盤)的歌曲信息通過介面晶元傳給音頻解碼晶元,解碼之後就能輸出歌曲了。
第二種情況相對比較復雜,涉及到如何高效讀取存儲的歌曲信息和高效傳輸這些信息。
2. 單片機的輸出聲音頻率是多少
揚聲器或蜂鳴器是靠正、負電平驅動生成震盪,因此,正、負電平相同時長能生成最大聲音
500Hz=500次震盪每秒,即震盪頻率=1/500Hz=0.002秒=0.002s
如果我們需要生成500Hz的聲音,應該讓揚聲器接收到這樣的波形:0.001s的高電平和0.001s的低電平
因此我們設定定時器每0.001s中斷一次,在中斷時翻轉P3.0的狀態,得到的波形就是我們想要的波形啦。
3. 用單片機 P1.0 輸出 1KHz 和 500Hz 的音頻信號驅動揚聲器輸出報警器聲音,作報警信號,要求 1KHz 信號響 1
用89C51片定時器
fosc=12MHz,
從P1.0口輸出500Hz
org 000h
sjmp do ;跳初始化程序
org 000bh
ajmp t1ms ;1毫秒定時中斷
do:
mov tmod,#00010001b ;雙定時T0,T1
setb et0 ;開中斷
setb ea ;開中斷
MOV TH0,#252 ;設定T0: 1ms中斷一次12MHz
MOV TL0,#24
setb tr0 ;開始定時
sjmp $
;=====================定時器中斷==============
t1ms: MOV TH0,#252 ;設定T0: 1ms中斷一次12MHz
MOV TL0,#24 ;
;----------------------0.2s定時--
djnz r0,next;0.2s
cpl 00h
mov r0,#200
;--------------------------------
next:
jb 00h,toret
cpl p1.0 ;從P1.0輸出周期2ms方波,每1ms翻轉
reti
;-----------------------------
toret:
clr p1.0 ;電平輸出
reti ;中斷返回
end
4. 怎樣使單片機發出聲音
...這恐怕有難度``
單單讓他發出聲音那很簡單``
只要一個51片+一個喇叭就可以
發音原理就是利用聲音的頻率``就是說用51控制一個腳發出一個20~20KHZ的方波就可以讓喇叭產生同樣頻率的震動``從而發出聲音.(人耳能聽到的頻率范圍是20~20KHZ).
但要發出兩段錄制好的聲音,這就很有難度了.除非你能把這段聲音轉化成相應的機器碼`讓CPU直接處理.
5. 用51單片機實現音樂播放的原理是什麼
發音原理:播放一段音樂需要的是兩個元素,一個是音調,另一個是音符。
音符的發音主要靠不同的音頻脈沖。例如:利用單片機的內部定時器/計數器0,使其工作在模式1,定時中斷,然後控制P3.7引腳的輸出音樂。只要算出某一音頻的周期(1/頻率),然後將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到後就將輸出脈沖的I/O反相,然後重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。音樂中的節拍用延時時間產生。
6. 求助,單片機怎麼向LM386輸出音頻
用單片機的引腳輸出某一個頻率的信號,這種程序是最基礎的了。
輸出的信號送到LM386的信號輸入端進行放大就行了。
而LM386的放大電路,更是到處都是了。
7. C51單片機中用P1.0輸出1KHz和500Hz的音頻信號驅動揚聲器
開兩個計時器,計時器0用作定時中斷,計數器1用作普通計數器用,用計數器1產生兩個不同的頻率。
定時器0中斷用以判別100ms和200ms的時間隙,由於定時器中斷需要在兩個中斷間隔時間間跳變,幫需要加一個標志位FLAG,當FLAG=0時讓定時器0延時100MS中斷,當FLAG=1時定時器0延時200MS中斷。
假設p1.1外接按鈕,對輸出1khz和500hz進行切換。
#include
sbit wave = p1^0;
sbit k = p1^1;
#define fosc 12000000ul //晶振頻率,可以自行修改
#define fint 1000 //定時器中斷頻率
bit switchflag;
void delayms(unsigned int x)
{
unsigned char t;
while(x--)
for(t=0;t<120;t++);
}
void main()
{
tmod&=0xf0;
tmod|=0x01;
th0=(65536-fosc/fint/12)/256;
tl0=(65536-fosc/fint/12)%256;
ie|=0x82;
tr0=1;
while(1)
{
if(!k)
{
delayms(10);
if(!k)
switchflag=!switchflag;
}
}
}
void t0_int() interrupt 1
{
static bit i;
th0=(65536-fosc/fint/12)/256;
tl0=(65536-fosc/fint/12)%256;
i=!i;
if(switchflag) {wave=!wave;}
else {wave=(i)?!wave:wave;}
}
(7)單片機輸出音頻擴展閱讀:
單片機也被稱為單片微控器,屬於一種集成式電路晶元。在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數據採集與控制系統能夠讓單片機完成各項復雜的運算,無論是對運算符號進行控制,還是對系統下達運算指令都能通過單片機完成。
由此可見,單片機憑借著強大的數據處理技術和計算功能可以在智能電子設備中充分應用。簡單地說,單片機就是一塊晶元,這塊晶元組成了一個系統,通過集成電路技術的應用,將數據運算與處理能力集成到晶元中,實現對數據的高速化處理。
8. 用51單片機實現音樂播放的原理是什麼
需要寫一段程序。
如果是簡單的音樂,編樂譜推蜂鳴器就可以;如果是mp3/wav之類的音樂,需要晶元自帶解碼模塊,或者使用外部解碼晶元,還需要dac將聲音推出來。
聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的「高」電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制「高」「低」電平的持續時間,就能改變輸出頻率,從而改變音調。要准確奏出一首曲子,必須准確地控制樂曲節奏,即一音符的持續時間。音符的節拍我們可以用定時器T0來控制,送入不同的初值,就可以產生不同的定時時間。便如某歌曲的節奏為每分鍾94拍,即一拍為0.64秒。
9. 單片機的輸出聲音頻率為什麼這么算
首先,0.7ms翻轉P3.0一次,P3.0輸出的波形由1變0或由0變1,而一個震盪周期包含一個高電平和一個低電平,因此你看到需要將0.7ms乘以2才是一個周期波形的時長,0.7ms*2=1.4ms
1.4ms換算成秒: 1.4ms/1000=0.0014s
0.0014s換算成頻率: 1/0.0014s=714.2857Hz
10. C51單片機中用P1.0輸出1KHz和500Hz的音頻信號驅動揚聲器
閑的手癢,給你寫一個,希望採納!!!
假設P1.1外接按鈕,對輸出 1KHz 和 500Hz 進行切換。
#include<reg51.h>
sbitWAVE=P1^0;
sbitK=P1^1;
#defineFOSC12000000ul//晶振頻率,可以自行修改
#defineFINT1000//定時器中斷頻率
bitswitchFlag;
voidDelayms(unsignedintx)
{
unsignedchart;
while(x--)
for(t=0;t<120;t++);
}
voidmain()
{
TMOD&=0xF0;
TMOD|=0x01;
TH0=(65536-FOSC/FINT/12)/256;
TL0=(65536-FOSC/FINT/12)%256;
IE|=0x82;
TR0=1;
while(1)
{
if(!K)
{
Delayms(10);
if(!K)
switchFlag=!switchFlag;
}
}
}
voidT0_INT()interrupt1
{
staticbiti;
TH0=(65536-FOSC/FINT/12)/256;
TL0=(65536-FOSC/FINT/12)%256;
i=!i;
if(switchFlag){WAVE=!WAVE;}
else{WAVE=(i)?!WAVE:WAVE;}
}