📄 rtc.c
字号:
goto RTC_Set_Updata;
}
////
if(RTC_Down_Key_Pressed()) // Down Key.
{
RTC_Set_Dec(&RTCTime,&i);
goto RTC_Set_Updata;
}
////
if(RTC_Back_Key_Pressed()) // Back Key.
{
i--;
goto RTC_Set_Updata;
}
////
if(RTC_Next_Key_Pressed()) // Next Key.
{
i++;
goto RTC_Set_Updata;
}
////
if(RTC_Num_Key_Pressed()) // Number Key.
{
RTC_Set_Num(&RTCTime,&i,ASC_TO_HEX(Uart_Key));
i++;
goto RTC_Set_Updata;
}
////
if(RTC_Cancel_Key_Pressed()) return;
if(RTC_Enter_Key_Pressed()) goto RTC_Set_Enter;
////
goto RTC_Set_Wait;
////////
RTC_Set_Updata:
Updata_RTC_Date_Time_Setting(&RTCTime,&i);
////
RTC_Set_Wait:
TS_Free();
Key_Free();
////
while(1)
{
////
Uart_Key=GUI_DecNumberKeyBoard(20,LCD_YSIZE-72,LCD_XSIZE-20*2,64,0);
if(Uart_Key==0){
Uart_Key=Uart_GetKey(0);
}
if(Uart_Key!=0) break;
}
}
////////
///////
RTC_Set_Enter:
Uart_Key=0;
if(RTCTime.Year>2099) {i=Set_Year_H; goto RTC_Set_ST;}
if(RTCTime.Year<2000) {i=Set_Year_H; goto RTC_Set_ST;}
if(RTCTime.Month>12) {i=Set_Month_H; goto RTC_Set_ST;}
if(RTCTime.Month<=0) {i=Set_Month_H; goto RTC_Set_ST;}
if(RTCTime.Day>RTC_GetMonthDays(RTCTime.Year,RTCTime.Month)) {i=Set_Day_H; goto RTC_Set_ST;}
if(RTCTime.Day<=0) {i=Set_Day_H; goto RTC_Set_ST;}
if(RTCTime.Hour>23) {i=Set_Hour_H; goto RTC_Set_ST;}
if(RTCTime.Min>59) {i=Set_Min_H; goto RTC_Set_ST;}
if(RTCTime.Sec>59) {i=Set_Sec_H; goto RTC_Set_ST;}
////
RTC_SetTime(&RTCTime);
Delay_n15ms(250/15);
Key_Free();
TS_Free();
}
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
void RTC_ShowCalendar(int x,int y,int dx,int dy,int FontColor,int BkColor,struct RTC_TIME *time)
{
struct GUI_BUTTON TileBar[]={
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0, FONT(ASCII12x24,HZ16x16), "---"},
{ 0,0,0,0, 0,0,0, 0, 0, 0, 0,0, "--"},
};
////
struct GUI_BUTTON WeekBar[]={
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "SUN"},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "MON"},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "THU"},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "WED"},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "THU"},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "FRI"},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), "SAT"},
{ 0,0,0,0, 0,0,0, 0, 0, 0, 0, 0,"--"},
};
////
struct GUI_BUTTON DayBar[]={
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(28,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,00),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, RGB565(00,00,28),RGB_TRANS,RGB_TRANS, '0', BN_2D,UP, 0,FONT(ASCII8x16,HZ16x16), " "},
{ 0,0,0,0, 0,0,0, 0, 0, 0, 0, 0,"--"},
};
////
struct GUI_MATRIX_BN m_TileBar;
struct GUI_MATRIX_BN m_WeekBar;
struct GUI_MATRIX_BN m_DayBar;
////
int i,j,day_offset,days;
char TileStrBuf[256];
char DayStrBuf[42][8];
char *MonthName[13];
////
char *s_SUN[]={"SUN","日","???"};
char *s_MON[]={"MON","一","???"};
char *s_TUE[]={"TUE","二","???"};
char *s_WED[]={"WED","三","???"};
char *s_THU[]={"THU","四","???"};
char *s_FRI[]={"FRI","五","???"};
char *s_SAT[]={"SAT","六","???"};
char *s_Jan[]={"Jan","一月","???"};
char *s_Feb[]={"Feb","二月","???"};
char *s_Mar[]={"Mar","三月","???"};
char *s_Apr[]={"Apr","四月","???"};
char *s_May[]={"May","五月","???"};
char *s_Jun[]={"Jun","六月","???"};
char *s_Jul[]={"Jul","七月","???"};
char *s_Aug[]={"Aug","八月","???"};
char *s_Sep[]={"Sep","九月","???"};
char *s_Oct[]={"Oct","十月","???"};
char *s_Nov[]={"Nov","十一月","???"};
char *s_Dec[]={"Dec","十二月","???"};
////////
m_TileBar.x =x;
m_TileBar.y =y;
m_TileBar.dx =dx;
m_TileBar.dy =32;
m_TileBar.xQty =1;
m_TileBar.yQty =1;
m_TileBar.xSpace =0;
m_TileBar.ySpace =0;
m_TileBar.ActObj =-1;
m_TileBar.Enable =1;
m_TileBar.pBN =TileBar;
m_WeekBar.x =x;
m_WeekBar.y =y+32;
m_WeekBar.dx =dx;
m_WeekBar.dy =24;
m_WeekBar.xQty =7;
m_WeekBar.yQty =1;
m_WeekBar.xSpace =0;
m_WeekBar.ySpace =0;
m_WeekBar.ActObj =-1;
m_WeekBar.Enable =1;
m_WeekBar.pBN =WeekBar;
m_DayBar.x =x;
m_DayBar.y =y+32+24;
m_DayBar.dx =dx;
m_DayBar.dy =dy-32-24;
m_DayBar.xQty =7;
m_DayBar.yQty =6;
m_DayBar.xSpace =0;
m_DayBar.ySpace =0;
m_DayBar.ActObj =-1;
m_DayBar.Enable =1;
m_DayBar.pBN =DayBar;
////
GUI_SetButtonText(&m_WeekBar.pBN[0],(char*)GUI_Language(s_SUN));
GUI_SetButtonText(&m_WeekBar.pBN[1],(char*)GUI_Language(s_MON));
GUI_SetButtonText(&m_WeekBar.pBN[2],(char*)GUI_Language(s_TUE));
GUI_SetButtonText(&m_WeekBar.pBN[3],(char*)GUI_Language(s_WED));
GUI_SetButtonText(&m_WeekBar.pBN[4],(char*)GUI_Language(s_THU));
GUI_SetButtonText(&m_WeekBar.pBN[5],(char*)GUI_Language(s_FRI));
GUI_SetButtonText(&m_WeekBar.pBN[6],(char*)GUI_Language(s_SAT));
MonthName[1]=(char*)GUI_Language(s_Jan);
MonthName[2]=(char*)GUI_Language(s_Feb);
MonthName[3]=(char*)GUI_Language(s_Mar);
MonthName[4]=(char*)GUI_Language(s_Apr);
MonthName[5]=(char*)GUI_Language(s_May);
MonthName[6]=(char*)GUI_Language(s_Jun);
MonthName[7]=(char*)GUI_Language(s_Jul);
MonthName[8]=(char*)GUI_Language(s_Aug);
MonthName[9]=(char*)GUI_Language(s_Sep);
MonthName[10]=(char*)GUI_Language(s_Oct);
MonthName[11]=(char*)GUI_Language(s_Nov);
MonthName[12]=(char*)GUI_Language(s_Dec);
////
GUI_FillRectangle(x+1,y+1,dx-1,dy-1,BkColor);
GUI_Rectangle(x,y,dx,dy,RGB565(10,20,10));
GUI_TransFillRectangle(m_WeekBar.x+1,m_WeekBar.y-1,m_WeekBar.dx-2,2,RGB565(31,63,31));
GUI_StrPrintf(TileStrBuf,"%s - %04d",MonthName[time->Month],time->Year);
m_TileBar.pBN[0].Text=TileStrBuf;
days =RTC_GetMonthDays(time->Year,time->Month);
day_offset =RTC_GetWeek(time->Year,time->Month,1);
////
for(i=1;i<days+1;i++)
{
m_DayBar.pBN[day_offset].Text=&DayStrBuf[day_offset][0];
GUI_StrPrintf(m_DayBar.pBN[day_offset].Text,"%d",i);
////
if(i==time->Day)
{
m_DayBar.pBN[day_offset].BkColor =RGB565(0,56,0);
m_DayBar.ActObj =day_offset;
}
////
day_offset++;
}
////
GUI_PutMatrixButton(&m_TileBar);
GUI_PutMatrixButton(&m_WeekBar);
GUI_PutMatrixButton(&m_DayBar);
}
/*============================================================================*/
#include "Calendar_Icon.c"
#include "Calendar_SmallIcon.c"
int RTC_Calendar(void *pdata)
{
#define YEAR_INC USER_MSG+0
#define YEAR_DEC USER_MSG+1
#define MONTH_INC USER_MSG+2
#define MONTH_DEC USER_MSG+3
#define GOTO_TODAY USER_MSG+4
////
char *s_YearBack[]={"<- Year","<- 年","---"};
char *s_YearNext[]={"Year ->","年 ->","---"};
char *s_MonthBack[]={"<- Month","<- 月","---"};
char *s_MonthNext[]={"Month ->","月 ->","---"};
char *s_Exit[]={"Exit","退出","---"};
char *s_Today[]={"Today","今天","---"};
int wnd,i;
struct RTC_TIME time;
struct GUI_BUTTON button[]={
{ 0,0,0,0, RGB565(31,63,00),RGB565(10,20,10),RGB565(00,00,00), YEAR_DEC, BN_BRIGHT,UP, 0, FONT(ASCII8x16,HZ16x16), "<- Year"},
{ 0,0,0,0, RGB565(31,63,00),RGB565(10,20,10),RGB565(00,00,00), YEAR_INC, BN_BRIGHT,UP, 0, FONT(ASCII8x16,HZ16x16), "Year ->"},
{ 0,0,0,0, RGB565(31,63,00),RGB565(10,20,10),RGB565(00,00,00), MONTH_DEC, BN_BRIGHT,UP, 0, FONT(ASCII8x16,HZ16x16), "<- Month"},
{ 0,0,0,0, RGB565(31,63,00),RGB565(10,20,10),RGB565(00,00,00), MONTH_INC, BN_BRIGHT,UP, 0, FONT(ASCII8x16,HZ16x16), "Month ->"},
{ 0,0,0,0, RGB565(31,00,00),RGB565(10,20,10),RGB565(00,00,00), KEY_ID_ESC, BN_BRIGHT,UP, 0, FONT(ASCII8x16,HZ16x16), "Exit"},
{ 0,0,0,0, RGB565(00,63,00),RGB565(10,20,10),RGB565(00,00,00), GOTO_TODAY, BN_BRIGHT,UP, 0, FONT(ASCII8x16,HZ16x16), "Today"},
{ 0,0,0,0, 0,0,0, 0, 0, 0, 0, 0,"--"},
};
struct GUI_MATRIX_BN m_button;
////////
char *s_Name[]={"Calendar","日历","???"};
////////
if(pdata)
{
struct PGM_INFO *pInfo =pdata;
pInfo->Name =(char*)GUI_Language(s_Name);
pInfo->pIcon =(void*)Calendar_Icon;
pInfo->pSmallIcon =(void*)Calendar_SmallIcon;
pInfo->ExtraInfo ="Version:1.0";
return 1;
}
////////
GUI_MemdevEnable();
////
m_button.x =0;
m_button.y =LCD_YSIZE-80;
m_button.dx =LCD_XSIZE;
m_button.dy =72;
m_button.xQty =2;
m_button.yQty =3;
m_button.xSpace =32;
m_button.ySpace =4;
m_button.ActObj =0;
m_button.Enable =1;
m_button.pBN =button;
////
RTC_GetTime(&time);
GUI_SetButtonText(&m_button.pBN[0],(char*)GUI_Language(s_YearBack));
GUI_SetButtonText(&m_button.pBN[1],(char*)GUI_Language(s_YearNext));
GUI_SetButtonText(&m_button.pBN[2],(char*)GUI_Language(s_MonthBack));
GUI_SetButtonText(&m_button.pBN[3],(char*)GUI_Language(s_MonthNext));
GUI_SetButtonText(&m_button.pBN[4],(char*)GUI_Language(s_Exit));
GUI_SetButtonText(&m_button.pBN[5],(char*)GUI_Language(s_Today));
TS_Free();
Key_Free();
while(1)
{
int a;
/////
st:
GUI_Image(0,0,GUI_GetWallpaper());
GUI_SetTrans(128);
RTC_ShowCalendar(20,20,LCD_XSIZE-20*2,160,RGB565(00,00,00),RGB565(24,48,24),&time);
GUI_PutMatrixButton(&m_button);
GUI_SetTrans(0);
RTC_ShowCalendar(20,20,LCD_XSIZE-20*2,160,RGB565(00,00,00),RGB_TRANS,&time);
GUI_ShowMatrixButtonText(&m_button);
GUI_DisplayUpdate(0,0,LCD_XSIZE,LCD_YSIZE);
TS_Free();
Key_Free();
////
while(1)
{
int val;
////
val=GUI_GetMatrixButton(&m_button);
if(val)
{
GUI_DisplayUpdate(m_button.x,m_button.y,m_button.dx,m_button.dx);
while(pGUI_TS->IsDown());
GUI_FreeButton(m_button.pBN);
GUI_PutButton(m_button.pBN);
GUI_DisplayUpdate(m_button.x,m_button.y,m_button.dx,m_button.dx);
////
switch(val)
{
case KEY_ID_ESC:
goto ret;
break;
////
case YEAR_DEC:
if(time.Year<=2000)
{
time.Year=2099;
}
else
{
time.Year--;
}
goto st;
////
case YEAR_INC:
if(time.Year>=2099)
{
time.Year=2000;
}
else
{
time.Year++;
}
goto st;
////
case MONTH_DEC:
if(time.Month<=1)
{
time.Month=12;
}
else
{
time.Month--;
}
goto st;
////
case MONTH_INC:
if(time.Month>=12)
{
time.Month=1;
}
else
{
time.Month++;
}
goto st;
////
case GOTO_TODAY:
RTC_GetTime(&time);
goto st;
////
}
////////
}
}
}
////////
ret:
GUI_SetTrans(0);
PWR_EnableBkLightAutoTurnoff();;
TS_Free();
Key_Free();
}
/*============================================================================*/
void RTC_Init(void)
{
RTC_DrvInit();
}
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -