51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真

51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真


采用的接线方式是IIC接口,在Proteus里面仿真太慢了,不知道是电脑古老问题还是怎么,看图像就知道了,有多卡,感觉电脑运行还可以虽然是11年的电脑。好多时候探索问题,没有出效果,真的不知道这条黑路还亚奥走多久才能见到光,调试就是这样,我们看到的只有光鲜亮丽的结果,不知道背后付出了多少时间和努力。OLED显示出效果来,折腾了好久,就是不出图像,
在这里插入图片描述

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// 

// ----------------------------------------------------------------
// GND 电源地
// VCC 接5V或3.3v电源
// D0 P1^0(SCL)
// D1 P1^1(SDA)
// ----------------------------------------------------------------

//\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
#include "REG51.h"
#include "oled.h"
#include <DTH11.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;

uchar wendu [4];
uchar shidu [4];

int main(void)
{
OLED\_Init(); //初始化OLED
OLED\_Clear() ;

while(1)
{

OLED\_Clear();
OLED\_ShowCHinese(18,0,0);//温
OLED\_ShowCHinese(36,0,1);//湿
OLED\_ShowCHinese(54,0,2);//度
OLED\_ShowCHinese(72,0,3);//监
OLED\_ShowCHinese(90,0,4);//测

OLED\_ShowCHinese(26,3,0);
OLED\_ShowCHinese(44,3,2);
OLED\_ShowCHinese(26,6,1);
OLED\_ShowCHinese(44,6,2);
OLED\_ShowChar(62,3,':',16);//显示ASCII字符
OLED\_ShowChar(62,6,':',16);//显示ASCII字符
DHT11\_delay\_ms(100);
DHT11\_receive();
for(i=0;i<7;i++)
{
if(i<=2)
{
shidu[i]= rec_dat[i]; //读取湿度
}
if(i>=4)
{
wendu[i-4] = rec_dat[i];
}
OLED\_ShowString(70,3,wendu,16);
OLED\_ShowCHinese(104,3,5); //显示℃符号
OLED\_ShowString(70,6,shidu,16);
OLED\_ShowChar(104,6,'%',16);
delay\_ms(1000);

}

}
}

程序源码和仿真资源

1
2
3
链接:https://pan.baidu.com/s/1yvjMkg9fAAbTBPJz\_xWntw 
提取码:hfar