📄 test.c
字号:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "timer.h"
#include "lcd.h"
#include "rtc.h"
#include "wkup.h"
#include "remote.h"
#include "ds18b20.h"
#include "switch.h"
#include"settimer.h"
#include"temperature.h"
#include"operation.h"
/*const u8 *COMPILED_DATE=__DATE__;//获得编译日期
const u8 *COMPILED_TIME=__TIME__;//获得编译时间 //这句话为什么不能使用呢????*/
/*int set_timer_temp[10];
int maxtemp=100,mintemp=0;
const u8* Week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; */
extern int maxtemp1; //
extern int mintemp1; //必须重新引用全局变量
extern int midtemp;
extern int Start;
extern int tempkeep;
extern short t[10];
int main(void)
{
u8 t=0;
short temp; //8位信号
u8 key;
u8 t1;//必须在前面定义,c语言的规则
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
RTC_Init();
SWITCH_Init();//继电器控制端口初始化
EXTIX_Init();//中断初始化
POINT_COLOR=RED;//设置字体为红色
Remote_Init(); //初始化红外接收
// POINT_COLOR=RED;//设置字体为红色
SWITCH1=0;
WARN=0;
while(DS18B20_Init())//初始化DS18B20,兼检测18B20
{
//显示字符串
//x,y:起点坐标
//*p:字符串起始地址
//用16字体
//void LCD_ShowString(u16 x,u16 y,const u8 *p)
LCD_ShowString(0,130,"DS18B20 Check Failed!");
delay_ms(500);
LCD_ShowString(10,130,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
temp_filter_init();
while(1)
{
/**********************温度显示部分************************/
// temp=DS18B20_Get_Temp();
temp=temp_filter();
if(temp<0)
{
temp=-temp;
//在指定位置显示一个字符
//x:0~234
//y:0~308
//num:要显示的字符:" "--->"~"
//size:字体大小 12/16
//mode:叠加方式(1)还是非叠加方式(0)
//在指定位置显示一个字符
//x:0~234
//y:0~308
//num:要显示的字符:" "--->"~"
//size:字体大小 12/16
//mode:叠加方式(1)还是非叠加方式(0)
//void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
LCD_ShowChar(156,8,'-',16,0);//显示负号
}
//显示2个数字
//x,y :起点坐标
//len :数字的位数
//size:字体大小 16代表16*8 12代表12*6
//color:颜色
//num:数值(0~4294967295);
//void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
LCD_ShowString(60,8,"Temperature:");
LCD_ShowNum(164,8,temp/10,2,16);//显示温度值
LCD_ShowChar(180,8,'.',16,0);//显示负号
LCD_ShowNum(188,8,temp%10,1,16);//显示温度值
//printf("温度:%d %d",temp/10,temp%10);
LCD_ShowChar(204,8,'C',16,0);//显示摄氏度
//t2=temp/10;
//delay_ms(10);
// LCD_ShowNum(0,300,temp,8,16);//显示温度值
if(Start==1) //程序运行时进入此操作
{
if(temp>=(maxtemp1*10))
{
stop_temp();
WARN=0;//停止时蜂鸣器停止
}
if(temp<(maxtemp1*10)&&temp>=(maxtemp1*10-50))
{
warn_temp();
}
// if(temp<(maxtemp1*10-50)&&temp>(mintemp1*10))
if(tempkeep==1)
{
if(temp>=(midtemp*10+50))
{
stop_temp();
WARN=0;//停止时蜂鸣器停止
}
if(temp<=(midtemp*10-50))
{
start_temp();
}
}
if(temp<=(mintemp1*10))
{
start_temp();
}
}
/************************************红外线遥控部分************************/
if(Remote_Rdy)
{
key=Remote_Process();
switch(key)
{
case 56:
LCD_ShowString(86,150, "8 ");
// printf("8 \n\n");
break;
case 104:
// LCD_ShowString(86,150, "1 ");
// printf("1\n\n");
start_temp();
break;
case 152:
//LCD_ShowString(86,150, "2 ");
// printf("2 \n\n");
set_temperature();
LCD_Clear(WHITE);
break;
case 176:
// LCD_ShowString(86,150, "3 ");
// printf("3 \n\n");
set_temper_time();
LCD_Clear(WHITE);
break;
case 48:
// LCD_ShowString(86,150, "4 ");
set_timer1();
LCD_Clear(WHITE);
break;
case 24:
// LCD_ShowString(86,150, "5 ");
// printf("5 \n\n");
// LCD_ShowString(60,248,"unuseful operation!");
pause_temp();
LCD_Clear(WHITE);
break;
case 122:
// LCD_ShowString(86,150, "6 ");
LCD_Clear(WHITE);
LCD_ShowString(60,248,"Choose Standby?");
LCD_ShowString(60,268,"ALIENK(yes) else(no)");
if(judge()==1)
{
LCD_ShowString(60,288,"prepare for Standby");
delay_1s(5);
WARN=0;
SWITCH1=0;//关闭相应IO口
delay_ms(100);
Sys_Standby();
}
LCD_Clear(WHITE);
break;
case 16:
LCD_ShowString(86,150, "7 ");
// printf("7 \n\n");
temp_keeptimer();
break;
case 90:
LCD_ShowString(86,150, "9 ");
// printf("9 \n\n");
break;
case 66:
LCD_ShowString(86,150, "0 ");
// printf("0 \n\n");
break;
}
}
else delay_ms(2);
t1++;
if(t1==200)
{
t1=0;
LED0=!LED0;
}
/*************************时钟显示部分********************************/
if(t!=timer.sec)
{
t=timer.sec;
LCD_ShowNum(60,30,timer.w_year,4,16);
LCD_ShowNum(100,30,timer.w_month,2,16);
LCD_ShowNum(124,30,timer.w_date,2,16);
switch(timer.week)
{
case 0:
LCD_ShowString(60,48,"Sunday ");
break;
case 1:
LCD_ShowString(60,48,"Monday ");
break;
case 2:
LCD_ShowString(60,48,"Tuesday ");
break;
case 3:
LCD_ShowString(60,48,"Wednesday");
break;
case 4:
LCD_ShowString(60,48,"Thursday ");
break;
case 5:
LCD_ShowString(60,48,"Friday ");
break;
case 6:
LCD_ShowString(60,48,"Saturday ");
break;
}
LCD_ShowNum(60,66,timer.hour,2,16);
LCD_ShowNum(84,66,timer.min,2,16);
LCD_ShowNum(108,66,timer.sec,2,16);
// LED0=!LED0;
/***************菜单选项***************/
LCD_ShowString(0,100,"1,start");
LCD_ShowString(0,130,"2,set expected temperature");
LCD_ShowString(0,160,"3,set expected disinfect time");
LCD_ShowString(0,190,"4,resive present time");
LCD_ShowString(0,220,"5,pause");
LCD_ShowString(0,250,"6,Standby");
LCD_ShowString(0,280,"7,set keep time(origin:50C)");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -