작은 시스템을 개발하다보면, UI로 사용하는게 다음 순서정도 된다.
- LED : 색상 또는 깜빡임으로 현재 상태를 표시해준다.
- FND : 2.. 4.. 8 정도의 숫자로 온도, 습도 등 현재 값을 표시해준다.
- Char LCD : 영문 char lcd로 2x16, 4x16 등 간단한 몇 몇 페이지별 상태를 표시해준다.
- 그다음은..
가끔 외부 LCD를 넣는 경우가 있다.
여기서는 Char LCD를 사용하는 경우에.. 그것도 시스템에 직접 LCD모듈을 연결하여 사용하는 경우에 필요한 LCD 모듈을 설명한다.
LCD(char이던 graphic 이던)는 구조적으로 다음과 같다.
- 내부에 메모리가 있다. 화면에 표시할 내용을 LCD자체에 가지고 있다.
즉, 화면에 표시하려면 LCD내부의 해당 메모리에 써주면 된다.
- 읽고/쓰기 위해서 명령과 데이터가 구분되기도 한다.
가령, 1번 위치에 쓴다면,
a) 현재 위치(주소)를 1로 설정하는 명령과,
b) 현재 위치에 쓸 데이터를 쓰는 명령으로 해야한다.
... 더 설명하기 귀찮다. -_-; 나머지는 궁금하면 데이터시트나 다른사람 설명을 보시라.
사용방법은 아래와 같다.
#include "clcd.h"
main() {
...
clcd_init();
...
clcd_puts(0, "123456789..");
clcd_puts(1, "abcdefghi..");
}
LCD는 회로상에서 RS, R/W, E/D 및 데이터라인(여기서는 4개)이 연결되어야 한다.
코드상에서 관련 내용은 회로에 맞게 적절히 수정해주고 사용하여야 한다.
clcd2x16_4bits.c에 다음부분을 회로에 맞게 수정하시라.
#define LCD_RS_COMMAND() _CLR(PORTC, 0)
#define LCD_RS_DATA() _SET(PORTC, 0)
#define LCD_READ() _SET(PORTC, 1)
#define LCD_WRITE() _CLR(PORTC, 1)
#define LCD_ENABLE() _SET(PORTC, 2)
#define LCD_DISABLE() _CLR(PORTC, 2)
// 코드상에서 데이터라인으로 사용되는 PORTC 3,4,5,6번 핀을 사용하는 모든 코드를 일일이 수정해주어야 한다.
// 아래와 같은 코드를 찾아서 회로에 맞게 수정해야함..
PORTC &= ~078;
PORTC |= .... 0x78;
'AVR firmware' 카테고리의 다른 글
AVR AD7792 SPI 인터페이스 모듈 (0) | 2019.05.03 |
---|---|
AVR FND display 모듈 (0) | 2019.05.03 |
AVR DS1302 clock I2C 모듈 (0) | 2019.05.02 |
AVR DAC7512 SPI 모듈 (0) | 2019.05.01 |
AVR printf, scanf 사용하기 (0) | 2019.05.01 |