Presentation is loading. Please wait.

Presentation is loading. Please wait.

AVR - Chapter 16 황 지 연.

Similar presentations


Presentation on theme: "AVR - Chapter 16 황 지 연."— Presentation transcript:

1 AVR - Chapter 16 황 지 연

2 LCD LCD(Liquid Crystal Display) FND에 비해 많은 숫자 표현 가능
일반적으로 5 x 8 도트를 이용하여 1개 문자를 표현 소문자 g, j, p, q, y는 다소 이상함. LCD 모듈은 LCD 판넬과 LCD 콘트롤러 및 드라이버 IC를 1개의 기판에 모두 장착하여 만들어짐.

3 LCD Text LCD Graphic LCD 지정된 각 위치에 도트 매트릭스(dot matrix) 방식
ASCII 문자만 표시 할 수 있음 Graphic LCD 영문 ASCII외에도 한글이나 한자까지 표현 가능 상대적으로 복잡하고, 제조회사에 따른 사용방법이 틀림.

4 LCD Controller & Driver IC
MCU CG RAM ROM LCD Controller Power Supply DC/DC converter Memory DD Driver Common Segment CGRAM CGROM

5 LCD DD RAM CG RAM CGROM Controller Power 회로 LCD화면과 1:1로 대응
User가 자신이 원하는 font를 만들어서 저장하는 RAM, CGROM과 같은 방법으로 LCD에 Display CGROM LCD 화면에 Display될 5x8등의 글자 데이터(font)를 저장하고 있는 ROM Controller Display 문자 코드를 받아서 DDRAM에 Write하거나, Display 변경에 대한 명령을 처리하고, 주기적으로 DDRAM의 데이터를 읽어서 그에 따른 글자를 ROM에서 읽어와서 Display하는 일을 수행 Power 회로 High level 신호를 만드는 Boost DC-DC Converter 필요한 여러가지의 전압을 만들어 전압분배회로 등의 전원 회로

6 Text LCD 특징 캐릭터 LCD라고도 함. 1개의 칩에 CG (Character Generator) ROM, CG RAM, DD (Display Data) RAM 등을 내장한 LCD 콘트롤러 및 드라이버 LSI 사용 MPU 와의 인터페이스가 대부분 표준화 되어 있음. 내부 제어 명령이 표준화 되어 있음 일반적인 영문 ASCII 문자를 모두 표시 문자를 표시할 때 자동으로 커서의 위치가 증가

7 Text LCD 캐릭터 LCD 핀의 구성 캐릭터 LCD는 14개의 핀으로 구성되어 있으며, 백 라이트가 있는 것은 16 개의 핀으로 구성되어 있습니다

8 Text LCD 번호 이름, 기능 비고 핀 번호 1 2 3 4 5 6 7 8 이름 기능 Vss, 전원 Vdd, 전원
Vo, LCD밝기조절 RS, 레지스터 선택 R/W, 읽고 쓰기 선택 E, 인에이블 신호 DB0, 데이터 버스 DB1, 데이터 버스  비고 GND 5V 10 K가변저항 사용 L:명령 입출력 H:데이터 입출력 L:쓰기, H:읽기 LCD 동작 신호 H->L 번호 9 10 11 12 13 14 15 16 이름, 기능 DB2, 데이터 버스  DB3, 데이터 버스  DB4, 데이터 버스  DB5, 데이터 버스  DB6, 데이터 버스  DB7, 데이터 버스  A, 백라이트(+) K, 백라이트(-) 비고 5V 에 연결 (4.7Ω~10Ω의 저항을 직렬로 연결) GND

9 Text LCD 케릭터 LCD 읽기/쓰기 타이밍도
케릭터 LCD 제어는 LCD에 표시할 데이터를 쓰거나 LCD로부터 데이터를 읽어 온다. 데이터를 읽거나 쓰기 위해서는 RS, R/W, E, data bus(DB0~DB7) 신호들을 타이밍에 맞게 입력해 주어야만 가능하다. 아래 타이밍도와  같이 신호를 입력하게 되게 읽거나 쓸수 있는데 LCD 제조회사마다 시간은 조금씩 다를수 있기  때문에 아래 타이밍도와 신호모양까지 똑같을 필요는 없다. 

10 Text LCD Enable 신호(E)의 하강에지에서 LCD에 명령어를 쓸때는 RS를 Low로 데이터를 쓸때는 High로 설정되어 있어야 하고 R/W는 Low로 설정되어있어야 한다. DB0~DB7는 쓰고자하는 명령어나 데이터 값이 입력되어야 한다.    Enable 신호(E)의 하강 에지 에서 데이터가 쓰여진다.

11 Text LCD LCD로부터 데이터를 읽어올때는 Enable 신호(E)의 하강에지에서 명령어(상태)를 읽고자 한다면 RS를 Low로, 데이터를 읽고자 한다면 High로 설정되어 있어야 하고 R/W는 High로 설정되어야 한다.    Enable 신호(E)의 상승에지 이후에 일정시간(tddr) 지난후에서 부터 하강에지 이후 일정시간(tdhr) 전까지 DB0~DB7을 읽어오면 된다. 일반적으로 하강에지 직후에 데이터를 읽는다.

12 Text LCD 케릭터 LCD 명령어 케릭터 LCD를 동작시키기 위한 명령어는 다양하다.
명령어를 분류한다면 4가지로 분류할 수 있다. 명령어 쓰기 디스플레이 데이터 포맷, 깜박임, 쉬프트, 커서, 밑줄, 어드레스에 대한 설정 상태 읽기 비지체크 등 데이터 쓰기 디스 플레이할 데이터 쓰기 4. 데이터 읽기

13 Text LCD

14 Text LCD LCD의 제어 명령어 명령 데이터 설명 실행 시간 RS R/W DB7 DB6 DB5 DB4 DB3 DB2
데이터 설명 실행 시간 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 쓰기 화면지우기 1 화면지우기, 커서홈 1.53ms 커서홈 - 커서 처음 위치로 이동 엔트리 모드 셋 I/D S 어드레스자동증가/감소(I/D) 표시 쉬프트(S) 39us 표시 On/Off 제어 D C B 디스플레이(D), 커서(C), 깜박임(B) On/Off 표시, 커서 쉬프트 S/C R/L 표시, 커서 이동 기능 셋 DL N F 인터페이스라인(DL), 라인수(N), 문자폰트(F) CGRAM 어드레스 CGRAM 어드레스(ACG) CGRAM 어드레스 설정 DDRAM 어드레스 DDRAM 어드레스(ADD) DDRAM 어드레스 설정 읽기 비지체크, 어드레스 BF 어드레스 카운터(AC) 비지플래그 읽기 어드레스 카운터 읽기 0us 데이터 쓰기 write data CGRAM 또는 DDRAM에 43us 데이터 읽기 read data CGRAM 또는 DDRAM에서

15 Text LCD I/D=1 : 어드레스 자동증가 I/D=0 : 어드레스 자동감소 DDRAM : 표시 데이터 RAM
 S=1 : 전체 쉬프트  S=0 : 쉬프트 하지 않음  CGRAM : 폰트 제작 RAM  S/C=1 : 표시 쉬프트  S/C=0 : 커서 이동  ACG : CGRAM 어드레스  R/L=1 : 오른쪽으로 쉬프트  R/L=0 : 왼쪽으로 쉬프트  ADD : DDRAM 어드레스  DL=1 : 8비트  DL=0 : 4비트  AC : 어드레스 카운터  N=1 : 2라인  N=0 : 1라인      (DDRAM, CGRAM 어드레스)  F=1 : 5x10 dots  F=0 : 5x8 dot  BF=1 : 내부 동작중  BF=0 : 명령/데이터 받기 가능

16 Text LCD 케릭터 LCD 명령어 설명 화면 지우기(clear Display)
LCD를 지우기 위해서는 모든 DDRAM 어드레스에 20H를 쓴다. 여기서 문자 코드 20H는 blank 패턴을 의미한다. 어드레스 카운터로 DDRAM 어드레스 0으로 설정하고 만약 쉬프트 되었다면 원래의 상태를 표시하도록 한다. 표시된 문자는 사라지고 커서와 깜박임의 위치는 가장 왼쪽으로 옮겨간다. entry 모드에서 I/D=1로 되고 S는 변하지 않는다

17 Text LCD 커서 홈(Return Home)
Return Home은 어드레스 카운터에 DDRAM 어드레스를 0으로 설정하고 만약 쉬프트 되었다면 원래의 상태로 표시한다. DDRAM은 변하지 않는다. 커서와 깜박임의 위치는 가장 왼쪽으로 옮겨간다.

18 Text LCD 엔트리 모드 셋(Entry Mode Set) /D: S
문자 코드를 DDRAM에 쓰거나 읽을때 자동으로 DDRAM 어드레스의 1씩 증가(I/D=1) 또는 감소(I/D=0). 커서와 깜박임는 DDRAM 어드레스가 1씩 증가하면 오른쪽으로 1씩 감소하면 왼쪽으로 이동한다. CGRAM도 DDRAM과 같은 방법으로 적용된다. S S=1일때 I/D=0이면 오른쪽으로 I/D=1이면 왼쪽으로 전체 디스플레이를 쉬프트한다. S=0이면 쉬프트되지 않는다.

19 Text LCD 표시 On/Off 제어 (Display On/Off Control) D: C:
D=1일때 LCCD가 On 되고 D=0일때 LCD가 Off  된다. Off 되어 있더라도 DDRAM에 데이터는 남아 있고 D=1에 의하여 다시 LCD에 표시될 수 있다. C: C=1일때 커서가 표시되고 C=0일때 커서가 표시되지 않는다. 커서가 사라지더라도 I/D 기능과 다른 특성은 데이터를 표시하는 동안 변하지 않는다. 커서는 5x8 도트 문자 폰트일 경우에는 8번째 줄에 5x10 도트 문자 폰트일 경우에는 11번째 줄에 표시된다.

20 Text LCD B: B=1일때 커서의 깜박거림에 의하여 문자를 가리킨다.
깜박거림은 공백 도트와 문자 사이에 번갈아 가면서 표시된다. 깜박거림의 속도는 LCD 모듈에 사용된 클럭 주파수에 의해 결정된다.

21 Text LCD 커서, 표시 쉬프트 (Cursor or Display Shift)
커서 또는 쉬프트 표시는 커서의 위치 또는 표시할 데이터의 읽기 또는 쓰기 없이 오른쪽/왼쪽으로 이동된다. 2줄 표시를 할 경우에는 커서는 첫 번째 줄에서 40번째를 넘어갈 경우 두 번째 줄로 이동한다. 주의해야 할 것은 첫 번째 줄과 두 번째 줄이 동시에 이동된다. 계속적으로 수평으로 데이터를 쉬프트 하더라도 두 번째 줄의 데이터는 첫 번째 줄에 표시될 수 없다. 쉬프트를 해도 어드레스 카운터(AC)는 변하지 않는다.

22 Text LCD

23 Text LCD 기능 셋 (Function Set) DL: N: F:
인터페이스할 데이터 길이를 설정한다. DL=1로 할 경우 8비트 데이터(DB7~DB0) 길이로 보내거나 받고 DL=0으로 할 경우 4비트 데이터(DB7~DB4)길이로 보내거나 받는다. 4비트 데이터 길이로 선택할 경우 데이터는 2번에 거쳐서 보내거나 받아야 한다. N: 표시 줄의 숫자. (0: 1줄, 1: 2줄) F: 문자의 폰트 설정. (0: 5x8, 1: 5x10) Funnction Set은 busy flag와 어드레스 명령을 제외한 다른 명령이 실행되기 전에 프로그램의 앞 부분에 실행해야 한다. 

24 Text LCD CGRAM 어드레스 (Set CGRAM Address)
CGRAM 어드레스 설정은 어드레스 카운터에 CGRAM 어드레스를 2진수 6비트(AC)로 설정한다. MPU로부터 CGRAM으로 데이터를 쓰거나 읽는다. Return Home은 어드레스 카운터에 DDRAM 어드레스를 0으로 설정하고 만약 쉬프트 되었다면 원래의 상태로 표시한다. DDRAM은 변하지 않는다. 커서와 깜박임의 위치는 가장 왼쪽으로 옮겨간다.

25 Text LCD DDRAM 어드레스 (Set DDRAM Address)
DDRAM 어드레스 설정은 어드레스 카운터에 DDRAM 어드레스를 2진수 7비트(AC)로 설정한다. 그후 데이터는 MPU에 의해 DDRAM에 쓰여지거나 DDRAM으로부터 읽혀진다. LCD가 1줄(N=0)로 표시 될 때 2진수 7비트(AC)는 00H~4FH를 나타낼 수 있고 LCD가 2줄(N=1)로 표시 될 때 2진수 7비트(AC)는 첫 번째 줄에 00H~27H를, 두 번째 줄에 40H~67H를 나타낼 수 있다.

26 Text LCD 비지체크와 어드레스 (Read Busy Flag and Address)
busy flag와 어드레스를 읽는 것은 LCD 컨트롤러가 이전에 받은 명령어에 의하여 지금 내부적으로 동작중인지를 알려주는 busy flag(BF)를 읽는다. BF=1이면 내부적으로 동작중인 것을 나타내고 BF=0이 될 때까지 다음 명령을 받을 수 없다는 것을 알려준다. 다음 명령어를 보내기 전에 반드시 BF를 체크해야 한다. BF(DB7)를 읽을때 어드레스카운터(DB6~DB0)값도 읽혀진다. 이 어드레스 카운터는 CGRAM과 DDRAM 어드레스로 사용된다.

27 Text LCD 데이터 쓰기 (Write Data to CGRAM or DDRAM)
CGRAM 또는 DDRAM에 데이터를 쓸 때 2진수 8비트(DB7~DB0)데이터 형태로 쓴다. CGRAM 또는 DDRAM에 데이터를 쓰기 위해서 어드레스를 결정하고 결정된 어드레스에 데이터를 쓴다. 쓰기 동작이후에 어드레스 카운터는 Entry Mode set의 I/D의 설정에 의해 1씩 증가하거나 감소한다.

28 Text LCD 데이터 읽기 (Read Data from CGRAM or DDRAM)
CGRAM 또는 DDRAM으로부터 데이터를 읽을때 2진수 8비트(DB7~DB0)데이터 형태로 읽는다. CGRAM 또는 DDRAM으로부터 데이터를 읽기 위해서는 어드레스를 결정하여 결정된 어드레스로부터 데이터를 읽는다. 읽기 동작이후에 어드레스 카운터는 Entry Mode set의 I/D의 설정에 의해 1씩 증가하거나 감소한다.

29 Text LCD 명령에 의한 LCD 초기화

30 Text LCD

31 Text LCD

32 Text LCD

33 Text LCD 예제 1 공유된 ktmlcd.h 파일을 받은 후 ICC AVR에 include 폴더에 옮겨 놓는다.
#include <ktmlcd.h> void main(void) { init_devices(); ktm128_init(); delay(1000); lcdInit(); delay(10); lcd_puts(1, “Anyang"); lcd_puts(2, “HwangJiYeon"); while(1){ ; }

34 Text LCD 예제 1 void main(void) { char i, count=0; init_devices();
delay(1000); lcdInit(); delay(10); lcd_puts(1, “Anyang"); lcd_puts(2, “HwangJiYeon"); while(1){ printf("count : %d\n\r", count); count++; lcd_gotoxy(12,1); lcd_putn3(count); }

35 숙제 – 주석을 달아 오시오. void lcdInit(void) {
unsigned char i, lcd_reg[6]={0x38, 0x0c, 0x06}; LCD_ENABLE_OFF; LCD_R_W_ON; LCD_RS_ON; lcdDelay(200); for(i=0; i<3; i++){ lcdRegWrite(lcd_reg[i]); //lcdDelay(200); } lcdClear();

36 숙제 – 주석을 달아 오시오. void lcd_putch(unsigned char reg) { LCD_R_W_OFF;
LCD_RS_ON; lcdDelay(5); LCD_ENABLE_ON; LCD_DATA = reg; lcdDelay(10); LCD_ENABLE_OFF; }

37 숙제 – 주석을 달아 오시오. void lcdClear(void) { lcdRegWrite(0x01);
lcdDelay(500); } void lcdRegWrite(unsigned char reg) LCD_R_W_OFF; LCD_RS_OFF; lcdDelay(5); LCD_ENABLE_ON; LCD_DATA = reg; lcdDelay(10); LCD_ENABLE_OFF;


Download ppt "AVR - Chapter 16 황 지 연."

Similar presentations


Ads by Google