51单片机mysql_51单片机之蓝牙遥控小车_效果展示+单片机知识+完整蓝牙电车代码...
首先可能是你想实现的蓝牙小车效果(点击下面跳转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单片机之蓝牙遥控小车_效果展示+单片机知识+完整蓝牙电车代码...相关推荐
- 项目小实战:51单片机控制的手机蓝牙遥控小车设计(程序 元件清单 实物图)
这几天有时间做了一个手机控制的蓝牙遥控小车车,终于今天实现了,把过程和心得跟大家分享一下. 废话不多说,先上实物图 一.项目元件清单 1.某宝购买一个智能小车底盘(本人车是四驱的,因此有四个电机,两块 ...
- 【STM32】F103C8T6 蓝牙遥控小车
STM32F103C8T6 蓝牙遥控小车 前言 硬件部分 连线部分 软件部分 代码 问题与解决... 前言 本次项目使用的是STM32F103C8T6核心板作为主控,通过连接蓝牙模块,实现和手机APP ...
- 蓝牙遥控小车2.0版发布啦
蓝牙遥控小车2.0版发布啦! 蓝牙模块的主从机模式 1.主从机模式 2.设置主从机模式 蓝牙遥控器 1.硬件接线 2.程序设计 蓝牙小车 1.硬件接线 2.程序设计 今天要跟大家分享的是两个蓝牙模块之 ...
- MSP432蓝牙遥控小车
目录 前言 搭建 硬件 软件 原理 源码 前言 这个小车是去年电赛的时候准备的,很遗憾我们赛区因为疫情被取消了比赛,我们也都已经大二大三了,因此我们没有机会再参加两年一次的电赛了.但是这些成果总不能放 ...
- 5.39 综合案例2.0 - STM32蓝牙遥控小车2(语音控制)
综合案例2.0 - 蓝牙遥控小车1- 语音控制 成品展示 案例说明 器件说明 小车连线 小车源码 语音模块遥控 语音遥控连线 模块使用说明 1.MLT-BT05 4.0 蓝牙模块 2.ASRPRO-2 ...
- 基于STM32的最简易蓝牙遥控小车
基于STM32的最简易蓝牙遥控小车 硬件准备 硬件连接 STM32cubeMX配置 代码部分 视频演示 本篇博客主要针对的读者为有一定单片机基础,但是第一次自制蓝牙遥控小车的小白同学,所用物件型号选择 ...
- 新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源)
新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源) 2017年08月21日 12:55:25 XPLab 阅读数:4008 你家里的玩具遥控车坏了?遥控器丢了?先不要急着丢掉 ...
- Arduino mega2560蓝牙遥控小车简介
Arduino mega2560蓝牙遥控小车简介 小车一览 主要模块如下: 一.电源 (1)BOM表:18650电池两节(单节3.6v,6800mAh) 18650 电池盒(两节带开关) 二.电机驱动 ...
- 基于HAL库-蓝牙遥控小车
stm32+HAL库制作蓝牙遥控小车 材料及其接线 蓝牙模块:HC05/6 材料均可在某宝上进行购买. 注意:蓝牙模块可进行串口调试也可不调试(及为默认设置),本文使用的为未调试状态下的蓝牙串口,有关 ...
最新文章
- 对网站的代码采集实例
- Jquery 【select 通过value来寻找对应的项name】
- 在线机器学习FTRL(Follow-the-regularized-Leader)算法介绍
- 关于购买企业邮箱,谨防陷入几大误区
- python封装c++接口_使用MetaSIP自动生成SIP封装C++到Python接口
- iTerm2 快捷键大全
- hnu 暑期实训之疫情期间
- Flutter布局锦囊---男女性别单选
- Android Studio1.4.x JNI开发基础-基本环境配置
- nginx做负载均衡+keepalived(做主备)
- 分享一套jquery视频教程
- C语言课程设计:课程管理系统
- mongoVUE的增删改查操作使用说明
- 批处理访问服务器共享文件夹,批处理设置文件访问权限的方法分享
- 用pandas新建excel并设置表头
- Java List 过滤重复数据
- 统计每一个用户(手机号)所耗费的上行流量,下行流量,总流量
- BJ模拟:医院(支配树)
- 软件工程-白盒测试(实验报告)
- 新手村 - 第四站,认识成交量