手机蓝牙控制51单片机小车问题

#include //这是巡线小车,我想用手机 蓝牙HC05控制小车启动 但是一直不会动啊 求帮忙 时间紧迫啊

#define uchar unsigned char
#define uint unsigned int
sbit en1=P1^5; /* L298?Enable A 电机pwm*/
sbit en2=P1^0; /* L298?Enable B /
sbit s1=P1^4; /
L298?Input 1电机 /
sbit s2=P1^3; /
L298?Input 2 /
sbit s3=P1^2; /
L298?Input 3 /
sbit s4=P1^1; /
L298?Input 4 /
sbit R=P2^7;/
¹âµçÓÒ传感器 /
sbit C=P2^6;/
center*/
sbit L=P2^5;/* left */

uchar HighRH = 0; //¸ßµçƽÖØÔصĸß×Ö½Ú
uchar HighRL = 0; //
uchar LowRH = 0; //µÍµçƽÖØÔصĵÍ×Ö½Ú
uchar LowRL = 0; //
uchar receiveData;
uint key=0,i=0;

void ConfigPWM(uint fr, uchar dc);//设置小车转速ÉèÖÃÕ¼¿Õ±È¡£µ÷½ÚתËÙ

void GO(void)

{
s1=1;
s2=0;
s3=1;
s4=0;
}

void TL(void)
{
s1=1;
s2=0;
s3=0;
s4=1;
}

void TR(void)
{
s1=0;
s2=1;
s3=1;
s4=0;
}

void STOP(void)
{
s1=1;
s2=1;
s3=1;
s4=1;
}

void delay(uint l)
{
uint k,j;
for(k=l;k>0;k--)
for (j=110;j>0;j--);
}

void main()
{

    ConfigPWM(100, 20);

while(1)
{

if(key==1)//我想让手机发 1 就启动
{

   if(i==0)
        {

        GO();
        delay(1000);
        i++;
        }

        //ÅжϿªÊ¼
    if((R|C|L)==0)
        {
         STOP();
        }

    if((L&R)==0&&(C==1))
        {
            GO();
        }

    if (L==1&&((C|R)==0))
        {
            TL();
        }

    if(R==1&&((L|C)==0))
        {
            TR();
        }

        if(((R&C)==1)&&(L==0))//Youó45¶È
        {
            TL();
            if((L&C)==0&&(R==1))
                    TR();
        }

      if((R&C&R)==1)
        {
            GO();
        }

      if(((L&C)==1)&&R==0)
        {

            TL();
            while(1)
            {

            if(((L&C)==1)&&R==0)
             {
              TL();
                break;
             }

            if(((L&R)==0&&C==1)||((L&R&C)==1))
        {
              GO();
            }

            if(L==1&&((C|R)==0))
              {
                    TL();
                }

            if((L|C)==0&&R==1)
            {
                TR();
            }

            if(L==0&&((C&R)==1))//Ê®×Ö
           {
              GO();
                break;
           }

          } 

       }

}

else STOP();

}

}

/*open PWM,fr-ƵÂÊ,dc-Õ¼¿Õ±È */
void ConfigPWM(unsigned int fr, unsigned char dc){
uint high, low;
unsigned long tmp;

tmp = (11059200/12) / fr; //Ò»¸öÖÜÆÚËùÐè¼ÆÊýÖµ
high = (tmp*dc) / 100; //¸ßµçƵËùÐè¼ÆÊýÖµ
low = tmp - high; //µÍµçƽËùÐè¼ÆÊýÖµ
high = 65536 - high + 12; //¼ÆËã¸ßµçƽµÄÖØÔØÖµ
low = 65536 - low + 12;//

HighRH = (unsigned char)(high>>8); //¸ßµçƽÖØÔØ
HighRL = (unsigned char)high;
LowRH = (unsigned char)(low>>8); //µÍµçƽÖØÔØ
LowRL = (unsigned char)low;

    TMOD=0x21;  //T0ÉèÖ÷½Ê½1 T1ÉèÖÃΪ2
TH0 = HighRH; //¸ßµçƽ
TL0 = HighRL;
ET0 = 1; 
TR0 = 1; 

/*bluetooth open*/  
SCON=0X50;          //ÉèÖÃΪ¹¤×÷·½Ê½1
PCON=0X00;          //²¨ÌØÂʲ»¼Ó±¶/
TH1=0XFD;               //¼ÆÊýÆ÷³õʼֵÉèÖã¬×¢ÒⲨÌØÂÊÊÇ9600µÄ
TL1=0XFD;
ES=1;                       //´ò¿ª½ÓÊÕÖжÏ
EA=1;                       //´ò¿ª×ÜÖжÏ
TR1=1;                  //´ò¿ª¼ÆÊýÆ÷


   en1 = 1; //Êä³ö¸ßµçƽ

   en2 = 1; //Êä³ö¸ßµçƽ

}

/* T0 ÖжÏ,²úÉú PWM */
void InterruptTimer0() interrupt 1
{

 if (en1 == 1&&en2==1)
    { 
    TH0 = LowRH;
    TL0 = LowRL;
    en1 = 0;
            en2 = 0;
}
    else
    { 
    TH0 = HighRH;
    TL0 = HighRL;
    en1 = 1;
          en2 = 1;
}

}

void Usart() interrupt 4 //´®¿ÚͨÐÅÖжÏ
{

receiveData=SBUF;//³öÈ¥½ÓÊÕµ½µÄÊý¾Ý
RI = 0;//Çå³ý½ÓÊÕÖжϱê־λ

if((receiveData-48)=='1')
            key= 1;  

SBUF=receiveData;//½«½ÓÊÕµ½µÄÊý¾Ý·ÅÈëµ½·¢ËͼĴæÆ÷
while(!TI);          //µÈ´ý·¢ËÍÊý¾ÝÍê³É
TI=0;                        //Çå³ý·¢ËÍÍê³É±ê־λ

}

3个回答

手机端的问题,你的APP可以仔细检查一下 单片机代码应该是没啥问题的 你确定你手机发送的数据 单片机收到了么?
还有 调试这种上位机和下位机一起的东西 要使用串口工具的
PS:我的毕业设计 也是做的这个 手机通过蓝牙控制小车 O(∩_∩)O哈哈~

LZCitlearner
LClearner 手机可以发送数据,我试过了
接近 3 年之前 回复

主要是查看小车时候可以接收 手机蓝牙发送的数据, 手机可以发送 并不代表小车可以收到,所以还要调试 用串口,端口号要设置在同一个频率等等

LZCitlearner
LClearner 确定可以正常接收数据啊 但是还是不行 蓝牙应该没什么问题的
接近 3 年之前 回复

还没人找到问题在那吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问