基于51的蓝牙遥控智能车
一.简介
本作品基于51单片机,通过控制电机驱动模块L298N输出高低电平,进而实现小车前后左右运动,外加HC-05蓝牙模块,连接手机软件进行远程操纵。
主要内容包括:
1.L298N电机驱动模块的使用。
2.使用PWM,实现匀速。
3.蓝牙模块的连接。
二. 硬件设计
1)总体硬件框图
STC89C52单片机做主控
(2)单片机最小系统
单片机最小系统主要由电源、时钟电路、复位电路组成。
**p1.0, P 1.5,P2.0,P2.5口为使能
(4) L298N电机驱动模块
1.下端三个口(从左到右):+12V,GND,+5V
2.左右两个OUT端,连接电机。
3.上图有跳线帽的为使能,中间的四个,左二,右二,连接51单片机引脚控制电机左右转。正反方向可淘宝搜索,一般都会有介绍。
4.左转:左上轮为0,其余为1.
5.右转:右上轮为0,其余为1.(编程需要注意)
(**5)蓝牙模块
1.上图为蓝牙与51单片机串口通信连接图
2.仅用VCC,GND,RXD,TXD便可实现功能
3.蓝牙模块需要拿串口软件调试,设计波特率,和连接密码。
三.软件设计
(1)代码
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit a=P1^0; //前,右轮
sbit a1=P1^1;
sbit a2=P1^2; s
sbit b=P1^5; //前,左轮
sbit b1=P1^4;
sbit b2=P1^3;
sbit c=P2^0; //后,左轮
sbit c1=P2^1;
sbit c2=P2^2;
sbit d=P2^5; //后,右轮
sbit d1=P2^4;
sbit d2=P2^3;
u8 receiveData=0,hige=10000,low=10000; //定义接收的数据;维持高,低电平
void delay(u16 i)
{
while(i--); //延时函数
}
void UsartInit() //定时器
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0XF3;
ES=1;
EA=1;
TR1=1;
}
void main() //主函数
{
u16 x=0;
UsartInit();
while(1)
{
if(receiveData=='0') //接收“0”
{
led=1;
a=0; // a,b,c,d各指代L298N一侧的使能
b=0;
c=0;
d=0;
}
if(receiveData=='1') //接收到“1”
{
led=0;
a=1; //全部使能,使模块进入到预工作状态
b=1;
c=1;
d=1;
a1=0; //a1,a2.b1...控制模块在各口电机转动:左右,前后,停
a2=1; //以下一样
b1=0;
b2=1;
c1=0;
c2=1;
d1=0;
d2=1;
for(x=0;x<hige;x++) //同下面的low一样,为了保持匀速运动
{
delay(10);
}
a=0;
b=0;
c=0;
d=0;
for(x=0;x<low;x++)
{
delay(10);
}
}
if(receiveData=='b') //接收“b”为后退
{
a=1;
b=1;
c=1;
d=1;
a1=1;
a2=0;
b1=1;
b2=0;
c1=1;
c2=0;
d1=1;
d2=0;
for(x=0;x<hige;x++)
{
delay(10);
}
a=0;
b=0;
c=0;
d=0;
for(x=0;x<low;x++)
{
delay(10);
}
}
if(receiveData=='L') //接收‘L“为左转指令
{
a=1;
b=1;
c=1;
d=1;
a1=0;
a2=1;
b1=1;
b2=1;
c1=1;
c2=1;
d1=0;
d2=1;
for(x=0;x<100;x++)
{
delay(100);
}
a=0;
b=0;
c=0;
d=0;
for(x=0;x<100;x++)
{
delay(100);
}
}
if(receiveData=='R') //右转
{
a=1;
b=1;
c=1;
d=1;
a1=1;
a2=1;
b1=0;
b2=1;
c1=0;
c2=1;
d1=1;
d2=1;
for(x=0;x<100;x++)
{
delay(100);
}
a=0;
b=0;
c=0;
d=0;
for(x=0;x<100;x++)
{
delay(100);
}
}
}
}
void Usart() interrupt 4 //中断
{
receiveData=SBUF; //此处为接收蓝牙指令切入口
RI = 0;
SBUF=receiveData;
while(!TI);
TI=0;
}
四.回顾和总结
1.遥控小车,只需要会发送指令的蓝牙模块+驱动电机运动驱动模块;本质上就是利用“无线+IO口(包含定时器的使用)+中断实现。