標題:
stm32智能遙控風扇程序源碼
[打印本頁]
作者:
LGX123
時間:
2018-8-2 21:06
標題:
stm32智能遙控風扇程序源碼
本程序使用的是普中stm32開發(fā)板外加一個電機驅(qū)動模塊,實習自動根據(jù)溫度調(diào)節(jié)風扇轉速, 和手動選擇模式,溫度的范圍可通過按鍵和紅外遙控進行調(diào)節(jié)。屏幕顯示當前溫度和模式。并且可通過串口查看溫度
單片機源程序如下:
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "DS18B20.h"
#include "key.h"
#include "hwjs.h"
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
int main()
{
u8 i=0,key,a=15,b=20,t=25,k=30;
int PWM,low,zhouqi;
float temper;
u8 temper_buf[6];
int temper1;
zhouqi=250;
low=zhouqi-PWM;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級分組 分2組
LED_Init();
KEY_Init();
USART1_Init(9600);
Hwjs_Init();
TFTLCD_Init();
FRONT_COLOR=YELLOW;
LCD_ShowFontHZ(10,20,"當前溫度為");
while(DS18B20_Init())
{
printf("DS18B20檢測失敗,清插好!\r\n");
}
printf("DS18B20檢測成功!\r\n");
while(1)
{
key=KEY_Scan(0);
switch(key)
{
case KEY_UP:
{
led2=0;
t+=1;
break;
}
case KEY_DOWN:
{
led2=1;
t-=1;
break;
}
case KEY_LEFT:
{
led3=0;
k+=1;
break;
}
case KEY_RIGHT:
{
led3=1;
k-=1;
break;
}
}
LCD_ShowFontHZ(10,60,"第一檔");
LCD_ShowChar(10+100,70,'<',16,0);
LCD_ShowNum(10+110,70,a,2,16);
LCD_ShowFontHZ(10,100,"第二檔");
LCD_ShowNum(10+100,110,a,2,16);
LCD_ShowChar(10+115,110,'-',16,0);
LCD_ShowNum(10+125,110,b,2,16);
LCD_ShowFontHZ(10,140,"第三檔");
LCD_ShowNum(10+100,150,b,2,16);
LCD_ShowChar(10+115,150,'-',16,0);
LCD_ShowNum(10+125,150,t,2,16);
LCD_ShowFontHZ(10,180,"第四檔");
LCD_ShowNum(10+100,190,t,2,16);
LCD_ShowChar(10+115,190,'-',16,0);
LCD_ShowNum(10+125,190,k,2,16);
LCD_ShowFontHZ(10,220,"第五檔");
LCD_ShowChar(10+100,230,'>',16,0);
LCD_ShowNum(10+110,230,k,2,16);
LCD_ShowFontHZ(10,260,"風力為");
i++;
if(i%5==0)
{
temper=DS18B20_GetTemperture();
if(temper<0)
{
printf("檢測的溫度為:-");
}
else
{
printf("檢測的溫度為:");
}
printf("%.2f\r\n",temper);
temper1=temper*100;
temper_buf[0]=temper1/10000+0x30;
temper_buf[1]=temper1%10000/1000+0x30;
temper_buf[2]=temper1%1000/100+0x30;
temper_buf[3]='.';
temper_buf[4]=temper1%100/10+0x30;
temper_buf[5]=temper1%10+0x30;
LCD_ShowString(10+20*8,30,tftlcd_data.width,tftlcd_data.height,16,(u8 *)temper_buf);
}
if(hw_jsbz==1)
{
if(hw_jsm==0x00FF629D)
{
if(temper>k)
{
LCD_ShowFontHZ(110,260,"第五檔");
low=0;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
}
if(temper<15)
{
LCD_ShowFontHZ(110,260,"第一檔");
low=400;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
if(temper>=15&temper<20)
{
LCD_ShowFontHZ(110,260,"第二檔");
low=300;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
if(temper>=20&temper<t)
{
LCD_ShowFontHZ(110,260,"第三檔");
low=200;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
if(temper>=t&temper<k)
{
LCD_ShowFontHZ(110,260,"第四檔");
low=100;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
}
else if(hw_jsm==0x00FF30CF)
{
LCD_ShowFontHZ(110,260,"第一檔");
low=400;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
else if(hw_jsm==0x00FF18E7)
{
LCD_ShowFontHZ(110,260,"第二檔");
low=300;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
else if(hw_jsm==0x00FF7A85)
{
LCD_ShowFontHZ(110,260,"第三檔");
low=200;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
else if(hw_jsm==0x00FF10EF)
{
LCD_ShowFontHZ(110,260,"第四檔");
low=100;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(low);
}
else if(hw_jsm==0x00FF38C7)
{
LCD_ShowFontHZ(110,260,"第五檔");
low=0;
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_ms(PWM);
}
else if(hw_jsm==0x00FFA25D)
{
LCD_ShowFontHZ(110,260,"關閉");
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
else if(hw_jsm==0x00FF22DD)
{
a+=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FFE01F)
{
a-=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FFC23D)
{
b+=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FF02FD)
{
b-=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FF906F)
{
t+=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FFA857)
{
t-=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FFB04F)
{
k+=1;
hw_jsm=0;
}
else if(hw_jsm==0x00FF9867)
{
k-=1;
hw_jsm=0;
}
}
if(i%20==0)
{
led1=!led1;
}
delay_us(5);
}
}
復制代碼
所有資料51hei提供下載:
智能遙控風扇.rar
(333.5 KB, 下載次數(shù): 69)
2018-8-2 23:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
color木棉
時間:
2019-1-4 17:58
很有幫助 最近正在進行這項設計,可以參考一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1