这是某小白大一下学期自学做的小玩意,毕竟不是自己的专业课,学起来有点吃力,不过感觉挺有意思的。写下这篇文章记录一下
一.所需材料
1,51单片机开发板
2,杜邦线一堆
3,L298N驱动板
4,三节18650电池
5,HC-05/06蓝牙模块(从机版本即可)
6,小车底盘一个
二.电路部分
蓝牙模块采用串口通信,建议用TTL转USB线先把蓝牙模块与电脑连接起来,对蓝牙模块进行配置,以测试是否可以通信
三.代码部分
电机驱动代码
#include <REGX52.H>#include "UART.h"sbit Motor=P1^0;sbit Motor1=P1^1;sbit Motor2=P1^2;sbit Motor3=P1^3;unsigned char flag=0;void main(){ Motor=1;Motor1=1;Motor2=1;Motor3=1;UART_Init();//串口初始化while(1){if(flag==1){Motor=1;Motor1=0;Motor2=1;Motor3=0;}if(flag==2){Motor=1;Motor1=1;Motor2=1;Motor3=0;}if(flag==3){Motor=1;Motor1=1;Motor2=1;Motor3=1;}if(flag==4){Motor=1;Motor1=0;Motor2=1;Motor3=1;}if(flag==5){Motor=0;Motor1=1;Motor2=0;Motor3=1;}}}void UART_Routine() interrupt 4{unsigned char num;if(RI==1)//如果接收标志位为1,接收到了数据{num=SBUF;switch(num){case 1://前进flag=1;break;case 2://左转flag=2;break;case 3://停车flag=3;break;case 4://右转flag=4;break;case 5://倒车flag=5;break;default:flag=0;break;}UART_SendByte(SBUF);//将受到的数据发回串口,便于调试RI=0;//接收标志位清0}}
串口代码
#include <REGX52.H>/** * @brief 串口初始化,4800bps@12.000MHz * @param 无 * @retval 无 */void UART_Init(){SCON=0x50;PCON |= 0x80;TMOD &= 0x0F;//设置定时器模式TMOD |= 0x20;//设置定时器模式TL1 = 0xFA;//设定定时初值TH1 = 0xFA;//设定定时器重装值ET1 = 0;//禁止定时器1中断TR1 = 1;//启动定时器1EA=1;ES=1;}/** * @brief 串口发送一个字节数据 * @param Byte 要发送的一个字节数据 * @retval 无 */void UART_SendByte(unsigned char Byte){SBUF=Byte;while(TI==0);TI=0;}
四.蓝牙控制程序
采用APP inventor编写
成品连线比较混乱,有一种野性的美
打包文件在https://pan.baidu.com/s/1oqYBb7KX2kBjdQewbvimww?pwd=yy7t
提取码yy7t
包括keil文件以及安卓蓝牙控制软件