当前位置:首页 > 基于嵌入式系统的LCD电子时钟设计
0x09374B,0x8497C1,0x049753,0x064B48,0x66A53C,0x0EA54F,0x06B244,0x4AB638,0x0AAE4C,0x092E42,/*2051-2060*/
0x3C9735,0x0C9649,0x7D4ABD,0x0D4A51,0x0DA545,0x55AABA,0x056A4E,0x0A6D43,0x452EB7,0x052D4B,/*2061-2070*/
0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,0x055A45,0x4A5D38,0x0A5B4C,0x052B42,0x3A93B6,/*2071-2080*/
0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,0x04B64E,0x0A5743,0x452738,0x0D264A,0x8E933E,/*2081-2090*/
0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,0x4A4EB9,0x0A4D4C,0x0D1541,0x2D92B5 /*2091-2099*/ };
int monthTotal[13] = {0,31,59,90,120,151,181,212,243,273,304,334,365}; hjz toLunar(hjz solar){ //将阳历转换为农历函数 int year = solar.year, month = solar.month, day = solar.day;
int bySpring,bySolar,daysPerMonth; int index,flag;
25
hjz lunar;
if( ((lunar200y[year-1901] & 0x0060) >> 5) == 1) bySpring = (lunar200y[year-1901] & 0x001F) - 1; else
bySpring = (lunar200y[year-1901] & 0x001F) - 1 + 31; bySolar = monthTotal[month-1] + day - 1; if( (!(year % 4)) && (month > 2)) bySolar++;
if (bySolar >= bySpring) {//阳历日在春节后(含春节那天) bySolar -= bySpring; month = 1; index = 1; flag = 0;
if( ( lunar200y[year - 1901] & (0x80000 >> (index-1)) ) ==0) daysPerMonth = 29; else
daysPerMonth = 30; while(bySolar >= daysPerMonth) { bySolar -= daysPerMonth; index++;
if(month == ((lunar200y[year - 1901] & 0xF00000) >> 20) ) {
26
flag = ~flag; if(flag == 0) month++; } else
month++;
if( ( lunar200y[year - 1901] & (0x80000 >> (index-1)) ) ==0)
daysPerMonth=29; else
daysPerMonth=30; }
day = bySolar + 1; }
else {//阳历日在春节前 bySpring -= bySolar; year--; month = 12;
if ( ((lunar200y[year - 1901] & 0xF00000) >> 20) == 0) index = 12; else
index = 13;
27
flag = 0;
if( ( lunar200y[year - 1901] & (0x80000 >> (index-1)) ) ==0) daysPerMonth = 29; else
daysPerMonth = 30; while(bySpring > daysPerMonth) { bySpring -= daysPerMonth; index--; if(flag == 0) month--;
if(month == ((lunar200y[year - 1901] & 0xF00000) >> 20)) flag = ~flag;
if( ( lunar200y[year - 1901] & (0x80000 >> (index-1)) ) ==0)
daysPerMonth = 29; else
daysPerMonth = 30; }
day = daysPerMonth - bySpring + 1; }
lunar.day = day; lunar.month = month;
28
共分享92篇相关文档