ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

硬件篇:手把手教你制作属于你的遥控车(51单片机蓝牙小车)

2020-11-22 21:29:50  阅读:873  来源: 互联网

标签:舵机 51 单片机 串口 sbit PWM 遥控车


重要声明

本人为软件工程专业,硬件不是本专业的学习范畴,因为本人对硬件感兴趣,自学了部分51单片机知识,这个小车是20年上半年因为疫情被困在家中突发奇想做的,现在有空闲时间就想着写一篇博客,分享给同样对硬件感兴趣的小伙伴。

所需知识准备

了解51单片机、HC-05/06蓝牙模块使用方法!!!!

准备材料

51单片机最小系统板、LM2596降压模块、HC-06蓝牙模块、MG995系列180度舵机、L298N电机驱动(160w双路)、任意品牌遥控车车架带电机、聚合物锂电池一块

部分原材料照片

在这里插入图片描述
在这里插入图片描述

设计思路和接线示意

在这里插入图片描述

原理简介

因为是自学的51单片机,不会用太复杂的东西,所以用到的原理都很简单,51单片机与HC-06蓝牙模块串口通信、L298N电机驱动芯片驱动四路舵机、51单片机通过串口输出PWM波控制舵机,以上原理较为简单,就不一一详细阐述了,有一点想提醒和我一样的萌新:注意看你用的L298N的电流,如果驱动的电流较大,建议和我一样对它单独供电,不然会出大问题的!!还有一点就是串口通信时TXD与TRD反接问题,这是串口通信的关键。

51程序代码

下面的代码是成功的时候最原始的代码,后续进行过修改因为没保存,现在找不到了,所以就把最原始的代码贴出来了。程序比较简单,应该都看得懂。难一点的地方也加了注释,有看不懂的地方欢迎评论留言。

/*蓝牙小车程序
T0产生PWM控制舵机,T1用于串口通信舵机330hz*/
#include<reg52.h> 
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit PWM=P0^0; 	 //舵机控制端口
sbit in1=P2^0;	 //电机控制端口1
sbit in2=P2^1;	 //电机控制端口2 
sbit in3=P2^2;	 //电机控制端口3
sbit in4=P2^3;    //电机控制端口4
sbit FMQ=P0^1;    //蜂鸣器控制



uint count=0,jd;
uchar a;


void InitUART() //串口初始化
{
	TMOD = 0x21;  //设置定时器T1
	PCON = 0x00;  //关倍频
	SCON = 0x50;  
  TH1 = 0xFD;	//T1 波特率9600
  TL1 = 0xFD;  
	TR1 = 1;     //启动定时器
	TR0 = 1;
	ES = 1;  //开启串口中断
	PS = 1;
	ET0 = 1;   
	EA = 1;     //开启总中断
	
}

void main ()
{
 	InitUART();	
	while (1);

}

 void Time0_Int() interrupt 1 //中断程序
{
TH0  = 0xfe;             //重新赋值
TL0  = 0x33;
    if(count< jd)              //判断0.5ms次数是否小于角度标识
      PWM=1;                  //确实小于,PWM输出高电平
    else
      PWM=0;                  //大于则输出低电平
    count=(count+1);          //0.5ms次数加1
    count=count%40;     //次数始终保持为40 即保持周期为20ms
}

void UARTInterrupt () interrupt 4  //中断程序 4
{

 if(RI==1)
    {
    	RI = 0;
		a = SBUF;
		if (a == 0x01)  //前进
		{
			in1=1;
			in2=0;
			in3=1;
			in4=0;
		}
		if (a == 0x02)	//后退
		{
			in1=0;
			in2=1;
			in3=0;
			in4=1;
		} 
		if (a == 0x00)		//停止
		{
			in1=1;
			in2=1;
			in3=1;
			in4=1;
		}
		if(a == 0x03)		//左转
		{		
			jd=2;
		}
	
		if(a == 0x04)		//右转
		{	 	
			jd=4;
		
		} 
		if(a == 0x05)		 //回中
		{	  
			jd=3;			
		} 			
	  
		if(a ==0x06)   //蜂鸣器开
		{
		   FMQ=0;
		}
		if(a ==0x07)     //蜂鸣器关
		{
		   FMQ=1;
		}
	}		
	
}

成品展示

在这里插入图片描述

手机遥控界面

在这里插入图片描述

总结反思

现在再回去看我的第一个51作品,看着简单,回想刚开始研究51时的艰辛,各种贴吧网站逛了个遍,四处搜集查找资料,因为一点小问题冥思苦想好几天,到最后玩上了自己的遥控车,真的是成就感满满啊!!!继续加油吧,,哈哈。有需要以上原始材料相关资料的可以私信我!!

标签:舵机,51,单片机,串口,sbit,PWM,遥控车
来源: https://blog.csdn.net/k1507157/article/details/109962110

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有