qc12864b和ds1307做了一个时钟,在显示年上存在问题,之前能正确显示2014,后面就显示就变成了1414,不知道问题出在哪,各位帮我看下吧
#include <LCD12864RSPI.h>
#include <Wire.h>
#include <DS1307A.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
DS1307A ds = DS1307A(2000);
DS1307A_RAM ram;
unsigned char hu_year[]={0xC4,0xEA};
unsigned char hu_month[]={0xD4,0xC2};
unsigned char hu_day[]={0xC8,0xD5};
void setup()
{
Serial.begin(9600); //init serial
LCDA.Initialise(); // 屏幕初始化
delay(100);
ds.setDate(2014,9,16);
ds.setTime(18,14,30);
ds.setWeek(2);
LCDA.CLEAR();//清屏
delay(100);
}
void loop()
{
Time t = ds.getTime();
char hum_date[10];
char hum_time[8];
char hum_year[4];
char hum_month[2];
char hum_day[2];
//char hum_week[10];
sprintf(hum_date,"%s",ds.getDateString("YMD",'-'));
sprintf(hum_time,"%s",ds.getTimeString("HMS",':'));
char hum_week1[2]={0xd2,0xbb};
char hum_week2[2]={0xB6,0xFE};
char hum_week3[2]={0xC8,0xFD};
char hum_week4[2]={0xCB,0xC4};
char hum_week5[2]={0xCE,0xE5};
char hum_week6[2]={0xC1,0xF9};
char hum_week7[2]={0xC8,0xD5};
char hum_week8[4]={0xD0,0xC7,0xC6,0xDA,};
char hum_week[2];
switch (t.week)
{
case MONDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week1[i];
}
break;
case TUESDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week2[i];
}
break;
case WEDNESDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week3[i];
}
break;
case THURSDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week4[i];
}
break;
case FRIDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week5[i];
}
break;
case SATURDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week6[i];
}
break;
case SUNDAY:
for(int i=0;i<2;i++)
{
hum_week[i]=hum_week7[i];
}
break;
}
LCDA.DisplayString(0,0,(unsigned char*)hum_date,AR_SIZE(hum_date));
LCDA.DisplayString(1,0,(unsigned char*)hum_time,AR_SIZE(hum_time));
LCDA.DisplayString(2,0,(unsigned char*)hum_week8,AR_SIZE(hum_week8));
LCDA.DisplayString(2,2,(unsigned char*)hum_week,AR_SIZE(hum_week));
delay(100);
}
|