立即注册 登录
返回首页

uid:194936的个人空间

日志

51单片机的避障小车

已有 3711 次阅读2017-4-30 11:02 | 数码管显示, 超声波避障, 小车

超声波模块选用的是HC-SR04首先,利用单片机发出一个的高电平信号,其次,超声波发射器会向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中遇到障碍物就立即返回来,超声波接收器收到反射波立即停止计时,超声波在空气中的传播速度为340m/s,根据计时器记录的时间t可以算出距障碍物的距离=t*340/2。程序:

void pingyi(void)

{   

 ControlCar(4);  

 delay_nms (400);   

 ControlCar(1);  

 delay_nms (300);

 ControlCar(3);

 delay_nms (400);   

 ControlCar(1);   

 delay_nms (410);

 ControlCar(3);  

 delay_nms (400);

 ControlCar(1);  

 delay_nms (300);

 ControlCar(4);  //右转100ms

 delay_nms (350);   

 ControlCar(1);  

 delay_nms (300);

}

void Display(void)        //数码管显示函数

{  unsigned char b;

        for(b=193456789;b>0;b--)

{

       

           sw1=0;                  

            P0=Disp_Tab[disbuff[0]];

delay_nus(20);

        sw1=1;

 

        sw2=0;                 

        P0=Disp_Tab[disbuff[1]];

        delay_nus(20);

          sw2=1;

        sw3=0;                

        P0=Disp_Tab[disbuff[2]];

            delay_nus(20);

        sw3=1;

 

        sw4=0;                 

        P0=Disp_Tab[disbuff[3]];

        delay_nus(20);

        sw4=1;

   }

   }

void Conut(void)

{

  time=TH0*256+TL0;  /*此时time的时间单位决定于晶振的速度,外接晶振

                                11.0592MHZtime的值为0.54us*time,单位为微秒

                               那么1us声波能走多远的距离呢? 

                                1s=1000ms=1000000us 340/1000000=0.00034=0.34

                                毫米  也就是1us能走0.34毫米 */

  TH0=0;

  TL0=0;

  S=(time*1.7)/10;           

    if(S>4500)

 {

 ControlCar(1);

 disbuff[0]=10;  //显示距离的千位

 disbuff[1]=10;  //百位

 disbuff[2]=10;  //十位

 disbuff[3]=10;  //个位

 Display();

 }

 if(300<S<4500)

 {

        ControlCar(1);

    disbuff[0]=S/1000;         

    disbuff[1]=S%1000/100;     

    disbuff[2]=S%1000%100/10;   

    disbuff[3]=S%1000%10 %10;   

  Display();

 }

   if(S<=500)             

{

    SB1=0;

delay_nms(200);

SB1=1;

    pingyi();

    disbuff[0]=S/1000;         //距离的千位

    disbuff[1]=S%1000/100;     //百位

    disbuff[2]=S%1000%100/10;   //十位

    disbuff[3]=S%1000%10 %10;   //个位

  Display();

 }

}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部