?? time.c
字號:
#include "COMM.h"
//時間顯示部分
//正點原子@SCUT
//V1.1
const u8 *week_table[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
//根據(jù)當(dāng)前的日期,更新日歷表.
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); //顯示農(nóng)歷
//顯示陽歷年月日
POINT_COLOR=BRED;
TFT_ShowNum(5,193,(timer.w_year/100)%100,2,16,0);//顯示年 20/19
TFT_ShowNum(21,193,timer.w_year%100,2,16,0);//顯示年
TFT_ShowString(37,193,"-"); //"-"
TFT_ShowNum(45,193,timer.w_month,2,16,0);//顯示月
TFT_ShowString(61,193,"-"); //"-"
TFT_ShowNum(69,193,timer.w_date,2,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); //顯示周幾?
//得到節(jié)氣
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); //顯示節(jié)氣
}
//時間顯示模式
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); //顯示農(nóng)歷
delay_ms(1100);//等待1.1s
BACK_COLOR= BLACK;
TFT_CLEAR(BLACK);//清黑屏
Date_Refresh(); //加載日歷
tempdate=timer.w_date;//天數(shù)暫存器
Pen_Point.Key_Sta=Key_Up; //釋放顯示期間的觸發(fā)
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; //釋放顯示期間的觸發(fā)
}
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;//啟動單次規(guī)則轉(zhuǎn)換 通道16(溫度傳感器)
if(t%6==0)//等待五秒鐘
{
temperate=get1820data();//得到溫度
if(temperate<0)//溫度為負數(shù)的時候,紅色顯示
{
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);//顯示小數(shù)
TFT_ShowBigChar(210,184,'C'); //"/"
if(t>0)t=0;
}
if(timer.w_date!=tempdate)Date_Refresh();//天數(shù)變化了,更新日歷.
t++;
}
};
while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步
RTC->CRH&=~(0X01); //關(guān)閉秒中斷
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
TFT_CLEAR(WHITE);//清黑屏
POINT_COLOR=BLUE;
BACK_COLOR=WHITE ;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -