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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 語音播報超聲波測距程序

          語音播報超聲波測距程序

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          距程序,語音集成電路用ISD4004 SS接P1.2 MOSI接P1.0 MISO接P1.1 SCLK接P1.3。超聲波模塊用市面上常用的模塊。由于超聲波屬于聲波范圍,其速度與溫度有關(guān),不同溫度下超聲波在空氣中傳播速度隨溫度變化關(guān)系:V=331.4+0.61T。所以要是測量結(jié)果更加精確需另加溫度補償模塊(本實驗中采用開發(fā)板上的DS18B20溫度傳感器完成溫度補償)。外圍可添加LCD顯示(本實驗采用開發(fā)板1602LCD)和語音播報模塊(本實驗采用ISD4004語音模塊)。

          本文引用地址:http://www.ex-cimer.com/article/201611/321450.htm

          // *********************單片機實驗室******************************/
          // *功能 : 距程序(測量范圍:4~80cm)
          // *引腳連接 : ISD4004 SS接P1.2 MOSI接P1.0 MISO接P1.1 SCLK接P1.3
          // * 超聲波模塊 TX接P3.1 RX接P3.2 J7接上插冒
          // *當前版本 :1.0
          // *作者 : 劉松
          // ****************************************************************/
          #include
          #include
          #include"lcd.h" // 液晶顯示
          #include"ds18b20.h" //溫度傳感器
          sbit P3_1=P3^1;
          sbit key1=P2^1; //定義按鍵
          sbit SS=P1^2; //以下四行定義ISD4004引腳
          sbit MOSI=P1^0;
          sbit MISO=P1^1;
          sbit SCLK=P1^3;
          uchar addr; //語音地址全局變量
          uchar s; //語音所對應數(shù)字
          int VD; //擴大十倍的聲速
          int D; //測量的距離
          int temp; //超聲波反射時間
          void timer() //初始化計數(shù)器
          {
          TMOD=0x10;
          TH1=0;
          TL1=0;
          EA=1;
          EX0=1;
          }

          void delay25us_40KHz(unsigned char us) //產(chǎn)生方波用于超聲波發(fā)射
          {

          TR1=1;
          while(us--)
          {
          P3_1= 0;
          _nop_();_nop_();
          _nop_();_nop_();
          _nop_();_nop_();
          _nop_();_nop_();
          _nop_();_nop_();
          _nop_();
          P3_1= 1;
          _nop_();_nop_();
          _nop_();_nop_();
          }
          P3_1= 1;
          }

          rec() interrupt 0 //計算超聲波反射時間
          {
          TR1=0;
          EA=0;
          temp=TH1*256+TL1;
          }

          void delayms(uchar ms) // 延時子程序用于語音播放上電等待
          {
          uchar j;
          while(ms--)
          {
          for(j = 0; j < 120; j++);
          }
          }

          void delay2(int m) //長延時用于語音播放http://www.jiaoqb.com/
          {
          int l,j;
          for(l=0;l<30001;l++)
          for(j=0;j}

          ////////////////////////////液晶顯示子函數(shù)//////////////////////////////////
          void display()
          {
          float V;//聲速
          V=331.4+0.61*T; VD=V*10;
          D=temp*V/2000-29;
          displaystring(0,0,"Dis=");
          displaychar(4,0,(D/100)+0x30);
          displaychar(5,0,(D0/10)+0x30);
          displaychar(6,0,.);
          displaychar(7,0,(D)+0x30);
          displaystring(8,0,"cm");
          displaystring(0,1,"T=");
          displaychar(5,1,(TD)+0x30);
          displaychar(4,1,.);
          displaychar(3,1,(TD0/10)+0x30);
          displaychar(2,1,(TD/100)+0x30);
          displaychar(6,1,0xdf);
          displaychar(7,1,C);
          displaystring(9,1,"V=");
          displaychar(11,1,(VD/1000)+0X30);
          displaychar(12,1,(VD00/100)+0X30);
          displaychar(13,1,(VD0/10)+0X30);
          displaychar(14,1,.);
          displaychar(15,1,(VD)+0X30);
          }
          ///////////////////////////////////////////////////////////////

          ////////////////放音部分子程序,放音地址由ADDR決定http://www.jiaoqb.com/
          void play(addr)
          {
          uchar y;
          SS=0;
          MOSI=0;//發(fā)送開始
          SCLK=0;
          for(y=0;y<8;y++)
          {
          SCLK=0;
          if((0x20>>y)&0x01)MOSI=1; //上電命令
          else MOSI=0;
          _nop_();
          _nop_();
          _nop_();
          SCLK=1;
          _nop_();
          _nop_();
          _nop_();
          }//發(fā)送結(jié)束
          SS=1;//上電結(jié)束
          delayms(50);
          SS=0;
          MOSI=0;//發(fā)送地址
          SCLK=0;
          for(y=0;y<16;y++)
          {
          SCLK=0;
          if((addr>>y)&0x01)MOSI=1;
          else MOSI=0;
          _nop_();
          _nop_();
          _nop_();
          SCLK=1;
          _nop_();
          _nop_();
          _nop_();
          }//發(fā)送地址結(jié)束
          MOSI=0;//放音
          SCLK=0;
          for(y=0;y<8;y++)
          {
          SCLK=0;
          if((0xe0>>y)&0x01)MOSI=1; //指定地址放音命令電子小制作_我愛制作_電子DIY制作套件http://www.5imcu.net/
          else MOSI=0;
          _nop_();
          _nop_();
          _nop_();
          SCLK=1;
          _nop_();
          _nop_();
          _nop_();
          }
          SS=1;
          SS=0;
          MOSI=0;
          SCLK=0;
          for(y=0;y<8;y++)
          {
          SCLK=0;
          if((0xf0>>y)&0x01)MOSI=1; //忽略地址放音命令(連貫播放后續(xù)空間)
          else MOSI=0;
          _nop_();
          _nop_();
          _nop_();
          SCLK=1;
          _nop_();
          _nop_();
          _nop_();
          }
          SS=1;
          }
          ///////////////////////////////////////////////////////////////

          ///////////////////讀數(shù)字子函數(shù)///////////////////////////////
          void speaknum()
          {
          if(s==1) play(0x01);
          if(s==2) play(0x0a);
          if(s==3) play(0x14);
          if(s==4) play(0x1e);
          if(s==5) play(0x28);
          if(s==6) play(0x32);
          if(s==7) play(0x3c);
          if(s==8) play(0x46);
          if(s==9) play(0x50);
          if(s==0) play(0x6e);
          }
          ////////////////////////////////////////////////////////////////

          上一頁 1 2 下一頁

          關(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); })();