温控风扇源码
- #include "delay.h"
- #include "sys.h"
- #include "pwm.h"
- #include "usart.h"
- #include "stdio.h"
- #include "dht11.h"
- //DHT11 接线方法:三个引脚,-接地,S接PB14,中间接3.3v
- //u8 buff[30]; //参数显示缓存数组
- u8 DHT11_Temp,DHT11_Hum; //温湿度
- int main(void)
- {
- u8 flag =0; //作为手动挡和自动挡
- int pluse=200; //保存捕获比较寄存器的值
- int j=0; //电风扇手动挡档数
- delay_init();
- TIM3_PWM_Init();
- DHT11_Init();
- uart_init(115200);
- fan_gpio();
- while(1)
- {
-
- if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==1)//WA_UP
- {
- delay_ms(100);
- if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==1)
- {
- flag+=1;
- }
- }
- //我用的板子按键有问题,所以一上电就进入手动模式了
-
- // /*自动情况*/
- if(!flag%2)
- {
- printf("自动调速模式中\r\n" );
- DHT11_Read_Data(&DHT11_Temp,&DHT11_Hum);
- printf("当前温度:%d℃ 当前湿度:%d%%\r\n",DHT11_Temp,DHT11_Hum);
- delay_ms(1000);
-
- if(DHT11_Temp>=30)
- {
- TIM_SetCompare2(TIM3,0); //全速开风
- }
- else if(25<DHT11_Temp&&DHT11_Temp<30)
- {
-
- TIM_SetCompare2(TIM3,80); //
- }
-
- else{
- TIM_SetCompare2(TIM3,200); //关闭
- }
- }
- //
- // /*手动模式*/
- if(flag%2)
-
- {
- printf("手动调速模式中\r\n" );
- printf("按Key0进行档位切换,当前挡位:%d\r\n\r\n" ,j);
- TIM_SetCompare2(TIM3,pluse); //关闭
- delay_ms(1000);
- delay_ms(1000);
- if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)==0)//KEY0
- {
- delay_ms(10);
- if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)==0)
- {
-
- pluse=pluse-50;
- j=j+1;
- if(pluse<0)
- {
- pluse=200;
- j=0;
- }
- TIM_SetCompare2(TIM3,pluse); //关闭
- }
- }
- }
- }
- }
-
复制代码
Keil代码下载:
温控风扇代码.7z
(197.95 KB, 下载次数: 28)
|