音樂噴泉51單片機為核心,對聲音信號的采集和轉換,來調節水泵電機轉速的變化,表現為隨音樂的大小來改變噴泉水柱的高度。有視頻演示。
制作出來的實物圖如下:
51hei.png (210.49 KB, 下載次數: 60)
下載附件
2021-1-24 15:03 上傳
電路原理圖如下:
51hei.png (85.01 KB, 下載次數: 72)
下載附件
2021-1-24 15:04 上傳
單片機源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit out=P3^7;
- sbit led1=P0^0;
- sbit led2=P0^1;
- sbit led3=P0^2;
- sbit led4=P0^3;
- sbit led5=P0^4;
- sbit led6=P0^5;
- sbit led7=P0^6;
- sbit led8=P0^7;
- sbit SCL=P1^2;
- sbit DO=P1^3;
- sbit CS=P1^0;
- uchar h1,date;
- unsigned char adval;
- void delay(uint z)
- {
- uint y;
- for(;z>0;z--)
- for(y=5;y>0;y--);
- }
-
- //ADC0832
-
-
- unsigned char ad0832read(bit SGL,bit ODD)
- {
- 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++)
- {
- SCL=1;
- SCL=0; //開始從第四個下降沿接收數據
- value<<=1;
- if(DO)
- value=value|0x01;
- }
- for(i=0;i<8;i++)
- { //接收校驗數據
- value1=value1>>1;
- if(DO)
- value1=value1|0x80;
- SCL=1;
- SCL=0;
- }
- CS=1;
- SCL=1;
- DO=1;
- if(value==value1)
- return value;
- return 0;
- }
- void penquan() //PWM調壓
- {
- date=ad0832read(1,0);
-
- out=1;
- //h1=(180-date);
- delay(date); //50
- if(date>70) led1=0; else led1=1; //120
- if(date>150) led2=0; else led2=1;
- if(date>220) led3=0; else led3=1;
- // if(h1>100) led4=0; else led4=1;
- // if(h1>140) led5=0; else led5=1;
- // if(h1>180) led6=0; else led6=1;
- // if(h1>230) led7=0; else led7=1;
- // if(h1>280) led8=0; else led8=1;
- out=0;
- delay(250-date); //240
- }
- void main()
- {
- while(1)
- {
- penquan();
- }
- }
復制代碼 以上資料51hei下載地址:
音樂噴泉-原理圖-程序-視頻.rar
(3.98 MB, 下載次數: 72)
2021-1-24 13:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|