音乐喷泉程序含部分图.docx
《音乐喷泉程序含部分图.docx》由会员分享,可在线阅读,更多相关《音乐喷泉程序含部分图.docx(8页珍藏版)》请在冰豆网上搜索。
音乐喷泉程序含部分图
申报作品情况(科技发明制作)
说明:
1、必须由组长填写。
2.本表必须附有研究报告,提供图表、曲线、试验数据、原理结构图、外观图(照片)
作品全称
声控流水灯
作
品
分
类
(A)
A信息技术(包括程序设计、电信、通讯、电子等)
B数理(包括数学、物理、地球与空间科学扥)
作品设计、发明的目的和基本思路
作品设计:
该作品含51单片机控制模块,声音信号的放大,发光二极管模块。
发明目的:
运用于娱乐场所,AD采样声音放大后的电压值,来确定那位LED灯亮,声音越大,就越高位的LED灯亮。
基本思路:
采用51单片机作为控制核心,采样声音放大后的电压,可用于娱乐竞技,如“比比谁更HIGH”,两边各方一套该装置,看谁的LED灯亮的位比较高比较久就是谁更HIGH。
声音强度转化为电信号,通过放大加在发光二极管两端,控制灯光强度。
创新点,技术关键和主要技术指标
创新点:
灯光强度的高低由声音的强度控制,并且可以根据电压值变化的范围内实现不同位的LED灯亮。
关键:
电压的AD取样,电信号放大倍数的控制。
指标:
声控流水灯,实现不同电压值对应不同位的LED灯亮。
作品可展示的形式
√实物、产品□模型□图纸□磁盘
●现场演示□图片□录像□样品
这个是声音输入的电路,AD采样点为电容C的负极
#include
#include
#defineucharunsignedchar
#defineuint unsignedint
#defineledioP0
sbitadwr=P3^5; //ad
sbitadrd=P3^6; //ad
sbitadcs=P3^7; //ad
sbitrs=P3^4; //1602
sbitrw=P3^3; //1602
sbiten=P3^2; //1602
uintnum;
uchari,n,A1,A2,A3,adn;
ucharcodetable[]={'L','H'};
ucharcodetable1[]="volume";
voiddelay()
{
uintxms=10;
xms*=1000;
while(xms--);
}
voiddelayms(uintx)
{
uinti,j;
for(i=x;i--;i>0)
for(j=100;j--;j>0);
}
voidwritecom(ucharcom) //1602写指令
{
rs=0;
P1=com;
delayms(5);
en=1;
delayms(5);
en=0;
}
voidwritedata(ucharnum)//1602写数据
{
rs=1;
P1=num;
delayms(5);
en=1;
delayms(5);
en=0;
}
voidinit() //1602初始化
{
rw=0;
writecom(0x38); //设置显示模式
writecom(0x0c); //不显示光标
writecom(0x06); //地址指针加1,光标加1
writecom(0x01); //显示清屏
}
voiddisplay(ucharx,uchary,ucharz)
{
writecom(0x80);
delayms
(2);
for(i=0;i<7;i++)
writedata(table1[i]);
writedata(0x14);delayms
(1);
writedata(x+0x30);
delayms
(1);
writedata(y+0x30);
delayms
(1);
// writedata(0x2e);
// delayms
(2);
writedata(z+0x30);
delayms
(1);
writecom(0xc0);
writedata(table[0]);
writecom(0xce);
writedata(table[1]);
}
voidmain()
{
TMOD=0x00;
TH0=(8192-1000)/32;
TL0=(8192-1000)%32;
EA=1;
ET0=1;
TR0=1;
init();//初始化1602
adcs=0;
while
(1)
{
A1=adn/100;
A2=adn%100/10;
A3=adn%10;
display(A1,A2,A3);
delayms
(2);
if(A1<5&A2==0)
{
ledio=0x80; writecom(0xc1);writedata(0x3e);
delay();
}
if(5<=A1<=7&A2==0)
{
ledio=0x40;writecom(0xc1);writedata(0x3e);writedata(0x3e);//led1
delay();
}
if(8<=A1<=9&A2==0)
{
ledio=0x20;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led2
delay();
}
if(0<=A1<=5&A2==1)
{
ledio=0x10;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led3
delay();
}
delay();
if(6<=A1<=9&A2==1)
{
ledio=0x08;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led4
delay();
}
if(0<=A1<=5&A2==2)
{
ledio=0x04;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led5
delay();
}
if(6<=A1<=9&A2==2)
{
ledio=0x02;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led6
writedata(0x3e);writedata(0x3e);
delay();
}
if(0<=A1<=5&A2==3)
{
ledio=0x01;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led7
writedata(0x3e);writedata(0x3e);writedata(0x3e);
delay();
}
if(6<=A1<=9&A2==3)
{
ledio=0xfc;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led8
writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);
delay();
}
if(0<=A1<=5&A2==4)
{
ledio=0xfe;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led18
writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);
delay();
}
if(45{
ledio=0xff;writecom(0xc1);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);//led28
writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);writedata(0x3e);
delay();
}
writecom(0x01);
}
}
voidt0()interrupt1
{
TH0=(8192-1000)/32;
TL0=(8192-1000)%32;
num++;
if(num==50)
{
num=0;
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();
P2=0xff;
adrd=1;
_nop_();
adrd=0;
_nop_();
adn=P2;
adrd=1;
}
}