C51蓝牙小车制作以及代码

C51蓝牙小车

1.材料:
4WD板子,L298N电机驱动模块,稳压模块,C51(2)芯片,芯片底座,HC-05蓝牙模块,杜邦线,三节3.7V充电电池,一个DC电池盒。
注意:4WD底板有4个130马达,所以L298N需要两个,单片机供电为5V,蓝牙模块供电为3.6到6V之间,故用稳压模块是为蓝牙模块和C51芯片供电。130马达可以承受11V左右的电压但建议用PWM降压让它维持在8V左右的电压。C51蓝牙小车制作以及代码_第1张图片
C51蓝牙小车制作以及代码_第2张图片
C51蓝牙小车制作以及代码_第3张图片
C51蓝牙小车制作以及代码_第4张图片
C51蓝牙小车制作以及代码_第5张图片
C51蓝牙小车制作以及代码_第6张图片
C51蓝牙小车制作以及代码_第7张图片
C51蓝牙小车制作以及代码_第8张图片
C51蓝牙小车制作以及代码_第9张图片
2.关于接线:C51蓝牙小车制作以及代码_第10张图片
我圈起来的就是重点了,首先一个L298N直接将11V电压接入(先了解下L298N的工作原理)再并联一个L298N,其他的控制线接入单片机底座,接着就是蓝牙模块的RXD对应TXD,TXD对应RXD接入。
3.关于蓝牙模块:
首先拿到模块后用软件修改波特率,主要是自己能知道是多少的波特率(建议9600pbs)。CSDN有专门的软件下载,这里不过多讲解。
4.代码:
/*
晶振:11.0592Mhz
芯片:C52
*/
#include
//right
sbit IN5 = P1^0;
sbit IN6 = P1^1;
sbit IN7 = P1^2;
sbit IN8 = P1^3;
//left
sbit IN1 = P0^0; //0000 1010正转
sbit IN2 = P0^1; //0000 0101
sbit IN3 = P0^2;
sbit IN4 = P0^3;
char buffer = 0; //从蓝牙处接受数据
int demu = 7,num; //demu是设置占空比的参数
void init() //初始化:波特率的设置与要蓝牙的波特率一致
{
SCON =0x50;
TMOD =0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TH0=0xff; //计数器的初始值是多少,不用太关心
TH0=0x17;
EA=1;
ES=1;
ET0=1;
TR0=0; //刚上电时避免转动
TR1=1;
}
void adjust() //调节方向
{
switch(buffer)
{
case ‘S’: //停止
P0 = 0x00;
P1 = 0X00;
TR0 = 0;
break;
case ‘G’: //前进
TR0 = 1;
P0 = 0X0A;
P1 = 0X0A;
break;
case ‘B’: //后退
TR0 = 1;
P0 = 0X05; //0000 0101
P1 = 0x05;
break;
case ‘L’: //左转
TR0 = 1;
P0 = 0X0A;
P1 = 0X00;
break;
case ‘R’: //右转
TR0 = 1;
P1 = 0X0A; //0000 1010
P0 = 0X00;
break;
case ‘1’: //档位
TR0 = 1;
demu = 7;
P0 = 0X00;
P1 =0X00;
break;
case ‘2’:
TR0 = 1;
demu = 10;
P0 = 0X00;
P1 =0X00;
break;
case ‘3’:
TR0 = 1;
demu = 14;
P0 = 0X00;
P1 =0X00;
break;
}
}
main()
{
init();
while(1)
{
adjust();
}
}
void UartIsr() interrupt 4
{
if(RI)
{
RI=0;
buffer = SBUF;
}
}
void timer0() interrupt 1
{
TH0 = (65536 - 461)/256; //500us
TL0 = (65536 - 461)%256;
++num;
if(num<=demu) //高电平由adjust函数来决定
{
}
else
{
P1 = 0X00;
P0 = 0X00;
}
if(num==20) //周期:10ms
num = 0;
}
5.结束语:第一次写博客,有些功能还不太会用,代码的话就将就看下,程序有什么不懂的欢迎留言,高手勿喷,第一次做小车还是有很多收获。只要坚持你所热爱的,你就会得到你意想不到的。
链接: [link]https://blog.csdn.net/qq_45955402

你可能感兴趣的:(C51蓝牙小车制作以及代码)