音乐喷泉51单片机为核心,对声音信号的采集和转换,来调节水泵电机转速的变化,表现为随音乐的大小来改变喷泉水柱的高度。有视频演示。
制作出来的实物图如下:
电路原理图如下:
单片机源程序如下:
- #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)
|