通用裸机-传感器-1-DHT11温湿度sensor

发布者:温柔的心情最新更新时间:2024-07-03 来源: elecfans关键字:传感器  DHT11 手机看文章 扫描二维码
随时随地手机看文章

硬件连接:

MCU通过一条数据线与DH11连接,MCU通过这条线发命令给DH11,DH11再通过这条线把数据发送给MCU。


温湿度模块的核心就是 MCU发给DH11的命令格式和DH11返回的数据格式。

时序:


首先MCU发送一个开始信号S,这个开始信号是一个低脉冲,然后再拉高。等待DHT11应答。

然后,DH11拉低,做出一个响应信号,再拉高,准备发送数据。

接着就是DH11返回的数据。

这些数据一共有40bit,高位先出。(8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和)

数据有40bit: 8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和

时序要求:


MCU必须先拉低至少18ms,然后再拉高20-40us,DH11再拉低80us以响应,最后再拉高80us.

接下来就是传输数据:



Bit0:1bit 50us开始后,DHT11拉低数据时间为30us以内



Bit1:1bit 50us开始后,DHT11拉低数据时间为超过70us

代码实现:

实现GPIO的基本操作:

GPG5,gpio配置如下:




动图封面

动图封面

static void dht11_data_cfg_as_output(void) { GPGCON &= ~(3<<10); GPGCON |= (1<<10); } static void dht11_data_cfg_as_input(void) { GPGCON &= ~(3<<10); } static void dht11_data_set(int val) { if (val) GPGDAT |= (1<<5); else GPGDAT &= ~(1<<5); } static int dht11_data_get(void) { if (GPGDAT & (1<<5)) return 1; else return 0; } DHT11操作: void dht11_init(void) { dht11_data_cfg_as_output(); dht11_data_set(1); mdelay(2000); } static void dht11_start(void) { dht11_data_set(0); mdelay(20); dht11_data_cfg_as_input(); } static int dht11_wait_ack(void) { udelay(60); return dht11_data_get(); } static int dht11_recv_byte(void) { int i; int data = 0; for (i = 0; i < 8; i++) { if (dht11_wait_for_val(1, 1000)) { printf('dht11 wait for high data err!nr'); return -1; } udelay(40); data <<= 1; if (dht11_data_get() == 1) data |= 1; if (dht11_wait_for_val(0, 1000)) { printf('dht11 wait for low data err!nr'); return -1; } } return data; } static int dht11_wait_for_val(int val, int timeout_us) { while (timeout_us--) { if (dht11_data_get() == val) return 0; /* ok */ udelay(1); } return -1; /* err */ } int dht11_read(int *hum, int *temp) { unsigned char hum_m, hum_n; unsigned char temp_m, temp_n; unsigned char check; dht11_start(); if (0 != dht11_wait_ack()) { printf('dht11 not ack, err!nr'); return -1; } if (0 != dht11_wait_for_val(1, 1000)) /* 等待ACK变为高电平, 超时时间是1000us */ { printf('dht11 wait for ack high err!nr'); return -1; } if (0 != dht11_wait_for_val(0, 1000)) /* 数据阶段: 等待低电平, 超时时间是1000us */ { printf('dht11 wait for data low err!nr'); return -1; } hum_m = dht11_recv_byte(); hum_n = dht11_recv_byte(); temp_m = dht11_recv_byte(); temp_n = dht11_recv_byte(); check = dht11_recv_byte(); dht11_data_cfg_as_output(); dht11_data_set(1); if (hum_m + hum_n + temp_m + temp_n == check) { *hum = hum_m; *temp = temp_m; mdelay(2000); /* 读取周期是2S, 不能读太频繁 */ return 0; } else { printf('dht11 checksum err!nr'); return -1; } } void dht11_test(void) { int hum, temp; dht11_init(); while (1) { if (dht11_read(&hum, &temp) !=0 ) { printf('nrdht11 read err!nr'); dht11_init(); } else { printf('nrDHT11 : %d humidity, %d temperaturenr', hum, temp); } } }

View Code


关键字:传感器  DHT11 引用地址:通用裸机-传感器-1-DHT11温湿度sensor

上一篇:s3c2440裸机-LCD编程-2-LCD控制器
下一篇:通用裸机-arm汇编和cpu运行模式

推荐阅读最新更新时间:2024-11-02 03:29

光电传感器在机场物流行业的设计应用
随着国内航空运输业的持续快速发展,机场物流项目逐渐增多,技术水平不断提高。民航总局预计,”十一五”期间,中国内地航空运输将有14%的增长,机场建设投资将达到1400亿元人民币,这无疑为机场物流相关领域的发展提供了巨大的市场空间。明确到2010年底,约需投资4万亿元以加快建设进度,09年民航固定资产投资总规模将达800亿至1000亿元,较上年增长33%以上。 机场物流系统主要包括三大类:机场行李处理系统、航空货运处理系统、航空配餐处理系统。在此主要分析传感器在行李与货运处理系统的应用情况。行李处理系统英文名称为BHS(Baggage Handling System),是在民航机场的航站楼内为旅客输送和处理托运行李的系统,是旅
[模拟电子]
ADI:毫米波雷达、LiDAR和惯性元件是无人驾驶关键传感器
2019年,随着汽车的ADAS技术开始向无人汽车技术演进,更多的传感器技术将被引用。 毫米波雷达,激光雷达(LiDAR)和惯性测量元件等技术将会导入到试验车上,以便让汽车可以进行更好获取外界信息并进行准确及快速决策。 自动驾驶汽车的三个传感器改进领域是毫米波雷达,激光雷达和惯性测量单元。 (图片来源:ADI公司) “在某种程度上,我们可能会看到这些技术在受限环境的车辆中实施,例如地理围栏区域的机器人出租车等。”ADI公司自动驾驶和汽车安全副总裁Chris Jacobs指出。“又或者只在天气条件良好的环境中进行测试。” 新技术与现有传感器系统相比具有显着改进。他们包括: 毫米波雷达 :毫米波雷达通常在77/79 GHz范
[汽车电子]
ADI:毫米波雷达、LiDAR和惯性元件是无人驾驶关键<font color='red'>传感器</font>
硅温度传感器可提升汽车性能标准
温度传感器在车内温度控制和引擎监控等汽车应用中发挥着重要作用。设计时慎重考虑传感器选型则可以在不增加成本的情况下利用新技术来提高性能。 对于许多应用而言,存在着比传统热敏电阻更先进的技术,而传统技术往往只是因为先前设计中一直采用而被频繁使用。 使用硅技术制造温度传感器是实现最佳可靠性的方法之一,因为这种传感器的行为与硅本身一样稳定。例如,基于硅的传感器在长达50年的时间内漂移量甚微。精确的半导体制造技术使传感器具备高度的可再生产性。 硅的另一大优势在于,传感器能够充分利用集成电路的封装和大批量制造原理。这对当今汽车应用尤为重要,因为小型化和封装已经成为其主导趋势。 硅温度传感器还具有正温度系数,其电阻随温度升高而增大,从而能
[嵌入式]
胞内即时影像检测共振传感器诞生
  来自EurekAlert的消息,伊利诺大学基因组生物学研究所的研究人员突破了FRET技术的局限性,开发了一个共振传感器,来检测细胞内的氧化还原动力学的即时影像,这一研究成果公布在《实验生物学与医学》(Experimental Biology and Medicine)杂志上。   这项研究由Robert Clegg博士等人完成,Clegg博士是生物科学界发展光学显微镜新颖应用的先锋之一,他在荧光半衰期影像显微镜研究领域获得了许多重要的研究成果。其研究组在之前的研究中已建立了一系列的FTRET供体和受体荧光蛋白在氧化还原敏感开关。   在这篇文章中,研究人员在之前研究的基础上,将氧化还原敏感的绿色荧光蛋白(GFPs)的概
[医疗电子]
用“芯”护航驾驶安全:豪威集团发布OX03J10汽车图像传感器
汽车实现高度智能化过程中,图像传感器一直扮演着至关重要的角色。随着汽车逐步向高阶自动驾驶等级迈进,对于图像传感器规格和性能的诉求也同步升级。目前主流的ADAS系统当中,不同安装位置的摄像头侧重的功能也有所不同,环视及后视位的摄像头为了能进一步增强驾驶安全性,需要让驾驶员能更清晰、精准的了解视角之外的环境。 作为全球领先的车载图像传感器开发商, 豪威 集团在ADAS/AD领域长期耕耘。近日,公司面向360°环景显示系统、后视摄像头、摄像头监控系统(CMS)三类场景发布了一款型号为 OX03J10 的全新产品,在信号处理、成像效果、产品功耗等多个方面都进行了优化升级,能支持更多高阶的辅助驾驶功能。 OX03J10 是一款用于人
[汽车电子]
用“芯”护航驾驶安全:豪威集团发布OX03J10汽车图像<font color='red'>传感器</font>
博世携七款传感器产品亮相慕尼黑电子展,BB—8吸睛无数
            大家还记得《星球大战7:原力觉醒》中那个可爱的机器人BB—8吗?球形的身体加上半球形的脑袋,总是能够快速滚动身体以此躲避外界攻击,呆萌可爱的形象使得它吸粉无数。此次在2016慕尼黑上海电子展的Bosch Sensortec展厅,就为大家展现了BB—8机器人的真容。到底BB—8机器人和Bosch Sensortec有着怎样的姻缘呢?       原来,BB—8机器人内置Bosch Sensortec的BMI055传感器,这使得原本只能在科幻大片里才能看见的小玩意变成了现实。结合了一个加速度计和一个陀螺仪,超小的6轴惯性传感器BMI055集成了许多功能。它实现了在三个正交轴上超低噪声的角速度和加速
[手机便携]
MSP430的车载酒精探测控制仪设计方案
本文提出了一种基于MSP430单片机的超低功耗酒精探测控制仪,该仪器安装在汽车内,当驾驶人员进入驾驶室后,可以自动对酒精浓度进行探测,以确保行车的安全。系统可以根据检测到的酒精含量是否超标控制汽车点火器打开或者关闭,如果超标,则驾驶人员无法启动汽车,因此从根本上杜绝了酒后驾车的出现。该系统具有性价比高,智能化程度高,工作稳定可靠的优点。 系统工作原理 系统采用超高灵敏度酒精传感器,超低功耗单片机系统,自动探测酒精浓度的方法,可以防止驾驶人员逃避检测,以判断驾驶员是否是酒后开车,系统总体设计如图1所示。该系统可放置在汽车仪表盘位置,当司机发动汽车时,探测控制仪启动,此时发动机处于被锁状态,汽车无法启动。酒精传感器加热后,探测控制
[单片机]
MSP430的车载酒精探测控制仪设计方案
基于单片机的温湿度采集系统的硬件结构设计
在常规的环境参数中,湿度是最难准确测量的一个参数。用干湿球湿度计或毛发湿度计来测量湿度的方法,早已无法满足现代科技发展的需要。这是因为测量湿度要比测量温度复杂得多,温度可独立测量,而湿度却受其他因素(大气压、温度)的影响。 利用AT89C2051单片机强大的功能,同时结合智能传感器SHT75测量温湿度有快速和使用简便等特点,设计了一个温湿度采集系统来对温湿度进行实时监控。通过对实际环境的温湿度测量,证明了该系统硬件电路布局设计简单合理,体积小,功能齐全,精度高,成本低,性价比相当高,是一款可以普及化的高精度温湿度参数检测仪。 1 温湿度采集系统的硬件设计 1.1 系统总体设计方案 为了实现课题对监控机构的稳定性好、
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved