導航:首頁 > 操作系統 > 單片機唱歌

單片機唱歌

發布時間:2022-04-26 13:28:17

❶ 51單片機蜂鳴器唱歌程序

[2]單片機音樂盒花樣流水燈設計
功能描述:
1、按鍵切換音樂
2、彩燈可以跟隨音調亮滅
3、按鍵切換彩燈顯示花樣
4、支持功能定製
☆已作出的實物優酷視頻演示地址:
http://v.youku.com/v_show/id_XMTUxMDU3MzcyOA==.html

❷ 編寫單片機音樂。

就用單片機和蜂鳴器應該就可以。你控制蜂鳴器的頻率改變,這樣蜂鳴器發聲的「音調」就會不一樣,然後再自己慢慢調那些頻率,就可以構成一個單片機控制的音樂了。
至於音樂裡面的12345671怎麼發聲,請參考以下資料(採用51單片機):

為了輸出准確的音階頻率,我們需要用定時器輸出來控制蜂鳴器的驅動,這里用的 T0。
我們再每一次定時器中斷溢出時取反 P17 引腳,以形成頻率驅動蜂鳴器,定時器 0 工
作在 16 位方式,需要在中斷里重新置入初始值。這個值就決定了 P17輸出的頻率。我們在
程序里先做好了一張表,預先寫好了每個音階的頻率需要設置的初始值。到時調入對應的值
進去 T0,不斷溢出時就 P17 可以輸出對應的頻率。
在這個程序里,我們自動地輸出 8 個音符,每個音符保持 1 秒鍾左右。
―――――――――――――――――――――――
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一個 52 標准內核的頭文件

char code dx516[3] _at_ 0x003b;//這是為了模擬設置的

sbit BEEP=P1^7; //喇叭輸出腳

uchar th0_f; //在中斷中裝載的 T0 的值高 8 位
uchar tl0_f; //在中斷中裝載的 T0 的值低 8 位

//T0 的值,及輸出頻率對照表
uchar code freq[36*2]={
0xA9,0xEF,//00220HZ ,1 //0
0x93,0xF0,//00233HZ ,1#
0x73,0xF1,//00247HZ ,2
0x49,0xF2,//00262HZ ,2#
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x73,0xF4,//00311HZ ,4#
0x1E,0xF5,//00330HZ ,5
0xB6,0xF5,//00349HZ ,5#
0x4C,0xF6,//00370HZ ,6
0xD7,0xF6,//00392HZ ,6#
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1 //12
0x4D,0xF8,//00466HZ 1# //13
0xBD,0xF8,//00494HZ 2 //14
0x24,0xF9,//00523HZ 2# //15
0x87,0xF9,//00554HZ 3 //16
0xE4,0xF9,//00587HZ 4 //17
0x3D,0xFA,//00622HZ 4# //18

0x90,0xFA,//00659HZ 5 //19
0xDE,0xFA,//00698HZ 5# //20
0x29,0xFB,//00740HZ 6 //21
0x6F,0xFB,//00784HZ 6# //22
0xB1,0xFB,//00831HZ 7 //23
0xEF,0xFB,//00880HZ `1
0x2A,0xFC,//00932HZ `1#
0x62,0xFC,//00988HZ `2
0x95,0xFC,//01046HZ `2#
0xC7,0xFC,//01109HZ `3
0xF6,0xFC,//01175HZ `4
0x22,0xFD,//01244HZ `4#
0x4B,0xFD,//01318HZ `5
0x73,0xFD,//01397HZ `5#
0x98,0xFD,//01480HZ `6
0xBB,0xFD,//01568HZ `6#
0xDC,0xFD,//01661HZ `7 //35
};

//定時中斷 0,用於產生唱歌頻率
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f; //調入預定時值
BEEP=~BEEP; //取反音樂輸出 IO
P2=~P2;
}

//音階聲音自動輸出試驗
void main(void) // 主程序
{
ulong n;
uchar i;

uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1 八個音符在頻率表中的位置

TMOD = 0x01; //使用定時器 0 的 16 位工作模式
TR0 = 1;
ET0 = 1;
EA = 1;

while(1)
{
for(i=0;i<8;i++) //循環播放 8 個音符
{

tl0_f=freq[jie8[i]*2]; //置一個音符的值
th0_f=freq[jie8[i]*2+1];
for(n=0;n<50000;n++); //延時 1 秒左右

}
}
}
―――――――――――――――――――――――――――――――
編譯,運行。可以聽到 8 個音符不斷循環輸出。

❸ 關於單片機蜂鳴器唱歌的問題,怎樣讓音樂播放一次後停下來

參考我這個例子:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar i=0;
sbit SPK = P3^4;
sbit K1 = P1^0;
uchar code HI_LIST[]=
{
0,266,229,232,233,236,238,240,241,242,244,245,246,247,248
};
uchar code LO_LIST[]=
{
0,4,13,10,20,3,8,6,2,23,5,26,1,4,3
};

void T0_INT() interrupt 1
{
TL0 = LO_LIST[i];
TH0 = HI_LIST[i];
SPK = !SPK;
}

void DelayMS(uint ms)
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}

void main()
{
IE = 0x82;
TMOD = 0x00;
while(1)
{
while(K1==1);
while(K1==0);
for(i=1;i<15;i++)
{
TR0 = 1;
DelayMS(500);
TR0 = 0;
DelayMS(50);
}
}
}

❹ 讓單片機唱歌的c語言程序是怎麼弄的

其實原理很簡單,就是控制單片機的某個引腳,輸出一定頻率的方波信號,而輸出方波信號的方法,是最基礎的,最簡單的編程了,用定時器定時,根據信號頻率算出信號周期,然後計算出定時的時間。那單片機演奏歌曲的程序,也是同樣的原理,只是事先根據歌曲的簡譜查出每個音階的信號頻率,再根據各音階頻率計算出定時器的初值。演奏時,按簡譜的各音階順序輸出不同的頻率的信號就行了。

下表是音階與頻率對應關系表,給出常用音階對應的定時常數。

❺ 怎麼利用單片機控制蜂鳴器唱歌呢.求幫助,新手

使用單片機的定時器控制蜂鳴器的頻率就可以發出不同的音調了,不同的音調組合就可以唱歌了,網上找下程序參考一下吧,新手自己做難道有點大

❻ 單片機唱歌代碼怎麼編比如,do,re,mi ,fa,so ,la,xi,

每個音符都對應不同的頻率,你去查一下那個表,然後用PWM或者IO口電平翻轉都可以輸出信號使蜂鳴器「唱歌」。

❼ 單片機蜂鳴器唱歌

你看一下音樂存放的數組SONG的話
會發現SONG數組中存放的規律是
頻率,音長,頻率,音長……
所以第一個
Temp1
=
SONG[Addr++];
讀出的是頻率
接著Temp2
=
SONG[Addr++];讀出的是音長,音長即1拍、1/2拍、1/4拍等

❽ 51單片機唱歌怎麼實現啊

單片機可以演奏從低音、中音、高音和超高音,四個八度共28個音符。

演奏樂曲時,就根據音符的不同數值,從半周期數據表中找到定時時間初始值,送入定時器即可控制發音的音調。

比如把表中的0xF2和0x42送到定時器,定時器按照這個初始值來產生中斷,輸出的方波,人們聽起來,這就是低音1。

樂曲的數據,也要寫個數據表,程序中以 code unsigned char sszymmh[] 命名。

  1. 這個表中每三個數字,說明了一個音符,它們分別代表:

  2. 第一個數字是音符的數值1234567之一,代表多來咪發...;

  3. 第二個數字是0123之一,代表低音、中音、高音、超高音;

  4. 第三個數字是時間長度,以半拍為單位。

  5. 樂曲數據表的結尾是三個0。

❾ 單片機中能唱歌的蜂鳴器是有源還是無源的

無源的,單片機是通過調節頻率和脈寬控制蜂鳴器發出不同的聲調。

閱讀全文

與單片機唱歌相關的資料

熱點內容
查看ipdns命令 瀏覽:260
命令與征服3凱恩之怒漢化 瀏覽:865
linuxc一站式編程 瀏覽:96
比心app男的識別女的怎麼樣 瀏覽:637
線切割pdf 瀏覽:638
命令與征服3泰伯利亞戰爭109修改器 瀏覽:521
看著很解壓的景色 瀏覽:896
sqlite在Android中應用 瀏覽:77
pdf虛擬列印機ofmac 瀏覽:354
九江php招聘 瀏覽:376
怎麼在ubuntu編程 瀏覽:256
思科保存的命令是什麼意思 瀏覽:958
主力控制副圖源碼及套利選股公式 瀏覽:813
兄弟php培訓怎麼樣 瀏覽:678
金炯泰編譯器 瀏覽:860
涼山參加青少年編程培訓班報名 瀏覽:598
程序員開發者模式 瀏覽:199
電腦有圖標的文件夾是什麼 瀏覽:350
app停運了怎麼恢復 瀏覽:188
u盤加密密碼怎麼刪除 瀏覽:90