작은 시스템을 개발하다보면, 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; 

clcd.h
0.00MB
clcd2x16_4bits.c
0.01MB

 

 

'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

+ Recent posts