Rvfive 发表于 2021-10-26 09:53:40

RISC-V MCU开发实战(一) :DHT11

本帖最后由 Rvfive 于 2021-10-26 10:13 编辑

软件平台 :MounRiver Studio(MRS),硬件平台:CH32V103开发板、DHT11温度传感器。

1、DHT11简介

DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5-95%RH,温度-20~+60℃。该传感器包括一个电阻式测湿元件和一个NTC测温元件,可通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。 DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。单总线是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同.它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。
关于DHT11具体信息,可参考其产品手册。

2、硬件连接
DHT11的VCC、GND引脚与单片机VCC、GND引脚连接
DHT11的Dout引脚与单片机PA1连接(用户可自定义)

3、MRS中开发流程
1)首先新建一个CH32V103C8T6 的工程,流程与之前文章中操作相同,新建hardware文件夹,外设DHT11文件夹,DHT11.c源文件以及DHT11.h头文件,添加头文件路径,
如图:





在头文件定义两个确定IO传输方向的宏,以及IO操作函数的宏备用,其他就是函数声明,代码如下:

源文件中实现DHT11初始化函数,复位函数,检测函数,通信函数,其中DHT11一次完整的数据传输为40BIT,高位先出,数据格式为:8位湿度整数数据+8位湿度小数数据+8位温度数据+8位温度小数据+8位校验位,根据DHT11手册说明,小数位为预留位,现在全为0,校验位为8位湿度整数数据+8位湿度小数数据+8位温度数据+8位温度小数据结果的末8位,校验位正确时,再将温湿度数据输出。
具体函数代码如下:




主函数逻辑实现循环读和打印即可
2)成功编译之后,可进入调试来观察寄存器的值(不要在读取数据过程中打断点)

3调试无误之后,将程序下载到板子,用串口打印助手观察输出

williamhwf 发表于 2021-10-28 08:05:12

学习了。很详细

塞巴斯蒂安 发表于 2021-11-7 21:37:53

向大佬学习
页: [1]
查看完整版本: RISC-V MCU开发实战(一) :DHT11