标题:
stm32智能遥控风扇程序源码
[打印本页]
作者:
LGX123
时间:
2018-8-2 21:06
标题:
stm32智能遥控风扇程序源码
本程序使用的是普中stm32开发板外加一个电机驱动模块,实习自动根据温度调节风扇转速, 和手动选择模式,温度的范围可通过按键和红外遥控进行调节。屏幕显示当前温度和模式。并且可通过串口查看温度
单片机源程序如下:
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "DS18B20.h"
#include "key.h"
#include "hwjs.h"
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
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); //中断优先级分组 分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, 下载次数: 69)
2018-8-2 23:18 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
color木棉
时间:
2019-1-4 17:58
很有帮助 最近正在进行这项设计,可以参考一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1