부산IT학원/스마트컨트롤러

20140429 (PC와 시리얼 통신으로 LCD 문자 찍기, 사용자 정의 폰트, fseek, ftell)

EHOzlO 2014. 4. 29. 17:48

51일차






정리 다 했는데.....

갑자기 다 날아갔다......









--------------------------------------

PC와 시리얼 통신으로 LCD 문자 찍기

--------------------------------------



--- PC와 시리얼 통신

어제 소스에서 main만 고치면 PC와 시리얼 통신이 되었다.

PC에서 키보드를 치면 그대로 LCD에 나왔다.


- main.c

#include "smart.h"
#include "Lcd.h"
#include "Usart.h"

int main(void)
{
// Initialization
  LCD_Init();
  Usart_Init();

  while(1)
  {
    LCD_Data(Usart_Rx());    
  }
  return 0;
}




--- 사용자 정의 폰트


- 소스


void Write_CGram(void)

{

unsigned int iNum;

unsigned char ucCChar[48] =

{

0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x0A, 0x00,

0x00, 0x00, 0x00, 0x11, 0x04, 0x0E, 0x04, 0x11,

0x00, 0x00, 0x00, 0x04, 0x0A, 0x11, 0x0A, 0x04,

0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11

};

LCD_Inst(INST_SET_CGRAM);

for(iNum = 0; 48 > iNum; ++iNum)

{

LCD_Data(ucCChar[iNum]);

}

LCD_Inst(INST_SET_DDRAM);

}







이런식으로 나온다.


데이터를 쓸 때 CGRAM, DDRAM 둘 중에 선택하여 쓸 수 있는것 같은데

초기값으로는 DDRAM인듯 하다.

사용자 정의 문자를 CGRAM에 쓸 것이니 쓸 곳을 CGRAM으로 바꿔 준다는 명령어로

LCD_Inst(INST_SET_CGRAM) 명령을 주고

다시 DDRAM으로 바꿔 주면 끝.


CGRAM : 사용자 정의 폰트(이론상으론 64byte, 실습결과 48byte 저장가능)

DDRAM : 80문자 저장, LCD 주소와 매치

CGROM : 미리 정의된 폰트 저장










- C

--------------------

파일 위치 지시자

--------------------



- 위치 지정자 이동 fseek

#include <stdio.h>

int fseek(FILE *, long offset, int wherefrom);



#include <stdio.h>


int main()

{

FILE * fp = fopen("text.txt", "wt");


fputs("123456789", fp);

fclose(fp);


fp = fopen("text.txt", "rt");


fseek(fp, -2, SEEK_END);

putchar(fgetc(fp));


fseek(fp, 2, SEEK_SET);

putchar(fgetc(fp));


fseek(fp, 2, SEEK_CUR);

putchar(fgetc(fp));


fclose(fp);

return 0;

}






위치 지정자 저장. ftell

#include <stdio.h>

long ftell(FILE * stream);