RnA DISPLAY 구동 Clcd 구동 Made by Bonobonobono.

Slides:



Advertisements
Similar presentations
미디어 안 전 과 목 명 : 아동안전관리 담당교수 : 임은정 교수님 학 과 : 사회복지학부 이 름 : 백준기 임완규 서현지.
Advertisements

마이크로 시스템 1 선 덕 한선 덕 한 lecture7. LCD 구동. 마이크로 시스템 2 강의 목표 현재 디스플레이 장치로써 가장 널리 사용되어지는 LCD 을 프로세서 에서 어떻게 제어 하는지 알아본다.
1 시스템및센서네트워크연구실 마이크로콘트롤러응용설계 - 2 character LCD. 2 시스템및센서네트워크연구실 ATmega128.
“Mirror와 Display 융합기술의 칠판 TV, 거울TV ”
마이크로콘트롤러 설계 – 4 Timer 실습 2 – T1, T3
반도체 전자 부품 유통사.
L A N DCT Serise W i r e l s Description
마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1
SoC 로봇워 참가자 교육.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
컴퓨터정보공학과 권춘우 ARDUINO (센서활용프로그래밍/ICT융합실무) - 3 Digit 7 Segment LED - RGB LED(3 Color) - LCD 디스플레이.
Project Goal..! Milestone Role Division Achievement Result
하드웨어 9 : Monitor.
LCD 디스플레이 구미대학교 컴퓨터정보전자과.
㈜ 디지탈프로젝트 목 차 회사소개 및 개요 사업 소개 경쟁 우위 요소 비젼 및 추진 전략 재무계획.
One Step Closer - AVR ATMEGA128 -
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
마이크로프로세서 메모리 및 입출력장치 인터페이스
PLC : Programmable Logic Controller
USER’S MANUAL 모델명: CCR-201 코드시스템(주)
2013 스마트 컨트롤러 중간 프로젝트 김성엽 진종영 조유진
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
AVR - Chapter 16 황 지 연.
10장 주변장치 (PIO) Slide 1 (of 28).
DC Motor Control.
디스플레이 화면의 color filter TFT: thin film transistor
※ 세부 모집 분야 OLED 직무구분 주요 수행 업무 관련 전공 Panel TFT 설계 / 소자
2015(상) 석/박사 LGenius Members 모집 개요
High Frequency On-line UPS
CONTROLLER(RTC4CH70) 설명서
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
Text LCD control.
PLC를 이용한 제어로직에 관한 연구 김 재 은.
순차 회로 설계 및 검증 Sun, Hye-Seung.
Input/Output Control.
조도 센서 김한수.
Character LCD Controller 구현
11. 아두이노를 이용한 Text LCD 제어 - 스마트 폰으로 제어하는 아두이노 -.
Ticket Dispenser Technical Manual
AVR - Chapter 2 황 지 연.
WinCE Device Driver 실습 #4
4족 로봇 삼식이팀 박명대.
1. 발명의 명칭 2. 발명의 분야 3. 발명의 기술적 배경 (종래 기술)
18년 11월 1일 디스플레이.
6장. LCD 사용하기.
AVR - Chapter 12 황 지 연.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
                                  1장. 디지털 회로의 개요 디지털 회로란? 디지털 IC의 개요.
Microprocessor I/O Port & CLCD Noh Jin-Seok.
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
Computer System Architecture
Computer System Architecture
PIC16C84의 외형 RA2 1 RA1 I/O PIN I/O PIN RA3 RA0 RTCC OSC1 발 진 RESET
1) 디스플레이(Display)는 무엇인가 ?
High Frequency On-line UPS
8051 IO-PORT 정보통신•컴퓨터 공학부 송명규
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
편광마술상자.
전자물리실험 07-발광소자와 수광소자를 이용한 광신호 감지 - DSU 메카트로닉스 융합공학부 - PULSE 4
프로젝트 진행내용.
WinCE Device Driver 실습 #4
LCD.
PLC : Programmable Logic Controller
아두이노 프로그래밍 Lecture #
WinCE Device Driver 실습 #4
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
RB-680 사용 설명서 1.프로그램 모드 진입 ① * + 마스터 비밀번호(4자리) + # ② 초기 비밀번호 2416
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
Presentation transcript:

RnA DISPLAY 구동 Clcd 구동 Made by Bonobonobono

제작 목적 기본적인 IO만 구동할줄 안다면 누구나 구동할 수 있으나 맞춤형 자료가 없기에 작성하였음.

LCD란 LCD 액정이 갖는 여러 가지 성질 가운데 전압을 가하면 분자의 배열이 변하는 성질을 이용하여 표시하는 장치. : Liquid Crystal Display. 액정이 갖는 여러 가지 성질 가운데 전압을 가하면 분자의 배열이 변하는 성질을 이용하여 표시하는 장치. - 다음 백과사전 -

LCD의 종류 그래픽 LCD 캐릭터 LCD 흔히 보는 LCDTV, LCD모니터 문자나 숫자등만 표시할때 주로 쓰임

LCD 모듈의 구성 LCD Panel LCD Driver/Controller Back Light 실제 표시되는 부분 데이터를 받아 LCD패널에 표시하는 IC 실제 데이터를 입/출력하는 부분 Back Light 우리가 LCD를 제어하고자 할 때 실제적으로 데이터를 입출력 하는 부분은 드라이버 IC이다.

LCD PANEL 종류 TN-LCD STN-LCD TFT-LCD Twisted Nematic Liquid Crystal Display STN-LCD Super Twisted Nematic Liquid Crystal Display TFT-LCD Thin Film Transistor Twisted Nematic Liquid Crystal Display TN패널의 경우 가격이 제일 저렴함. 시야각이 좁다. STN은 TN패널의 개량형. 시야각이 더 넓어짐. TFT 가격이 제일 고가인 반면 시야각이 넓다. LCD의 동작원리 1) TN-LCD    TN-LCD의 동작원리는 액정분자가 면에 따라서 일축(네마틱) 배향하도록 처리한 유리판을 직각으로 교차시켜 대향시키고 그 사이에 액정을 넣으면 액정분자의 배열이 꼬이고(트위스트), 거기에 전압을 가하면 액정분자가 전계방향으로 배열을 바꾸는 원리이다. 이 액정셀을 편향축을 직행시킨 편향판으로 끼우면 전압 OFF시에는 입사광이 통과하고, 전압 ON시에는 입사광을 차단하여 명암의 콘트라스트를 얻을 수 있는데, 이 효과를 표시장치에 응용하는 것이다. 2) STN-LCD   STN-LCD의 동작원리는 TN과 같고 다만 비틀림각을 더 주었다는 것이 특징이다(90°→240°정도). TN이 가지는 단점인 정보표시량의 한계에 의해 대화면에의 응용이 불가능하기 때문에 비틀림각을 크게 하여 전기광학적 특성의 경사도를 향상시킨 것이다. 위상차판을 이용하여 바탕색을 보상함으로써 B/W가 가능하며, 컬러필터를 사용하여 컬러화도 가능하게 된다. 3) TFT-LCD   TFT-LCD의 구동원리는  TN의 표시정보량의 한계를 극복하는 다른 방법으로서, 기존 TN모드를 그대로 사용하면서 수동구동 대신 능동구동방법을 사용한 방식이다. 주어진 신호가 ITO를 통해 각 DOT에 그대로 가해지는 수동구동(TN, STN)과는 달리 능동구동기법은 각 DOT마다 전기적 소자를 제조하여 하나 하나의 각 화소를 직접 구동하기 때문에 콘트라스트, 해상도, 시야각, 응답속도 등에서 수동구동보다 훨씬 우수한 특성을 나타낸다

LCD PANEL

LCD CONTROLLER 컨트롤러의 역할 종류 LCD 패널을 uP가 제어하도록 도와줌. 폰트DATA내장. CLCD에 주로사용되는 컨트롤러. : HD44780, SED1278, ST7066, NT3881등.

LCD DRIVER 드라이버 IC의 역할 드라이버IC의 종류 LCD PANEL을 제어하는 역할. 컨트롤러IC의 명령을 받아 LCD에 DISPLAY. 드라이버IC의 종류 HD44100, SED1181, ST7065, NT3882

LCD 컨트롤러/드라이버 컨트롤러 드라이버 IC들을 패키지로(TQFP등)한 제품을 사용 하면 단가가 상승하기 때문에 패키지가 되지 않은 IC를 PCB에 올려놓은뒤 그 상태에서 배선을 하고 그 위에 코팅을 한다.

Back Light CLCD의 Back Light LED조명 LCD는 자체 발광하지 않기때문에 빛이 있어야만 DISPLAY되는 내용을 알 수 있다. 그러기 때문에 LCD 패널의 후면에서 전면을 향해서 빛을 조사하여 내용을 알수 있도록 해준다. 이 역활을 하는 부품이 Back LI

CLCD 개요 CLCD(Character LCD) 표시 문자수에 따른 종류 텍스트형 LCD 필요시 폰트 추가 가능 종류 표시 문자수에 따른 종류 8x2, 16x2, 16x4, 20x2, 20x4, 40x2 등. 문자DISPLAY시 문자데이터와 표시위지 데이터를 LCD 컨트롤러에 전송하면 원하는 문자가 출력됨

CLCD 모듈 구성도 원하는 내용을 컨트롤러에 입력하면 컨트롤러를 그에 해당하는 내용을 LCD드라이버에 출력하고 LCD드라이버는 LCD컨트롤러로부터 받은 데이터를 LCD_PANEL에 DISPLAY함.

CLCD 내부 구조 DD RAM CG ROM CG RAM 각 자리에 표시할 문자 데이터를 저장. 문자 코드를 실제 표시할 문자 폰트로 변환. CG RAM 사용자 정의 문자를 저장.

CLCD의 외형

CLCD의 외형 4line 4x20의 5x7의 도트를 가진 lcd이다

CLCD의 외형 도트부분. 도트의 크기에 따라 5x7(5x8), 5x10(5x11)로 분류된다. 데이터 시트에서 발췌.

CLCD의 핀 배열 CLCD는 모두 같은 핀 배열을 갖는다. 15, 16번 핀은 lcd후면에 발광체(LED)가 달려있을 경우 LED 의 전원 공급용이다. 일반적인 LED제어와 같이 저항을 달아 전류를 흘려준다.

CLCD의 핀 배열 각 PIN의 의미. 1 – LCD의 GND 2 – LCD 전원 공급(5V) 3 – 문자의 명암 조절 4 – RS (제어PIN) 5 – R/\W (제어PIN) 6 – E(Enable) (제어PIN) 7~14 – 데이터 PIN 15~16 – LED Anode,Cathode CLCD의 핀배열은 거의 표준화가 되었다고 할 수 있을 대부분 비슷하다. 1,16번의 백라이트핀은 모듈에 따라 있을 수도 없을 수도 있다.

CLCD PIN설명 Vss 내부회로의 공통선(GND) Vdd 내부회로의 구동 전압(5V)

CLCD PIN설명 RS(Register Select) RS = 1 -> DR(DATA Register) RS = 0 -> IR(Instruction Register) 명령어 DATA 송신시

CLCD PIN설명 R/W(Read / Write) R/W = 1 -> Read R/W = 0 -> Write DATA 읽어오기 R/W = 0 -> Write DATA 쓰기

CLCD PIN설명 E(Enable) E = 1 -> LCD Enable E = 0 -> LCD Disable

CLCD PIN설명 VO LED Anode, Cathode LCD의 명암을 조절하는 단자 VO단자의 전압이 0V에 가까워질수록 문자의 명암이 어두워짐. LED Anode, Cathode LCD 후면의 LED단자. 저항(10~15Ω)을 이용하여 전원 인가. VO의 전압이 올라갈 수록

CLCD 명령어 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 실행시간 Clear Display 1 1640 1 1640 화면 CLEAR/ 00번지로. Return home X 시프트 전화면/ 00번지로 Entry mode set I/D S 40 I/D :커서 이동방향 D:화면 시프트 모양 DISPLAY On/Off control D C B D:화면, C:커서 on/off B:커서 깜빡임 Cursor/Display Shift S/C R/L x S/C: 커서,화면의 이동 R/L:시프트 방향 Function set DL N F DL:DATA길이 N:LINE수 F:문자 폰트 정의 CG RAM ADDR set ACG CGRAM 어드레스 주소 DD RAM ADD DDRAM 어드레스 주소 Busy Flag/ ADDR RD BF AC BF:LCD측에서 현제 명령을 받을수있나없나 출력. CG/DD RAM DATA WR WRITE DATA CG/DD RAM에 데이터를 기록 DATA RD READ DATA CG/DD RAM에 데이터를 읽어옴

CLCD 명령모드 Clear display LCD에 표시 되고 있는 내용을 모두 지움 Entry모드의 I/D = 1로 강제 설정함. 커서를 00번지(왼쪽 1번라인)로 이동시킴

CLCD 명령모드 Return home 커서를 00번지(왼쪽 1번라인)로 이동시킴. 현재 표시하는 내용은 지우지 않음.

CLCD 명령모드 Entry mode set 커서의 위치와 화면을 SHIFT 시킬 것인지 설정하는 mode I/D(Increment Mode) I/D = 1 -> 자동으로 커서 오른쪽으로. I/D = 0 -> 자동으로 커서 왼쪽으로. S(Display shift operation) S = 1 -> 커서가 shift될때 화면도 shift됨 S = 0 -> shift되지 않음.

CLCD 명령모드 Display ON/OFF control 커서나 화면을 ON/OFF함, 커서의 깜빡임 설정 D (DISPLAY),C(Cursor) D, C = 1 -> 화면, 커서 ON. D, C = 0 -> 화면, 커서 OFF. B(Blink) B = 1 -> 커서 깜빡임. B = 0 -> 커서 깜빡이지 않음.

CLCD 명령모드 Cursor or Display Shift S/C() S/C = 1 -> 화면만 Shift. S/C = 0 -> 커서만 Shift. R/L(Right/Left) R/L = 1 -> 오른쪽으로 Shift. R/L = 0 -> 왼쪽으로 Shift.

CLCD 명령모드 Function set 데이터 길이(8/4bit)와 표시행수, 도트의 사이즈를 설정. DL(DATA Line) DL = 1 -> 데이터를 8bit단위로 송수신. DL = 0 -> 데이터를 4bit단위로 송수신. N() N = 1 -> 화면표시 행수를 2행으로 함. N = 0 -> 화면표시 행수를 1행으로 함. F(Font Size) F = 1 -> 도트 사이즈를 5x10 (실제 사이즈 5x11). F = 0 -> 도트 사이즈를 5x7 (실제 사이즈 5x8).

CLCD 명령모드 CG RAM Address set CG RAM의 주소를 지정한다.

CLCD 명령모드 DD RAM Address set DD RAM의 주소를 지정한다. DD RAM : CLCD의 각 자리에 표시되는 문자 저장장소.

CLCD 명령모드 BF / Addr RD BF(Busy flag) AC 모듈이 현재 동작 중 이여서 명령어를 받을 수 있는지 없는지 검출. BF = 1 -> 현재 동작 중(명령어 수신 불가). BF = 0 -> 대기중(명령어 수신 가능). AC 현재 처리하고 있는 주소의 값을 출력함.

CLCD 명령모드 CG/DD RAM Data WR CG/DD RAM Data Rd DDRAM에 입력하는 DATA값은 표에 주어져있지만 ASCII코드와 호환성이 있다.(0x20~0x7d)

CLCD 기본 구동법 CLCD초기화 원하는 좌표로 이동. 표시할 문자를 출력 초기화 후 좌표데이터와 문자데이터만 전송하면 문자가 출력됨

CLCD 초기화(8bit) LCD 모듈에 전원을 인가한다. 전원을 인가후 30ms이상 대기 전원인가 LCD 모듈에 전원을 인가한다. 전원을 인가후 30ms이상 대기 Function set Function set명령을 수행한다. Display on/off Display on/off control을 수행한다. Entry mode set Entry Mode set명령을 수행한다. 전원 인가후 30ms정도 대기하는 이유는 컨트롤러가 내부적인 준비를 마치고 동작이 되려면 15~30ms가 필요하기 때문이다. Function set의 명령을 4.1ms, 100us정도씩 지연을 하면서 3회정도 반복한다.(명령 반복중 Busy check하면 안됨 ). 반복하여 입력하는 이유는 확실한 초기화를 위해서이다.

CLCD 화면 출력 DDRAM ADDR 송신 Busy check DDRAM DATA 송신 위와 같이 DDRAM ARRD을 송신하고 DATA를 송신하면 원하는 위치에 원하는 문자를 출력할 수 있다. ADDR의 송신없이 DATA만 송신하면 현제 커서의 위치에 문자가 출력이 된다. 커서를 shift하게 설정하였다면 처음에 주소를 송신한뒤 DATA만 송신하면 자동으로 주소가가 shift되어 출력된다.

CLCD DDRAM ADDR 기본적으로 왼쪽의 상단부가 00임. 이것은 거의 모든 CLCD가 동일함. ADDR값을 입력할때 7번 bit는 high상태 00,40,14,54 7번bit를 High상태로 한 뒤 주소값(4x20)

실제 작성 프로그램 핀배열. MCU - ATMEGA128 프로그램 - AVR STUDIO LCD - PMC2004E-SBLW D포트의 0번이 R/W 1번이 Rs에 연결됨 LCD측 DB 0~7번핀 -> AVR의 C포트의 0~7번과 연결. MCU - ATMEGA128 프로그램 - AVR STUDIO LCD - PMC2004E-SBLW - 4line x 20 , 5*11dot 의 lcd 모듈.

실제 초기화 프로그램 void lcd_init() //LCD초기화 함수 { PORTD=0x00; delay_ms(30); PORTC=0x38; //0b0011 1000 PORTC=0x38; busy_chk(); PORTC=0x01; //0b0000 0001 PORTC=0x0c; //0b0000 0110 PORTC=0x06; //0b0000 1100 } D포트의 0번이 R/W 1번이 Rs에 연결되어있고 데이터 비트인 DB0~7번핀은 C포트의 0~7번과 연결.

Busy check void busy_chk() { PORTD=0x01; // R/W핀을1로set DDRC=0x00; // 데이터 입력모드로. delay_us(40); // 최소시간지연 while(PINC&0x80); // BF가 0이 될때까지 대기 DDRC=0xff; // BF가 0이 된후 출력으로 PORTD=0x00; // 제어상태로 전환 }

문자 출력 void lcd_put(char ch) { PORTD=0x02; //문자데이터를 쓰기 위해 DDRAM WR모드로 전환 PORTC=ch; //입력 받은 문자를 출력함(ASCII) busy_chk(); //문자 출력 후 처리 될 때까지 기다렸다가 제어를 해야 함. }

원하는 위치로 이동 void gotoxy(unsigned char x,unsigned char y) //원하는 좌표값을 매개변수로 받음. { char xy[4]={0x80,0xc0,0x94,0xd4}; //문자열의 첫번째 주소를 배열로 생성 DDRC=0xff; //C,D포트를 출력으로 설정. DDRD=0xff; PORTD=0x00; //좌표값 입력위해 RS, R/W에 0을 입력. PORTC=(xy[y]+x); //좌표값을 주소값으로 변환하여 출력. busy_chk(); //처리확인. delay_ms(100); //처리후 100ms의 시간을 주어 확실히 함. }

전체소스. void busy_chk(){ #include<avr/io.h> PORTG=0x02; void LCD_bcd(unsigned int dec){ int a; char bcd[4]; bcd[3]=(dec/1000); bcd[2]=(dec/100)-(bcd[3]*10); bcd[1]=(dec/10)-(bcd[3]*100)-(bcd[2]*10); bcd[0]=dec%10; for(a=3;a>=0;a--) { lcd_put(bcd[a]+48); } void lcd_init(){ delay_ms(30); PORTC=0x38; busy_chk(); PORTC=0x01; PORTC=0x06; PORTC=0x0f; PORTC=0x80; void busy_chk(){ PORTG=0x02; DDRC=0x7f; delay_us(100); while(PINC&0x80); DDRC=0xff; PORTG=0x00; } void lcd_put(char ch){ PORTG=0x01; PORTC=ch; busy_chk(); void gotoxy(unsigned char x,unsigned char y){ char xy[4]={0x80,0xc0,0x94,0xd4}; DDRG=0xff; PORTC=(xy[y]+x); delay_ms(100); void lcd_string(unsigned char *ch){ int i; for(i=0;ch[i]!=0x00;i++) { lcd_put(ch[i]); void lcd_clear(){ PORTC=0x01;