材料:
(1)51单片机开发板
(2)l298n电机驱动模块1个
(3)四个电机
(4)JDY-31蓝牙模块
一、组装
(1)L298N电机驱动模块与开发板接线如下图:
(2)蓝牙接线:
VCC接51单片机开发板的5v,GND接51单片机开发板的GND,TXD接51单片机开发板的P30引脚,RXD接51单片机开发板的P31引脚,烧录程序的时候要先把P30,P31两个引脚先拔掉,不然会被占用导致烧录不了程序。
二、烧录问题
烧录程序的时候要先把蓝牙P30,P31两个引脚先拔掉,不然会被占用导致烧录不了程序。
代码:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
//定义电机控制管脚
sbit MOTOA=P1^0;
sbit MOTOB=P1^1; //右电机
sbit MOTOC=P1^2;
sbit MOTOD=P1^3; //左电机
void delay10us(void)
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=2;a>0;a--);
}
void delay_10us(u16 us)
{
while(us--);
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void Car_ForwardRun(void)//前进
{
MOTOA=1;
MOTOB=0;
MOTOC=1;
MOTOD=0;
}
void Car_BackwardRun(void)//后退
{
MOTOA=0;
MOTOB=1;
MOTOC=0;
MOTOD=1;
}
void Car_StopRun(void)//停止
{
MOTOA=0;
MOTOB=0;
MOTOC=0;
MOTOD=0;
}
void Car_LeftRun(void)//左转
{
MOTOA=1;
MOTOB=0;
MOTOC=0;
MOTOD=1;
}
void Car_RightRun(void)//右转
{
MOTOA=0;
MOTOB=1;
MOTOC=1;
MOTOD=0;
}
#define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值 9600
void UART_Init(void)
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=RELOAD_COUNT; //计数器初始值设置
TL1=TH1;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void UART_SendByte(u8 dat)
{
ES=0; //关闭串口中断
TI=0; //清发送完毕中断请求标志位
SBUF=dat; //发送
while(TI==0); //等待发送完毕
TI=0; //清发送完毕中断请求标志位
ES=1; //允许串口中断
}
//定义蓝牙APP中控制按键的键值
#define BLUETOOTH_FORWARD 0x10
#define BLUETOOTH_BACKWARD 0x11
#define BLUETOOTH_LEFT 0x20
#define BLUETOOTH_RIGHT 0x21
#define BLUETOOTH_STOP 0x30
void BlueTooth_Init(void)
{
UART_Init();
}
void BlueTooth_SendData(u8 dat)
{
UART_SendByte(dat);
}
#define USART_MAX_RECV_LEN 1
u8 USART_RX_BUF[USART_MAX_RECV_LEN];
void Uart() interrupt 4
{
if(RI)
{
USART_RX_BUF[0]=SBUF;
RI = 0;//清除接收中断标志位
}
}
//主函数
void main()
{
BlueTooth_Init();
while(1)
{
switch(USART_RX_BUF[0])
{
case 1: Car_ForwardRun();break;
case 2: Car_BackwardRun();break;
case 3: Car_LeftRun();break;
case 4: Car_RightRun();break;
case 5: Car_StopRun();break;
}
}
}
4、手机端调试软件
APP:SPP蓝牙串口
说明:
首先要点十六进制,如果前,后,左,右方向不对的话就把1,2,3,4调换一下,或者改程序,还可以改硬件电机的接线