|
|
초기화 시퀀스
명령(command) 전송
데이터 전송
타이밍 제어
즉:
👉 “사용 방법을 코드로 구현해야 함”
이게 바로 드라이버입니다.
🔧 실제로 하는 일 (LCD 드라이버 내용)
펌웨어 안에 이런 코드가 들어갑니다:
void lcd_init() { // LCD 초기화 명령 전송 } void lcd_cmd(uint8_t cmd) { // 명령 전송 } void lcd_data(uint8_t data) { // 데이터 전송 } void lcd_print(char* str) { // 문자열 출력 }
👉 이 전체가:
👉 LCD 디바이스 드라이버
🔍 LCD 종류에 따라 차이✔ 1) 단순 캐릭터 LCD (HD44780 계열)
GPIO로 직접 제어
타이밍 맞춰야 함
👉 드라이버 거의 직접 구현
✔ 2) I2C / SPI LCDAVR ── I2C ── LCD
👉 필요:
I2C 드라이버
LCD 명령 처리 코드
✔ 3) 그래픽 LCD / TFT
더 복잡한 명령 구조
프레임버퍼, 좌표 처리 필요
👉 드라이버 더 큼
⚠️ 중요한 포인트
사용자가 흔히 착각하는 것:
👉 “LCD는 그냥 출력 장치니까 드라이버 없어도 되지 않나?”
❌ 아닙니다
👉 LCD는 “프로토콜을 가진 장치”입니다
→ 반드시 제어 코드 필요
🔥 핵심 정리
구성드라이버 필요 여부
| AVR 단독 | ❌ 없음 |
| AVR + LED | ❌ 거의 없음 |
| AVR + LCD | ✅ 필요 |
| AVR + 센서 IC | ✅ 필요 |
💡 한 줄 핵심
👉 LCD는 단순 부품이 아니라 “명령을 이해하는 장치”라서 드라이버가 필요하다
👍 감각적으로 이해
LED → 전기 넣으면 켜짐 → 드라이버 거의 없음
LCD → “명령 줘야 그림 나옴” → 드라이버 필요
원하시면
👉 “HD44780 LCD 실제 초기화 순서”
👉 “I2C LCD 내부 구조 (백팩 모듈)”
이걸 코드 + 회로 기준으로 더 깊게 설명드릴게요.