基于STM32温湿度检测

(仿真+程序)

功能介绍

具体功能:

1.使用DHT11检测温湿度;

2.单片机处理完控制LCD1602显示温湿度;

3.单片机也通过串口显示检测到的温湿度;

添加图片注释,不超过 140 字(可选)

程序

#include "stm32f10x.h"
#include "./systick/bsp_SysTick.h"
#include "./dht11/bsp_dht11.h"
#include "./usart/bsp_usart.h"
#include "./Key/bsp_key.h"
#include "./Led/bsp_led.h"
#include "./LCD/bsp_lcd.h"
#include "./MOTOR/motor.h"
#include "./Tim2/TIM2.h"
#include "./Wave/UltrasonicWave.h"
/*** @brief  主函数* @param  无* @retval 无*/
int main(void)
{DHT11_Data_TypeDef DHT11_Data;RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);/* 配置SysTick 为1us中断一次 */SysTick_Init();LED_GPIO_Config();//LED1_ON;LED2_ON;LED3_ON;//NVIC_Configuration();LcdGpioInit();LCD1602Init();USART_Config();//初始化串口1NVIC_Configuration();printf("\r\n***dht11 温湿度传感器实验***\r\n");/*初始化DTT11的引脚*/DHT11_Init();//printf("22\n");dht11_delay_ms(10);while(1){//调用DHT11_Read_TempAndHumidity读取温湿度,若成功则输出该信息if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS){uint8_t index = 0;char str[20];printf("\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);sprintf(str, "H:%d.%d T:%d.%d", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);LcdWriteCom(0x80);//设置第一行 数据地址指针for(index = 0; index < 20; index++)LcdWriteDate(str[index]);  //写入数据}else{printf("Read DHT11 ERROR!\r\n");}Delay_ms(10);}********//完整资料
********//微信公众号:木子单片机}
/*********************************************END OF FILE**********************/
/********************************************************************************* @file    bsp_key.c* @author  fire* @version V1.0* @date    2013-xx-xx* @brief   按键应用bsp(扫描模式)******************************************************************************* @attention********************************************************************************/ #include "./key/bsp_key.h"  /*** @brief  配置按键用到的I/O口* @param  无* @retval 无*/
void Key_GPIO_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;/*开启按键端口的时钟*/RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);//选择按键的引脚GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN; // 设置按键的引脚为浮空输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //使用结构体初始化按键GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);//选择按键的引脚GPIO_InitStructure.GPIO_Pin = KEY2_GPIO_PIN; //设置按键的引脚为浮空输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //使用结构体初始化按键GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);	
}/** 函数名:Key_Scan* 描述  :检测是否有按键按下* 输入  :GPIOx:x 可以是 A,B,C,D或者 E*		     GPIO_Pin:待读取的端口位 	* 输出  :KEY_OFF(没按下按键)、KEY_ON(按下按键)*/
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{			/*检测是否有按键按下 */if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )  {	 /*等待按键释放 */while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);   return 	KEY_ON;	 }elsereturn KEY_OFF;
}
/*********************************************END OF FILE**********************/
/********************************************************************************* @file    bsp_SysTick.c* @author  fire* @version V1.0* @date    2013-xx-xx* @brief   SysTick 系统滴答时钟10us中断函数库,中断时间可自由配置,*          常用的有 1us 10us 1ms 中断。     ******************************************************************************* @attention********************************************************************************/#include "./systick/bsp_SysTick.h"static __IO u32 TimingDelay;/*** @brief  启动系统滴答定时器 SysTick* @param  无* @retval 无*/
void SysTick_Init(void)
{/* SystemFrequency / 1000    1ms中断一次* SystemFrequency / 100000	 10us中断一次* SystemFrequency / 1000000 1us中断一次*/
//	if (SysTick_Config(SystemFrequency / 100000))	// ST3.0.0库版本if (SysTick_Config(SystemCoreClock / 100000))	// ST3.5.0库版本{ /* Capture error */ while (1);}// 关闭滴答定时器  SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}/*** @brief   us延时程序,10us为一个单位* @param  *		@arg nTime: Delay_us( 1 ) 则实现的延时为 1 * 10us = 10us* @retval  无*/
void Delay_us(__IO u32 nTime)
{ TimingDelay = nTime;	// 使能滴答定时器  SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;while(TimingDelay != 0);
}/*** @brief  获取节拍程序* @param  无* @retval 无* @attention  在 SysTick 中断函数 SysTick_Handler()调用*/
void TimingDelay_Decrement(void)
{if (TimingDelay != 0x00){ TimingDelay--;}
}
/*********************************************END OF FILE**********************/

硬件设计

使用元器件:

单片机:STM32F103;

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用proteus8.9版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计资料

全部资料包括程序、仿真源文件等。具体内容如下,全网最全!!

添加图片注释,不超过 140 字(可选)

点赞分享一起学习成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912470.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912470.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912470.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 10 查询 Nginx 进程教程

1. 打开命令提示符&#xff08;CMD&#xff09; 按 Win R&#xff0c;输入 cmd&#xff0c;回车。或者在开始菜单搜索栏输入“cmd”&#xff0c;选择“命令提示符”。 2. 查看是否有正在运行的 Nginx 进程 输入命令&#xff1a; tasklist | findstr nginx这个命令会列出所有…

使用 Kafka 优化物流系统的实践与思考

使用 Kafka 优化物流系统的实践与思考 在现代物流系统中&#xff0c;订单处理、仓储管理、运输调度等环节复杂且实时性要求高。为了满足异步解耦、高吞吐、高可用、事件驱动和数据可靠性等需求&#xff0c;Kafka 作为分布式消息队列和流处理平台&#xff0c;成为了我们的首选。…

Rust中模式匹配let Some(gas_price) = tx.gas_price用法

你问得非常好&#xff0c;let Some(gas_price) tx.gas_price 是 Rust 中的一种模式匹配写法&#xff0c;它用于从 Option 类型中提取值。 ✅ 背景知识&#xff1a;什么是 Option&#xff1f; 在 Rust 中&#xff0c;如果一个值可能存在也可能不存在&#xff0c;就会用 Option…

什么是LLM大语言模型

什么是LLM大语言模型 LLM的全称是&#xff0c;Large Language Model&#xff0c;简称LLM&#xff0c;翻译为大语言模型&#xff0c;其核心是模拟人类语言的复杂规律&#xff0c;实现语义理解、推理分析、文本生成等任务&#xff0c;主要目的是实现能读懂和说出人类语言的模型。…

杂谈-架构时代演进

关于未来 5-10 年软件系统演化方向 1. 云原生 ➝ 超云原生&#xff08;Post Cloud Native&#xff09; Kubernetes 平台自治化&#xff1a; K8s Operator 日益强大&#xff0c;逐步具备自愈、自动扩缩容、自动调优能力。 云厂商与企业私有云逐步融合为一体…

如何查看服务器的运行日志?

&#x1f7e2; 一、Linux服务器 Linux日志都在**/var/log**目录下&#xff0c;最常用的有&#xff1a; &#x1f4c2; 常用日志文件 文件内容/var/log/messages大部分系统日志&#xff08;CentOS常见&#xff09;/var/log/syslog系统消息日志&#xff08;Ubuntu/Debian常见&a…

在幸狐RV1106开发板上用gcc14.2本地编译安装postgresql 17.5数据库

在幸狐RV1106开发板上用gcc14.2本地编译安装postgresql 17.5数据库 编译环境&#xff1a; RV1106G3 Linux luckfox-rv1106 5.10.160 #3 Fri Jun 27 14:16:20 AWST 2025 armv7l GNU/Linux BusyBox v1.36.1 gcc version 14.2.0 (GCC) GNU ld (GNU Binutils) 2.44 GNU Make 4.4 n…

Go语言中map[string]interface{} 和 map[string]string的区别

在 Go 语言中&#xff0c;map[string]interface{} 和 map[string]string 是两种不同类型的 map&#xff0c;它们的主要区别在于值的类型以及这种差异带来的使用场景和灵活性的不同。 1. 值的类型 map[string]interface{}&#xff1a;这里的 interface{} 表示 Go 中的空接口类型…

AdGuard Home 安装及使用

AdGuard Home 是 AdGuard 开源的一个私人 DNS 服务端,只需在网关部署,即可实现全局域网的广告拦截与隐私反追踪。在 DNS 解析的过程中,匹配规则库内的 URL 进行拦截,同时在客户端中,还可以通过自定义过滤规则实现网页 DOM 的拦截。 基于 Golang 编写的 AdGuard Home,官方…

绕过 GraphQL 暴力破解保护

题目要求&#xff1a; 本实验的用户登录机制由 GraphQL API 提供支持。API 终端节点有一个速率限制器&#xff0c;如果它在短时间内收到来自同一源的太多请求&#xff0c;则会返回错误。 要解决实验问题&#xff0c;请暴力破解登录机制以 .使用身份验证实验室密码列表作为密码…

C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)

目录 一、前言 1.简介 2.兼容性 3.下载 4.安装 5.官方文档 6.自述 二、封装Json 1. 创建一个 Document 对象 2. "key":"value" 3. { } 4. [ ] 5. [ { }, { } ] 6. [ [ ], [ ] ] 7. { [ ], [ ] } 8. { { }, { } } 9. 将Document转换为字符串…

免安装一键修复网络诊断 + 权限修复!打印机共享错误工具适配 Win7/10/11

各位打印小能手们&#xff01;你们有没有遇到过共享打印机出问题&#xff0c;搞得自己焦头烂额的情况&#xff1f;比如系统一更新&#xff0c;打印机就连不上&#xff0c;打印任务失败&#xff0c;真的是让人崩溃啊&#xff01;别慌&#xff0c;今天就给大家全面介绍一款打印机…

电脑分屏快捷键5

按window右箭头&#xff1a; 按window左箭头&#xff1a;

nt!CcFlushCache函数分析之nt!CcFindBcb

nt!CcFindBcb函数分析 第一部分&#xff1a; 1: kd> p nt!CcAcquireByteRangeForWrite0x377: 80a13c49 e866e4ffff call nt!CcFindBcb (80a120b4) 1: kd> t nt!CcFindBcb: 80a120b4 55 push ebp 1: kd> kc # 00 nt!CcFindBcb 01 nt!CcAcqu…

矩阵及矩阵快速幂

一.矩阵与模板 【模板】矩阵求和 时间限制&#xff1a;1秒 内存限制&#xff1a;128M 题目描述 给出两个&#x1d45b;行&#x1d45a;列的矩阵&#xff0c;求两个矩阵的和 输入描述 第一行输入两个以空格分隔的整数&#x1d45b;,&#x1d45a;&#xff0c;表示矩…

rk3588获取探维雷达数据

可以在上期部署完 FASTLIO 的工作空间内&#xff0c;继续部署探维雷达的驱动程序。不要问为什么不用 mid360&#xff0c;因为我手上只有探维雷达。 探维雷达的驱动链接&#xff1a;https://github.com/TanwayLab/tanwaylidar_view/blob/main/README.md 下载驱动并编译 因为沿…

HTML简介,初步了解HTML

<html> <body> <h1>我的第一个标题</h1> <p1>我的第一个段落</p1> </body> </html> 什么是HTML HTML是用来描述网页的一种语言。 HTML指的是超文本标记语言。 HTML不是一种编程语言&#xff0c;而是一种标记语言。 标记语…

ARM集群服务器 定义

ARM集群服务器的核心定义可归纳为以下要点&#xff1a; 一、核心定义 ARM集群服务器是将‌多个基于ARM架构的处理器节点‌集成在单一物理机箱内&#xff0c;通过高速网络互联形成的分布式计算系统。每个节点均具备独立的计算单元&#xff08;如CPU、GPU/NPU&#xff09;、内存…

进程和线程的区别?

进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统资源分配和调度的核心概念&#xff0c;它们的区别主要体现在以下几个方面&#xff1a; 1. ​​定义与资源分配​​ ​​进程​​ 是程序的​​一次执行实例​​&#xff0c;拥有独立的地址空…

AR 学习:开启未来学习新视界​

AR 学习&#xff0c;即增强现实学习&#xff0c;是一种创新的学习方式&#xff0c;它巧妙地将增强现实技术融入到教育领域。简单来说&#xff0c;就是利用 AR 技术把虚拟的信息和现实场景完美融合&#xff0c;为学习者打造出一个沉浸式的学习环境。AR 学习打破了传统学习的边界…