1.自己设置温度湿度阈值,当温度过高时,打开风扇,蜂鸣器报警
2.当湿度比较高时,打开LED1灯,蜂鸣器报警
bee.c
#include"bee.h"
void bee_init()
{RCC->MP_AHB4ENSETR |= (0x1<<1);GPIOB->MODER &= (~(0X3<<12));GPIOB->MODER |= (0X1<<12);GPIOB->OTYPER &= (~(0X1<<6));GPIOB->OSPEEDR &= (~(0X3<<12));GPIOB->PUPDR &= (~(0X3<<12));GPIOB->ODR &= (~(0X1<<6));
}void BEE_ON()
{GPIOB->ODR |= (0X1<<6);
}
void BEE_OFF()
{GPIOB->ODR &= (~(0X1<<6));
}
fan.c
#include "fan.h"
void fan_init()
{RCC->MP_AHB4ENSETR |= (0x1<<4);GPIOE->MODER &= (~(0X3<<18));GPIOE->MODER |= (0X1<<18);GPIOE->OTYPER &= (~(0X1<<9));GPIOE->OSPEEDR &= (~(0X3<<18));GPIOE->PUPDR &= (~(0X3<<18));GPIOE->ODR &= (~(0X1<<9));
}void FAN_ON()
{GPIOE->ODR |= (0X1<<9);
}
void FAN_OFF()
{GPIOE->ODR &= (~(0X1<<9));
}
led.c
#include "led.h"void all_led_init()//led灯的初始化
{//GPIOE/GPIOF时钟使能RCC->MP_AHB4ENSETR |= (0x3<<4);//PE10设置为输出GPIOE->MODER &= (~(0X3<<20));GPIOE->MODER |= (0X1<<20);//PF10设置为输出GPIOF->MODER &= (~(0X3<<20));GPIOF->MODER |= (0X1<<20);//PE8设置为输出GPIOE->MODER &= (~(0X3<<16));GPIOE->MODER |= (0X1<<16);//PE10设置为推挽输出GPIOE->OTYPER &= (~(0X1<<10));//PF10设置为推挽输出GPIOF->OTYPER &= (~(0X1<<10));//PE8设置为推挽输出GPIOE->OTYPER &= (~(0X1<<8));//PE10设置为低速输出GPIOE->OSPEEDR &= (~(0X3<<20));//PF10设置为低速输出GPIOF->OSPEEDR &= (~(0X3<<20));//PE8设置为低速输出GPIOE->OSPEEDR &= (~(0X3<<16));//PE10无上拉下拉电阻GPIOE->PUPDR &= (~(0X3<<20));//PF10无上拉下拉电阻GPIOF->PUPDR &= (~(0X3<<20));//PE8无上拉下拉电阻GPIOE->PUPDR &= (~(0X3<<16));//三盏灯默认输出低电平GPIOE->ODR &= (~(0X1<<10));GPIOF->ODR &= (~(0X1<<10));GPIOE->ODR &= (~(0X1<<8));
}//led1亮
void LED1_ON()
{GPIOE->ODR |= (0X1<<10);
}
//led2亮
void LED2_ON()
{GPIOF->ODR |= (0X1<<10);
}
//led1亮
void LED3_ON()
{GPIOE->ODR |= (0X1<<8);
}//LED1灭
void LED1_OFF()
{GPIOE->ODR &= (~(0X1<<10));
}
//LED2灭
void LED2_OFF()
{GPIOF->ODR &= (~(0X1<<10));
}
//LED3灭
void LED3_OFF()
{GPIOE->ODR &= (~(0X1<<8));
}
main.c
#include"led.h"
#include "fan.h"
#include "bee.h"
#include"si7006.h"
int main(){// led初始化all_led_init();fan_init();bee_init();//i2c初始化i2c_init();//si7006初始化si7006_init();short tem;unsigned int short hum;while(1){//读取温度数据tem=si7006_read_tem();//读取湿度数据hum=si7006_read_hum();//计算温湿度数据hum=125*hum/65536-6;tem=175.72*tem/65536-46.85;printf("hum:%d\n",hum);printf("tem:%d\n",tem);if(hum>=75){LED1_ON();BEE_ON();}if(hum<75){LED1_OFF();}if(tem>=28){FAN_ON();BEE_ON();}if(tem<28){FAN_OFF();}if(tem<28&&hum<75){BEE_OFF();}delay(1000);}return 0;
}