AVR - Chapter 16 황 지 연.

Slides:



Advertisements
Similar presentations
마이크로 시스템 1 선 덕 한선 덕 한 lecture7. LCD 구동. 마이크로 시스템 2 강의 목표 현재 디스플레이 장치로써 가장 널리 사용되어지는 LCD 을 프로세서 에서 어떻게 제어 하는지 알아본다.
Advertisements

1 시스템및센서네트워크연구실 마이크로콘트롤러응용설계 - 2 character LCD. 2 시스템및센서네트워크연구실 ATmega128.
마이크로콘트롤러 설계 – 4 Timer 실습 2 – T1, T3
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
DB 프로그래밍 학기.
DB 프로그래밍 학기.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
제어판 –> 네트워크 및 인터넷 –> 네트워크 및 공유센터 이동 후 화면에서 “새 연결 또는 네트워크 설정” 클릭
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
RnA DISPLAY 구동 Clcd 구동 Made by Bonobonobono.
어셈블리 문법 보강 4월 10일.
Text LCD control.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
RS 및 D 플립플롭 RS Flip Flop 래치는 어떤 입력 레벨에 의해서 제어되는 데 플립플롭은 클록 입력이라고
JK 및 T 플립플롭 JK Flip-Flop JK 플립플롭은 디지털 시스템에서 가장 많이 사용되고 있는 플립플롭으로
AP 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
AVR - Chapter 2 황 지 연.
WinCE Device Driver 실습 #4
DK-128 ADC 실습 아이티즌 기술연구소
부트로더와 Self Programming
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
LCD 모듈의 특징 LCD 컨트롤러 내장으로 모든 디스플레이 기능을 명령어로 제어 8비트 혹은 4비트로 인터페이스
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
PSW : PROGRAM STATUS WORD
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
11장. 1차원 배열.
Microprocessor I/O Port & CLCD Noh Jin-Seok.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
디 지 털 공 학 한국폴리텍V대학.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
LCD Controller Colorbar
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
DK-128 FND 실습 아이티즌 기술연구소
1. 설치 2. SPC_Wave 사용설명 SPC_Reflow 사용방법은 Wave와 같습니다.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
논리회로 설계 및 실험 5주차.
6 레지스터와 카운터.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
10차시: 크리스털 LCD 명령어 기초 준비물 SPL-Duino 보드 개요: 크리스털 LCD의 기초 명령어를 익혀 봅니다.
아두이노 매트릭스 코딩 매트릭스 기본 명령어 실습 01차시 ㈜헬로앱스 김영준.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
6. 레지스터와 카운터.
제4강 처리장치 1.
13장 CTC and DMA Slide 1 (of 10).
아두이노 프로그래밍 (응용과정) 3일차 – Part2 LCD 활용하기 강사: 김영준 목원대학교 겸임교수
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
자바 5.0 프로그래밍.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
ATmega128의 특징 아이티즌 기술연구소
계산기.
WinCE Device Driver 실습 #4
과제 1 4bit x 4 SRAM이 있다 아래 (1), (2) 두 입력에 대한 출력값 [3:0] Dout을 나타내시오 (1)
LCD.
시보기 / PC 연결설정방법 광주 직영 임성환 사원.
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
AT MEGA 128 기초와 응용 I 기본적인 구조.
Ⅰ 전자기초 Ⅱ 디지털 논리회로 Ⅲ C언어 기초 Ⅳ AVR 마이크로 컨트롤러 Ⅴ 마이크로 컨트롤러 개발환경
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
컴퓨터 구성요소와 사용 컴퓨터 문서 작업 인터넷 활용
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
TVM ver 최종보고서
AdcRead API 함수 분석 마이크로프로세서.
IO-Link 통신 기술 소개 산업 Ethernet 필드버스 게이트웨이 접속 IO-Link 마스터 IO-Link 통신
WinCE Device Driver 실습 #4
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Presentation transcript:

AVR - Chapter 16 황 지 연

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

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

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

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 필요한 여러가지의 전압을 만들어 전압분배회로 등의 전원 회로

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

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

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

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

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

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

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

Text LCD

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에서

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 : 명령/데이터 받기 가능

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

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

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이면 쉬프트되지 않는다.

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번째 줄에 표시된다.

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

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

Text LCD

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와 어드레스 명령을 제외한 다른 명령이 실행되기 전에 프로그램의 앞 부분에 실행해야 한다. 

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

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를 나타낼 수 있다.

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

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

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

Text LCD 명령에 의한 LCD 초기화

Text LCD

Text LCD

Text LCD

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){ ; }

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); }

숙제 – 주석을 달아 오시오. 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();

숙제 – 주석을 달아 오시오. 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; }

숙제 – 주석을 달아 오시오. 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;