📄 operation.c
字号:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "exti.h"
#include "timer.h"
#include "lcd.h"
#include "wkup.h"
#include "24cxx.h"
#include "flash.h"
#include "remote.h"
#include "ds18b20.h"
#include "switch.h"
#include "operation.h"
//#include"settimer.h"
//#include"temperature.h"
int Start=0;
short t[10];
void pause_temp()
{
u8 key;
Remote_Rdy=0;
LCD_Fill(0,100,240,320,WHITE);
SWITCH1=0;
while(1)
{
if(Remote_Rdy)
{
key=Remote_Process();
if(key==24)
{
LCD_Fill(0,160,240,320,WHITE);
LCD_ShowString(80,160,"starting");
SWITCH1=1;
delay_1s(2);
break;
}
else
{
LCD_ShowString(60,180,"unuseful operation!");
delay_1s(2);
LCD_Fill(0,180,240,320,WHITE);
}
}
else
LCD_ShowString(80,160,"Pausing");
}
}
//开始加温
void start_temp()
{
// LCD_Fill(0,100,240,320,WHITE);//加上总闪屏,原因参数不对
SWITCH1=1;
Start=1;
LCD_ShowString(80,300,"starting");
delay_ms(200);
// delay_ms(100);
}
//停止加温
void stop_temp()
{
// LCD_Fill(0,300,240,320,WHITE);
SWITCH1=0;
LCD_ShowString(80,300,"stopping");
delay_ms(200);
//delay_ms(100);
}
//高温警告
void warn_temp()
{
//LCD_Fill(0,100,240,320,WHITE);
WARN=1;
LCD_ShowString(80,300,"WARNING ");
// delay_ms(100);
}
void temp_filter_init() // temp_filter_init()定义为被系统认为与temp_filter()重复
{
int i;
delay_ms(500);
for(i=0;i<10;i++) //滤波初始化
{
t[i]=DS18B20_Get_Temp();
}
}
//完成滤波功能
//主要利用限幅减少偶然误差,平均值减少系统误差
short temp_filter()
{
int i;
long sum=0;
for(i=0;i<10;)
{
t[i]=DS18B20_Get_Temp();
if(i==0&&(t[0]+N>t[9])&&(t[0]-N<t[9]))
{
sum+=t[i];
i++;
}
if((i!=0)&&(t[i]+N>t[i-1])&&(t[i]-N<t[i-1])) // 在+-5度认为是正常范围
{
sum+=t[i];
i++;
}
}
return (sum/10);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -