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

基于STM32温湿度检测—串口显示

基于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.xdnf.cn/news/1074781.html

相关文章:

  • HTML5 实现的圣诞主题网站源码,使用了 HTML5 和 CSS3 技术,界面美观、节日氛围浓厚。
  • k8s pod深度解析
  • k8s创建定时的 Python 任务(CronJob)
  • 【c/c++1】数据类型/指针/结构体,static/extern/makefile/文件
  • 机器学习9——决策树
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • ROS常用的路径规划算法介绍
  • 面试复盘6.0
  • Java面试宝典:基础四
  • SpringSecurity6-oauth2-三方gitee授权-授权码模式
  • 详解快速排序
  • 宏任务与微任务和Dom渲染的关系
  • 左神算法之螺旋打印
  • Redis Cluster Gossip 协议
  • 在Linux系统中部署Java项目
  • 设计模式之装饰者模式
  • 2.安装Docker
  • 怎样学习STM32
  • 暴力风扇方案介绍
  • HarmonyOS实战:自定义表情键盘
  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • llama.cpp学习笔记:后端加载
  • 图书管理系统练习项目源码-前后端分离-使用node.js来做后端开发
  • Conda 环境配置之 -- Mamba安装(causal-conv1d、mamba_ssm 最简单配置方法)-- 不需要重新配置CDUA
  • 领域驱动设计(DDD)【26】之CQRS模式初探
  • AlpineLinux安装部署elasticsearch
  • Kafka4.0初体验
  • Python爬虫:Requests与Beautiful Soup库详解
  • 重写(Override)与重载(Overload)深度解析
  • 【C++】C++中的友元函数和友元类