오늘은 LCD시간출력을 해보았습니다.
일단 소스코드를 고칩니다.
프로젝트에
tc0.c와 tc0.h를 추가합니다.
tc0.c에 함수하나를 추가합니다.
데이터 시트 115~133p를 참고하여 한땀한땀 적습니다.
『
void TC0_Init(void)
{
TCCR0B=(0<<FOC0A)|(0<<FOC0B)|(0<<WGM02)|(0<<CS02)|(1<<CS01)|(1<<CS00);
OCR0A=250;
TIMSK0=(0<<OCIE0B)|(1<<OCIE0A)|(0<<TOIE0);
}
전역변수를 추가합니다.
『
volatile unsigned int uiMsec;
』
새로운 함수하나를 추가합니다.
『
void __vector_21(void)
{
++uiMsec;//0.001초가 지나고 있다.
』
++uiMsec이 0.001초니까 1000개를 ++하면 1초 입니다.
새로운 함수하나를 추가합니다.
『
void TC0_MSDelay(unsigned int uiDTime)
{
if(uiDTime>1000)
{
uiDTime=1000;
}//인자를 검사하는 코드
uiMsec=0;
while(uiMsec<uiDTime);//참인지 아닌지
}
』
0.001초를 1초로 만들어주는 코드입니다.
인자를 검사하는 코드는 꼭 추가하도록 합니다.
tc0.h 헤더파일에
void TC0_Init(void);
void TC0_MSDelay(unsigned int uiDTime);
를 추가합니다.
메인함수로 가서
변수 하나를 추가합니다.
char caTime[]="00:00:00";//글자출력
글자출력 변수입니다.
그리고 하나더 추가합니다.
volatile unsigned int uiSec;
기초값 설정을 할 변수입니다.
LCD_Init();
TC0_Init();
sei();
uiSec=0;
lcd.c , tc0.c , main.h 에있는 함수들을 불러오고 기초값을 설정합니다.
그리고 while문 하나를 추가합니다
while(1)//무한 while문
{
caTime[7]='0'+((uiSec%60)%10);
caTime[6]='0'+((uiSec%60)/10);
caTime[4]='0'+(((uiSec/60)%60)%10);
caTime[3]='0'+(((uiSec/60)%60)/10);
caTime[1]='0'+(((uiSec/60)/60)%10);
caTime[0]='0'+(((uiSec/60)/60)/10);
LCD_Inst(LCD_HOME);//제자리에 글자를 출력
LCD_Str(caTime);
TC0_MSDelay(1000);
++uiSec;
}
이런식으로 초 , 분 , 시를 표시하게끔 하고 함수를 불러옵니다.
그리고 ++uiSec(uiSec=uiSec+1)를 합니다.
int main(void)
{
char caTime[]="00:00:00";//글자출력
volatile unsigned int uiSec;
LCD_Init();
TC0_Init();
sei();
uiSec=32700;
while(1)//무한 while문
{
caTime[7]='0'+((uiSec%60)%10);
caTime[6]='0'+((uiSec%60)/10);
caTime[4]='0'+(((uiSec/60)%60)%10);
caTime[3]='0'+(((uiSec/60)%60)/10);
caTime[1]='0'+(((uiSec/60)/60)%10);
caTime[0]='0'+(((uiSec/60)/60)/10);
LCD_Inst(LCD_HOME);//제자리에 글자를 출력
LCD_Str(caTime);
TC0_MSDelay(1000);
++uiSec;
}
return 0;
}
컴파일을 하고 실행시켜 봅니다.
이런식으로 동작이 됩니다.
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
timer 소스입니다(냉무) (2) | 2016.03.18 |
---|---|
리눅스 로그인 비번 복구 방법 (0) | 2016.03.18 |
2016.03.16 이종찬 업무일지 (1) | 2016.03.18 |
2016.03.17 이종찬 업무일지 (2) | 2016.03.18 |
아두이노 시계 (2) | 2016.03.17 |
20160317-조재찬-업무일지-펌웨어(타이머 카운터) (0) | 2016.03.17 |
20160317-이보원 업무일지 펌웨어 ATMega2560(타미머) (2) | 2016.03.17 |
20160317_장진웅_업무일지_펌웨어 실습(타이머카운터) (1) | 2016.03.17 |