FPGA温湿度传感器数据读取(DHT11)

原理

在写代码前还是要仔细学习以下要使用的传感器的工作原理的,这样可以利于在调试过程中快速解决问题。
1.网上找来的DHT11读取数据的通信时序图
在这里插入图片描述
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必
须大于18毫秒,保证DHT11能检测到起始信号。
DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.
主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉
高80us,
准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
2.数据0,1表示方法:
0:
在这里插入图片描述
1:
在这里插入图片描述
————————————————
上述转载自:博主「不想成为大佬的IC小菜鸟」的原创文章
原文链接:https://blog.csdn.net/weixin_46628093/article/details/115055623

代码

1.顶层文件

module top(
    input clk,
    input rst,
    inout in_out,
    output  [3:0] dig, 
    output  [7:0] dict
);

/*===================================================
				触发和数据读取
===================================================*/
wire [31:0]information;
dht11_drive dht
(
        .sys_clk			(clk		),//input clk,
        .rst_n			(rst		),//input btn_in,
        .dht11			(in_out		),//inout in_out,
		.data_valid	(information) //output reg [31:0]information
    );
    
/*===================================================
				数据形式转换
===================================================*/
wire [3:0]humidity_one;//湿度
wire [3:0]humidity_ten;
wire [3:0]humidity_decimal;
wire [3:0]temp_one;//温度
wire [3:0]temp_ten;
wire [3:0]temp_decimal;
//assign information = 32'h3300_3300;
change  change
(
       .clk		        (clk			 ),//input 			 clk,
       .information	    (information	 ),//读取的40位数据中的高32位//input  [31:0]	 information,//读取的40位数据中的高32位
       .humidity_one    (humidity_one    ),//output reg [3:0]humidity_one=0,//湿度
       .humidity_ten    (humidity_ten    ),//output reg [3:0]humidity_ten=0,
       .humidity_decimal(humidity_decimal),//output reg [3:0]humidity_decimal,
       .temp_one		(temp_one		  ), //output reg [3:0]temp_one=0,//温度
       .temp_ten        (temp_ten        )<
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 系统概述 本系统主要由FPGA开发板和DHT11湿度传感器组成,通过FPGA开发板的GPIO口与DHT11传感器进行连接,实现环境湿度的检测和显示。其中,FPGA开发板负责控制传感器的采集以及数据的处理和显示,DHT11传感器负责采集环境湿度数据并将数据传输给FPGA开发板。 2. 系统设计 系统设计主要分为硬件设计和软件设计两部分。 2.1 硬件设计 硬件设计主要包括FPGA开发板和DHT11传感器的连接和控制。 2.1.1 FPGA开发板 FPGA开发板主要由一个FPGA芯片、一组GPIO口和一块显示屏组成。其中,FPGA芯片主要负责数据的处理和控制,GPIO口主要用于与DHT11传感器进行连接,显示屏用于显示检测到的环境湿度数据。 2.1.2 DHT11传感器 DHT11传感器主要由一个湿度传感器和一个数据传输芯片组成。其中,湿度传感器负责采集环境湿度数据数据传输芯片负责将采集到的数据通过单线数字信号传输给FPGA开发板。 2.2 软件设计 软件设计主要包括FPGA开发板程序的编写和数据处理算法的设计。 2.2.1 FPGA开发板程序 FPGA开发板程序主要负责控制GPIO口与DHT11传感器进行连接和数据读取、处理和显示。具体实现过程为:首先通过GPIO口向DHT11传感器发送启动信号,然后等待DHT11传感器的响应,接着读取DHT11传感器传输的数据,最后将读取到的数据进行处理和显示。 2.2.2 数据处理算法 数据处理算法主要负责将读取到的原始数据进行解析和转换,得到环境湿度的实际值。具体实现过程为:首先将读取到的原始数据进行校验,确保数据的正确性,然后根据DHT11传感器的数据格式将数据进行解析,最后将解析出的数据进行转换,得到环境湿度的实际值。 3. 系统实现 系统实现主要包括硬件的连接和软件的编程实现两部分。 3.1 硬件连接 硬件连接主要包括FPGA开发板和DHT11传感器的连接。具体实现过程为:将DHT11传感器的VCC口连接到FPGA开发板的3.3V电源口,将DHT11传感器的GND口连接到FPGA开发板的GND口,将DHT11传感器的DATA口连接到FPGA开发板的GPIO口。 3.2 软件编程实现 软件编程实现主要包括FPGA开发板程序的编写和数据处理算法的设计。具体实现过程为:首先编写FPGA开发板程序,实现GPIO口与DHT11传感器的连接和数据读取、处理和显示。然后设计数据处理算法,实现对读取到的原始数据进行解析和转换,得到环境湿度的实际值。 4. 系统测试 系统测试主要包括系统功能测试和性能测试两部分。 4.1 系统功能测试 系统功能测试主要测试系统能否正确地采集环境湿度数据并将数据显示在屏幕上。具体测试过程为:将DHT11传感器放置在不同的环境中,启动系统,观察系统是否能够正确地采集环境湿度数据并将数据显示在屏幕上。 4.2 系统性能测试 系统性能测试主要测试系统的性能指标,包括采样精度、采样速度等。具体测试过程为:通过对不同环境下的湿度数据进行采集和比对,测试系统的采样精度;通过测试系统在不同环境下的采样速度,测试系统的采样速度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海大干饭人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值