当前位置: 首页 > news >正文

STM32项目分享:基于单片机的自行车测速系统设计

“我们不做一锤子买卖,只做技术成长的长期伙伴!”

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于单片机的自行车测速系统设计 -视频分享

二、项目简介

题目:基于单片机的自行车测速系统设计
主控:STM32
显示:OLED显示屏
DHT11温湿度传感器
蓝牙模块
按键模块
光电开关
功能:
1、实时监测当前速度数据,温湿度数据。
2、按键查看数据信息。
3、光电开关监测当前速度数据。
4、蓝牙连接手机后,可手机控制单片机,并接收单片机数据。
5、屏幕实时显示当前温湿度,速度数据信息。

三、原理图设计

四、PCB硬件设计

五、程序设计

#include "stm32f10x.h"                  // 设备头文件
#include "delay.h"                      // 延迟函数库
#include "lcd.h"                        // LCD显示库
#include "dht11.h"                      // DHT11传感器库
#include "IOput.h"                      // 输入输出控制库
#include "usart.h"                      // 串口通信库
#include "adc.h"                        // ADC转换库
#include "MOTOR.h"                      // 电机控制库
#include "timer.h"                      // 定时器库u8 on_flag, speed, real_speed, cesu_flag, count, speed_flag; // 定义标志和速度相关变量
u8 show_flag, show1_flag;               // 定义显示标志
float yali, count1, count2, max_TY = 3, dec_TY = 0.2; // 定义胎压和计数变量u8 max_wd = 40,max_sd = 60;void wifi(){if(res=='a'){OLED_Clear();res=0;set_flag=1;}else if(res=='b'){res=0;add_flag=1;}else if(res=='c'){res=0;dec_flag=1;}}int main (void)
{delay_init();                       // 初始化延时函数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级组Adc_Init();                         // 初始化ADCOLED_Init();                        // 初始化OLED显示屏delay_ms(1);                        // 延时1msOLED_Clear();                       // 清屏output_init();                      // 初始化输出input_init();                       // 初始化输入Usart1_Init(9600);                  // 初始化串口1,波特率9600DHT11_Init();motor_init();                       // 初始化电机
//    TIM_PWM_Init(100, 8);               // 初始化PWM定时器TIM2_Int_Init(71, 9999);            // 初始化定时器2while(1){wifi();DHT11_Read_Data(&temp,&humi);count++;delay_ms(10);key_scan(1, 0, 0);              // 扫描按键if(set_flag == 1 && show_flag != 1){show1_flag = 0;OLED_Clear();set_flag = 0;show_flag++;if(show_flag >= 2){show_flag = 0;}}if(show_flag == 0){yali = 2.5 - Get_Adc_Average(1, 10) * 2.5 / 4096; // 读取并计算胎压值OLED_ShowCH(0, 0, "  自行车测速系统 ");OLED_ShowCH(0, 2, "温度:");OLED_Showdecimal(40, 2, temp, 2, 1, 16);OLED_ShowCH(0, 4, "湿度:");OLED_ShowNum(40, 4, humi, 2, 16);OLED_ShowCH(0, 6, "转速:");OLED_Showdecimal(40, 6, count2, 3, 1, 16);OLED_ShowCH(80, 6, "转/min");OLED_ShowCH(64, 4, "电机:");if(speed != 0){OLED_ShowCH(104, 4, "开");}else{OLED_ShowCH(104, 4, "关");}if(GD == 1)                  // 如果检测到速度传感器信号{TIM_Cmd(TIM2, ENABLE);   // 使能定时器2if(time_count >= 100){count1++;time_count = 0;}}else if(GD == 0){TIM_Cmd(TIM2, DISABLE);  // 关闭定时器2count2 = 60 / (count1 + (float)time_count / 100); // 计算转速time_count = 0;count1 = 0;}}if(show_flag == 1){OLED_ShowCH(0, 0, "最高温度:");OLED_ShowCH(0, 2, "最高湿度:");OLED_ShowNum(72, 0, max_wd, 2,16);OLED_ShowNum(72, 2, max_sd, 2,16);if(set_flag == 1){set_flag = 0;show1_flag++;if(show1_flag >= 2){show_flag = 0;    OLED_Clear();}}if(show1_flag == 0){OLED_ShowCH(112, 0, "←");if(add_flag == 1){add_flag = 0;max_wd++;}if(dec_flag == 1){dec_flag = 0;max_wd--;}if(max_wd >= 100 || max_wd <= 0){max_wd = 0;}}if(show1_flag == 1){OLED_ShowCH(112, 2, "←");if(add_flag == 1){add_flag = 0;max_sd++;}if(dec_flag == 1){dec_flag = 0;max_sd--;}if(max_sd >= 100 || max_sd <= 0){max_sd = 0;}}}if(count >= 50){count = 0;UsartPrintf(USART1, "转速:%f\r\n", count2);UsartPrintf(USART1, "温度:%d\r\n", temp);UsartPrintf(USART1, "湿度:%d\r\n", humi);UsartPrintf(USART1, "\r\n\r\n");}}
}

六、资料分享

点击即可查看当前资料分享。

http://www.xdnf.cn/news/1388071.html

相关文章:

  • C++ DDS框架学习
  • 【前端教程】用 JavaScript 实现4个常用时间与颜色交互功能
  • mysql安全运维之常见攻击类型与防御指南-从SQL注入到权限提升
  • iOS 文件管理与 uni-app 性能优化实战 多工具协作的完整指南
  • 知识卡片html5动态网页源码
  • 2025-08-28-zabbix5.0创建监控项通过脚本简单实现监控oracle11g的磁盘组和表空间的使用量
  • 【从零开始搭建你的 AI 编程助手知识库】
  • Docker的常用命令及简单使用
  • 微积分 | 积分代换
  • 探索永洪vividime的超链接功能:数据分析的桥梁
  • C# NET5.0及以上版本中如何处理MySQL大数据查询
  • 数据防泄与最小可见:ABP 统一封装行级安全(RLS)+ 列级脱敏
  • Go对接全球期货数据源指南:基于StockTV API实现多品种实时监控
  • whisper-large-v3 模型
  • Rust Tokio异步任务实战教程(高级功能)
  • 【前端教程】二维数组排序实战:按需封装才是最优解——拒绝冗余,精简代码
  • Rust语言能干什么
  • PHP的uniqid() 函数分析
  • LangChain实战(二):环境搭建与Hello World(国内开源模型版)
  • 嵌入式Linux驱动开发 - 并发控制机制
  • 【开题答辩全过程】以 基于Spring Boot的网上家庭烹饪学习系统的设计与实现为例,包含答辩的问题和答案
  • 不止 ChatGPT:多模态 AI(文本 + 图像 + 音频)正重构内容创作全流程
  • 以技术赋能强化消费者信任,助推餐饮服务质量提质增效的明厨亮灶开源了
  • [密码学实战]基于SM2实现协同签名(四十五)
  • 微算法科技(NASDAQ:MLGO)一种基于FPGA的Grover搜索优化算法技术引领量子计算
  • QT5.14.2、CMake 扩展openCV
  • JVM_JMM
  • 面试八股文之——JVM与并发编程/多线程
  • Python Imaging Library (PIL) 全面指南:PIL基础入门-构建简易图像编辑器
  • LSTM实战:回归 - 实现交通流预测