// LCD 초기화
void CLCD_Init()
{
        SetBit(CLCD_CONTROL_PORT_DIR,CLCD_EA);  // ENABLE 포트를출력으로설정
        SetBit(CLCD_CONTROL_PORT_DIR,CLCD_RS);  // RS 포트를출력으로설정
        SetBit(CLCD_CONTROL_PORT_DIR,CLCD_RW);  // RS 포트를출력으로설정
  // 이예제에서는READ 를하지않기때문에
RW 신호는항상LOW로둔다.
        ClearBit(CLCD_CONTROL_PORT,CLCD_RW);
        CLCD_DATA_PORT_DIR
= 0xFF;              // 데이터포트를출력으로설정
        CLCD_On();                              // LCD를켜고
        CLCD_Clear();                           // LCD 화면을클리어한다.
}
// LCD 켜기
void CLCD_On()
{
        CLCD_Command(0x38);
        CLCD_Command(0x0C
);
        CLCD_Command(0x01);
        CLCD_Command(0x06);
        CLCD_Command(0x01);
        DelayMS(2);
}
// LCD 화면클리어
void CLCD_Clear()
{
  CLCD_Command(1);
  DelayMS(1);
  CLCD_Command(2);
  DelayMS(1);        
}
BYTE CLCD_BusyCheck()
{
  // Charater LCD 딜레이함수
  // 일정시간기다린다.
        DelayUS(200);
        DelayUS(200);
        DelayUS(200);
        DelayUS(200);
        DelayUS(200);
        DelayUS(200);
        DelayUS(200);
        return
(0);
}
// 원하는X,Y 좌표에문자열출력
void CLCD_PutString(BYTE x, BYTE y,  char *str)
{
        int len = 0;
        CLCD_XY(x,y);
        while(*str ){
               if(len>16) break;
               CLCD_PutChar(*str++); 
               len++;
        }
}
// 한문자출력
void CLCD_PutChar(BYTE data)
{
        while(CLCD_BusyCheck());
        ClearBit(CLCD_CONTROL_PORT,CLCD_EA);
        SetBit(CLCD_CONTROL_PORT,CLCD_RS);
        DelayUS(2);
        CLCD_DATA_PORT=
data;
        DelayUS(50);
        SetBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(50);
        ClearBit(CLCD_CONTROL_PORT,CLCD_EA);
}
// 원하는좌표로이동
void CLCD_XY(BYTE x, BYTE y)
{
        BYTE position = 0;
        if(x>16) x = 0;
        switch(y)
        {
        case 0 :
               position
= 0x80;
               break;
        case 1 :
               position
= 0xC0;
               break;
        }
        CLCD_Command(position + x);
}
// 데이터보내기
void CLCD_Data(BYTE data)
{
        while(CLCD_BusyCheck()){}
        ClearBit(CLCD_CONTROL_PORT,CLCD_RS);
        ClearBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(1);
        CLCD_DATA_PORT=
data;
        DelayUS(50);
        SetBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(20);
        ClearBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(50);
}
// 코맨드보내기
void CLCD_Command(BYTE data)
{
        while(CLCD_BusyCheck()){}
        ClearBit(CLCD_CONTROL_PORT,CLCD_RS);
        ClearBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(1);
        CLCD_DATA_PORT=
data;
        DelayUS(50);
        SetBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(20);
        ClearBit(CLCD_CONTROL_PORT,CLCD_EA);
        DelayUS(50);
}
 WAT-AVR128 EXT (AVR128용 확장보드)
									WAT-AVR128 EXT (AVR128용 확장보드)
									



