#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; //Çå³ý·¢ËÍÍê³É±ê־λ
}
手机端的问题,你的APP可以仔细检查一下 单片机代码应该是没啥问题的 你确定你手机发送的数据 单片机收到了么?
还有 调试这种上位机和下位机一起的东西 要使用串口工具的
PS:我的毕业设计 也是做的这个 手机通过蓝牙控制小车 O(∩_∩)O哈哈~
主要是查看小车时候可以接收 手机蓝牙发送的数据, 手机可以发送 并不代表小车可以收到,所以还要调试 用串口,端口号要设置在同一个频率等等
还没人找到问题在那吗?