1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 硬件篇:手把手教你制作属于你的遥控车(51单片机蓝牙小车)

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

时间:2023-11-11 08:32:25

相关推荐

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

重要声明

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

所需知识准备

了解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 intsbit PWM=P0^0; //舵机控制端口sbit in1=P2^0; //电机控制端口1sbit in2=P2^1; //电机控制端口2 sbit in3=P2^2; //电机控制端口3sbit in4=P2^3; //电机控制端口4sbit FMQ=P0^1; //蜂鸣器控制uint count=0,jd;uchar a;void InitUART() //串口初始化{TMOD = 0x21; //设置定时器T1PCON = 0x00; //关倍频SCON = 0x50; TH1 = 0xFD;//T1 波特率9600TL1 = 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输出高电平elsePWM=0; //大于则输出低电平count=(count+1);//0.5ms次数加1count=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时的艰辛,各种贴吧网站逛了个遍,四处搜集查找资料,因为一点小问题冥思苦想好几天,到最后玩上了自己的遥控车,真的是成就感满满啊!!!继续加油吧,,哈哈。有需要以上原始材料相关资料的可以私信我!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。