77范文网 - 专业文章范例文档资料分享平台

电子万年历代码(2)

来源:网络收集 时间:2019-01-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

\日\一\二\三\四\五\六\ }; Day = Key - Calendar_Date[0].Weekday + pCalendar->FirstWeekDay + 1; if(Day<1) // 检查3x号移动到第一行的情况 { Temp = 35 - Calendar_Date[0].Weekday + pCalendar->FirstWeekDay; // 最后一格的日期 if(Date_GetMonthDays(Calendar_Date[0].Year, Calendar_Date[0].Month)>Temp) Day = Key + Temp + 1; } if(Day<1 || Day>Date_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[(unsigned char)(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<1000000; i++); while(1) { Touch_Get(&x, &y); if(x!=-1) break; } }

//============================================================= //语法格式:void Calendar_Interface(CALENDAR *pCalendar) //实现功能:月历界面

//参数: pCalendar: 月历配置结构体 //返回值: 无

//============================================================= void Calendar_Interface(CALENDAR *pCalendar) { extern INT16 gFrameType; CLOCK Clock; INT16 Year, Month, x, y, Key; gFrameType = 1; Clock_Get(&Clock); Year = Clock.Year; Month = Clock.Mon; Calendar_Show(pCalendar, Year, Month); while(1) { Touch_Get(&x, &y); if(x!=-1) { Key = Calendar_GetKey(x, y); switch(Key)

}

{ case -1: break; case 100: // 上年 if(Year>1901) Year -= 1; break; case 101: // 下年 if(Year<2100) Year += 1; break; case 102: // 上月 Month -= 1; if(Month==0) { Month = 12; Year -= 1; if(Year < 1901) { Year = 1901; Month = 1; } } break; case 103: // 下月 Month += 1; if(Month==13) { Month = 1; Year += 1; if(Year > 2100) { Year = 2100; Month = 12; } } break; case 104: // 返回 return; default: Calendar_ShowDay(pCalendar, Key); break; }

if(Key!=-1) Calendar_Show(pCalendar, Year, Month);

} }

……………………………………………………………………………………………………………………….闹铃部分。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 //====================================================== // 文件名称: Clock.c // 功能描述: 计时模块,使用1Hz RTC中断 // 维护记录: 2006-08-30 v1.0

//====================================================== #include \#include \#include \

#include \

CLOCK Clock = {2007, 6, 1, 0, 0, 0}; // 时钟初始值2007年6月1日0点0分

const unsigned int Month_Day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每月包含的天数

//============================================================= // 语法格式: void Clock_Init(void); // 实现功能: 开始计时 // 参数: 无 // 返回值: 无

//============================================================= void Clock_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; // 定时0.25 *P_INT_MASK_CTRL1 &= ~C_INT_TIMER_DIS; // 使能Timer中断 }

//============================================================= // 语法格式: void Clock_ISR(void); // 实现功能: 计时模块的中断服务程序,应在RTC中断中调用 // 参数: 无 // 返回值: 无

//============================================================= void Clock_ISR() { static int Quarter = 0; if(*P_TIMER0_MODE_CTRL & C_TIMER_INT_FLAG) // 0.25秒中断 { *P_TIMER0_MODE_CTRL |= C_TIMER_INT_FLAG; Quarter += 1; if(Quarter<4) return; Quarter = 0; Clock.Sec += 1; if(Clock.Sec==60) { Clock.Sec = 0; Clock.Min += 1; if(Clock.Min==60) { Clock.Min = 0; Clock.Hour+=1; if(Clock.Hour==24) { Clock.Hour = 0; Clock.Day += 1; if(Clock.Day > Month_Day[Clock.Mon-1]) { if(Clock.Mon!=2 // 如果:不是2月 || Clock.Day>29 // 已处理闰年问题 || (Clock.Year&0x03)!=0 // 不是闰年 || (Clock.Year0==0 && Clock.Year@0!=0) ) { Clock.Day = 1; Clock.Mon += 1; if(Clock.Mon > 12) // 处理月进位 { Clock.Mon = 1; Clock.Year += 1;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库电子万年历代码(2)在线全文阅读。

电子万年历代码(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/407496.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: