|
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit zuo1=P2^0;//定义控制左边电机的单片机引脚
sbit zuo2=P2^1;//定义控制左边电机的单片机引脚
sbit you1=P2^2;//定义控制右边电机的单片机引脚
sbit you2=P2^3;//定义控制右边电机的单片机引脚
uchar a=0;//定义一个变量a用来读取串口的数据
void delay(uint z)//一个带参数的延时程序
{
int i,j;
for(i=10;i>0;i--)
for(j=z;j>0;j--);
}
void init()//初始化子程序
{
TMOD=0x20; //设置定时器T1为工作方式2
TH1=0xfd;
TL1=0xfd;//T1定时器装初值
TR1=1;//启动定时器T1
REN=1;//允许串口接收
SM0=0;
SM1=1;//设置串口工作方式1
EA=1; //开总中断
ES=1;//开串口中断
}
void go()
{
zuo1=0;
zuo2=1;//左边轮子正转
delay(60);//PWM有用值,越大左边轮子转得越快
zuo1=1;//关闭左边轮子
you1=0;
you2=1;//右边轮子正转
delay(60);//PWM有用值,越大右边的轮子越快
you1=1;//关闭6右边轮子
delay(100);//PWM无用值,越大,小车跑的越慢
}
void hui()
{
zuo1=1;
zuo2=0;//左边轮子倒转
delay(60);//PWM有用值,越大左边轮子越快
zuo2=1;//关闭左边轮子
you1=1;
you2=0;//右边轮子倒转
delay(60);//PWM有用值,越大右边轮子越快
you2=1;//关闭右边轮子
delay(100);//PWM无用值,越大,小车跑的越慢
}
void turnleft()//小车左转程序
{
zuo1=1;
zuo2=0; //左轮制动
delay(35);
zuo2=1;
you1=0;
you2=1; //右轮正转
delay(35); //PWM有用值,越大,右轮越快
you1=1; //右轮停止
delay(100);//PWM无用值,越大,小车跑的越慢
}
void turnright()//小车右转程序
{
zuo1=0;
zuo2=1; // 左边轮子正转
delay(35);//PWM有用值,越大,左边轮子越快
zuo1=1; // 左轮停止
you1=1;
you2=0; //右轮停止
delay(35);
you2=1;
delay(100);// PWM无用值,越大,小车跑的越慢
}
void down()//停止程序
{
zuo1=1;
zuo2=1;
you1=1;
you2=1;
}
void main()//主程序
{
init();//调用初始化子程序
while(1) //死循环
{
switch(a)//判断a从串口读取到的数据
{
case 0x4f: //0x1f 前进
go();
break;
case 0x3f: //0x2f 后退
hui();
break;
case 0x2f: // 0x3f 左转
turnleft();
break;
case 0x1f: //0x4f右转
turnright();
break;
case 0x00: //0x00停止
down();
break;
}
}
}
void chuan()interrupt 4//串口中断服务
{
RI=0;//软件清除串口响应
a=SBUF;//读取单片机串口接收的蓝牙模块发送的数据
}
|
-
-
蓝牙小车.zip
34.75 KB, 下载次数: 21, 下载积分: 黑币 -5
|