打印

关于超声波测距回响信号检测问题

[复制链接]
1648|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
catomy|  楼主 | 2014-4-25 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是PSoC3的CY38C3866系列
超声波模块分别用了购置的HY-SRF05和US-100模块,都试过,都检测不到回响信号。


程序如下:
注:PIN1接超声波模块的ECHO回响信号口,端口配置为数字输入;PIIN2接超声波模块的TRING触发信号口,端口配置为数字输出

void main()
{

    CyDelay(100);
    LCD_Char_1_Start();
    LCD_Char_1_ClearDisplay();
    Pin_1_Write(0);   
    Pin_1_Write(0);
    while(1)
    {     

        distance=distancetest(1);     

        //LCD_Char_1_ClearDisplay();
        // LCD_Char_1_Position(0u, 0u);
       //   LCD_Char_1_PrintString("The Distance is");
        Num_To_Array(NUM,distance,1);                     //自编程序,用于将数字转为字符串,即将函数中的distance(数字)转为NUM(字符串)
        strcat((char*)NUM,(char*)" cm\0");                 //浮动显示“cm”
        LCD_Char_1_Position(1u, 4u);
        LCD_Char_1_PrintString(NUM);
        CyDelay(100);
    }

}

double distancetest(char n)
{

    if(Pin_2_Read())            //如果之前信号为1,则先置0
    {
      Pin_2_Write(0);
      CyDelay(1);
    }

    Pin_2_Write(1);
    CyDelay(500);

    LCD_Char_1_Position(0u, 0u);
    LCD_Char_1_PrintString("A");
    Clock_1_Start();
  //  Timer_1_Start();
    Pin_2_Write(0);   

    while(!Pin_1_Read());   //读取返回的信号
    LCD_Char_1_Position(0u, 2u);
    LCD_Char_1_PrintString("B");
    Timer_1_Start();   
    Timer_1_WriteCounter(65535);


     while(Pin_1_Read());
     LCD_Char_1_Position(0u, 4u);
     LCD_Char_1_PrintString("C");

      return ((65535-Timer_1_ReadCounter())/10000)*speed/2;

}

最后LCD显示的是A,没有显示B和C,也就是说检测不到超声波模块的ECHO回响信号,在PIC18F452和51单片机上测试都能得到距离,所以模块是没有问题的。
不知道有没有人遇到同样的问题?



沙发
catomy|  楼主 | 2014-4-25 21:33 | 只看该作者
注:Pin1接超声波模块的ECHO回响信号口,端口配置为数字输入;Pin2接超声波模块的TRING触发信号口,端口配置为数字输出

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝