目录
材料
接线
步骤
stm32clube配置
配置gpio口
配置IIC,OLED
生成项目
打开项目编辑
加入dht11和oled文件到项目中
将.c文件加入到项目中,然后编译
修改main代码
烧录后就会在oled上出现温湿度
注意
材料
- stmf103c8t6
- dht11
- oled(IIC,四针)
接线
dht11接A7,oled接IIC的B6和B7
步骤
stm32clube配置
弄完按一下enter
配置gpio口
配置IIC,OLED
生成项目
打开项目编辑
加入dht11和oled文件到项目中
将dht11和oled的.c文件加入到项目根目录的Core文件夹里的Src里
将dht11和oled的.h文件加入到项目根目录的Core文件夹里的Inc里
文件在开头,有资源,可以下载
将.c文件加入到项目中,然后编译
修改main代码
#include "main.h"
#include "i2c.h"
#include "gpio.h"
#include "dht11.h"
#include "oled.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void SystemClock_Config(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
char *name1;
char *name2;
char datas[5];
//1. OLED初始化//2. 选择一个位置//2.1 确认页寻址模式
Oled_Init();
Oled_Write_Cmd(0x20);
Oled_Write_Cmd(0x02);
Oled_Screen_Clear();
name1 = (char *) malloc(20);
name2 = (char *) malloc(20);
while (1)
{
//温湿度
HAL_Delay(1000);
Read_Data_From_DHT();
HAL_Delay(1000);
if(two==0)
{
sprintf(name1, "Temp %d.%d ", datas[2], datas[3]);
sprintf(name2, "Humi %d.%d ", datas[0], datas[1]);
Oled_Show_Str(1,0,name1);
Oled_Show_Str(2,0,name2);
}
HAL_Delay(1000);
}
}
烧录后就会在oled上出现温湿度
注意
- 我的dht11代码里有一个one和一个two,有时会检测不出来,one就是测试一段时间有没有反应,没反应就会退出,如果检测出来,就会让two标志位变成1,只要判断是否是1就可以知道什么时候打印了
- oled有一个oled.c oled.h oledfont.h三个文件,dht11有一个dht11.c dht11.h两个文件
- 可以配置多一个灯的gpio口,检测程序是否有没有正常运行,作者懒
- 整个项目在文章头,可以自行下载