php 控制蓝牙,蓝牙车;手机蓝牙控制;这么详细的代码已经很少见了!!!

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar t;        //延时 t*50us

uchar L,R;        //与t一体,为left、right绝对值

uchar Li,Ri;        //等于left,right

sbit Ctl_L1=P2^0; //左轮控制端1         PWM

sbit Ctl_L2=P2^1; //左轮控制端2

sbit Ctl_R1=P2^2; //右轮控制端1         PWM

sbit Ctl_R2=P2^3; //右轮控制端2

//--0----1----2---3----4----5----6--

//后退 左转 右转 停止 前进 加速 减速

//参数left、right分别代表左右轮,值域为-100~100,当为0时,则停止,当为负数时,则反转,数值大小代表转动速度,值越大越快

void CarGo(int left,int right)

{

//纠正left、right区间

left=(left>100)?100:left;

left=(left

right=right>100?100:right;

right=(right

//赋值---用于加、减速

Li=left;

Ri=right;

//将绝对值赋予L、R---用于PWM

L=abs(left);

R=abs(right);

if(left!=0&&right!=0)                //运动

{

Ctl_L2= left>0?0:1;

Ctl_R2=right>0?0:1;

}

else                //停止

{

Ctl_L2=0;

Ctl_R2=0;

}

}

void InitCar()

{

t=0;        //设定延时 t从0开始

//设定定时器参数

TMOD=0x21;                        //设定定时器0/1为 工作方式1/2

//延时50us

TH0=(65536-50)/256;                        //设定定时器0 高8位                                计时器1-->TH1

TL0=(65536-50)%256;                        //设定定时器0 低8位

ET0=1;                        //中断 定时器0打开

TR0=1;                        //定时器0 启动

//50us时间到,跳转到中断程序中

SCON = 0x50;

TH1 = 0xFD;        //波特率9600

TL1 = 0xFD;

PCON = 0x00;        //SMOD=0

EA = 1;        //开总中断

ES = 1;        //开串口中断

TR1 = 1;        //定时器中断启动

}

void timer() interrupt 1                        //定时器0中断                        延时50us

{

TH0=(65536-50)/256;                        //设定定时器0 高8位                                计时器1-->TH1

TL0=(65536-50)%256;                        //设定定时器0 低8位

t++;                                                        //已延时t*50us

if(t>100)

{t=0;}

if(L!=0&&R!=0)

{

Ctl_L1=t[0-------L/R------100]

Ctl_R1=t

}

else

{

Ctl_L1=0;

Ctl_R1=0;

}

}

void GetSerial() interrupt 4

{

uchar New;

if(RI)

{

RI = 0;

New=SBUF;

switch(New)

{

case 0x00:CarGo(-50,-50);break;        //后退

case 0x01:CarGo(-20,50);break;        //左转

case 0x02:CarGo(50,-20);break;        //右转

case 0x03:CarGo(0,0);break;        //停止

case 0x04:CarGo(50,50);break;        //前进

case 0x05:        //加速

{

Li=Li>0?Li+10:Li-10;

Ri=Ri>0?Ri+10:Ri-10;

CarGo(Li,Ri);

}break;

case 0x06:        //减速

{

Li=Li>0?Li-10:Li+10;

Ri=Ri>0?Ri-10:Ri+10;

CarGo(Li,Ri);

}break;

default:        break;

}

SBUF=New;

while(!TI);

TI=0;

}

}

main()

{

CarGo(0,0);        //刹车

InitCar();

while(1)

{}

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部