putin168 发表于 2013-4-22 17:24:42

哪位大侠做过09年电赛的声音导引系统?有问题求助

最近在做09年的电赛题目,声音导引系统,传感器是三个麦克风,配备了滤波电路。
我在程序里写的是当有一个麦克风接收到声音时就进入中断处理函数,在函数里开启定时器。每有一个麦克风接收到信号时就读取当前定时器的值。
直到最后一个麦克风接收到信号,读取定时器的值关闭定时器,然后清零定时器。
最后在显示屏上显示每两个麦克风的声音到达时间差。
有个一直没弄懂的问题,就是声音从一个定点发出,但到各麦克风的时间差一直都是变化的。
刚开始以为是没关定时器,可是看了很多遍程序都觉得不是没关的原因。
那位大侠能指导我下,问题出在哪里了?
这是程序,版主别删啊,
void oter_adjust(void) interrupt 0
{
         TR0=1;      //开启定时器0
         time3_flag=1;
             while(1)          //轮询各麦克风
               {
                         if(time3_flag==1&&timer3==1)                //麦克风3接收到信号
                         {
                                  timer_3=(TH0<<8)+TL0; //提取时间差
                                 time3_flag=0;
                         }
                         if(timer2==1)                //麦克风2最后接收到信号
                         {
                                  timer_2=(TH0<<8)+TL0;//提取时间差
                                 TR0=0;                         //关闭定时器0
                                 TH0=0x00;
                                 TL0=0x00;
                                 break;                         //跳出循环
                         }
                }
               ti_x=timer_2-timer_3;         //麦克风2与麦克风3为速度控制      
}
timer2和timer3是连接麦克风的io口
程序给的是两个麦克风的,第三个暂时还没加

孤独stranger 发表于 2013-4-22 21:32:55

额,这个东西我也做过!可惜木有做出来,我显示的坐标也是随机的,我觉得可能是滤波部分没做好,噪音太大,所以那个时间差也是随机的

putin168 发表于 2013-4-23 11:31:01

我准备用双踪示波器检查下滤波的部分,,看看有没有问题
页: [1]
查看完整版本: 哪位大侠做过09年电赛的声音导引系统?有问题求助