久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3633|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

RCW-0001型超聲波傳感器編程問(wèn)題,紅色部分while(echo)那無(wú)法工作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
RCW-0001型號(hào)的超聲波傳感器  寫的程序如下圖 主要問(wèn)題是紅色部分while(echo)那無(wú)法工作 只要去掉就可以有數(shù)據(jù)傳回上位機(jī)
trigg是控制端 持續(xù)10毫秒可以產(chǎn)生測(cè)距波, echo為接收端根據(jù)其為高電平時(shí)間測(cè)距
  1. #include<reg52.h>
  2. #include<math.h>
  3. #define uchar unsigned char

  4. sbit trig=P0^5;
  5. sbit echo=P0^4;
  6. sbit d=P0^6;

  7. float a,b1,c1;
  8.        int b,c,i,j,k;        
  9.             char x[9];

  10. void main()
  11. {         

  12.             TMOD = 0x20;
  13.         SCON = 0x50;
  14.         TH1 = 0xFD;
  15.        TL1 = TH1;
  16.        PCON = 0x00;
  17.        EA = 1;
  18.        ES = 1;
  19.        TR1 = 1;
  20.            trig=0;
  21.            echo=1;
  22.            while(1)
  23.            {  
  24.                        
  25.                    TH0=0X00;TL0=0X00;
  26.                trig=1;
  27.                    k++;k++;k++;        k++; k++; k++;k++;k++;k++;
  28.                    trig=0;
  29.                    while(!echo);
  30.                    TR0=1;
  31.                   [color=#ff0000] while(echo);//無(wú)法運(yùn)行 ,去掉可以運(yùn)行[/color]
  32.                   
  33.                    a=TH0*256+TL0;
  34.                    a=a*12*17;           
  35.                    TR0=0;
  36.                    a=(a/11059.2)+0.7;        //修正誤差
  37.                     

  38.                    c1=modf(a,&b1);
  39.                    b=(int)(b1);
  40.                    c=(int)(1000*c1);
  41.                   
  42.                    x[0]=0x30+b/100;
  43.                    x[1]=0x30+b/10-10*(b/100);
  44.                    x[2]=0x30+b-10*(b/10);
  45.                    x[3]=0x2e;
  46.                    x[4]=0x30+c/100;
  47.                    x[6]=0x30+c/10-10*(c/100);
  48.                    x[7]=0x30+c-10*(c/10);
  49.                    x[8]='\0';
  50.                    for(i=0;i<9;i++)
  51.                       {   if((x[i]==0x30)&&(i<2))
  52.                               {    if(!(x[0]==0x30))
  53.                                                     {          SBUF=x[i];
  54.                                               while(!TI);
  55.                                               TI=0;
  56.                                                              }
  57.                                                    else
  58.                                                     {    SBUF=0x20;
  59.                                              while(!TI);
  60.                                              TI=0;
  61.                                                                 }
  62.                                           }
  63.                                    else {  SBUF=x[i];
  64.                                    while(!TI);
  65.                                     TI=0;
  66.                                                 }
  67.                             }
  68.                    for(i=0;i<110;i++)
  69.                        for(j=0;j<114;j++);
  70.                
  71.                 }
  72. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:318095 發(fā)表于 2018-6-3 10:57 | 只看該作者
這是改的程序分成模塊
#include<reg52.h>
#include<math.h>
#define uchar unsigned char

sbit trig=P0^5;
sbit echo=P0^4;
sbit d=P0^6;

float a,b1,c1;
       int b,c,i,j,k;       
            char x[9];
float ceju()
{                  
          SBUF=0X31; while(!TI);TI=0;
         
             
           TH0=0X00;TL0=0X00;
               trig=1;
                   k++;k++;k++;        k++; k++; k++;k++;k++;k++;k++;k++;k++;k++;k++;k++;
                   trig=0;  SBUF=0X32;while(!TI);TI=0;
                   while(!echo);
                   TR0=1;  SBUF=0X33; while(!TI);TI=0;
                    
                   //while(echo);
                        SBUF=0X34;  while(!TI);TI=0;
                   a=TH0*256+TL0;
                   a=a*12*17;          
                    TR0=0;
                   a=(a/11059.2)+0.7;        //修正誤差
                    SBUF=0X36;while(!TI);TI=0;
           return a;
}
void delay(b)
{
   
  for(i=1;i<b;i++)
    for(j=1;j<500;j++) ;
}
void songxian(float a)
{                    
           c1=modf(a,&b1);
                   b=(int)(b1);
                   c=(int)(1000*c1);
                  
                   x[0]=0x30+b/100;         
                   x[1]=0x30+b/10-10*(b/100);         
                   x[2]=0x30+b-10*(b/10);           
                   x[3]=0x2e;         
                   x[4]=0x30+c/100;         
                   x[6]=0x30+c/10-10*(c/100);
                   x[7]=0x30+c-10*(c/10);  
                   x[8]='\0';                
                   for(i=0;i<9;i++)
                      {   if((x[i]==0x30)&&(i<2))
                              {    if(!(x[0]==0x30))
                                                    {          SBUF=x[i];
                                              while(!TI);
                                              TI=0;
                                                             }
                                                   else
                                                    {    SBUF=0x20;
                                             while(!TI);
                                             TI=0;
                                                                }
                                          }
                                   else {  SBUF=x[i];
                                   while(!TI);
                                    TI=0;
                                                }
                            }
                   for(i=0;i<110;i++)
                       for(j=0;j<114;j++);
}
void main()
{         

            TMOD = 0x20;
        SCON = 0x50;
        TH1 = 0xFD;
       TL1 = TH1;
       PCON = 0x00;
       EA = 1;
       ES = 1;
       TR1 = 1;
           trig=0;
           echo=1;
           while(1)
           {  
                       SBUF=0X30; while(!TI);TI=0;
                       a=ceju();
                        d=0;
                        songxian(a);
                                    delay(5000);
                   /*TH0=0X00;TL0=0X00;
               trig=1;
                   k++;k++;k++;        k++; k++; k++;k++;k++;k++;
                   trig=0;
                   while(!echo);
                   TR0=1;
                   while(echo);
                  
                   a=TH0*256+TL0;
                   a=a*12*17;          
                   TR0=0;
                   a=(a/11059.2)+0.7;        //修正誤差
                    

                   c1=modf(a,&b1);
                   b=(int)(b1);
                   c=(int)(1000*c1);
                  
                   x[0]=0x30+b/100;
                   x[1]=0x30+b/10-10*(b/100);
                   x[2]=0x30+b-10*(b/10);
                   x[3]=0x2e;
                   x[4]=0x30+c/100;
                   x[6]=0x30+c/10-10*(c/100);
                   x[7]=0x30+c-10*(c/10);
                   x[8]='\0';
                   for(i=0;i<9;i++)
                      {   if((x[i]==0x30)&&(i<2))
                              {    if(!(x[0]==0x30))
                                                    {          SBUF=x[i];
                                              while(!TI);
                                              TI=0;
                                                             }
                                                   else
                                                    {    SBUF=0x20;
                                             while(!TI);
                                             TI=0;
                                                                }
                                          }
                                   else {  SBUF=x[i];
                                   while(!TI);
                                    TI=0;
                                                }
                            }
                   for(i=0;i<110;i++)
                       for(j=0;j<114;j++); */
               
                }
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:277550 發(fā)表于 2018-6-3 12:04 | 只看該作者
在超聲波前面2、30cm地方,放置反射物,再試試吧

超聲波的原理就是先發(fā)射一段超聲波,然后等待返波。。。。。走掉就不等待返回,測(cè)量根本不對(duì)了。






評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:343909 發(fā)表于 2018-6-3 12:06 | 只看該作者
回復(fù)

使用道具 舉報(bào)

5#
ID:318095 發(fā)表于 2018-6-4 10:45 | 只看該作者
devcang 發(fā)表于 2018-6-3 12:04
在超聲波前面2、30cm地方,放置反射物,再試試吧

超聲波的原理就是先發(fā)射一段超聲波,然后等待返波。。 ...

程序是對(duì)的  還了板之后可以用了  謝謝 回復(fù)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久三区| 欧美性高潮 | 成人亚洲视频 | av在线成人 | 国产日韩视频 | 范冰冰一级做a爰片久久毛片 | jdav视频在线观看免费 | av黄色网| 视频一区在线 | 精品一区二区久久久久久久网站 | 国产精品久久久久久网站 | 免费久久精品 | 亚洲一区不卡 | 久久久久久久一区 | 国产精品成人国产乱一区 | 午夜视频免费在线观看 | 国产人成精品一区二区三 | 婷婷毛片 | 亚洲二区在线 | 91精品国产综合久久小仙女图片 | 在线观看视频福利 | 九色一区 | 亚洲三区视频 | 特级丰满少妇一级aaaa爱毛片 | www.精品一区 | 国产精品久久久久久久久久不蜜臀 | 天天操网 | 99热视| www.操com | 亚洲精品一区二区另类图片 | 国产精品一区二区视频 | 亚洲成人精品国产 | 亚洲高清一区二区三区 | 一区二区三区在线免费观看 | 综合色站导航 | 男女一区二区三区 | 国产精品海角社区在线观看 | 久久久免费 | 夜久久| 91麻豆精品国产91久久久更新资源速度超快 | 一级做a爰片久久毛片免费看 |