欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
溫控風扇stm32c8t6單片機程序
[打印本頁]
作者:
lmq123456
時間:
2023-8-1 11:26
標題:
溫控風扇stm32c8t6單片機程序
當溫度大于等于27°時,電機風扇以80%的占空比工作且進行高溫預警蜂鳴器以0.5s為周期鳴叫,紅色led以0.3s為周期交替閃爍,溫度小于等于24°時風扇停轉,綠色led常亮。其他溫度以風扇以占空比50%工作,指示燈全滅。
單片機源程序如下:
#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; //定時器計數變量
uint8_t wendu=0; //溫度
uint8_t shidu=0; //濕度
uint8_t Motor_Mode=3; //電機模式
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);
}
}
復制代碼
原理圖:無
仿真:無
Keil代碼下載:
程序.7z
(185.62 KB, 下載次數: 21)
2023-8-1 13:41 上傳
點擊文件名下載附件
程序代碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1