电子万年历代码.docx

上传人:b****6 文档编号:16712271 上传时间:2023-07-16 格式:DOCX 页数:14 大小:22.26KB
下载 相关 举报
电子万年历代码.docx_第1页
第1页 / 共14页
电子万年历代码.docx_第2页
第2页 / 共14页
电子万年历代码.docx_第3页
第3页 / 共14页
电子万年历代码.docx_第4页
第4页 / 共14页
电子万年历代码.docx_第5页
第5页 / 共14页
电子万年历代码.docx_第6页
第6页 / 共14页
电子万年历代码.docx_第7页
第7页 / 共14页
电子万年历代码.docx_第8页
第8页 / 共14页
电子万年历代码.docx_第9页
第9页 / 共14页
电子万年历代码.docx_第10页
第10页 / 共14页
电子万年历代码.docx_第11页
第11页 / 共14页
电子万年历代码.docx_第12页
第12页 / 共14页
电子万年历代码.docx_第13页
第13页 / 共14页
电子万年历代码.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子万年历代码.docx

《电子万年历代码.docx》由会员分享,可在线阅读,更多相关《电子万年历代码.docx(14页珍藏版)》请在冰点文库上搜索。

电子万年历代码.docx

电子万年历代码

电子万年历代码

      //====================================================================================  //文件名:

Calendar_//功能描述:

月历界面  //维护记录:

2007年6月17日  //====================================================================================  #include\#include\  DATECalendar_Date[31];CALENDAR*pCalendar;  //=============================================================//语法格式:

INT8Calendar_Month(INT16Year,INT16Month)//实现功能:

对指定月中的每天进行计算,填充Calendar_Date数组//参数:

Year:

年//Month:

月//返回值:

无  //=============================================================INT8Calendar_Month(INT16Year,INT16Month){INT8Ret;INT16i;  Ret=Date_GetMonthDays(Year,Month);for(i=1;i  //=============================================================  //语法格式:

voidCalendar_Show(CALENDAR*pCalendarWindow,INT16Year,INT16Month)//实现功能:

显示月历  //参数:

pCalendarWindow:

月历配置结构体//Year:

  年//Month:

  月//返回值:

无  //=============================================================voidCalendar_Show(CALENDAR*pCalendarWindow,INT16Year,INT16Month)  {INT16Tempx,Tempy,TempColor,i;INT8Days;INT8TempStr[20];STR_WINDOWwCalendar;STR_FONTFontCn12={12,12,RES_HZK12};STR_FONTFontAsc24={12,24,RES_ASC24};CLOCKNow;INT8*T_WeekdayStr={\日\一\二\三\四\五\六\};  pCalendar=pCalendarWindow;Days=Calendar_Month(Year,Month);  TFT_CreateWindow(&wCalendar,0,0,319,239,0);TFT_LoadAsciiFont(&wCalendar,&FontAsc24);TFT_LoadChineseFont(&wCalendar,&FontCn12);TFT_PutBitMap(&wCalendar,0,0,pCalendar->BGImage);//背景图片TFT_SetChineseFont(&wCalendar,0);  //题头TFT_SetAsciiFont(&wCalendar,0);TFT_SetColor(&wCalendar,pCalendar->HeadColor);TFT_SetBGColor(&wCalendar,0);TFT_SetTextPos(&wCalendar,20,0);TFT_Print(&wCalendar,\年%d月\TFT_SetTextPos(&wCalendar,120,0);TFT_Print(&wCalendar,\农历%s年\Calendar_Date[0].GanZhiYearStr,Calendar_Date[0].AnimalStr);  TFT_SetColor(&wCalendar,pCalendar->TableHeadColor);//星期for(i=0;iFirstWeekDay+i)%7)*40+12;TFT_SetTextPos(&wCalendar,Tempx,24);TFT_Print(&wCalendar,\}  Tempy=41;TFT_SetAsciiFont(&wCalendar,1);TFT_SetChineseFont(&wCalendar,1);for(i=0;i  Clock_Get(&Now);if(Year==&&Month==&&i==)//今日{  Tempx=((7-pCalendar->FirstWeekDay+Calendar_Date[i].Weekday)%7)*40+1;  TFT_SetColor(&wCalendar,pCalendar->TodayColor);  TFT_Rectangle(&wCalendar,Tempx,Tempy,Tempx+38,Tempy+38,PAINT_SOLID);}TempColor=pCalendar->CommonColor;if(Calendar_Date[i].Weekday==0||Calendar_Date[i].Weekday==6)  TempColor=pCalendar->WeekendColor;if((Month==1&&i==0)  //元旦、五一、十一、春节  ||(Month==5&&i==0)  ||(Month==10&&i==0)  ||(Calendar_Date[i].LunarMonth==1&&Calendar_Date[i].LunarDay==1)){  TempColor=pCalendar->WeekendColor;}  if(iFirstWeekDay+Calendar_Date[i].Weekday)%7)*40+14;else  //两位数  Tempx=((7-pCalendar->FirstWeekDay+Calendar_Date[i].Weekday)%7)*40+8;TFT_SetTextPos(&wCalendar,Tempx,Tempy);  TFT_SetColor(&wCalendar,TempColor);TFT_Print(&wCalendar,\  TempColor=pCalendar->LunarColor;if((Calendar_Date[i].Fu&0x00FF)==1)  //伏{  strcpy(TempStr,Calendar_Date[i].FuStr);  TempStr[4]=‘\\0’;  TempColor=pCalendar->SpecialColor;}if((Calendar_Date[i].Jiu&0x00FF)==1)  //九{  strcpy(TempStr,Calendar_Date[i].JiuStr);  TempStr[4]=‘\\0’;  TempColor=pCalendar->SpecialColor;}if(Calendar_Date[i].SolarTerm!

=-1)  //节气{  TempColor=pCalendar->SpecialColor;  strcpy(TempStr,Calendar_Date[i].SolarTermStr);}if(Calendar_Date[i].LunarFestivalStr[0]!

=‘\\0’)//农历节日{  TempColor=pCalendar->SpecialColor;  strcpy(TempStr,Calendar_Date[i].LunarFestivalStr);}if(Calendar_Date[i].FestivalStr[0]!

=‘\\0’)//公历节日{  TempColor=pCalendar->SpecialColor;  strcpy(TempStr,Calendar_Date[i].FestivalStr);}  if(TempColor==pCalendar->LunarColor)  //普通农历{  if(Calendar_Date[i].LunarDay==1)  //初一显示月号  {  strcpy(TempStr,Calendar_Date[i].LunarMonthStr);  if(strlen(TempStr)FirstWeekDay+Calendar_Date[i].Weekday)%7*40+8;else  //三个字  Tempx=(7-pCalendar->FirstWeekDay+Calendar_Date[i].Weekday)%7*40+2;  TFT_SetColor(&wCalendar,TempColor);TFT_SetTextPos(&wCalendar,Tempx,Tempy+24);TFT_Print(&wCalendar,TempStr);  if(Calendar_Date[i].Weekday==(pCalendar->FirstWeekDay+6)%7)//换行{  Tempy+=40;  if(Tempy>=240)Tempy=41;}}}  //=============================================================//语法格式:

INT16Calendar_GetKey(INT16x,INT16y)  //实现功能:

判断坐标是否落在功能按钮上//参数:

x:

x坐标//y:

y坐标//返回值:

键值  //=============================================================INT16Calendar_GetKey(INT16x,INT16y){INT16Tempx,Tempy;INT16Ret=-1;  Tempx=x;Tempy=y;if(Tempx>=0&&Tempx=40&&Tempy=283&&Tempx=4&&Tempy=283&&Tempx=44&&Tempy=283&&Tempx=91&&Tempy=283&&Tempx=131&&Tempy=283&&Tempx=196&&Tempy  //=============================================================//语法格式:

INT16Calendar_GetKey(INT16x,INT16y)//实现功能:

判断坐标是否落在功能按钮上//参数:

x:

x坐标//y:

y坐标//返回值:

键值  //=============================================================voidCalendar_ShowDay(CALENDAR*pCalendar,INT16Key){STR_WINDOWwDay,wFestival;INT16x,y,Day,Temp;INT32i;DATE*pDate;INT8*T_WeekdayStr={

  

      \日\一\二\三\四\五\六\};  Day=Key-Calendar_Date[0].Weekday+pCalendar->FirstWeekDay+1;if(DayFirstWeekDay;//最后一格的日期if(Date_GetMonthDays(Calendar_Date[0].Year,Calendar_Date[0].Month)>Temp)  Day=Key+Temp+1;}if(DayDate_GetMonthDays(Calendar_Date[0].Year,Calendar_Date[0].Month))return;  pDate=&Calendar_Date[Day-1];TFT_CreateWindow(&wDay,20,60,259,219,RGB(0xE0,0xE0,0xE0));TFT_SetColor(&wDay,RGB(0xF0,0x30,0x00));TFT_Rectangle(&wDay,0,0,239,159,PAINT_HOLLOW);TFT_SetColor(&wDay,COLOR_MAGENTA);TFT_SetTextPos(&wDay,10,10);TFT_Print(&wDay,\年%d月%d日星期%s\pDate->Year,pDate->Month,pDate->Day,T_WeekdayStr[(unsignedchar)(pDate->Weekday)]);  TFT_SetTextPos(&wDay,10,34);TFT_SetColor(&wDay,RGB(0x20,0x20,0x80));TFT_Print(&wDay,\星座:

%s座\TFT_SetTextPos(&wDay,10,54);TFT_SetColor(&wDay,RGB(0x20,0x20,0x80));TFT_Print(&wDay,\生肖:

%s\TFT_SetTextPos(&wDay,10,74);TFT_SetColor(&wDay,RGB(0x20,0x20,0x80));TFT_Print(&wDay,\农历:

%s月%s\TFT_SetTextPos(&wDay,10,94);TFT_SetColor(&wDay,RGB(0x20,0x20,0x80));TFT_Print(&wDay,\干支:

%s年%s月%s日\pDate->GanZhiYearStr,pDate->GanZhiMonthStr,pDate->GanZhiDayStr);  TFT_CreateWindow(&wFestival,30,180,249,209,RGB(0xE0,0xE0,0xE0));TFT_SetTextPos(&wFestival,0,0);TFT_SetColor(&wFestival,COLOR_RED);  if(pDate->FestivalStr[0]!

=‘\\0’)TFT_Print(&wFestival,\\if(pDate->LunarFestivalStr[0]!

=‘\\0’)TFT_Print(&wFestival,\\if(pDate->SolarTerm!

=-1)TFT_Print(&wFestival,\\if(pDate->Fu!

=0)TFT_Print(&wFestival,\\if(pDate->Jiu!

=0)TFT_Print(&wFestival,\\  for(i=0;i  //=============================================================//语法格式:

voidCalendar_Interface(CALENDAR*pCalendar)//实现功能:

月历界面  //参数:

pCalendar:

月历配置结构体//返回值:

无  //=============================================================voidCalendar_Interface(CALENDAR*pCalendar){externINT16gFrameType;CLOCKClock;INT16Year,Month,x,y,Key;  gFrameType=1;Clock_Get(&Clock);Year=;Month=;Calendar_Show(pCalendar,Year,Month);while

(1){  Touch_Get(&x,&y);  if(x!

=-1)  {  Key=Calendar_GetKey(x,y);  switch(Key)                    }  {case-1:

break;case100:

  //上年if(Year>1901)Year-=1;break;case101:

  //下年if(Year2100)  {  Year=2100;  Month=12;  }}break;case104:

  //返回return;default:

Calendar_ShowDay(pCalendar,Key);break;}  if(Key!

=-1)Calendar_Show(pCalendar,Year,Month);  }}    ……………………………………………………………………………………………………………………….闹铃部分。

//======================================================//文件名称:

//功能描述:

计时模块,使用1HzRTC中断//维护记录:

2006-08-30  //======================================================#include\#include\#include\  #include\  CLOCKClock={2007,6,1,0,0,0};  //时钟初始值2007年6月1日0点0分  constunsignedintMonth_Day[12]={31,28,31,30,31,30,31,31,30,31,30,31};  //每月包含的天数  //=============================================================//语法格式:

voidClock_Init(void);//实现功能:

开始计时//参数:

无//返回值:

无  //=============================================================voidClock_Init(){*P_TIMER_CLK_SEL&=~0x00FF;*P_TIMER_CLK_SEL|=199;*P_TIMER_CLK_SEL&=~C_TIMER0_CLK_27M;  *P_TIMER0_CLK_CONF=0x0000;*P_TIMER0_CLK_CONF=C_TIMER_CLK_EN|C_TIMER_RST_DIS;*P_TIMER0_MODE_CTRL=C_TIMER_CTRL_EN|C_TIMER_INT_EN|C_TIMER_INT_FLAG;*P_TIMER0_CCP_CTRL=0x00000000;*P_TIMER0_PRELOAD_DATA=65536-(27000000/200)/4;//定时*P_INT_MASK_CTRL1&=~C_INT_TIMER_DIS;  //使能Timer中断}  //=============================================================//语法格式:

voidClock_ISR(void);//实现功能:

计时模块的中断服务程序,应在RTC中断中调用//参数:

无//返回值:

无  //=============================================================voidClock_ISR(){staticintQuarter=0;if(*P_TIMER0_MODE_CTRL&C_TIMER_INT_FLAG)//秒中断{*P_TIMER0_MODE_CTRL|=C_TIMER_INT_FLAG;Quarter+=1;if(QuarterMonth_Day)  {  if(!

=2  //如果:

不是2月  ||>29  //已处理闰年问题  ||(&0x03)!

=0//不是闰年  ||(0==0&&@0!

=0)  )  {  =1;  +=1;  if(>12)  //处理月进位  {  =1;  +=1;

  

      }  }  }  }  }}Clock_OnSecond();}}  //=============================================================//语法格式:

voidClock_Get(CLOCK*pClock);//实现功能:

查询当前日期时间//参数:

存储时间的结构体地址//返回值:

无  //=============================================================voidClock_Get(CLOCK*pClock){pClock->Sec=;pClock->Min=;pClock->Hour=;pClock->Day=;pClock->Mon=;pClock->Year=;}  //=============================================================//语法格式:

voidClock_Set(CLOCK*pClock);//实现功能:

设置当前日期时间//参数:

存储时间的结构体地址//返回值:

无  //=============================================================voidClock_Set(CLOCK*pClock){*P_RTC_MODE_CTRL=0x0000;  //停止RTC*P_RTC_TIME_SEC==pClock->Sec;*P_RTC_TIME_MIN==pClock->Min;*P_RTC_TIME_HOUR==pClock->Hour;=pClock->D

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2