基于51单片机制作的蓝牙小车
这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了,因为部长说以后要学stm32开发板了,51单片机以后大概是不会接触了,不得不说写博客对我而言真的有点困难。祝愿我也祝愿大家能够坚持自己的梦想。
一.所需材料
1,51单片机开发板x1
2,杜邦线(公对公,母对母,公对母)
3,L298N步进电机x1
4,电池一枚,以作为电源
5,HC-05蓝牙模块(本人买的是主从一体式)
6,蓝牙小车底盘一个
二,组装阶段
1,L298N模块各接口说明,
1)首先12V电源输入是直接接电源正极的(本人买的是12V电池,毕竟跑的快)。
2)电源地接电源负极以及单片机的GND(当作负极看吧,好理解)。
3)5V输入直接就接51单片机的VCC(就是51单片机的电源输入口)。
4)电池电流是先流入L298N再去51单片机开发板的,别问我为什么知道,因为我已经烧坏一块板子了。至于其他接口图上已经说的很明白了。
5)A,B通道使能输出口(ENA及ENB),本人没有用,也不用管那个玩意,因为我菜不会用,而且也没什么大用
6)马达A,B输出口,用于控制马达的电流输出,接马达就好。
7)A,B通道使能输出口中间的的4个口,是接单片机IO口的,用于逻辑写入。
2,HC-05蓝牙模块
1)蓝牙模块上的VCC接51单片机上的VCC,GND接51单片机上的GND
2)蓝牙模块上的TXD与RXD是接入单片机的IO口上,下面会有所说明。
3,51单片机说明
这是单片机开发板的部分原理图(IO口)
1)L298N上的A,B通道使能输出口中间的的4个口(IN1,INT2,INT3,INT4),本人分别接于单片机上P00,P01,P02,P03这四个IO口上。
2)蓝牙模块上的RXD接口接在单片机上的TXD接口上,在该原理图上是P31接口;TXD接口接在RXD接口上,即P30接口。
三,成品展示
因本人手艺粗糙,效果就是这个样子(我弟弟玩的还是很开心,导致有些接口接的比较松)
四,代码实现阶段
#include <reg51.h>
sbit int1=P0^0;
sbit int2=P0^1;
sbit int3=P0^2;
sbit int4=P0^3;
char i;
void stop()//停止
{
int1=0;
int2=0;
int3=0;
int4=0;
}
void back()//后退
{
int1=1;
int2=0;
int3=1;
int4=0;
}
void forward()//前进
{
int1=0;
int2=1;
int3=0;
int4=1;
}
void right() //右转
{
int1=0;
int2=1;
int3=1;
int4=0;
}
void left()//左转
{
int1=1;
int2=0;
int3=0;
int4=1;
}
void main()
{
TMOD=0x20; //设置T1为工作方式2
TH1=0xfd; //装入初值,比特率为9600bps
TL1=0xfd;
TR1=1; //开启T1
REN=1; //接收允许
SM0=0; //方式1
SM1=1;
EA=1; //开全局中断
ES=1; //开串口中断
while(1)
{
i=SBUF;//SBUF为单片机接收到的数据,单片机接收到的数据都存放在SBUF里;
RI=0;
switch(i)
{
case '1':
forward();
break;
case '2':
back();
break;
case '3':
left();
break;
case '4':
right();
break;
case '5':
stop();
break;
}
}
}
五,测试
通上电之后呢,就可以用手机蓝牙进行测试啦。
1,首先呢先在手机上下载一个蓝牙助手,大概像这个样子的。
最主要的是那四个前后左右的按键,其他的是我自己加的,反正在源代码上自行添加就好。
解析:前进,后退,左转,右转,停止,都对应着程序中相应的信息,如图;
当手机端发送 1 给蓝牙模块,就会执行 forward()函数; 小车会向前走
当手机端发送 2 给蓝牙模块,就会执行 back();函数;,小车会向后走
当手机端发送 3 给蓝牙模块,就会执行 left();函数;,小车会向左走
当手机端发送 4 给蓝牙模块,就会执行 right()函数;,小车会向右走
当手机端发送 5 给蓝牙模块,就会执行stop()函数;,小车会停止
具体的编辑如图:
话说缩进咋弄?还有字体大小什么的呢?