#也是参考别的大佬的,分享出来一起学习进步!#
一、组成部分
1、STM32F103C8T6核心板
2、DHTII温湿度传感器
GND | GND |
DAT | GPIOA11 |
VCC | VCC |
3、低电平有源蜂鸣器
GND | GND |
I/O | GPIOB1 |
VCC | VCC |
4、0.96OLED屏
GND | GND |
VCC | VCC |
SCL | GPIOB8 |
SDA | GPIOB9 |
5、轻触按键
按键1 | GPIOA1 |
按键2 | GPIOA2 |
按键3 | GPIOA3 |
按键4 | GPIOA4 |
6、LED灯珠
可以与蜂鸣器替换,自己选择合适的GPIO口即可。
二、实物图
三、主函数代码展示
int main(void)
{
LED_Init();
key_Init();
OLED_Init();
DHT11_Init();
OLED_Deom();
Delay_ms (200);
home1();
OLED_Clear();
while(1)
{
Keynum=key_scanf();
OLED_ShowString(2,1,"1.");
OLED_ShowString(3,1,"2.");
OLED_ShowFontString(2,2,2,3);
OLED_ShowFontString(3,2,4,5);
Keynum=key_scanf();
switch(Keynum)
{
case 2: temp1();
case 3: humi2();
}
}
}
四、各函数代码
/*****************************
***********开机动画***********
******************************/
void home1(void)
{
while(1)
{
Keynum=key_scanf();
if(Keynum==1)
{
break;
}
else
{
for(;a<1;a++)
{
Delay_ms(100);
OLED_AllLOVE();
Delay_ms(100);
OLED_BMP128(8);
Delay_s(1);
OLED_AllLOVE();
}
if(a==3)
{
OLED_Clear();
}
OLED_ShowFontString(1,1,10,13);
OLED_ShowString(1,10,"ZK-Made");
OLED_ShowFontString(3,1,14,20);
OLED_ShowString(4,14,"OK");
OLED_C();
a++;
}
}
}
/*****************************
***********温湿度检测*********
******************************/
void temp1_humi2(void)
{
while(Keynum==1)
{
OLED_ShowFontString(2,2,2,3);
OLED_ShowFontString(3,2,4,5);
DHT11_Read_Data(&temp,&humi);
bufe[1]=humi;
OLED_ShowNum(3,8,bufe[1],2);
OLED_ShowString(3,10,"%");
bufe[0]=temp;
OLED_ShowNum(2,8,bufe[0],2);
if(temp>20||temp<0)
{
LED1_ON();
}
else
{
LED1_off();
}
Delay_ms(10);
}
}
/*****************************
***********温度检测***********
******************************/
void temp1(void)
{
OLED_Clear();
while(Keynum==2)
{
DHT11_Read_Data(&temp,&humi);
bufe[0]=temp;
OLED_ShowFontString(2,4,2,3);
OLED_ShowNum(3,8,bufe[0],2);
if(temp>20||temp<0)
{
LED1_ON();
}
else
{
LED1_off();
}
Delay_ms(10);
Keynum=key_scanf();
if(Keynum==4)
{
Delay_ms(100);
OLED_Clear();
Keynum=0;
}
}
}
/*****************************
***********湿度检测***********
******************************/
void humi2(void)
{
OLED_Clear();
while(Keynum==3)
{
DHT11_Read_Data(&temp,&humi);
bufe[1]=humi;
OLED_ShowFontString(2,4,4,5);
OLED_ShowNum(3,8,bufe[1],2);
OLED_ShowString(3,10,"%");
Delay_ms(10);
Keynum=key_scanf();
if(Keynum==4)
{
Delay_ms(100);
OLED_Clear();
Keynum=0;
}
}
}
如有不当,敬请大佬们指教!
链接:https://pan.baidu.com/s/1G1s8a_I_s6b2kE5TSUtYXw?pwd=ZKDD
提取码:ZKDD