关于设计一个声音定位系统的,程序问题,希望能帮忙指点指点!多谢!
时间:10-02
整理:3721RD
点击:
一、任务设计一套声音定位系统。在一块不大于1m2的平板上贴一张500mm×350mm的坐标纸,在其四角外侧分别固定安装一个声音接收模块,声音接收模块通过导线将声音信号传输到信息处理模块,声音定位系统根据声响模块通过空气传播到各声音接收模块的声音信号,判定声响模块所在的位置坐标。二、要求(1) 设计制作一个声响模块,含信号产生电路、放大电路和微型扬声器等,每按键一次发声一次,声音信号的基波频率为500Hz左右,声音持续时间约为1s。要求声响模块采用3V以下电池供电,功耗不大于200mW。(2) 设计制作四路声音接收模块,由麦克风、放大电路等组成,并分别与信息处理模块相连接,以便将频率为500Hz左右的信号传送至信息处理模块。(3) 设计制作一个信息处理模块,要求该模块能根据从声音接收模块传来的信号判断声响模块所在位置的x、y坐标,并以数字形式显示x、y坐标值,位置坐标值误差的绝对值不大于30mm。就是在如下程序块出现了问题,其余功能均可实现,不知该如何改进,希望能得到帮助//声音信号处理程序//-------------------------------------------------------void voice(){sA=Time1*340;sB=Time2*340;sC=Time3*340;x=15-(sB*sB-sA*sA)/60;//x=25-(sB*sB-sA*sA)/100;y=(21-(sC*sC-sA*sA)/21)/2;//y=(35-(sC*sC-sA*sA)/35)/2;Delay_50ms(8);WrCLcd_clearscreen();WriteString (1,1,"x:");WrCLcd_long_num(1,4,x);WrCLcd_long_num(1,10,Time1);WriteString (2,1,"y:");WrCLcd_long_num (2,4,y);}
处理程序的思路是按键按下瞬间开启定时器,当MIC收到特定频率的信号后停止定时器,然后读出定时器数值,根据主频、定时器分频率和声速计算声源的距离半径,然后根据多个接收器得到的声源半径求取交点即可获知声源位置。其实,两个接收器就可以判定声源位置了。
这不是前两年的电赛题目吗?
恩,是的 ,我们练习一下
好的,那么谢谢啦,再思考一下