標(biāo)題:
溫控風(fēng)扇stm32c8t6單片機(jī)程序
[打印本頁]
作者:
lmq123456
時(shí)間:
2023-8-1 11:26
標(biāo)題:
溫控風(fēng)扇stm32c8t6單片機(jī)程序
當(dāng)溫度大于等于27°時(shí),電機(jī)風(fēng)扇以80%的占空比工作且進(jìn)行高溫預(yù)警蜂鳴器以0.5s為周期鳴叫,紅色led以0.3s為周期交替閃爍,溫度小于等于24°時(shí)風(fēng)扇停轉(zhuǎn),綠色led常亮。其他溫度以風(fēng)扇以占空比50%工作,指示燈全滅。
單片機(jī)源程序如下:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"
#include "dht11.h"
#include "Motor.h"
#include "PWM.h"
#include "stdio.h"
uint16_t Num=0; //定時(shí)器計(jì)數(shù)變量
uint8_t wendu=0; //溫度
uint8_t shidu=0; //濕度
uint8_t Motor_Mode=3; //電機(jī)模式
uint8_t Motor_Speed=0; //占空比
void Sys_Mode(uint8_t temp);
int main(void)
{
OLED_Init();
Timer_Init();
DHT11_Init();
Motor_Init();
OLED_ShowCharacters(1, 1, 7);
OLED_ShowCharacters(1, 3, 28);
OLED_ShowCharacters(1, 5, 29);
OLED_ShowCharacters(1, 7, 30);
OLED_ShowCharacters(2, 1, 7);
OLED_ShowCharacters(2, 2, 13);
OLED_DisplayString(2, 5, ":");
OLED_ShowCharacters(2, 5, 9);
OLED_ShowCharacters(3, 1, 27);
OLED_ShowCharacters(3, 2, 13);
OLED_DisplayString(3, 5, ":");
OLED_DisplayString(3, 8, "%");
OLED_ShowCharacters(4, 1, 31);
OLED_ShowCharacters(4, 2, 32);
OLED_ShowCharacters(4, 3, 33);
OLED_DisplayString(4, 7, ":");
OLED_DisplayString(4, 10, "%");
while (1)
{
DHT11_Read_Data(&wendu,&shidu);
if(wendu>26) Sys_Mode(1);
else if(wendu<25) Sys_Mode(3);
else Sys_Mode(2);
OLED_DisplayNum(2, 6, wendu, 2);
OLED_DisplayNum(3, 6, shidu, 2);
OLED_DisplayNum(4, 8, Motor_Speed, 2);
PWM_SetCompare3(Motor_Speed);
}
}
void Sys_Mode(uint8_t temp)
{
switch(temp)
{
case 1:
Motor_Speed=80;
if(Num%5==0)
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
else GPIO_SetBits(GPIOA, GPIO_Pin_4);
if(Num%3==0)
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
else GPIO_SetBits(GPIOA, GPIO_Pin_5);
GPIO_ResetBits(GPIOA, GPIO_Pin_6);//綠色LED滅
break;
case 2:
Motor_Speed=50;
GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6);//三輸出引腳全部置低電平
break;
case 3:
Motor_Speed=0;
GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);
GPIO_SetBits(GPIOA, GPIO_Pin_6);//綠色LED常亮
break;
}
}
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET)
{
Num ++;
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
復(fù)制代碼
原理圖:無
仿真:無
Keil代碼下載:
程序.7z
(185.62 KB, 下載次數(shù): 21)
2023-8-1 13:41 上傳
點(diǎn)擊文件名下載附件
程序代碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1