android单片机蓝牙小车,用手机控制的蓝牙小车制作教程与单片机源码及APP等资料...

#include

void UsartConfiguration();

unsigned char num;

void delay(unsigned int i)                //延时函数,下面我说的500毫秒,现实不是500毫秒,方便大家理解而已

{

unsigned int k;

for (k=0;k

}

void main()                        //主函数

{

UsartConfiguration();                                //调用蓝牙接受的参数

while(1)

{

/**********************直走*************************************/

if(num == 'q')                                //如果蓝牙接收到q字母,就执行下面的指令

{

delay(500);                                        //延时一下

if(num == 'q')

{                                                                                                        //p1        1 1 1 1                        分别对应1234号马达

P1=0x0f;                                                                //                0 0 0 0                        上面是高电平,下面是低电平,四个马达都会向前开

delay(500);                                                        //延时降速,如果L298N是接12V的电源,那么马达的电压是12v,速度太快了,需要降速

P1=0x00;                                                                //这里降速的原理是让马达转500毫秒,停一下,转500毫秒,停一下,转500毫秒,停一下,从而达到降速的效果

}

}

/*****************************后退    ***************/

if(num == 'h')                        //如果蓝牙接收到h字母,就执行下面的指令

{

delay(500);

if(num == 'h')

{                                                                                                                                        //p1        0 0 0 0                        分别对应1234号马达

P1=0xf0;                                                                                                //                1 1 1 1                        上面是低电平,下面是高电平,四个马达都会向后开

delay(500);

P1=0x00;

}

}

/*****************原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  *****************/

if(num == 'z')                                        //如果蓝牙接收到z字母,就执行下面的指令

{

delay(500);

if(num == 'z')

{                                                                                                                //p1  0 1 0 1                                马达2 4向前开,马达1 3向后开

P1=0x5a;                                                                        //    1 0 1 0

delay(500);

P1=0x00;

}

}

/****************原地右转   ************************************/

if(num == 'y')                                        //如果蓝牙接收到y字母,就执行下面的指令

{

delay(500);

if(num == 'y')

{                                                                                                                //P1 1 0 1 0                        马达13向前开,马达24向后开

P1=0xa5;                                                                        //         0 1 0 1

delay(500);

P1=0x00;

}

}

/****************向左开  ******************************/

if(num == 'a')                                        //如果蓝牙接收到a字母,就执行下面的指令

{

delay(500);

if(num == 'a')

{

P1=0x5a;                                                //小车左转600毫秒

delay(600);

P1=0x0f;                                                //小车直行1200毫秒

delay(1200);

P1=0x00;

}

}

/****************向右开*****************************/

if(num == 'b')                                        //如果蓝牙接收到b字母,就执行下面的指令

{

delay(500);

if(num == 'b')

{

P1=0xa5;

delay(600);

P1=0x0f;

delay(1200);

P1=0x00;

}

}

/******************没指令的时候停车***************************/

if(num == '0')                                        //如果蓝牙接收到数字0,就执行下面的指令

{

P1=0x00;                                                        //p1的8个口都是低电平,小车停下来

}

}

}

void UsartConfiguration()

{

SCON=0x50;                //设置为工作方式1

TMOD=0x20;                //设置为工作方式2

//        PCON=0x80;                //波特率加倍

TH1=0xFD;                //计数器初值设置,波特率是4800

TL1=0xFD;

ES=1;                        //开中断

EA=1;

TR1=1;                        //开计数器

}

void interrupt_uart() interrupt 4 //using1切换寄存器组到1,进入中断就要判断是发送中断TI,还是接收中断RI。

{

if(TI)  //判断是否为发送端TI中断,中断结束之后,只需发送端清零,表示发送完成。

{

TI = 0;

REN = 1;  // ******允许接收数据。 *******

}

if(RI) //判断是否为接收端RI中断,中断结束之后,只需接收端清零,表示接收完成。

{

RI = 0; //只要数据接收端清零,就可以取出数据。

num = SBUF;         //SBUF取数据

SBUF = num;         //*******把数据num从SBUF送出去。************

REN = 0;        //严谨的写法,发送数据的时候禁止接收数据。

}

//发送的时候不接收数据 ,发送完了再接收数据。

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值