『壹』 我想要一段單片機控制音樂噴泉的C語言程序,很急!~誰能幫幫我,謝謝~
#include<reg51.h>
#include "SoundPlay.h"
uchar code table[]="sound_signal:";
uchar code table1[]="sound_pace:";
uchar code table2[]="0123456789 ";
uchar data count=0;
sbit motor=P2^1;
sbit rs=P2^2;
sbit e=P2^3;
void init_com()
{
TMOD=0x01;
TH0=0xff;
TL0=0xff;
EA=1;
ET0=1;
}
void timer0(void) interrupt 1 using 3
{
counter=counter+1;//節拍次數計數
TH0=0xd8; //定義單位節拍的延時大小 10ms定時
TL0=0xef;
}
void delay(uchar n)
{
uchar i;
while(n--)
for(i=0;i<125;i++); //延時1毫秒
}
void sound_delay(uchar n)
{
uchar i;
while(n--)
{
for(i=0;i<2;i++);
}
}
/*******LCD顯示*******/
void ling(uchar zl) //寫指令
{
rs=0;
e=0;
P0=zl;
delay(5);
e=1;
delay(5);
e=0;
}
void shuju(uchar sj) //寫數據
{
rs=1;
e=0;
P0=sj;
delay(5);
e=1;
delay(5);
e=0;
}
void lcdinit() //初始化
{
delay(15);
ling(0x01);
ling(0x38);
delay(5);
ling(0x38);
delay(5);
ling(0x38);
delay(5);
ling(0x0c);
delay(5);
ling(0x06);
delay(5);
ling(0x01);
delay(5);
}
//*****************液晶初始化*********
void main()
{
uint i,a;
uchar sound_signal;//定義音符大小
uchar sound_pace;//定義節拍大小
init_com();
lcdinit();
ling(0x80);
for (i=0;i<13;i++)
shuju(table[i]);
ling(0x80+0x40);
for (i=0;i<11;i++)
shuju(table1[i]);
//array[i]=0x00 代表歌曲演唱完畢
//array[i]=0xff 代表是休止符
while(1)
{
i=0;
/***************************************///////////
while(array[i]!=0x00)
{
//如果是休止符,延時100ms,並終止本次循環,進入下一個循環
if(array[i]==0xff)
{
TR0=0;
i++;
delay(100);
continue;
}
//從表中取得 音符大小
sound_signal=array[i];
i=i+1;
//從表中取得 節拍大小
sound_pace=array[i];
a= sound_pace;
P1=a|(a>>4);
//彩燈的根據節拍閃爍
ling(0x80+13);
if(sound_signal/100==0)
shuju(table2[10]);
else shuju(table2[ sound_signal/100]);
shuju(table2[sound_signal%100/10]);
shuju(table2[sound_signal%10]);
ling(0x80+0x40+11);
if(sound_signal/100==0)
shuju(table2[10]);
else shuju(table2[sound_pace/100]);
shuju(table2[sound_pace%100/10]);
shuju(table2[sound_pace%10]);
motor=0;
delay(40);
TR0=1;
//當節拍數未達到時候,繼續循環,產生該音調的聲音
while(counter<=sound_pace)
{
motor=1;
sound=~sound;
sound_delay(sound_signal);
}
i++;
counter=0;//節拍計數器置0,進入下一個音調
}
/*************************************************/
delay(10); //歌曲演唱完畢後,延時一段時間
}
}
//*******soundplay.h**********歌曲
#ifndef __SOUNDPLAY_H_REVISION_FIRST__
#define __SOUNDPLAY_H_REVISION_FIRST__
#define uchar unsigned char
#define uint unsigned int
sbit sound=P2^0;
uint counter=0;
uchar code array[]=
{
0x18, 0x30, 0x1C, 0x10,
0x20, 0x40, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x10,
0x1C, 0x10, 0x18, 0x40,
0x1C, 0x20, 0x20, 0x20,
0x1C, 0x20, 0x18, 0x20,
0x20, 0x80, 0xFF, 0x20,
0x30, 0x1C, 0x10, 0x18,
0x20, 0x15, 0x20, 0x1C,
0x20, 0x20, 0x20, 0x26,
0x40, 0x20, 0x20, 0x2B,
0x20, 0x26, 0x20, 0x20,
0x20, 0x30, 0x80, 0xFF,
0x20, 0x20, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x20, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20,
0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20,
0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x80,
0x20, 0x30, 0x1C, 0x10,
0x20, 0x10, 0x1C, 0x10,
0x20, 0x20, 0x26, 0x20,
0x2B, 0x20, 0x30, 0x20,
0x2B, 0x40, 0x20, 0x15,
0x1F, 0x05, 0x20, 0x10,
0x1C, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20,
0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20,
0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x30,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x40, 0x1C, 0x20,
0x20, 0x20, 0x26, 0x40,
0x13, 0x60, 0x18, 0x20,
0x15, 0x40, 0x13, 0x40,
0x18, 0x80, 0x00
};
『貳』 小型音樂噴泉的設計可以用哪種單片機為什麼
什麼單片機都行,用簡單的C51單片機吧,因為單片機主要的功能是控制處理,即你用可以感覺音樂相關的感測器和單片機相接,但聲音變化感測器產生信號給單片機,單片機根據信號再控制彩燈和噴泉。
『叄』 單片機實現音樂噴泉的過程中如何對音頻進行分頻處理
用AD晶元對音頻采樣,采樣速度至少40KHZ,然後做FFT,精度你隨便,估計有個256點就可以了。一來你是51,跑不快,二來音樂噴泉水柱不多,從低頻到高頻大概體現7、8個頻點就夠了。FFT程序網上找,一把一把的。
『肆』 請問用單片機做音樂噴泉的小模型需要哪些材料呢
首先需要個噴泉模型聚乙烯熟料透明的。然後准備個三原色LED燈(最好貼片的),加個藍牙模塊,准備個藍牙音箱,根據設備數量選擇合適引腳單片機。
裝載,用塊萬能板將燈,藍牙模塊,單片機什麼的都焊上去。然後將噴泉模型用塑料膠固定在燈上。
連上PC開始調試,先寫燈模塊,再寫藍牙模塊,將音頻轉成2進賬寫入代碼。
這樣基本上可以循環放一首歌了。
『伍』 51單片機的音樂噴泉的編碼
功能實現通過ADC0832晶元對音頻信號的採集,轉換為數字信號給單片機,然後PWM脈沖寬度調制控制水泵水柱對的高低
//請先了解ADC0832模數轉換的串列協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串列協議進行的
// 1 1 0 通道
// 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{undefined
unsigned char i=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0;//開始
SCL=1;//第一個上升沿
SCL=0;
DO=SGL;
SCL=1; //第二個上升沿
SCL=0;
DO=ODD;
SCL=1; //第三個上升沿
SCL=0; //第三個下降沿
DO=1;
for(i=0;i<8;i++)
{undefined
SCL=1;
SCL=0; //開始從第四個下降沿接收數據
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{//接收校驗數據
value1>>=1;
if(DO)
value1+=0x80;
SCL=1;
SCL=0;
}
CS=1;
DO=1;
SCL=1;
if(value==value1)//與校驗數據比較,正確就返回數據,否則返回0
return value;
return 0;
}
void penquan() //PWM調壓
{undefined
date=ad0832read(1,0); //讀取ad值
h1=(255-date);//轉換
out=0; //水泵清零
delay(h1);
if(h1>70) led1=1; else led1=0; //ad值對比 點亮相應的燈
if(h1>80) led2=1; else led2=0; //ad值對比 點亮相應的燈
if(h1>90) led3=1; else led3=0; //ad值對比 點亮相應的燈
if(h1>100) led4=1; else led4=0; //ad值對比 點亮相應的燈
if(h1>110) led5=1; else led5=0; //ad值對比 點亮相應的燈
if(h1>115) led6=1; else led6=0; //ad值對比 點亮相應的燈
if(h1>120) led7=1; else led7=0; //ad值對比 點亮相應的燈
if(h1>130) led8=1; else led8=0; //ad值對比 點亮相應的燈
out=1; //關閉水泵
delay(date); //延時時間
}
void main()//主函數
{undefined
while(1)
{undefined
penquan(); //給定個延時次數
}
}
(轉載於CSDN)
『陸』 用Pic32單片機做音樂噴泉,都要哪些模塊,怎麼實現,C語言的程序怎麼編寫,求指導~~~
1.ADC 模塊,隔一段時間檢查一次,得到一個ADC值,根據得到的值驅動不同的LED,可將所有ADC值劃分為7個區間。
2.根據ADC值驅動水泵。。
呵呵,感覺你說的挺細的了。我說的都是你的話復述。。
我也用PIC32開發過產品,可以多溝通。
『柒』 音樂噴泉的原理是什麼
音樂噴泉的工作原理是,根據播放的音樂來控制水柱,達到與音樂同步的效果,而水柱是由水泵來控制的,而水泵是由三相非同步電動機組成的,三相非同步電動機的轉速如果通入工頻電源,轉速是不變化的,變頻器是專門針對電機調速的裝置。由變頻器控制電機的轉速,使水柱發生變化。
改變頻率就改變了電機的轉速,也就改變了水泵的壓力,音樂的不同頻率經單片機處理送到變頻電機的控制端,使電機轉速隨音樂的音調,節奏,和強弱變化,水芹數泵的壓力隨之變化,噴岀的水就有了高低變化。
最高噴泉
2007年8月1日19時58分,在通化市渾江江面上,100米高的水柱噴涌而起,蔚為大觀。據了解,這是東北三省噴涌最高的音樂噴泉,同時也是通化渾江沿江景觀帶建設工程的嫌含首組成部分之一。在當晚工程的竣工儀式上,為其剪綵的不是主要領導,而是市民代表。
據介紹,這是東北三老乎省目前噴涌最高的音樂噴泉,總投資高達2000多萬元。同時它也作為通化渾江沿江景觀帶建設工程的內容之一,成為通化市一道新的風景線。
以上內容參考:網路-音樂噴泉
『捌』 st89c52單片機音樂噴泉的程序求大神解讀
單片機的程序是要根據它的電路來寫的,你起碼也要把你的原理圖給出來,才能寫程序。
『玖』 想自己做小型的音樂噴泉,怎樣畫電路圖
想做一個小型的音樂噴泉,需要和陪用到電磁閥。用單片機的ADC采樣音樂信號,根攜螞據辯棚埋音樂信號電壓高低,可以准確控制電磁閥開閉,實現音樂噴泉效果。用c語言完全可以編程實現,當然匯編語言也可以。
『拾』 如何用單片機設計音樂噴泉電路圖
單片機就想做音樂噴泉?20年前估計這么做,用PLC做控制,現在還用單片機?莫非真是畢業設計?
現在的音樂噴泉控制系統相當復雜,功能和復雜度能趕上一個電廠的整套控制系統了,大點的音樂噴泉有幾千個控制點。