zgkjzf 发表于 2014-9-16 18:24:01

12864显示问题

qc12864b和ds1307做了一个时钟,在显示年上存在问题,之前能正确显示2014,后面就显示就变成了1414,不知道问题出在哪,各位帮我看下吧
#include <LCD12864RSPI.h>
#include <Wire.h>
#include <DS1307A.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a )
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;
char hum_time;
char hum_year;
char hum_month;
char hum_day;
//char hum_week;

sprintf(hum_date,"%s",ds.getDateString("YMD",'-'));
sprintf(hum_time,"%s",ds.getTimeString("HMS",':'));

char hum_week1={0xd2,0xbb};
char hum_week2={0xB6,0xFE};
char hum_week3={0xC8,0xFD};
char hum_week4={0xCB,0xC4};
char hum_week5={0xCE,0xE5};
char hum_week6={0xC1,0xF9};
char hum_week7={0xC8,0xD5};
char hum_week8={0xD0,0xC7,0xC6,0xDA,};
char hum_week;
switch (t.week)
        {
      case MONDAY:
              for(int i=0;i<2;i++)
            {
            hum_week=hum_week1;
            }
              break;
        case TUESDAY:
          for(int i=0;i<2;i++)
          {
          hum_week=hum_week2;
          }
          break;
        case WEDNESDAY:
                for(int i=0;i<2;i++)
      {
      hum_week=hum_week3;
      }
                break;
        case THURSDAY:
                for(int i=0;i<2;i++)
      {
      hum_week=hum_week4;
      }
                break;
                case FRIDAY:
               for(int i=0;i<2;i++)
      {
      hum_week=hum_week5;
      }
                break;
                case SATURDAY:
                for(int i=0;i<2;i++)
      {
      hum_week=hum_week6;
      }
                break;
                case SUNDAY:
                for(int i=0;i<2;i++)
      {
      hum_week=hum_week7;
      }
                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);

}

zgkjzf 发表于 2014-9-16 18:29:39

各位大哥提提改进意见 尤其是代码
页: [1]
查看完整版本: 12864显示问题