BASIC4MCU | 통신 | GPS시계 | 16x16 도트매트릭스 시계
페이지 정보
작성자 키트 작성일2017-09-01 13:41 조회1,697회 댓글0건본문
![]()
14년 12시
01월 18분
21일 33초
15도 12시
24% 18분
21일 33초
2초 주기로 년월/온도습도가 번갈아서 표시됩니다.
이 예제는 올려드리지 않겠습니다.^^
AM2302 온습도 센서의 강좌와 GPS 시계를 공부 해서 충분히 이해했다면 만드실 수 있으실겁니다.^^
도움이 될만한 일부 자료만 올려드립니다.^^
//
char font[10][5]={
{0x06,0x0A,0x0A,0x0A,0x0C}, // 0
{0x04,0x0C,0x04,0x04,0x0E}, // 1
{0x0C,0x02,0x06,0x08,0x0E}, // 2
{0x0C,0x02,0x04,0x02,0x0C}, // 3
{0x08,0x08,0x0A,0x0E,0x02}, // 4
{0x0E,0x08,0x0E,0x02,0x0C}, // 5
{0x06,0x08,0x0E,0x0A,0x0C}, // 6
{0x0E,0x02,0x04,0x08,0x08}, // 7
{0x06,0x0A,0x0E,0x0A,0x0C}, // 8
{0x06,0x0A,0x0E,0x02,0x0C} // 9
};숫자 표시용 작은 폰트입니다.
앞 강좌의 GPS 시계에 버그가 있습니다.
9시간을 더해서 우리나라 시간으로 교정해주는 것 까지는 좋지만
날짜가 외국 날자 그대로입니다.
전에 퀴즈로 윤년 문제를 냈을 때 여왕개미님이 적어주신 소스로 만들면
char DaysOfMonth[]={31,28,31,30,31,30,31,31,30,31,30,31}; //보통 해의 달마다 일수
각 월의 일수용 배열을 추가하고
tp_hh=(char)(Zulu_time/10000+9); // 9를 더해서
if(tp_hh>23){ tp_hh%=24; // 23시를 넘으면 아래처럼 윤년을 계산 해주고
if (!(y%400))DaysOfMonth[1]=29; //400으로 나누어 떨어져도 윤년
else if (!(y%100))DaysOfMonth[1]=28; //100으로 나누어 떨어지면 윤년 아님
else if (!(y% 4))DaysOfMonth[1]=29; //4로 나누어 떨어지면 윤년
if(tp_d// 날자가 해당월의 범위를 벗어나는지 체크해서 처리
else{ tp_d=1; if(++tp_m>12){ tp_m=1; tp_y=(tp_y+1)%100; } }
}
tp_mm=(char)((Zulu_time%10000)/100);
tp_ss=(char)(Zulu_time%100);
대충 이정도 기능만 추가로 소스에 넣으면 될겁니다.^^
또한가지..
1ms마다 도트매트릭스 구동하므로 AM2302 읽을 때 타이밍 에러가 발생합니다.
인터럽트를 막으면 되겠지만 도트매트릭스에서 깜박임이 생깁니다.
AM2302_Error:;
//Humi=Temp=0; Temp_sign=0;
}에러 발생해도 온도와 습도 값을 크리어 시키지 않도록 수정하면
이전값을 그대로 표시 하게 됩니다.^^
댓글 0
조회수 1,697등록된 댓글이 없습니다.