|
1 |
| -# 📌 |
| 1 | +# 📌 text LCD |
| 2 | + |
| 3 | +LCD : 액정(Liquid Crystal)을 이용해 문자 출력 |
| 4 | + |
| 5 | +- 16핀 = 제어3 + 데이터8 + 전원5 |
| 6 | + |
| 7 | +  |
| 8 | + |
| 9 | +  |
| 10 | + |
| 11 | +- 제어핀 |
| 12 | + |
| 13 | + - 4. RS : 데이터 제어(RS=HIGH), 명령 제어(RS=LOW) |
| 14 | + |
| 15 | + - 5. R/W : 읽기(R/W=HIGH), 쓰기(R/W=LOW) |
| 16 | + |
| 17 | + - 6. E : enable(처리시작)하도록 신호 |
2 | 18 |
|
3 | 19 | ### ✔ 연결방법
|
4 | 20 |
|
| 21 | + |
| 22 | + |
| 23 | +- Vss : 그라운드 연결 |
| 24 | + |
| 25 | +- Vcc : 전원 연결 |
| 26 | + |
| 27 | +- RS : 출력핀 |
| 28 | + |
| 29 | +- R/W : write로만 사용 -> GND |
| 30 | + |
| 31 | +- 상위 4비트만 출력핀에 연결 |
| 32 | + |
| 33 | +- LED 백라이트 전원 연결 |
5 | 34 |
|
6 | 35 | <br><br>
|
7 | 36 |
|
8 |
| -### ✔ |
| 37 | +### ✔ 제어 방법 |
| 38 | + |
| 39 | +1. **"LiquidCrystal"**라이브러리 |
| 40 | + |
| 41 | +2. 객체 생성 |
| 42 | + |
| 43 | + LiquidCrystal lcd(44, 45, 46, 47, 48, 49); |
| 44 | + |
| 45 | +3. 라이브러리 초기화 |
| 46 | + |
| 47 | + lcd.begin(열, 행) |
| 48 | + |
| 49 | + lcd.begin(16, 2) : 16열 2행 |
| 50 | + |
| 51 | + |
| 52 | +<br><br> |
| 53 | + |
| 54 | +### ✔ 출력 함수 |
| 55 | + |
| 56 | +- lcd.write() |
| 57 | + |
| 58 | +- lcd.print() |
| 59 | + |
| 60 | +- lcd.clear() : 화면 지움 |
| 61 | + |
| 62 | +- lcd.setCursor(col, row) : 커서 위치 |
| 63 | + |
| 64 | + 16열 2행 = (0,0) ~ (15,1) |
| 65 | + |
| 66 | +- 🔎 write / print |
| 67 | + |
| 68 | + print(1) : 1, write(1) : 아스키코드 |
9 | 69 |
|
10 | 70 |
|
11 | 71 | <br><br>
|
12 | 72 |
|
13 | 73 | ### ✔ LAB
|
14 | 74 |
|
| 75 | +- Hello World 표시 |
| 76 | + |
| 77 | + ```c |
| 78 | + #include <LiquidCrystal.h> |
| 79 | + |
| 80 | + // 핀번호 (RS, E, DB4, DB5, DB6, DB7) |
| 81 | + LiquidCrystal lcd(44, 45, 46, 47, 48, 49); // LCD연결 |
15 | 82 |
|
| 83 | + void setup() { |
| 84 | + lcd.begin(16, 2); |
| 85 | + lcd.print("Hello World!"); |
| 86 | + } |
| 87 | + |
| 88 | + void loop(){} |
| 89 | + ``` |
| 90 | +- 임의의 위치 표시 |
| 91 | + |
| 92 | + ```c |
| 93 | + #include <LiquidCrystal.h> |
| 94 | + |
| 95 | + LiquidCrystal lcd(44, 45, 46, 47, 48, 49); |
| 96 | + |
| 97 | + void setup(){ |
| 98 | + lcd.begin(16, 2); // LCD 초기화 |
| 99 | + lcd.setCursor(0,0); |
| 100 | + lcd.write('1'); |
| 101 | + |
| 102 | + lcd.setCursor(5,0); |
| 103 | + lcd.write('2'); |
| 104 | + |
| 105 | + lcd.setCursor(0, 1); |
| 106 | + lcd.write('3'); |
| 107 | + |
| 108 | + lcd.setCursor(5,1); |
| 109 | + lcd.write('4'); |
| 110 | + } |
| 111 | + |
| 112 | + void loop(){} |
| 113 | + ``` |
| 114 | +- 사용자 정의 문자 |
| 115 | + |
| 116 | +  |
| 117 | + |
| 118 | + - void createChar(위치, 문자데이터) |
| 119 | + |
| 120 | + ```js |
| 121 | + #include <LiquidCrystal.h> |
| 122 | + // 핀 번호 (RS, E, DB4, DB5, DB6, DB7) |
| 123 | + LiquidCrystal lcd(44, 45, 46, 47, 48, 49); // LCD 연결 |
| 124 | + // 사용자 정의 문자 데이터 |
| 125 | + byte user1[8] = { B00000, B10001, B00000, B00000, B10001, B01110, B00000, B00000 }; |
| 126 | + byte user2[8] = { B00000, B10001, B01010, B10001, B00000, B10001, B01110, B00000 }; |
| 127 | + void setup() { |
| 128 | + lcd.createChar(0, user1); // 사용자 정의 문자 1 생성 |
| 129 | + lcd.createChar(1, user2); // 사용자 정의 문자 2 생성 |
| 130 | + lcd.begin(16, 2); // LCD 크기 설정 |
| 131 | + lcd.clear(); // LCD 화면 지우기 |
| 132 | + lcd.write(byte(0)); // 사용자 정의 문자 1 출력 |
| 133 | + lcd.setCursor(0, 1); // 두 번째 행으로 이동 |
| 134 | + lcd.write(byte(1)); // 사용자 정의 문자 2 출력 |
| 135 | + } |
| 136 | + void loop() { } |
| 137 | + |
| 138 | + ``` |
16 | 139 |
|
17 | 140 | <br><br>
|
18 | 141 |
|
19 |
| -### 🔎 정리 |
| 142 | +### ✔ Text LCD 내부구조 |
| 143 | + |
| 144 | + |
| 145 | + |
| 146 | +- 하나의 모듈 = LCD panel + 제어기(controller) |
| 147 | + |
| 148 | +- 데이터 버스로 데이터 이동 : 전송된 문자 데이터 지정된 방식으로 출력 |
| 149 | + |
| 150 | + - DD RAM |
| 151 | + |
| 152 | + : LCD화면과 1:1 대응 |
| 153 | + - CG RAM |
| 154 | + |
| 155 | + : LCD에 Display |
| 156 | + |
| 157 | + - CG ROM |
| 158 | + |
| 159 | + : LCD화면에 display될 글자데이터 저장하고 있는 ROM |
| 160 | + |
| 161 | + - controller |
| 162 | + |
| 163 | + : display 문자코드를 받아서 DDRAM 에 write, display변경 명령 처리, 주기적으로 DDRAM 데이터 읽어서 |
| 164 | + 그에 따른 글자를 ROM에서 읽어와 display하는 일 수행 |
| 165 | + |
| 166 | + - Power회로 |
| 167 | + |
| 168 | + : High level 신호를 만드는 Boost DC-DC converter; 필요한 여러가지의 전압을 만들어 전압분배회로 등의 |
| 169 | + 전원 회로 |
| 170 | + |
| 171 | + |
| 172 | +<br><br> |
| 173 | + |
| 174 | +### 🔎 정리 |
| 175 | + |
| 176 | +- text LCD |
| 177 | + |
| 178 | + - 액정을 사용한 출력장치 |
| 179 | + |
| 180 | + - 16칸 2줄 |
| 181 | + |
| 182 | + - "LiquidCrystal" 라이브러리 |
| 183 | + |
| 184 | +- 단점 |
| 185 | + |
| 186 | + - 고정된 위치 |
| 187 | + |
| 188 | + - 문자 출력 |
| 189 | + |
| 190 | + - 흑백 |
0 commit comments