<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Atmega128L單片機控制的聲音監(jiān)測與無線定位系統(tǒng)

          基于Atmega128L單片機控制的聲音監(jiān)測與無線定位系統(tǒng)

          作者: 時間:2013-11-12 來源:網(wǎng)絡(luò) 收藏
          基于Atmega128L單片機控制的聲音監(jiān)測與無線定位系統(tǒng)
          圖7
          7.程序設(shè)計及其流程圖
          采用同平面內(nèi)三點定位方法即可得到準(zhǔn)確的定位,統(tǒng)一軌道平面內(nèi)有A、B、C三個定位監(jiān)測點,到目標(biāo)聲源距離分別為Da、Db 、Dc。當(dāng)某一個發(fā)生物體一旦發(fā)聲,聲音通過介質(zhì)空氣傳播,被監(jiān)測點的三個傳感器所接受。設(shè)聲源分別經(jīng)過時間Ta、Tb、Tc被A、B、C監(jiān)測點識別到。通過ATmega128處理,可計算出兩個時間差t1、t2。已知聲音在某介質(zhì)中傳播速度為v。通過幾何定律可計算出聲源0的準(zhǔn)確坐標(biāo)值(x,y)。這樣就能簡單、準(zhǔn)確、高效、無誤的達到對聲音信號監(jiān)測定位的目的。如圖8所示。
          基于Atmega128L單片機控制的聲音監(jiān)測與無線定位系統(tǒng)
          圖8
          #includeiom128v.h>
          #includemacros.h>
          #include"define.h"
          extern char Reverse_Display;//是否反相顯示(白底黑字/黑底白字)
          void wr_com(unsigned char value)//寫指令,寫指令時必須為RS=0;RW=0;
          {
          E_clear;
          RS_clear;
          RW_clear;
          delay_ms(1);
          LCD_DB_PORT=value;
          E_set;
          delay_ms(2); //如果沒有延時就必須要加查忙指令
          E_clear;
          }
          void wr_data(unsigned char sj)//寫數(shù)據(jù),寫數(shù)據(jù)時必須為 RS=1;RW=0;
          {
          E_clear;
          RS_set;
          RW_clear;
          delay_ms(1);
          //if(!Reverse_Display)
          LCD_DB_PORT=sj;
          //else
          //PORTA=~sj;
          E_set;
          delay_ms(1);//如果沒有延時就必須要加查忙指令
          E_clear;
          }
          void LCD12864_Initialization (void)
          {
          LCD_DB_PORT=0x00;
          LCD_DB_DDR=0xff;
          COM_PORT=0x00;
          COM_DDR=0xff;
          wr_com(0x01); //清屏
          wr_com(0x08); //關(guān)顯示
          wr_com(0x03); //歸位
          wr_com(0x30); //功能設(shè)置
          //wr_com(0x0D); //開顯示 有光標(biāo)
          wr_com(0x0C);//開顯示 無光標(biāo)
          wr_com(0x01); //清屏
          }
          //****************
          //outChinese 為函數(shù)名
          //place 為顯示地址的首地址
          //unit 字符長度
          //charcode[] 要顯示數(shù)據(jù)的內(nèi)容
          void outChinese(unsigned char place,unsigned char unit,unsigned char *point)
          {
          unsigned char i,progdata;
          wr_com(place);
          for(i=0;iunit*2;i++)//一個漢字為兩個字符
          {
          progdata=*(point+i);
          wr_data(progdata);
          }
          }
          void outchar(unsigned char place,unsigned char unit,unsigned char *point)
          {
          unsigned char i,progdata;
          wr_com(place);
          for(i=0;iunit;i++)
          {
          progdata=*(point+i);
          wr_data(progdata);
          }
          }
          #includeiom128v.h>
          #includemacros.h>
          #include"define.h"
          #pragma interrupt_handler INT_0:2
          const uchar Place_show[]="聲源坐標(biāo)為:";
          const uchar Digits[]="0123456789";
          uchar soures[7]={0,};
          void main()
          {
          init();
          //outChinese(0x80,1,Place_show+0*2);
          EICRA=0X03;//上升沿觸發(fā)0-2中斷
          EIMSK=0X01;//使能0-2中斷
          while(1)
          {
          display();
          delay_ms(1000);
          EIMSK=0X01;//使能0-2中斷
          SEI();
          }
          }
          void init()
          {
          LCD12864_Initialization ();
          }
          void INT_0()
          {
          soures[0]=soures[0]+1;
          if(soures[0]==50) soures[0]=0;
          EIMSK=0X00;//使能0-2中斷
          CLI();
          }
          void delay_us(uint us) //在8M時鐘情況下的US延時
          {
          uint i;
          us = us*5/4; //5/4是在8MHz晶振下,通過軟件仿真反復(fù)實驗得到的數(shù)值
          for(i=0; ius; i++);
          }
          void delay_ms(uint ms)
          {
          uint i,j;
          for(i=0;ims;i++)
          {
          for(j=0;j1141;j++);

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();