BASIC4MCU | 질문게시판 | 그래픽 LCD에서 캐릭터 LCD로 변환하는 코드를 짜려는데 질문드립니다.
페이지 정보
작성자 jenny25 작성일2021-05-26 14:26 조회2,754회 댓글1건본문
그래픽 LCD 에서 캐릭터 LCD를 사용 할 수 있게 코드를 변환하려는데, LCD 제어는 처음인지라,
LC2041 LCD를 사용하려고 하구여, LC2041 데이터 시트 분석 완료 한 상태이구여.
보통 캐릭터 LCD 제어를 할려고 하면 RS/ RW /EN 핀을 각 지정해주어서 제어를 하던데,
코드를 보아하니 따로 핀을 지정하지 않아서요, 어떤식으로 수정을 하고 공부를 해야할지,
조언 부탁드립니다.
void GLCD_Xy(Byte x,Byte y)
{ Xchar = x;
Ychar = y;
GLCD_Command(0xC0,0xB8+Xchar);
if(Ychar <= 9) GLCD_Command(0x40,0x40+Ychar*6+4);
else GLCD_Command(0x80,0x40+(Ychar-10)*6);
}
/*--- GLCD에 Character Display ---*/
void GLCD_Character(Byte Asc)
{ Byte i,signal;
if(Ychar <= 9) signal = 0x40;
else signal = 0x80;
for(i = 0; i <= 4; i++)
{ GLCD_Data(signal,(font[Asc-0x20][i]));
}
GLCD_Data(signal,0x00);
}
/*--- GLCD에 Water Level Display ---*/
void GLCD_W_1(Byte Number,Byte signal,Byte Asc)
{ Byte i;
for(i = 0; i <= Number; i++)
GLCD_Data(signal,(Wfont[Asc-0x20][i]));
}
void GLCD_W_Character(Byte Asc)
{ Byte signal;
if(Ychar <= 9) signal = 0x40;
else signal = 0x80;
GLCD_W_1(5,signal,Asc);
}
/*--- GLCD에 Line Display ---*/
void GLCD_String(Byte x,Byte y,char *string)
{ Xchar = x;
Ychar = y;
GLCD_Xy(x,y);
while(*string != '\0') // \0 = NULL을 의미
{ if(Ychar == 10) GLCD_Command(0x80,0x40);
if(WaterFlag == 1) GLCD_W_Character(*string);
else GLCD_Character(*string);
string++;
Ychar++;
}
}
/*----------------------------------------------------*/
/*####################################################*/
/*### 8*16 폰트 디스플레이에 사용된 함수 ###*/
/*####################################################*/
/*--- GLCD의 좌표 지정 함수 ---*/
void GLCD_Xy_816(Byte x,Byte y)
{ Xchar = x;
Ychar = y;
}
/* set character upper/lower row on GLCD */
void GLCD_xy_row(Byte row,Byte x,Byte y)
{ GLCD_Xy_816(x,y);
if(Gflag == 0)
{ if(row == 0) GLCD_Command(0xC0,0xB8 + x*2);
else GLCD_Command(0xC0,0xB8 + x*2 + 1);
}
if(Gflag == 1)
{ if(row == 0) GLCD_Command(0xC0,0xB8 + x*2 - 1);
else GLCD_Command(0xC0,0xB8 + x*2 );
}
if(Ychar <= 7) GLCD_Command(0x40,0x40 + y*8);
else GLCD_Command(0x80,0x40 + (y-8)*8);
}
void GLCD_English(Byte Ecode)
{
Byte x, y, i, signal;
x = Xchar;
y = Ychar;
GLCD_xy_row(0,x,y);
if(Ychar <= 7) signal = 0x40;
else signal = 0x80;
for(i = 0; i <= 7; i++)
{ GLCD_Data(signal,(E_font[Ecode][i]));
}
GLCD_xy_row(1,x,y);
if(Ychar <= 7) signal = 0x40;
else signal = 0x80;
for(i = 8; i <= 15; i++)
{ GLCD_Data(signal,(E_font[Ecode][i]));
}
Ychar++;
}
void GLCD_String_816(Byte x,Byte y,char *string)
{ Byte character;
GLCD_Xy_816(x,y);
while(*string != '\0')
{
character = *string;
string++;
GLCD_English(character);
}
}
댓글 1
조회수 2,754master님의 댓글
master 작성일
https://cafe.naver.com/circuitsmanual/64388
이런 예제가 도움이 되실겁니다.