STM32
直播中

刘静

7年用户 1269经验值
私信 关注
[问答]

如何去制作一种基于51单片机的蓝牙小车呢

如何去制作一种基于51单片机的蓝牙小车呢?其代码该怎样去实现呢?

回帖(1)

王东

2021-12-22 15:00:41
基于51单片机制作的蓝牙小车

这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了,因为部长说以后要学stm32开发板了,51单片机以后大概是不会接触了,不得不说写博客对我而言真的有点困难。祝愿我也祝愿大家能够坚持自己的梦想。
一.所需材料
1,51单片机开发板x1
2,杜邦线(公对公,母对母,公对母)
3,L298N步进电机x1
4,电池一枚,以作为电源
5,HC-05蓝牙模块(本人买的是主从一体式)
6,蓝牙小车底盘一个
二,组装阶段
1,L298N模块各接口说明,





1)首先12V电源输入是直接接电源正极的(本人买的是12V电池,毕竟跑的快)。
2)电源地接电源负极以及单片机的GND(当作负极看吧,好理解)。
3)5V输入直接就接51单片机的VCC(就是51单片机的电源输入口)。
4)电池电流是先流入L298N再去51单片机开发板的,别问我为什么知道,因为我已经烧坏一块板子了。至于其他接口图上已经说的很明白了。
5)A,B通道使能输出口(ENA及ENB),本人没有用,也不用管那个玩意,因为我菜不会用,而且也没什么大用
6)马达A,B输出口,用于控制马达的电流输出,接马达就好。
7)A,B通道使能输出口中间的的4个口,是接单片机IO口的,用于逻辑写入。
2,HC-05蓝牙模块
1)蓝牙模块上的VCC接51单片机上的VCC,GND接51单片机上的GND
2)蓝牙模块上的TXD与RXD是接入单片机的IO口上,下面会有所说明。
3,51单片机说明





这是单片机开发板的部分原理图(IO口)
1)L298N上的A,B通道使能输出口中间的的4个口(IN1,INT2,INT3,INT4),本人分别接于单片机上P00,P01,P02,P03这四个IO口上。
2)蓝牙模块上的RXD接口接在单片机上的TXD接口上,在该原理图上是P31接口;TXD接口接在RXD接口上,即P30接口。
三,成品展示
因本人手艺粗糙,效果就是这个样子(我弟弟玩的还是很开心,导致有些接口接的比较松)

四,代码实现阶段

#include


***it int1=P0^0;         
***it int2=P0^1;
***it int3=P0^2;
***it int4=P0^3;


char i;


void stop()//停止
{
        int1=0;          
        int2=0;
        int3=0;
        int4=0;
}
void back()//后退
{
        int1=1;          
        int2=0;
        int3=1;
        int4=0;
}


void forward()//前进
{
        int1=0;          
        int2=1;
        int3=0;
        int4=1;   
}


void right() //右转  
{
        int1=0;          
        int2=1;
        int3=1;
        int4=0;
}


void left()//左转
{
        int1=1;          
        int2=0;
        int3=0;
        int4=1;
}


void main()
{
          TMOD=0x20;                         //设置T1为工作方式2
      TH1=0xfd;                        //装入初值,比特率为9600bps
      TL1=0xfd;
      TR1=1;                              //开启T1
      REN=1;                             //接收允许
      SM0=0;                             //方式1
      SM1=1;
      EA=1;                               //开全局中断
      ES=1;                                //开串口中断
        while(1)
        {
                 i=SBUF;//SBUF为单片机接收到的数据,单片机接收到的数据都存放在SBUF里;
         RI=0;
         switch(i)
         {
                    case '1':      
                            forward();
                        break;
                    case '2':      
                            back();
                            break;
                    case '3':      
                        left();
                            break;
                        case '4':      
                        right();
                            break;
                    case '5':      
                            stop();
                            break;
                }
        }
}
五,测试
通上电之后呢,就可以用手机蓝牙进行测试啦。
1,首先呢先在手机上下载一个蓝牙助手,大概像这个样子的。





最主要的是那四个前后左右的按键,其他的是我自己加的,反正在源代码上自行添加就好。
解析:前进,后退,左转,右转,停止,都对应着程序中相应的信息,如图;
当手机端发送 1 给蓝牙模块,就会执行 forward()函数; 小车会向前走
当手机端发送 2 给蓝牙模块,就会执行 back();函数;,小车会向后走
当手机端发送 3 给蓝牙模块,就会执行 left();函数;,小车会向左走
当手机端发送 4 给蓝牙模块,就会执行 right()函数;,小车会向右走
当手机端发送 5 给蓝牙模块,就会执行stop()函数;,小车会停止。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分