stm32之1602+DHT11+继电器

news2024/11/18 7:47:46

描述:

1、DHT11监测温室度,并显示到1602液晶上

2、通过串口打印(或通过蓝牙模块在手机上查看)

3、当温度大于24度时,开启继电器。小于时关闭继电器(继电器可连接风扇---假想O(∩_∩)O哈哈~)

一、配置

1602引脚

  • D0...D7 <---> A0...A7
  • RS        <---> B1
  • RW       <---> B2
  • EN        <---> B10
  • V0         <---> GND(正视看不到显示结果,需要侧着看。否则需要接可调电阻)

DHT11引脚:

  • DATA <---> B7

继电器引脚:

  • IN<--->B6

二、main函数

int main(void)
{
  
	char msg[16];

  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();

	lcd_1602_init();
	show_line(0, 0, "loading...");
  while (1)
  {
        // 根据温度决定是否开启继电器
		if(datas[2] >= 24)
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
		else
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
		// 开启温湿度检测
		trig_dht();
		receive_data();
		memset(msg, 0, sizeof(msg));
		sprintf(msg, "Temp: %d.%d", datas[2], datas[3]);
		show_line(0, 0, msg);
		sprintf(msg, "Temp: %d.%d\r\n", datas[2], datas[3]);
		printf(msg);

		sprintf(msg, "Humi: %d.%d", datas[0], datas[1]);
		show_line(1, 0, msg);
		sprintf(msg, "Humi: %d.%d\r\n", datas[0], datas[1]);
		printf(msg);
		HAL_Delay(1000);
  }
}

项目很简单,这里不过度解释。。。

三、问题点总结

  • 继电器不要接到5V,要接到3v3,否则不管电平高低都会开启
  • DHT11引脚在cubeMX 中配置成输入,否则不工作
  • 通过GPIOA->ODR,可以直接往寄存器写数据
  • 1602可以不加忙时检测,依然可以正常工作
  • 1602的写时序和51的部分延时时间不太一样,必须要加长时间才能保证正常显示

 void write_cmd(char cmd) {
    RS_W_0();
    RW_W_0();
    EN_W_0();
    WRITE_DATA(cmd);
    delay_us(1);    // 这里保持1us即可
    EN_W_1();
    delay_us(1000); // 这里时间要设置长些,否则不会显示,和51还有些不同
    EN_W_0();
}

完整代码Github

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Axure教程】用中继器制作双坐标柱状折线图

双坐标柱状折线图常用于同时展示两组数据的图表类型&#xff0c;每组数据都有自己的纵坐标轴&#xff08;Y轴&#xff09;。一组数据通常用柱状图表示&#xff0c;而另一组数据则用折线图表示。这种图表类型有助于比较两组数据之间的关系和趋势。 那今天作者就教大家&#xff…

服务断路器_Resilience4j限流

限流YML配置 ratelimiter:instances:backendA:# 限流周期时长。 默认&#xff1a;500纳秒limitRefreshPeriod: 5s# 周期内允许通过的请求数量。 默认&#xff1a;50limitForPeriod: 2先写Controller /*** 限流* return*/GetMapping("/limiter")RateLimiter(nam…

【AI视野·今日NLP 自然语言处理论文速览 第四十二期】Wed, 27 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 27 Sep 2023 Totally 50 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Attention Satisfies: A Constraint-Satisfaction Lens on Factual Errors of Language Models Authors Mert …

Android widget 小部件使用指南强化版

小部件是主屏幕定制的一个重要方面。您可以将它们视为应用程序最重要的数据和功能的“概览”视图&#xff0c;这些数据和功能可以直接在用户的主屏幕上访问。用户可以在主屏幕面板上移动小部件&#xff0c;如果支持的话&#xff0c;还可以调整它们的大小以根据自己的喜好定制小…

DelayQueue 使用和延时功能源码分析

DelayQueue 延迟队列使用和延时功能源码分析&#xff0c;先看DelayQueue 的使用 目录 1、基本使用 2、延时功能源码分析 3、总结 1、基本使用 想要实现延时功能&#xff0c;需要实现 Delayed 接口&#xff0c;重写 getDelay 方法&#xff0c;在 getDelay 方法里返回延时时间…

关于对象数组的一些方法总结

关于数组对象的一些方法总结 一、判断对象数组是否重复二、复制对象数组 一、判断对象数组是否重复 根据某个属性判断对象数组中&#xff0c;是否含有该属性重复的对象。 let objectArr [{id: 1, name: 2, age: 3}, {id: 2, name: 3, age:24},{id: 1, name: 5, age:6} ]func…

已实现:关于富文本组件库vue2-editor的使用方法以及一些必要的注意事项,特别是设置完富文本以后的回显问题。以及在光标位置插入字符串等

前言 目前常见的基于vue的富文本编辑器有两个&#xff1a;“vue2-editor” 和 “vue-quill-editor” 都是用于Vue.js的富文本编辑器组件&#xff0c;它们具有一些共同的特点&#xff0c;但也有一些区别。 共同点&#xff1a; 1、富文本编辑功能&#xff1a; 两者都提供了富文…

【数据中台建设系列之一】数据中台-元数据管理

本编文章主要介绍数据中台核心模块—元数据模块的一些建设经验分享&#xff0c;供大家一起交流学习。 一、什么是元数据 ​ 元数据可以简单理解为是数据的"数据"&#xff0c;它描述了数据的特征&#xff0c;属性&#xff0c;来源和其他一些数据的基本信息&#xff0…

手机上记录的备忘录内容怎么分享到电脑上查看?

手机已经成为了我们生活中不可或缺的一部分&#xff0c;我们用它来处理琐碎事务&#xff0c;记录生活点滴&#xff0c;手机备忘录就是我们常用的工具之一。但随着工作的需要&#xff0c;我们往往会遇到一个问题&#xff1a;手机上记录的备忘录内容&#xff0c;如何方便地分享到…

基于微信小程序的停车场预约收费小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

数字文创产权版权登记保护多少重要

数字文创产权版权登记保护多少重要 在如今数字化时代&#xff0c;创作者们的作品往往以数字形式存储和传播&#xff0c;这给他们带来了无限的机遇&#xff0c;同时也伴随着一些挑战。在这个环境下&#xff0c;数字文创产权的版权登记显得尤为重要。它不仅能够保护创作者的利益&…

冲刺十五届蓝桥杯P0001阶乘求和

文章目录 题目描述思路分析代码解析 题目描述 思路分析 阶乘是蓝桥杯中常考的知识。 首先我们需要知道 int 和long的最大值是多少。 我们可以知道19的阶乘就已经超过了long的最大值&#xff0c;所以让我们直接计算202320232023&#xff01;的阶乘是不现实的。 所以我们需要…

【逆向】在程序空白区添加Shellcode

目录 硬编码 内存对齐和文件对齐 节表 实战 滴水逆向03-17 #include <windows.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) …

Springboot和Vue:六、ORM介绍+MybatisPlus快速上手

ORM和Mybatis(Plus)介绍 ORM&#xff08;Object Relational Mapping 对象关系映射&#xff09;即映射程序中的对象和数据库中的数据。 MyBatis是一款优秀的数据持久层ORM框架&#xff0c;能够非常灵活地实现动态SQL&#xff0c;可以使用XML或注解来配置和映射原生信息&#xf…

联想笔记本重装系统Win10步骤和详细教程

我们给笔记本电脑重装系统可以解决运行缓慢、出现错误提示等问题&#xff0c;恢复笔记本电脑的流畅运行状态。但是&#xff0c;很多使用联想笔记本电脑的用户不知道重装系统Win10的具体步骤&#xff0c;下面小编给大家介绍关于重装联想笔记本电脑Win10系统的方法步骤吧。 推荐下…

JAMA子刊:最新研究发现腰臀比更能预测死亡

肥胖会危害健康已经称为一个共识&#xff0c;评价肥胖的指标也有多种&#xff0c;例如体质指数&#xff08;BMI)、腰围等。比如BMI大于24为超重&#xff0c;大于28为肥胖&#xff1b;男性腰围≥90cm&#xff0c;女性腰围≥85cm为中心性肥胖。 这些肥胖界值的确定&#xff0c;主…

自制网页。

文章目录 注:代码中图片等素材均来自网络,侵删 20230920_213831 index.html <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-…

Java应用生产Full GC或者OOM问题如何定位

1 引言 生产应用服务频繁Full GC却无法释放内存&#xff0c;甚至可能OOM&#xff0c;这种情况很有可能是内存泄露或者堆内存分配不足&#xff0c;此时需要dump堆信息来定位问题&#xff0c;查看是哪些地方内存泄漏。 Dump文件也称为内存转储文件或内存快照文件&#xff0c;是…

uni-app:canvas绘制图形3

效果 代码 <template><view><!-- 创建了一个宽度为300像素&#xff0c;高度为200像素的canvas元素。canvas-id属性被设置为"firstCanvas"&#xff0c;可以用来在JavaScript中获取该canvas元素的上下文对象。 --><canvas style"width:200…

mysql面试题3:谈谈你知道的MySQL索引?MySQL中一个表可以创建多少个列索引?MySQL索引有哪几种?他们的优缺点是什么?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:谈谈你知道的MySQL索引? MySQL索引是一种特殊的数据结构,用于加速数据库的查询操作。它通过存储列值和对应记录的指针,可以快速定位到满足查询…