【Proteus仿真】【STM32单片机】蓝牙遥控小车

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使LCD1602液晶,L298电机,直流电机,HC05/06蓝牙模块等。
主要功能:
系统运行后,LCD1602显示小车运行状态,速度档位,控制命令;可通过蓝牙发送命令控制小车前进、后退、左转、右转、停止。


二、软件设计

/*
作者:嗨小易(QQVIP群2:570487280)

*/


//系统数据采集
void sys_data_get(void)
{
	while(1)
	{		
		

		break;
	}
}

//系统数据显示
void sys_data_show(void)
{
	while(1)
	{
		//速度显示
		lcd1602_show_nums(6,0,sys_ctrl.speed,1,0);
		//小车方向状态显示
		_car_staus_show(sys_ctrl.dir);
		//控制命令显示
		lcd1602_show_num(14,0,UART_RX_BUF[0],0);

		break;	
	}		
}

//系统参数设置
void sys_data_set(void)
{
	//前进
	switch(UART_RX_BUF[0])
	{
		case CAR_STOP://停止
			sys_ctrl.dir=0;
			break;
		case CAR_FORM://前进
			sys_ctrl.dir=1;
			break;
		case CAR_BACK://后退
			sys_ctrl.dir=2;
			break;
		case CAR_LEFT://左转
			sys_ctrl.dir=3;
			break;
		case CAR_RIGHT://右转
			sys_ctrl.dir=4;
			break;
		case CAR_SPEED_ADD://加速
			if(sys_ctrl.speed<5)
				sys_ctrl.speed++;
			UART_RX_BUF[0]=0;
			break;
		case CAR_SPEED_DEC://减速
			if(sys_ctrl.speed>1)
				sys_ctrl.speed--;
			UART_RX_BUF[0]=0;
			break;
	}					
}

//系统功能控制
void sys_fun_ctrl(void)
{
	//控制小车
	switch(sys_ctrl.dir)
	{
		case 0:car_stop();break;//停止
		case 1:car_forward();break;//前进
		case 2:car_back();break;//后退
		case 3:car_left();break;//左转
		case 4:car_right();break;//右转
	}
	pwm_set_duty_cycle(sys_ctrl.speed*20);//占空比		
}


//应用控制系统
void appdemo_show(void)
{
	sys_parm_init();//系统参数初始化
	lcd1602_init();
	pwm_init(0XFF,0XD1,100,0);//初始时,PWM占空比为0
	sys_open_show();//系统开机显示
	UART_Init();//波特率9600
	UART_SendString("UART Init OK\r\n");

	while(1)
	{
		sys_data_get();//系统数据采集
		sys_data_show();//系统数据显示
		sys_data_set();//系统参数设置
		sys_fun_ctrl();//系统功能控制	
	}
}



三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/227735.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现的仿天猫商城项目

一、系统架构 前端&#xff1a;jsp | js | css | jquery 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-商品查询 03. web端-商品详情 04. web端-购物车 05. web端-订单…

YOLOv8改进 | 2023 | DiverseBranchBlock多元分支模块(有效涨点)

一、本文介绍 本文带来的改进机制是YOLOv8模型与多元分支模块&#xff08;Diverse Branch Block&#xff09;的结合&#xff0c;Diverse Branch Block (DBB) 是一种用于增强卷积神经网络性能的结构重新参数化技术。这种技术的核心在于结合多样化的分支&#xff0c;这些分支具有…

C++ day57 回文子串 最长回文子串序列

题目1&#xff1a;647 回文子串 题目链接&#xff1a;回文子串 对题目的理解 返回字符串s中回文子串的个数&#xff0c;字符串s至少包含一个字符&#xff0c;且仅由小写字母组成。 动态规划 动规五部曲 1&#xff09;dp数组及下标i的含义 dp[i][j]&#xff1a;[i,j]子串…

22款奔驰S450L升级主动式环境氛围灯 安全提醒功能

主动式氛围灯有263个可多色渐变的LED光源&#xff0c;营造出全情沉浸的动态光影氛围。结合智能驾驶辅助系统&#xff0c;可在转向或检测到危险时&#xff0c;予以红色环境光提示&#xff0c;令光影艺术彰显智能魅力。配件有6个氛围灯&#xff0c;1个电脑模块。星骏汇小许Xjh158…

第二十一章——网络通信总结

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmission…

第21章网络通信

Internet 提供了大量有用的信息&#xff0c;很少有人能在接触过Internet后拒绝它的诱惑。计算机网络实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c…

Python编程技巧 – 异常处理

Python编程技巧 – 异常处理 Python Programming Skills – Exception Handling By JacksonML 每一个程序都未必是健壮的&#xff0c;有时候很脆弱。只有在人的理想思维状况下&#xff0c;返回的结果才是正确的&#xff0c;如意的。 1. 错误发生及异常输出 面对种种编写有疏…

【mysql】下一行减去上一行数据、自增序列场景应用

背景 想获取if_yc为1连续账期数据 思路 获取所有if_yc为1的账期数据下一行减去上一行账期&#xff0c;如果为1则为连续&#xff0c;不等于1就为断档获取不等于1的最小账期&#xff0c;就是离当前账期最近连续账期 代码 以下为mysql语法&#xff1a; select acct_month f…

机场信息集成系统系列介绍(1)

机场信息集成系统是一种专为机场运营管理设计的先进系统&#xff0c;旨在提高机场的航班调度指挥效率&#xff0c;同时为机场各生产部门提供航班保障计划的制定和实时调整功能。 该系统的核心用户是机场运控部门&#xff0c;他们利用系统进行航班运行指挥&#xff0c;通过采集航…

Kafka性能调优:高吞吐、低延迟的数据流

Apache Kafka作为一种高性能、分布式流处理平台&#xff0c;对于实时数据的处理至关重要。本文将深入讨论Kafka性能调优的关键策略和技术&#xff0c;通过丰富的示例代码为大家提供实际操作指南&#xff0c;以构建高吞吐、低延迟的数据流系统。 Broker 配置的优化 首先&#…

中断、异常和系统调用(2-1,2-2,2-3)

2-1 课堂练习2.1&#xff1a;外部中断 本实训分析 Linux 0.11 对外部中断的响应和处理过程。在每条指令执行的末尾&#xff0c;如果没有关中断&#xff0c;CPU 会检查是否收到了外部中断信号&#xff0c;如果有信号&#xff0c;则 CPU 就切换到核心态去执行对应的中断处理程序…

c# 字段和属性(get、set、init)

基本概念&#xff1a; “字段”就是类内成员变量&#xff0c;一般为了隐藏数据&#xff0c;保护数据&#xff0c;实现对外不可见&#xff0c;体现封装的思想&#xff0c;成员变量都声明为私有变量&#xff1b;“属性”是类内的一种成员&#xff0c;它是一种特殊的方法(方法的意…

文件被删除了怎么恢复?3个宝藏方法,快来get!

“我是一个学生党&#xff0c;期末的一些资料保存在电脑上&#xff0c;但是不知道是不是被我误删了&#xff0c;导致很多文件都找不到了。文件被删除了怎么恢复呢&#xff1f;大家帮我出出主意吧&#xff01;” 对于经常在电脑上保存各种文件的用户来说&#xff0c;文件误删除是…

万宾科技荣获2023物联网场景应用品牌企业创始人发表专题演讲

12月5日-6日由雄安新区管理委员会、中关村发展集团股份、物联中国团体组织联席会主办&#xff0c;全国33家物联网协会协办的2023物联网产业品牌大会于在雄安新区顺利召开。本次大会以“物联中国.数智雄安”为主题&#xff0c;邀请到科技部原副部长吴忠泽&#xff0c;雄安新区管…

MIT线性代数笔记-第25讲-复习二

目录 25.复习二打赏 25.复习二 已知 a ⃗ [ 2 1 2 ] \vec{a} \begin{bmatrix} 2 \\ 1 \\ 2 \end{bmatrix} a ​212​ ​&#xff0c;求&#xff1a; (1) a ⃗ \vec{a} a 的投影矩阵 (2) a ⃗ \vec{a} a 的投影矩阵的特征值和特征向量 A n s Ans Ans&#xff1a;(1) P a ⃗…

【面试】Java最新面试题资深开发-JVM第二弹

问题三&#xff1a;JVM 内存为什么要分成新生代&#xff0c;老年代&#xff0c;持久代。新生代中为什么要分为 Eden 和 Survivor 为什么要分成新生代和老年代&#xff1a; 对象生命周期假设&#xff1a; 大多数对象在被创建后很短时间内就会变成垃圾。通过将这些短命的对象放入…

代码混淆技术探究与工具选择

代码混淆技术探究与工具选择 引言 在软件开发中&#xff0c;保护程序代码的安全性是至关重要的一环。代码混淆&#xff08;Obfuscated code&#xff09;作为一种常见的保护手段&#xff0c;通过将代码转换成难以理解的形式来提升应用被逆向破解的难度。本文将介绍代码混淆的概…

vue2+datav可视化数据大屏(2)

接上一节所说 我们已经讲骨架搭好 这节我们讲述的如何在vue2中使用mock数据和封装axios 1&#xff0c;项目中使用moke &#x1f4d3;什么是mock&#xff1f;&#xff0c;mock就是假数据&#xff0c;除了数据是假的&#xff0c;其他内容都和正常工作中后端开发的接口都是一致的…

3.PyTorch——常用神经网络层

import numpy as np import pandas as pd import torch as t from PIL import Image from torchvision.transforms import ToTensor, ToPILImaget.__version__2.1.13.1 图像相关层 图像相关层主要包括卷积层&#xff08;Conv&#xff09;、池化层&#xff08;Pool&#xff09;…

KP 2sv Authenticator一款免费处理亚马逊两步验证码的软件

KP 2sv Authenticator 被誉为一款免费而强大的亚马逊两步验证软件&#xff0c;操作简便轻松。 软件使用方法极为简单&#xff0c;用户只需直接输入身份验证应用程序生成的代码&#xff0c;即可迅速生成随机验证码&#xff0c;帮助用户顺利完成亚马逊的两步验证流程。这款小软件…