问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C51蓝牙小车制作及代码详解

创作时间:
作者:
@小白创作中心

C51蓝牙小车制作及代码详解

引用
CSDN
1.
https://blog.csdn.net/qq_45955402/article/details/107246649

本文将详细介绍如何制作一个基于C51单片机和蓝牙控制的四轮驱动小车。文章将从材料准备、硬件连接、蓝牙模块设置到完整的控制代码,手把手教你完成这个有趣的DIY项目。

材料清单

  • 4WD板子
  • L298N电机驱动模块(2个)
  • 稳压模块
  • C51芯片(2个)
  • 芯片底座
  • HC-05蓝牙模块
  • 杜邦线
  • 三节3.7V充电电池
  • 一个DC电池盒

注意事项:

  • 4WD底板配备4个130马达,因此需要两个L298N驱动模块。
  • 单片机供电电压为5V,蓝牙模块供电电压为3.6到6V,因此需要稳压模块为蓝牙模块和C51芯片供电。
  • 130马达可以承受11V左右的直流电压,但建议使用PWM方式使电压有效值维持在8V左右。









关于接线

重点连线如下:

  • 首先将11V电压接入一个L298N,然后并联另一个L298N。
  • 其他控制线接入单片机底座。
  • 蓝牙模块的RXD对应单片机的TXD,TXD对应单片机的RXD。

关于蓝牙模块

拿到模块后需要使用软件修改波特率,一般设置为9600bps。CSDN上有专门的软件可供下载使用。

控制代码

/*
晶振Fosc: 11.0592Mhz ,{ Tm = 12 * T(晶振)  =====>>>> Fm = Fosc/12 }
芯片:STC89C52 
*/
#include <reg52.h>
//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;    //10位串口,可变波特率                 
    TMOD =0x20;    
    //PCON=0x00;   //SMOD == 0,波特率不加倍
    TH1=0xfd;		//9600bps
    TL1=0xfd;
    //TH0=0xff;     
    //TH0=0x17; 
    TH0 = (65536 - 461)/256;    //定时500us,发生PWM
    TL0 = (65536 - 461)%256;	//T0计数器的初始值是多少,不用太关心 
    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)		//TI和RI只能用软件清零
     {
         RI=0;
         buffer = SBUF;		//SBUF是数据缓存寄存器
     }
}
void timer0() interrupt 1
{
      TH0 = (65536 - 461)/256;    // 461 * Tm = 500us
      TL0 = (65536 - 461)%256;
     ++num; 
    if(num<=demu)    //高电平由adjust函数来决定 
    {
 }
    else
    {
      P1 = 0X00;
        P0 = 0X00;
    }
    if(num==20)      //周期:10ms 
        num = 0;
}		
  

结语

通过本教程,你可以制作一个功能齐全的蓝牙遥控小车。如果在制作过程中遇到任何问题,欢迎在评论区留言讨论。坚持你所热爱的,你一定会得到意想不到的收获。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号