※ 주의사항 ※
본 블로그는 수업 내용을 바탕으로 제가 이해한 부분을 정리한 블로그입니다.
본 내용을 참고로만 보시고, 틀린 부분이 있다면 지적 부탁드립니다!
감사합니다😁
안녕하세요!!
오늘은 아래와 같은 내용을 확인해보겠습니다.
LCD Display 사용법
LiquidCrtystal lcd 함수
lcd.begin 함수
lcd.setCursor 함수
기타 lcd 관련 함수들
1. TEXT LCD Diplay(1602A)
1) 16 x 2 글자가 표시되는 디스플레이 모듈
2) 전면부의 16개 단자와 마이크로컨트롤러간에 연결해서 사용
- VSS, VDD : 전원부
- V0, RS, RW, E : 제어신호부
- D0, D1, D2, D3, D4, D5, D6, D7 : 데이터부
- A, K : 밝기 조정
3) 핀이 너무 많이 사용되서 비효율적이라 후면부에 I2C 인터페이스 보드 추가 부착
※ I2C란? 2개의 신호선으로 송수신 하는 방식!
- 장점 : 외부 결선 축소 / - 단점 : 비용 증가, 시리얼 통신으로 전송속도 저하
4) 아두이노 대부분의 LCD 모듈은 히타찌사의 HD44780 IC가 사용된다.
※ HD44780 IC 및 초기화 관련 내용들은 추후 Atmega를 배우는 과정에서 상세히 다룰예정이라고 합니다.
Coming Soon!!😁
2. 아두이노 Text LCD 관련 함수 및 결선도
2-1. 결선도 및 PIN 별 기능
1) RS PIN : Register Selection, 값에 따라 전송하는 형식이 달라진다.
- LOW : Instruction Register(명령어)를 전송한다.
- HIGH : Data Register(데이터)를 전송한다.
2) RW PIN : 값에 따라 읽기, 쓰기 모드가 된다.
- LOW : Write(쓰기) 모드 → 기본값, 자주사용하는 모드
- HIGH : Read(읽기) 모드
※ RW PIN의 경우 주로 Write모드를 사용하기 때문에 GND에 연결해서 사용한다.
3) E : Start data read / write
4) D0~D7 : 데이터를 전송하고 받는 핀, 4비트 모드에선 D4~D7만 사용하고 D0~D3은 사용하지 않는다.
2-2. TEXT LCD 관련 함수 및 기본 코드 Sample
1) 아두이노에서 LCD Display를 사용하기 위해선 다음과 같은 헤더파일을 선언해야 한다.
#include <LiquicdCrystal.h>
2) LiquidCrystal lcd() 함수 : 비트별 인터페이스에 따라 사용하는 핀이 달라지고 파라메타 값도 달라진다.
- 4 Bit 인터페이스 사용 PIN : RS, E, D4, D5, D6, D7
- 8 Bit 인터페이스 사용 PIN : RS, RW, E, D0, D1, D2, D3, D4, D5, D6, D7
3) 자주 사용하는 lcd 관련 함수
- lcd.begin(X,Y) : Y(행)* X(열) 규격을 가지는 lcd를 초기화 한다. // Y가 열이고 X가 행을 나타낸다.(햇갈림주의)
- lcd.setCursor(X,Y) : 커서를 해당 위치 Y(행), X(열) 로 이동한다.
- lcd.write() : lcd에 글자를 출력한다. (아스키 값)
- lcd.print() : lcd에 숫자나 문자열을 출력한다.
- lcd.scrollDisplayLeft / lcd.scrollDisplayRight : LCD 화면 내용을 왼쪽이나 오른쪽으로 한칸 이동한다.
※ 이밖에 표에 있는 모든 함수 앞에는 'lcd.'을 붙여서 사용해야 한다.
3. 응용예제
1) 문제
2) 코드
Line 1 : LCD Display를 사용하기 위한 헤더파일
Line 2 : 예제 3을 표시하기 위한 배열
Line 3 : LCD Display를 사용하기 위한 함수(초기선언 개념)
Line 6 ~ 9 : 예제 1번 문제에 대한 코드
Line 10 ~ 11 : 예제 2번 문제에 대한 코드
Line 15 ~ 19 : 예제 3번 문제에 대한 코드
Line 20 ~ 27 : 예제 4번 문제에 대한 코드
Line 28 ~ 33 : 예제 5번 문제에 대한 코드
Line 34 ~ 41 : 예제 6번 문제에 대한 코드
4. TEXT LCD 모듈에 사용자 정의 문자 출력하기
- 16 x 2 글자가 표시되는 LCD 모듈에서 1글자는 5 x 8의 배열로 이루어져 있다.
- 즉, 5 x 8 배열을 생성해서 배열 안에 바이너리(2진) 값으로 출력하고자 하는 모양을 형상화해서 바이너리 값으로 출력하면 알파뱃이나 숫자가 아닌 한글 등 특수한 문자도 출력이 가능하다.
4-1. 한글 'ㅇ'을 Byte 행렬로 형상화한 코드
- 한글이나 특수한 모양을 본인이 직접 쉽게 커스텀하고 관련 바이너리 행렬을 쉽게 구할수 있는 사이트를 참고하면 더욱 쉽고 빠르게 사용자 정의 문자를 출력할 수 있습니다!!
아래 사이트를 참고하세요!😁
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
https://maxpromer.github.io/LCD-Character-Creator/
4-2. 한글 '안녕'을 형상화 해서 오른쪽으로 이동
1) 사용 함수
- lcd.createrChar(x, y) : y[]의 데이터로 가지는 새로운 문자를 x번지에 특수 문자로 정의하여 저장한다.
※ y는 반드시 바이너리값으로 저장된 8x5행렬로 저장되어야 합니다.
- lcd.setCursor(x, y) : y * x 위치에 커서를 이동합니다.
(lcd.write 함수보다 앞에 와서 특수문자를 입력할 위치를 지정해줍니다.)
- lcd.write(x) : lcd.creater 함수로 저장한 특수문자를 번지주소로 불러서 출력합니다.
4-3. 2개의 스위치를 이용해서 서로 각기 다른 글자 출력하기(응용)
지난 시간에 배운 switch case 문과 LCD Display 출력을 결합해서 서로 각기 다른 문자를 출력해보았습니다.
댓글