STM32单片机基本原理与应用(八)

温度传感器实验

实验内容:

单片机通过代码模拟1-Wire总线并对DS18B20进行读写,并在TFTLCD屏幕上显示当前实时温度。

电路原理图:

在这里插入图片描述

1-Wire总线

1-Wire总线:即单总线协议,采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。节省I/O口线资源、结构简单、成本低廉。

DS18B20

一种数字温度传感器,提供 9 位(二进制)温度读数,指示器件的温度。信息经过单线接口送入 DSl8B20 或从 DSl8B20 送出,因此从主机 CPU 到 DSl8B20 仅需一条线(和地线)。DSl8B20 的测量范围从-55℃到+125℃,增量值为 0.5℃,可在 l s(典型值)内把温度变换成数字。

  • DS18B20 时序:
    复位脉冲和应答脉冲:
    单总线上的所有通信都是以初始化序列开始主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,10K的上拉电阻将单总线拉高,延时15~60us,并进入接收模式(Rx)。接着DS18B20拉低总线60~240us,以产生低电平应答脉冲,若为低电平,再延时480us。
    写时序:
    写时序包括写0时序和写1时序所有写时序至少需要 60us,且在2次独立的写时序之间至少需要1us的恢复时间,两种写时序均起始于主机拉低总线。写1时序:主机输出低电平,延时2us然后释放总线,延时60us写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。
    读时序:
    单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us 的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线, 并且在时序起始后的15us之内采样总线状态。典型的读时序过程为:主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取单总线当前的电平,然后延时50us。
程序代码

1、 DS18B20先读取一个位,再用for循环读取一个字节。
2、 写一个字节到DS18B20数字温度计

void DS18B20_Write_Byte(u8 dat)     {             u8 j;u8 testb;DS18B20_IO_OUT();	//SET PG11 OUTPUT;for (j=1;j<=8;j++) {testb=dat&0x01;dat=dat>>1;if (testb) {DS18B20_DQ_OUT=0;	// Write 1delay_us(2);                            DS18B20_DQ_OUT=1;delay_us(60);             }else {DS18B20_DQ_OUT=0;	// Write 0delay_us(60);             DS18B20_DQ_OUT=1;delay_us(2);                          }}
}

3、随后进行开始温度转换,再获取温度值,最后在主函数中调用,这里仅对主函数进行展示。

int main(void){	 u8 t=0;			    short temperature;    	   delay_init();	    	 //延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200);	 	//串口初始化为 115200
//	LED_Init();		  		//初始化与LED连接的硬件接口LCD_Init();			   	//初始化LCD  POINT_COLOR=RED;		//设置字体为红色 LCD_ShowString(30,50,200,16,16,"STM32");	LCD_ShowString(30,70,200,16,16,"DS18B20 TEST");	LCD_ShowString(30,90,200,16,16,"STM32F103ZET6");LCD_ShowString(30,110,200,16,16,"2015/1/16");		  while(DS18B20_Init())	//DS18B20初始化	{LCD_ShowString(30,130,200,16,16,"DS18B20 Error");delay_ms(200);LCD_Fill(30,130,239,130+16,WHITE);delay_ms(200);}								   LCD_ShowString(30,130,200,16,16,"DS18B20 OK");POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(30,150,200,16,16,"Temp:   . C");	 while(1){	    	    if(t%10==0)			//每100ms读取一次{									  temperature=DS18B20_Get_Temp();	if(temperature<0){LCD_ShowChar(30+40,150,'-',16,0);			//显示负号temperature=-temperature;					//转为正数}else LCD_ShowChar(30+40,150,' ',16,0);			//去掉负号LCD_ShowNum(30+40+8,150,temperature/10,2,16);	//显示正数部分	    LCD_ShowNum(30+40+32,150,temperature%10,1,16);	//显示小数部分 		   }				   delay_ms(10);t++;if(t==20){t=0;LED0=!LED0;}}
}

温度湿度传感器实验

与上面温度传感器实验不同的是,温度湿度传感器实验采用的传感器是DHT11温湿度传感器。

实验内容:

单片机通过读写DHT11的寄存器实现对温湿度实时检测并通过TFTLCD屏实时显示。

电路原理图:

在这里插入图片描述

DHT11

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。相比于 DS18B20 只能测量温度,DHT11 既能检测温度又能检测湿度,不过 DHT11 的精度和测量范围都要低于 DS18B20,其温度测量范围为 0~50℃,误差在±2℃;湿度的测量范围为 20%~90%RH(Relative Humidity 相对湿度—指空气中水汽压与饱和水汽压的百分比),误差在±5%RH。

  • 数据格式为:8bit 湿度整数数据+8bit 湿度小数数据+8bit 温度整数数据+8bit 温度小数数据+8bit 校验和,一共 5 字节(40bit)数据。由于 DHT11 分辨率只能精确到个位,所以小数部分是数据全为 0。校验和为前 4 个字节数据相加,校验的目的是为了保证数据传输的准确性。
    DHT11 不主动进行温湿度采集。DHT11 只有在接收到开始信号后才触发一次温湿度采集,如果没有接收到主机发送复位信号。当数据采集完毕且无开始信号后,DHT11 自动切换到低速模式。
  • 数据传输:
    DHT11 在拉高总线 80us 后开始传输数据。每 1bit 数据都以 50us 低电平时隙开始,告诉主机开始传输一位数据了。DHT11 以高电平的长短定义数据位是 0 还是 1,当 50us 低电平时隙过后拉高总线,高电平持续 26~28us 表示数据“0”;持续 70us 表示数据“1”。
    当 最后 1bit 数据传送完毕后,DHT11 拉低总线 50us,表示数据传输完毕,随后总线由上拉电阻拉高进入空闲状态。
程序代码

这里仅对主函数代码进行展示

int main(void){	 u8 t=0;			    u8 temperature;  	    u8 humidity;    	   delay_init();	    	 //延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200);	 	//串口初始化为115200LED_Init();		  		//初始化与LED连接的硬件接口LCD_Init();			   	//初始化LCD  POINT_COLOR=RED;		//设置字体为红色 LCD_ShowString(30,50,200,16,16,"STM32");	LCD_ShowString(30,70,200,16,16,"DHT11 TEST");	LCD_ShowString(30,90,200,16,16,"STM32F103ZET6");LCD_ShowString(30,110,200,16,16,"2015/1/16");		  while(DHT11_Init())	//DHT11初始化	{LCD_ShowString(30,130,200,16,16,"DHT11 Error");delay_ms(200);LCD_Fill(30,130,239,130+16,WHITE);delay_ms(200);}								   LCD_ShowString(30,130,200,16,16,"DHT11 OK");POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(30,150,200,16,16,"Temp:  C");	 LCD_ShowString(30,170,200,16,16,"Humi:  %");	 while(1){	    	    if(t%10==0)			//每100ms读取一次{									  DHT11_Read_Data(&temperature,&humidity);	//读取温湿度值					    LCD_ShowNum(30+40,150,temperature,2,16);	//显示温度	   		   LCD_ShowNum(30+40,170,humidity,2,16);		//显示湿度	 	   }				   delay_ms(10);t++;if(t==20){t=0;LED0=!LED0;}}
}

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

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

相关文章

模型 OIIC(目标、障碍、洞察、挑战)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。沟通方案工具。 1 OIIC(目标、障碍、洞察、挑战)模型的应用 1.1 OIIC 驱动的汽车配件渠道优化 一家知名的汽车配件制造商&#xff0c;旗下品牌拥有众多产品&#xff0c;其销售渠道广泛&#xff0c;不仅在…

USB Micro引脚及相应原理图绘制

前言&#xff1a;博主为实现绘制USB Micro输入口原理图&#xff0c;首先在 GD32F103XX的数据手册中找到引脚的功能描述&#xff0c;找到USBDM与USBDP功能&#xff0c;分别为引脚PA11与引脚PA12。然后进行相应的原理图绘制。 * USBDM。USBDM 引脚是与通用串行总线 (Universal Se…

GPT Pilot - 编写 95% 代码的开发工具!

在这篇博客介绍了GPT-pilot的研发细节&#xff0c;原作者将探讨GPT Pilot的技术内核 —— 一款基于GPT-4编写的开发工具&#xff0c;可以生成生产使用代码的应用。 你有没有想过&#xff0c;95%的应用代码&#xff0c;可以由AI编写&#xff0c;就像《钢铁侠》里的贾维斯一样&a…

人工智能在测绘行业的应用与挑战

目录 一、背景 二、AI在测绘行业的应用方向 1. 自动化特征提取 2. 数据处理与分析 3. 无人机测绘 4. 智能导航与路径规划 5. 三维建模与可视化 6. 地理信息系统&#xff08;GIS&#xff09;智能化 三、发展前景 1. 技术融合 2. 精准测绘 3. 智慧城市建设 4. 可…

ElasticSearch之bool多条件查询

写在前面 在实际的业务场景中&#xff0c;不可能只是简单的单值查询 &#xff0c;更多的是n个条件的综合查询&#xff0c;就像下面的搜索&#xff1a; 针对这种场景我们就需要依赖于bool查询了&#xff0c;本文就一起来看下这部分的内容。 1&#xff1a;bool查询介绍 bool查…

推荐Miaoo朋友圈程序全开源版源码

Miaoo朋友圈的全开源程序源码提供了一套完整的解决方案&#xff0c;允许用户在前台轻松发布图文、视频和音乐内容。同时&#xff0c;用户可以设置地理位置信息&#xff0c;或者选择自定义位置。此外&#xff0c;系统支持将发布的内容设置为广告模式&#xff0c;并通过站内消息或…

RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:分配和注册字符设备

🚀返回专栏总目录 文章目录 一、分配和注册字符设备二、file_operations沉淀、分享、成长,让自己和他人都能有所收获!😄 一、分配和注册字符设备 字符设备在内核中表示为struct cdev的实例。在编写字符设备驱动程序时,目标是最终创建并注册与struct file_operations关联…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】顺序表

目录 1 -> 线性表 2 -> 顺序表 2.1 -> 概念及结构 2.2 -> 接口声明 2.3 -> 接口实现 2.3.1 -> 初始化 2.3.2 -> 销毁 2.3.3 -> 检查 2.3.4 -> 打印 2.3.5 -> 尾插 2.3.6 -> 头插 2.3.7 -> 尾删 2.3.8 -> 头删 2.3.9 ->…

C习题001:顺子日期【仅供参考】

题目&#xff1a;小明特别喜欢顺子。顺子指的是连续的三个数字&#xff1a;123、456等。顺子日期指的就是在日期的yyyymmdd表示法中&#xff0c;存在任意连续的三位数是一个顺子的日期。例如20220123就是一个顺子日期&#xff0c;因为它出现了一个顺子&#xff1a;123&#xff…

Langchain-Chatchat部署总结

项目地址&#xff1a; https://github.com/chatchat-space/Langchain-Chatchat 整体安装比较方便&#xff0c;在阿里云购买云主机&#xff0c;购买的国外站点机器&#xff0c; 该项目运行最佳坏境为 Linux Ubuntu 22.04.5Python 版本 3.11.7CUDA 版本: 12.1torch2.1.2 使…

2024年怎么购买买 FL Studio 21最便宜

随着电子音乐的日益普及&#xff0c;越来越多的人开始尝试制作自己的音乐。而其中一个常用的音乐制作软件就是FL Studio。那么&#xff0c;对于刚入坑的萌新来说&#xff0c;如何选择FL Studio的版本呢&#xff1f; 很多打算入手正版FL Studio的新手朋友都会纠结一个问题&#…

【深度学习笔记】3_12 权重衰减

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.12 权重衰减 上一节中我们观察了过拟合现象&#xff0c;即模型的训练误差远小于它在测试集上的误差。虽然增大训练数据集可能会减轻…

445. 两数相加 II(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外&am…

SpringBoot Admin 详解

SpringBoot Admin 详解 一、Actuator 详解1.Actuator原生端点1.1 监控检查端点&#xff1a;health1.2 应用信息端点&#xff1a;info1.3 http调用记录端点&#xff1a;httptrace1.4 堆栈信息端点&#xff1a;heapdump1.5 线程信息端点&#xff1a;threaddump1.6 获取全量Bean的…

人力资源管理信息化系统如何支持企业开展管理诊断

人力资源顾问有限公司致力于帮助企业开展人力资源管理方面的各项提升改进工作&#xff0c;在长期的咨询工作中&#xff0c;最常听到企业提到的问题莫过于管理诊断方面的问题&#xff0c;事实上&#xff0c;很多企业在日常工作中&#xff0c;都意识到企业内部存在管理方面的问题…

String类常用方法(Java)

String类的常见方法&#xff08;笔记&#xff09; 1. charAt(int index) 返回此字符串中指定索引处的字符。 String str "hello"; char ch str.charAt(1); // 获取字符串中索引为1的字符&#xff0c;结果为 e2. compareTo(String anotherString)按字典顺序比较两个…

蓝桥杯算法赛 第 6 场 小白入门赛 解题报告 | 珂学家 | 简单场 + 元宵节日快乐

前言 整体评价 因为适逢元宵节&#xff0c;所以这场以娱乐为主。 A. 元宵节快乐 题型: 签到 节日快乐&#xff0c;出题人也说出来自己的心愿, 祝大家AK快乐! import java.util.Scanner;public class Main {public static void main(String[] args) {System.out.println(&qu…

智能枪弹柜管理系统-智能枪弹管理系统DW-S306

随着社会的发展和治安形势的日益严峻&#xff0c;对于枪弹的管理变得尤为重要。传统的手工记录和存放方式已经无法满足现代化、高效化、安全化的需求。因此&#xff0c;智能枪弹柜管理系统应运而 生。 在建设万兆主干、千兆终端的监控专网的基础上&#xff0c;弹药库安全技术…

python实现线下缓存最优算法

对于现代计算机为了加快数据存储速度,一般会采用多级缓存的方法,以最简单的二级缓存来说,数据会存放在两个地方,一个地方就是存在内存当中,另一个存放的地方就是存放在硬盘当中,但是这两个地方数据读取的速度是完全不同的。 而CPU从内存中读取数据的速度是要远远快与从硬…

Python Web开发记录 Day3:BootStrap

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 三、BootStrap1、BootStrap-初体验2、BootStrap…