首先可能是你想实现的蓝牙小车效果(点击下面跳转B站)

关于51单片机基础

关于51单片机蓝牙电车驱动程序

L298N电机驱动

步进电机驱动

舵机驱动

蓝牙模块串口通信

PWM调速

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

//是否是前进

bit isFoward = 0;

//是否后退

bit isBack = 0;

//控制行驶电机

sbit EN_A = P0^0;

sbit IN_A1 = P0^1;

sbit IN_A2 = P0^2;

sbit IN_B1 = P0^3;

sbit IN_B2 = P0^4;

sbit EN_B = P0^5;

//是否行使总开关

bit ALL_EN = 0;

u8 speedNum = 10;

//步进电机转动

int harfMotoNum = 10;

int currentMotoNum = 15;

sbit r_pwm = P3^7;

void initFunc(){

P0 = 0x00;

//首先设置TMOD工作方式

TMOD = 0x21;

PCON = 0x00;

SCON = 0x50;

//计算初始值设定

TH1 = 0xFD;

TL1 = 0xFD;

//打开

TR1 = 1;

//打开串口中断

ES = 1;

TH0=0XFF;//给定时器赋初值,定时1ms

TL0=0XA3;

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器

}

void checkRun(){

if(isFoward){

EN_A = ALL_EN;

IN_A1 = 0;

IN_A2 = 1;

} else if(isBack){

EN_A = ALL_EN;

IN_A1 = 1;

IN_A2 = 0;

}

else{

EN_A = ALL_EN;

IN_A1 = 0;

IN_A2 = 0;

}

}

u8 motoDriveRecord = 0;

bit motoNeedRun = 0;

void main()

{

initFunc();

while(1)

{

checkRun();

}

}

u8 systemCount = 0;

u8 row = 0;

u8 colum = 0;

u8 judgeNum = 0;

bit leftOrRight = 0; //旋转方向,0左,1右

void Timer0() interrupt 1

{

TH0=0XFF;//给定时器赋初值,定时1ms

TL0=0XA3;

/*********************** 定时器控制PWM调速 **************************/

/* (/0)(/1)(/2)(/3) (/19)

(%0)05 1015...95

(%1)161116 ...96

(%2)271217 ...97

(%3)381318 ...98

(%4)4+9+14+19+...99

*/

if(systemCount >= 1000)

systemCount = 0;

row = ((systemCount/10) % 5);//这时候取值是0,1,2

colum = (systemCount/10) / 5;//取值为0-19;

judgeNum = row * 20 + colum;

if(judgeNum < speedNum){

ALL_EN = 1;

}else{

ALL_EN = 0;

}

/*********************** 舵机控制 **************************/

if((systemCount%200) == 0){

r_pwm = 1;

}

if((systemCount%200) >= currentMotoNum){

r_pwm = 0;

}

systemCount++;

}

//中断事件

u8 receivedData;

u8 operation;

void Usart() interrupt 4

{

if(RI == 1) { //如果收到.

//定义一个变量,接收数据

receivedData = SBUF;

if (receivedData == 101){

//前进

isFoward = 1;

isBack = 0;

ALL_EN = 1;

}else if(receivedData == 102){

//后退

isFoward = 0;

isBack = 1;

ALL_EN = 1;

}else if(receivedData == 103){

//停止

isFoward = 0;

isBack = 0;

ALL_EN = 0;

}else if(receivedData == 104){

//调整行驶速度

operation = receivedData;

}else if(receivedData == 105){

//调整方向

operation = receivedData;

}else if(receivedData == 106){

//校准方向

currentMotoNum = harfMotoNum + 5;

}else if(receivedData <= 100){

if(operation == 104){

if(receivedData >= 0 && receivedData <= 100){

speedNum = receivedData;

}

}else if(operation == 105){

if(receivedData >= 0 && receivedData <= harfMotoNum * 2){

currentMotoNum = receivedData + 5;

}

}

}

RI = 0;

}

}

51单片机mysql_51单片机之蓝牙遥控小车_效果展示+单片机知识+完整蓝牙电车代码...相关推荐

  1. 项目小实战:51单片机控制的手机蓝牙遥控小车设计(程序 元件清单 实物图)

    这几天有时间做了一个手机控制的蓝牙遥控小车车,终于今天实现了,把过程和心得跟大家分享一下. 废话不多说,先上实物图 一.项目元件清单 1.某宝购买一个智能小车底盘(本人车是四驱的,因此有四个电机,两块 ...

  2. 【STM32】F103C8T6 蓝牙遥控小车

    STM32F103C8T6 蓝牙遥控小车 前言 硬件部分 连线部分 软件部分 代码 问题与解决... 前言 本次项目使用的是STM32F103C8T6核心板作为主控,通过连接蓝牙模块,实现和手机APP ...

  3. 蓝牙遥控小车2.0版发布啦

    蓝牙遥控小车2.0版发布啦! 蓝牙模块的主从机模式 1.主从机模式 2.设置主从机模式 蓝牙遥控器 1.硬件接线 2.程序设计 蓝牙小车 1.硬件接线 2.程序设计 今天要跟大家分享的是两个蓝牙模块之 ...

  4. MSP432蓝牙遥控小车

    目录 前言 搭建 硬件 软件 原理 源码 前言 这个小车是去年电赛的时候准备的,很遗憾我们赛区因为疫情被取消了比赛,我们也都已经大二大三了,因此我们没有机会再参加两年一次的电赛了.但是这些成果总不能放 ...

  5. 5.39 综合案例2.0 - STM32蓝牙遥控小车2(语音控制)

    综合案例2.0 - 蓝牙遥控小车1- 语音控制 成品展示 案例说明 器件说明 小车连线 小车源码 语音模块遥控 语音遥控连线 模块使用说明 1.MLT-BT05 4.0 蓝牙模块 2.ASRPRO-2 ...

  6. 基于STM32的最简易蓝牙遥控小车

    基于STM32的最简易蓝牙遥控小车 硬件准备 硬件连接 STM32cubeMX配置 代码部分 视频演示 本篇博客主要针对的读者为有一定单片机基础,但是第一次自制蓝牙遥控小车的小白同学,所用物件型号选择 ...

  7. 新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源)

    新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源) 2017年08月21日 12:55:25 XPLab 阅读数:4008 你家里的玩具遥控车坏了?遥控器丢了?先不要急着丢掉 ...

  8. Arduino mega2560蓝牙遥控小车简介

    Arduino mega2560蓝牙遥控小车简介 小车一览 主要模块如下: 一.电源 (1)BOM表:18650电池两节(单节3.6v,6800mAh) 18650 电池盒(两节带开关) 二.电机驱动 ...

  9. 基于HAL库-蓝牙遥控小车

    stm32+HAL库制作蓝牙遥控小车 材料及其接线 蓝牙模块:HC05/6 材料均可在某宝上进行购买. 注意:蓝牙模块可进行串口调试也可不调试(及为默认设置),本文使用的为未调试状态下的蓝牙串口,有关 ...

最新文章

  1. 对网站的代码采集实例
  2. Jquery 【select 通过value来寻找对应的项name】
  3. 在线机器学习FTRL(Follow-the-regularized-Leader)算法介绍
  4. 关于购买企业邮箱,谨防陷入几大误区
  5. python封装c++接口_使用MetaSIP自动生成SIP封装C++到Python接口
  6. iTerm2 快捷键大全
  7. hnu 暑期实训之疫情期间
  8. Flutter布局锦囊---男女性别单选
  9. Android Studio1.4.x JNI开发基础-基本环境配置
  10. nginx做负载均衡+keepalived(做主备)
  11. 分享一套jquery视频教程
  12. C语言课程设计:课程管理系统
  13. mongoVUE的增删改查操作使用说明
  14. 批处理访问服务器共享文件夹,批处理设置文件访问权限的方法分享
  15. 用pandas新建excel并设置表头
  16. Java List 过滤重复数据
  17. 统计每一个用户(手机号)所耗费的上行流量,下行流量,总流量
  18. BJ模拟:医院(支配树)
  19. 软件工程-白盒测试(实验报告)
  20. 新手村 - 第四站,认识成交量

热门文章

  1. Java静态类的使用
  2. linux运行lnk,LNK 文件扩展名: 它是什么以及如何打开它?
  3. Oracle使用纪要
  4. Nodejs正则表达式
  5. 边缘计算(一)——边缘计算的兴起
  6. 使用nexus搭建maven私服教程详解
  7. linux全角半角切换快捷键,半角全角切换快捷键【搞定方向】
  8. React 环境搭建以及创建项目工程(二)
  9. C语言:n个数的阶乘之和
  10. 服务器远程管理(远程桌面(图形) telnet(命令行))