Friday, December 5, 2014

Microtips Technology MTG-S12232 Graphic LCD

2x16 Character 처럼 생겼지만 122x32 해상도의 작은 Graphic LCD입니다. 다른것들과 달리 LCD의 Pin 7(CL)은 외부 Display Synchronous Signal 입력핀입니다.  2KHz Square wave 만 입력하면 되므로, MCU의 Timer 이용하는 Software적인 방법,  555 Timer를 이용하는 Hardware적인 방법중 편리한 방법을 사용하면됩니다.
Microtips Technology MTG-S12232

Feature:

  1. LCD Type : STN (사진은 실물보다 진하게 나오더군요, 참고하세요)
  2. Resolution : 122 x 32.
  3. EPSON SED1520/21 Controller/Driver.
  4. 8-Bit Parallel, 68-family MPU Interface.
  5. LED Backlight (Yellow Green)
  6. 2KHz 외부 External Clock이 필요합니다.
  7. 엽기적인 Datasheet  , 한페이지 건너 잘못된 곳 발견(8,11,12,16,20 Page)
  8. 판매자정보
Outline

Interface
  1. Pin No. 2(VDD) 3.3V ~ 5V 까지 동작됩니다(3.3V는 화면에 미세한 떨림 발생)
  2. Pin No. 3(VEE) Datasheet상에는 N,C로 표기 되어있으나 3.3V 구동시에만 N.C이며 5V 구동시 반고정 저항을 통해 Contrast 조정이 필요합니다, 아래 Schematic 참고하세요
  3. Pin No. 7(CL)은 아래 2KHz 외부 External Clock 참고 하세요.
  4. Pin No. 18(RES) VCC에 바로 연결 하시면 Port 1개를 줄일 수 있습니다.
  5. Pin 19,20(LED Backlight)은 12R 저항  2개가 병렬(6R)로 부착 되어있습니다, 5V 사용시 바로 연결하시면 됩니다(120mA)
MTG-S12232 Pin Assigment

2KHz External Clock을 만드는 2가지 방법

정확한 2KHz 만들려고 노력 할 필요는 없습니다, 2KHz를 기준으로 Frame Rate(65Hz ~ 75Hz)에 따라 조금 변화를 주어도 괜잖습니다.
Relationship between external clocks (fCL) and frames(SED1520 Datasheet)

Timer1 CTC Mode를 이용한 Software 적인 방법

CTC Mode OC1A output을 이용하면 따로 인터럽트 루틴을 작성하지 않아도 PB1(OC1A) 에서 2KHz Square Wave가 나오므로 간편합니다.
Atmega328p Datasheet

// CODE
#define LCD_CL_PORT         PORTB   // External Clock Output (typ. 2KHz)
#define LCD_CL_DDR          DDRB
#define LCD_CL_PIN          PB1     // OC1A, Output Compare Match output

#define LCD_fCL             2000    // External Clock (typ. 2KHz)
#define LCD_fN                 1    // The N variable represents the prescaler factor (1, 8, 64, 256, or 1024).
#define LCD_fOCnA          (F_CPU/( 2 * LCD_fN * (1 + LCD_fCL )))  

static void init_timer1(void)
{
  TCCR1A  = _BV(COM1A0);             // Toggle OC1A/OC1B on Compare Match(toggle the OC1A output line)
  TCCR1B  = _BV(WGM12)|_BV(CS10);    // CTC Mode, clkI/O/1 (No prescaling)
  TIMSK1  = _BV(OCIE1A);             // Enable Timer/Counter1 interrupts.
  OCR1A   =  LCD_fOCnA;              // External Clock (typ. 2KHz)
}
OC1A Pin Out

555 Timer를 이용한 Hardware 적인 방법

MCU의 Port가 부족하거나, Timer 이용이 어렵다면 555 Timer를 이용하세요,  계산방법은 인터넷에서 쉽게 찾으실수 있습니다.
555 Timer Calculator - House of Jeff
2.058KHz (54.7% Duty) Sqare wave

Schematic

Atmega328p 20MHz

Download



If you have any questions, please feel free to ask.
Enjoy!

Errata 

2014.12.25
Revision of the schematic, Fix Wrong Pin# (A0, CS1,CS2,E,RW, RST).
회로도상에 잘못표기된 Pin #(A0, CS1,CS2,E,RW, RST ) 수정후 반영.

2 comments:

  1. 안녕하세요.

    좋은자료 감사합니다.

    sed1520.h의 제어용 핀들의 순서가 올려주신 회로도의 순서와 역순인 것을 발견하였습니다.

    // From the header sed1520.h From the schematic
    #define LCD_A0_PIN PC0 // PC5
    #define LCD_CS1_PIN PC1 // PC4
    #define LCD_CS2_PIN PC2 // PC3
    #define LCD_E_PIN PC3 // PC2
    #define LCD_RW_PIN PC4 // PC1
    #define LCD_RST_PIN PC5 // PC0


    미처 확인을 못하고 연결했더니 파워 서플라이 5 V, 500 mA 에서 C.C.가 떠서 얼른 껏습니다. ^^;

    다행히 핀설정 수정 후에 다시 모듈은 정상동작합니다.

    연말 잘 보내세요~

    SW. Lee

    ReplyDelete
    Replies
    1. 안녕하세요?

      회로도상에 핀넘버가 반대로 되어있더군요, 코드가 맞습니다.
      잘못된 회로도 수정후 교체 하였습니다,
      알려주셔서 감사합니다.

      Happy New Year!~

      Delete