📄 settimer.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"
//功能:设置时间
//通过红外按键设置 年 月 日 时 分 秒
//设置了良好的人际对话界面
void set_timer1()
{
u8 key;
int sum;// 暂时存放数据
LCD_Clear(WHITE);
Remote_Rdy=0;//防止干扰
while(1)
{
LCD_ShowString(30,8,"Input your choice(1-6)");
LCD_ShowString(2,28,"1,revise year");
LCD_ShowString(2,48,"2,revise month");
LCD_ShowString(2,68,"3,revise date");
LCD_ShowString(2,88,"4,revise hour");
LCD_ShowString(2,108,"5,revise min");
LCD_ShowString(2,128,"6,revise sec");
if(Remote_Rdy)
{
key=Remote_Process();
if(key==104) //1 第一种方法
{ LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"Input year(1970-2099)");
Remote_Rdy=0;
get_remote(4);
sum=set_timer_temp[0]*1000+set_timer_temp[1]*100+set_timer_temp[2]*10+set_timer_temp[3];
LCD_ShowNum(60,168,sum,4,16);
// LCD_ShowString(60,188,"please sure!(ALIENK)");
// if(judge())
// {
if(RTC_Set((u16)sum,timer.w_month,timer.w_date,timer.hour,timer.min,timer.sec)==0)
{
LCD_ShowString(60,188,"finish year!");
LCD_ShowString(120,28,"Now:");
LCD_ShowNum(160,28,sum,4,16);
delay_1s(2);
// break;
}
else
{
LCD_ShowString(60,188, "ERROR!exit year !");
delay_1s(2);
// break;
}
// }
// else
// {
// LCD_ShowString(60,208,"exit year!");
// delay_1s(2);
// break;
// }
}
else if(key==152) //2这是第二种方法
{
LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"Input month(01-12)");
Remote_Rdy=0;
get_remote(2);
sum=set_timer_temp[0]*10+set_timer_temp[1];
LCD_ShowNum(60,168,sum,2,16);
// LCD_ShowString(60,188,"please sure!(ALIENK)");
// if(judge())
// {
if(sum<0||sum>12) {LCD_ShowString(60,188,"ERROR!exit month!");delay_1s(2);/*break;*/}
RTC_Set(timer.w_year,(u8)sum,timer.w_date,timer.hour,timer.min,timer.sec);
LCD_ShowString(60,188,"finish month!");
LCD_ShowString(120,48,"Now:");
LCD_ShowNum(160,48,sum,2,16);
delay_1s(2);
// break;
// }
// else
// {
// LCD_ShowString(60,208,"exit month!");
// delay_1s(2);
// break;
// }
}
else if(key==176) //3
{
LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"Input date!(01-31)");
Remote_Rdy=0;
get_remote(2);
sum=set_timer_temp[0]*10+set_timer_temp[1];
LCD_ShowNum(60,168,sum,2,16);
// LCD_ShowString(60,188,"please sure!(ALIENK)");
// if(judge())
// {
if(0<sum&&sum<32) //这里有点问题无正常识别特殊月份
{
RTC_Set(timer.w_year,timer.w_month,(u8)sum,timer.hour,timer.min,timer.sec);
LCD_ShowString(60,188,"finish date!");
LCD_ShowString(120,68,"Now:");
LCD_ShowNum(160,68,sum,2,16);
delay_1s(2);
// break;
}
else
{
LCD_ShowString(60,188, "ERROR! exit date!");
delay_1s(2);
// break;
}
// }
// else
// {
// LCD_ShowString(60,208,"exit date!");
// delay_1s(3);
// break;
// }
}
else if(key==48) //4
{
LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"Input hour!(00-24)");
Remote_Rdy=0;
get_remote(2);
sum=set_timer_temp[0]*10+set_timer_temp[1];
LCD_ShowNum(60,168,sum,2,16);
// LCD_ShowString(60,188,"please sure!(ALIENK)");
// if(judge())
// {
if(0<=sum&&sum<25) // if(0<=sum<25)这样设置系统会认为是或的关系而不是与的关系
{
RTC_Set(timer.w_year,timer.w_month,timer.w_date,(u8)sum,timer.min,timer.sec);
LCD_ShowString(60,188,"finish hour!");
LCD_ShowString(120,88,"Now:");
LCD_ShowNum(160,88,sum,2,16);
delay_1s(2);
// break;
}
else
{
LCD_ShowString(60,188, "ERROR! exit hour!");
delay_1s(2);
// break;
}
// }
// else
// {
// LCD_ShowString(60,208,"exit hour!");
// delay_1s(2);
// break;
// }
}
if(key==24) //5
{
LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"Input min!(00-59)");
Remote_Rdy=0;
get_remote(2);
sum=set_timer_temp[0]*10+set_timer_temp[1];
LCD_ShowNum(60,168,sum,2,16);
//LCD_ShowString(60,188,"please sure!(ALIENK)");
//if(judge())
// {
if( 0<=sum&&sum<60)
{
RTC_Set(timer.w_year,timer.w_month,timer.w_date,timer.hour,(u8)sum,timer.sec);
LCD_ShowString(60,188,"finish min!");
LCD_ShowString(120,108,"Now:");
LCD_ShowNum(160,108,sum,2,16);
delay_1s(2);
// break;
}
else
{
LCD_ShowString(60,188, "ERROR! exit min!");
delay_1s(2);
// break;
}
// }
// else
// {
// LCD_ShowString(60,208,"exit min!");
// delay_1s(2);
// break;
// }
}
else if(key==122) //6
{
LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"Input sec!(00-59)");
Remote_Rdy=0;
get_remote(2);
sum=set_timer_temp[0]*10+set_timer_temp[1];
LCD_ShowNum(60,168,sum,2,16);
// LCD_ShowString(60,188,"please sure!(ALIENK)");
// if(judge())
// {
if(0<=sum&&sum<60)
{
RTC_Set(timer.w_year,timer.w_month,timer.w_date,timer.hour,timer.min,(u8)sum);
LCD_ShowString(60,188,"finish sec!");
LCD_ShowString(120,128,"Now:");
LCD_ShowNum(160,128,sum,2,16);
delay_1s(2);
// break;
}
else
{
LCD_ShowString(60,188, "ERROR! exit sec!");
delay_1s(2);
// break;
}
// }
// else
// {
// LCD_ShowString(60,208,"exit sec!");
// delay_1s(2);
// break;
// }
}
else if(key==82)
{
LCD_Fill(0,148,240,320,WHITE);
LCD_ShowString(60,148,"exit operation!");
// LCD_ShowString(60,168,"operation again ?");
LCD_ShowString(60,168,"ALIENK(yes) else(no)");
if(judge()==1) { LCD_Clear(WHITE); break;}
LCD_Clear(WHITE);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -