微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 蓝牙小车程序出错请大神帮忙看看

蓝牙小车程序出错请大神帮忙看看

时间:10-02 整理:3721RD 点击:
没事学习单片机做了一台蓝牙小车,蓝牙控制不了车运动。检测了手机和蓝牙的链接。正常,用单片机控制电机一个一个检测,也正常,就是连接手机蓝牙以后控制失败。我自己加数码管看手机发送2,数码管能正常显示2,但是小车就是没反应,感觉case语句哪里出现问题,但是自己搞不明白,请懂得大神帮忙看看。PS:这段程序是没加数码管的。

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uint a;

  sbit LED1=P1^0;//左后轮      

  sbit LED2=P1^1;

   sbit LED3=P1^2;//右后轮

   sbit LED4=P1^3;

   sbit LED5=P1^4;//左前轮

   sbit LED6=P1^5;

   sbit LED7=P1^6;//右前轮

   sbit LED8=P1^7;

void init()      //

   {

    TMOD=0X20;  

    TH1=0xfd;     

    TL1=0xfd ;  

    TR1=1;      

    REN=1;      

    SM0=0;

    SM1=1;      

    EA=1;      

    ES=1;      

   }

    void main()  

  {  

               init();

        while(1);

   }

  void ser() interrupt 4   

  {      

          ES=0;

          RI=0;  

         a=SBUF;

         switch(a)

       {

                                          case 2: go();  break;   //前进

                                          case4:  left();  break;  //左转

                                          case6:  right();  break;  //右转

                                          case8:  back();  break;  //后退

                                          case5:  stop();  break;  //停止

                                          default:break;

       }

           ES=1;

    }

        //····------------小车运行子程序-------*/

void go()

       {

              LED1= 1;

              LED2= 0;

              LED3= 1;

              LED4= 0;

              LED5= 1;

              LED6= 0;

              LED7= 0;

              LED8= 1;

       }


void back()

       {

              LED1= 0;

              LED2= 1;

              LED3= 0;

              LED4= 1;

              LED5= 0;

              LED6= 1;

              LED7= 1;

              LED8= 0;

       }


void left()

       {

              LED1= 1;

              LED2= 0;

              LED3= 0;

              LED4= 1;

              LED5= 0;

              LED6= 1;

              LED7= 0;

              LED8= 1;

       }


void right()

       {

              LED1= 0;

              LED2= 1;

              LED3= 1;

              LED4= 0;

              LED5= 1;

              LED6= 0;

              LED7= 1;

              LED8= 0;

       }

void stop()

       {

              LED1= 0;

              LED2= 0;

              LED3= 0;

              LED4= 0;

              LED5= 0;

              LED6= 0;

              LED7= 0;

              LED8= 0;

       }


动力不足,没有用h桥吧?

看你的意思好像是单独用高低电平控制的,负载可能不够,尤其四驱

最好上一下电路,光看程序,很难判断问题原因,可以用单片机控制小车行走试试,先确定小车能够行走。
另外这是你程序go里的一部分, LED5= 1; LED6= 0; LED7= 0; LED8= 1;,最后两个引脚的驱动电平和其他的不一样,所以需要贴一下相应的电路图

这样写一下试试:
{
default:break;
}

case4:  left();  break;  //左转
case6:  right();  break;  //右转
case8:  back();  break;  //后退
这几个case是手误,还是粘贴的问题,为什么case和数字之间没有空格

这里粘贴的问题,我加了空格了。

用了h桥,问题好像是蓝牙的问题,我用苹果的lightblue可以控制,安卓的连接上控制不了。

我用苹果的lightblue调试 控制都正常,但是安卓手机就不行。我用电脑端口的串口助手看安卓手机收发的信号,也正常,安卓的就是控制不了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top