📄 time.c
字号:
#include "COMM.h"
//时间显示部分的GUI
const u8 *week_table[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
//根据当前的日期,更新日历表.
void Date_Refresh(void)
{
u8 str[15]; //暂存
u8 weekn; //周寄存
//从阳历,得到阴历日期
POINT_COLOR=GREEN;
GetChinaCalendarStr(timer.w_year,timer.w_month,timer.w_date,str);
weekn=strlen((const char *)str);//得到字符串长度
Show_Str(120-weekn*4,60,str,0x01); //显示农历
//显示阳历年月日
POINT_COLOR=BRED;
TFT_ShowNum(5,193,(timer.w_year/100)%100,16,0);//显示年 20/19
TFT_ShowNum(21,193,timer.w_year%100,16,0);//显示年
TFT_ShowString(37,193,"-"); //"-"
TFT_ShowNum(45,193,timer.w_month,16,0);//显示月
TFT_ShowString(61,193,"-"); //"-"
TFT_ShowNum(69,193,timer.w_date,16,0);//显示日
//显示周几?
POINT_COLOR=RED;
GetWeek(timer.w_year,timer.w_month,timer.w_date,&weekn);//得到星期
Show_Str(21,218,(u8 *)week_table[weekn],0x01); //显示周几?
//得到节气
POINT_COLOR=GRED;
GetJieQiStr(timer.w_year,timer.w_month,timer.w_date,str);
weekn=strlen((const char *)str);//得到字符串长度
Show_Str(120-weekn*4,268,str,0x01); //显示节气
}
//时间显示模式
void Time_Viewer(void)
{
u8 key;
u8 second;
short temperate=0;//温度值
u8 t=0;
u8 tempdate;
//u8 JQdate;
while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步
RTC->CRH|=0X01; //允许秒中断
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
TFT_CLEAR(BLACK);//清黑屏
second=timer.sec;//得到此刻的秒钟
POINT_COLOR=GBLUE;
Show_Str(48,60,"正在加载,请稍候...",0x01); //显示农历
delay_ms(1100);//等待1.1s
BACK_COLOR= BLACK;
TFT_CLEAR(BLACK);//清黑屏
Date_Refresh(); //加载日历
tempdate=timer.w_date;//天数暂存器
Pen_Point.Key_Sta=Key_Up; //释放显示期间的触发
while(1)
{
if(Pen_Point.Key_Sta==Key_Down||NPEN)key=Touch_Key_Pro(2);//得到了按键值
if(key)
{
if(key==MOVE_LEFT)break;//退出时钟模式
key=0;
Pen_Point.Key_Sta=Key_Up; //释放显示期间的触发
}
if(second!=timer.sec) //秒钟改变了
{
second=timer.sec;
//显示大体的时钟
POINT_COLOR=GBLUE;
TFT_ShowBigNum(0,100,timer.hour);//显示时
TFT_ShowBigChar(60,100,':'); //"/"
TFT_ShowBigNum(90,100,timer.min);//显示分
TFT_ShowBigChar(150,100,':'); //"/"
TFT_ShowBigNum(180,100,timer.sec);//显示秒
if(t==1)ADC1->CR2|=1<<22;//启动单次规则转换 通道16(温度传感器)
if(t%6==0)//等待五秒钟
{
temperate=get1820data();//得到温度
if(temperate<0)//温度为负数的时候,红色显示
{
POINT_COLOR=RED;
temperate=-temperate;//改为正温度
}
else POINT_COLOR=BRRED; //正常为棕红色字体显示
TFT_ShowBigNum(90,184,temperate/10);//XX
TFT_ShowBigChar(150,184,'.'); //"."
TFT_ShowBigChar(180,184,temperate%10);//显示小数
TFT_ShowBigChar(210,184,'C'); //"/"
if(t>0)t=0;
}
if(timer.w_date!=tempdate)Date_Refresh();//天数变化了,更新日历.
t++;
}
};
while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步
RTC->CRH&=~(0X01); //关闭秒中断
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
TFT_CLEAR(WHITE);//清黑屏
POINT_COLOR=BLUE;
BACK_COLOR=WHITE ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -