单片机选用103系列,显示器用OLED
主程序程序:DHT11驱动程序在附件里
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "relay.h"
#include "oled0561.h"
#include "dht11.h"
int main (void){//主程序
u8 b[2];
delay_ms(1000); //上电时等待其他器件就绪
RCC_Configuration(); //系统时钟初始化
RELAY_Init();//继电器初始化
I2C_Configuration();//I2C初始化
OLED0561_Init(); //OLED初始化
OLED_DISPLAY_8x16_BUFFER(0," YoungTalk "); //显示字符串
OLED_DISPLAY_8x16_BUFFER(2," DHT11 TEST "); //显示字符串
if(DHT11_Init()==0){ //DHT11初始化 返回0成功,1失败
OLED_DISPLAY_8x16_BUFFER(4,"Humidity: % "); //显示字符串
OLED_DISPLAY_8x16_BUFFER(6,"Temperature: C"); //显示字符串
}else{
OLED_DISPLAY_8x16_BUFFER(4,"DHT11INIT ERROR!"); //显示字符串
}
delay_ms(1000);//DHT11初始化后必要的延时(不得小于1秒)
while(1){
if(DHT11_ReadData(b)==0){//读出温湿度值 指针1是湿度 20~90%,指针2是温度 0~50C,数据为十进制
OLED_DISPLAY_8x16(4,9*8,b[0]/10 +0x30);//显示湿度值
OLED_DISPLAY_8x16(4,10*8,b[0]%10 +0x30);//
OLED_DISPLAY_8x16(6,12*8,b[1]/10 +0x30);//显示温度值
OLED_DISPLAY_8x16(6,13*8,b[1]%10 +0x30);//
}else{
OLED_DISPLAY_8x16_BUFFER(6,"DHT11READ ERROR!"); //显示字符串
}
delay_ms(1000); //延时,刷新数据的频率(不得小于1秒)
}
全部资料51hei下载地址:
1-2-39-DHT11温湿度显示程序.7z
(222.17 KB, 下载次数: 107)
|