学习STM32F103系列差不多快到两个月,本实验中的驱动都是自己写的库,几乎是0移植.
先贴图:
(因为我近期在做的项目就是智慧猪栏,说白了就是物联网养猪,所以我这个显示屏提示的标题就是这个)
现在将具体项目是如何完成的,其实非常简单.
1.仅需要的模块是 STM32MCU GPIO RCC SPI Delay OLED 这几个
2.先完成DHT11的库编写,就根据DHT11的用户手册来写就没有问题,先保证DHT11能够正常工作,读取温湿度
3.完成DHT11能够正常的读取温湿度通过USART串口发送到计算机(主要是保证DHT11能够工作)
DHT11.c 代码如下
/******************************************************************************************
* DHT11温度传感器的驱动库文件 V1.0 创建人张超 创建日期 2017年7月4日
* 简介:
* 1. 一个很简单的温湿度控制器模块,就根据DHT11官方的使用手册来配置MCU与DHT11联系引脚的电平即可
* 2. 根据其用户手册来说:
* (1)[ MCU为输出模式],拉低引脚的电平超过18ms就提示DHT11开始检测
* (2)MCU拉低电平后再拉高电平20-40us等待DHT11信号
* (3)DHT11检测到MCU的信号后就发送响应信号,此时[ MCU为输入模式]
* (4)DHT11拉低总线保持80us给MCU发送响应信号,再拉高80us表示响应结束准备发送数据
* (5)DHT11没发送的1bit数据都是以50us低电平开始
* (6)DHT11表示0的是 : 拉低50us开始 再拉高26us - 28us 结束本次bit传输
* (7)DHT11表示1的是 : 拉低50us开始 再拉高70us 结束本次bit传输
* (8)调用STM32官方库函数的GPIO_ReadInputDataBit(DHT11_GPIO,DHT11_PIN)来读取DHT11引脚的电平输入就可以知道DHT11的温度检测数值
* (9)DHT11会一次传递5个字节,传递数据的流程分别是: 湿度高位;湿度低位;温度高位;温度低位;前四项的校验和
* (10)把DHT11采集到的温湿度值每次全部都赋值给 定义在头部的u8全局变量
* (11)最后声明两个函数用于最后的温度和湿度数据的收集保证函数的整洁性
* (12)直接在main主函数导入dht11.h的头文件,再调用该dht11.c的相关函数即可使用DHT11的采集数据(因为DHT11采集的是数字信号所以可以直接调用)
* 该说明创建于2017年7月4日,创建人teavamc,未经允许不得使用商业用途
*/
#include "dht11.h" //导入头文件dht11.h
static void DHT11_Input(void); //声明static函数DHT11_Input,用于配置DHT11的引脚为输入模式