AVR firmware

AVR char lcd (2x16) 4bits 모듈

tchan 2019. 5. 2. 11:08

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