基于51单片机的遥控小车:实现可操控的移动体验

基于51单片机的遥控小车(HC-05模块,L298n模块) 保姆级

1.硬件准备


2.部分硬件说明

USB转TTL模块

可以把串口发送的TTL信号转换成USB信号再发送给电脑,电脑就可以接收到单片机发送过来的信号并在上位机(串口调试助手)上显示出来。 大部分单片机都可以使用串口的方式通过相应的上位机软件来下载程序,但是电脑的USB出来的信号是USB信号,单片机是无法识别USB信号的,需要通过USB转TTL模块把USB信号转换成TTL信号才能将程序下载到单片机中。
接线说明
GND端接入51单片机GND端
RXD端接入51单片机TXD端
TXD端接入51单片机RXD端
5V0端接入51单片机5V端口
(有些5V0端可能标注为vcc与上述接法一致)

L298n模块说明
L298N通过控制主控芯片上的I/O输入端,直接通过电源来调节输出电压,即可实现电机的正转、反转、停止,由于电路简单,使用方便,通常情况下L298N可直接驱动继电器(四路)、螺线管、电磁阀、直流电机(两台)以及步进电机(一台两相或四相)【来自知乎
由于购买的是三节电池电压大概在12v左右直接输入单片机会造成损坏所以要用L298n输出5v电压单片机供电
接线说明

2 3线接入L298n的out1端
1 4线接入L298n的out2端
(另一侧同上)
电池供电模块红线为正极黑线为负极
红线接入L298n的12v端口 黑线接入L298n的GND端口
另将L298n的5v端口接入单片机的5v端口
IN1到IN4端口接入单片机IO引脚(编写程序可自行定义)
ENA和ENB端口为调速端可先不接入
如:

 
sbit ENA    = P2^5;
sbit IN1    =   P2^4;
sbit IN2    = P2^3;
sbit IN3    =   P2^2;
sbit IN4    = P2^1;
sbit ENB    = P2^0;

3关于HC-05蓝牙模块的概述

蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。【来自百度经验
接线说明
GND端接入51单片机GND端
RXD端接入51单片机TXD端
TXD端接入51单片机RXD端
VCC端接入51单片机5V端口
(其他端口不需要接入)

4.程序实现遥控小车及程序烧录和软件控制实现

#include<reg51.h>
 sbit IN1=P2^4;  //定义L298n电机相关引脚
 sbit IN2=P2^3;  
 sbit IN3=P2^2; 
 sbit IN4=P2^1;
 void stop()  //小车停止
{ 
  IN1=0;
  IN2=0;
  IN3=0;
  IN4=0; 
}

void turnleft()  //小车左转
{ 
 IN1=1; 
 IN2=0; 
 IN3=1; 
 IN4=0;
} 
void turnright()   //小车右转
{ 
 IN1=0; 
 IN2=1;
 IN3=0; 
 IN4=1;
} 
void back() 	//小车倒退
{ 
 IN1=0; 
 IN2=1;
 IN3=1; 
 IN4=0; 
} 
void straight()   //小车直行
{ 
 IN1=1; 
 IN2=0; 
 IN3=0; 
 IN4=1; 
}
void usart_Init()  //串口初始化
{ 
 SCON=0X50; //工作在方式1且允许数据接收,因此SM0、SM1、REN都为1。则SCON应为0101 0000,即0x50。
 TMOD=0X20; //使用定时器1,8位自动加载计时器
 PCON=0X80; //波特率加倍
 TH1=0XFA; //计算波特率 公式:TL1 = 256 - fosc * (SMOD + 1) / (384 * 波特率)
 TL1=0XFA; //单片机晶振一般为11.0592MHz,这里用的定时器是定时器1,8位重装,8位最大255,加到溢出值256,初始值和重装值都设置为0xFA
 ES=1; 允许串行口接受、发送中断。
 EA=1; 对所有中断开放
 TR1=1; //启动定时器1
 ET1 = 0; //禁止定时器1中断,程序不需要中断只需要计时
}
void main() 
{ 
 usartinit();
 
 while(1);//while函数里面写空
} 
void usart()interrupt 4    //串口中断
{  	
uchar res; 
if(RI==1)   //允许单片机接收数据
{
	RI=0; 
	IN1=0; 
	IN2=0; 
	IN3=0; 
	IN4=0; 
	res=SBUF; 		  //将接收数据存入res中
switch(res) 
  { 
 case('1'):turnleft();//通过res的值来控制小车
 break;                 //这里偷懒将res的值换成字符
 case('2'):turnright();
 break; 
 case('3'):back();
 break; 
 case('4'):straight();
 break;
 case('0'):stop();
 break; 
  } 
 } 
}

5.相关软件
烧录软件

1.在单片机型号选择需要烧录的单片机型号
2.点开打开程序文件找到编译生成的.hex文件
3.用usb转ttl连接单片机
4.点击下载编程等待烧录完成
注:如果长时间显示没找到单片机可能是单片机型号选择错位或者usb转ttl的RXD和TXD接错
手机app
spp蓝牙串口

进入界面选择‘键盘’界面,打开下方的编辑模式编辑按键
如下

根据所写程序编写按键
小车上电后等待L298n模块,51单片机和HC-05模块的红灯亮起用app找到蓝牙名称连接
实现蓝牙控制小车(HC-05模块的连接范围为10m)
END!!!

物联沃分享整理
物联沃-IOTWORD物联网 » 基于51单片机的遥控小车:实现可操控的移动体验

发表评论