차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판 | |||
| clcd:index [2026/02/06 00:37] – [아두이노에서 CLCD 사용] admin | clcd:index [알 수 없는 날짜] (현재) – 제거됨 - 바깥 편집 (알 수 없는 날짜) 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| - | ====== CLCD 캐릭터 LCD모듈 ====== | ||
| - | 본 제품은 시리얼 방식으로 LCD를 제어할 수 있는 “시리얼 캐릭터 LCD 모듈”입니다. 기존의 LCD모듈은 12가닥 정도의 많은 선과 | ||
| - | 복잡한 제어 방식을 이해해야만 사용할 수 있는 “병렬접속” 방식이었지만, | ||
| - | 송신하여, | ||
| - | 제품입니다. | ||
| - | |||
| - | ===== 제품의 특징 ===== | ||
| - | |||
| - | * 16 by 2라인부터 20 by 4라인까지 다양한 사이즈 | ||
| - | * UART 또는 I2C(CUNET((CUNET와 I2C는 동일합니다.))) 인터페이스 방식 | ||
| - | * 위치조정(LOCATE) 및 화면 클리어(CLS), | ||
| - | |||
| - | ===== 제품의 외형 ===== | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | CLCD 모듈의 뒷면에는 콘트롤보드가 부착되어 있습니다. 이 콘트롤 보드가 CUNET(I2C) 신호를 받아서 LCD 모듈을 구동합니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | ===== 연결 방법 ===== | ||
| - | |||
| - | CLCD는 CUNET(I2C)통신 이외에도 RS232신호를 받을 수 있도록 되어 있습니다. RS232에는 2종류의 콘넥터가 있는데, 3핀 콘넥터 | ||
| - | 5V레벨의 RS232신호를 연결하는 콘넥터입니다. PC와 직접 연결하고자 할 때에는 +/- 12V 레벨의 RS232신호를 연결하는 4핀 | ||
| - | 콘넥터를 사용합니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | |||
| - | 딥스위치로 보레이트 및 I2C 슬레이브 어드레스를 설정할 수 있습니다. DIP스위치 중 4번 스위치는 사용하지 않는 스위치입니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | |||
| - | ===== 동작방법 ===== | ||
| - | |||
| - | I2C와 RS232는 동시에 동작하도록 되어 있으나, 실제로 사용할 때에는 둘 중 하나만 연결해서 사용하시기 바랍니다. | ||
| - | |||
| - | 다음은 CLCD의 명령코드 표입니다. | ||
| - | |||
| - | ^명령 ^전송예 (16진) ^바이트 수 ^수행시간 ^설 명^ | ||
| - | |ESC ’C’ |1B 43 |2 |15mS |화면을 클리어 합니다. 이 명령 수행 후 반드시 15mS를 딜레이 해 주어야 합니다.| | ||
| - | |ESC ‘S’ |1B 53 |2 | |커서표시를 ON합니다.(디폴트)| | ||
| - | |ESC ‘s’ |1B 73 |2 | |커서표시를 OFF합니다.| | ||
| - | |ESC ‘B’ |1B 42 |2 | |백라이트를 ON합니다. (디폴트)| | ||
| - | |ESC ‘b’ |1B 62 |2 | |백라이트를 OFF합니다.| | ||
| - | |ESC ‘H’ |1B 48 |2 | |LOCATE 0, | ||
| - | |ESC ‘L’ |1B 4C x y |4 |100 uS |커서위치를 변경합니다.| | ||
| - | |ESC ‘D’ |1B 44 code 8byte |11| | 캐릭터코드 8부터 15까지 8개 영역은 유저가 정의할 수 있는 영역입니다.\\ | ||
| - | |ESC ‘K’ |1B 4B X Y X Y data 0 | | |문자를 표시합니다. 같은 X, Y 좌표를 두번 보냅니다. 이후 문자코드를 보냅니다. \\ 맨끝에는 0을 보냅니다. | | ||
| - | |||
| - | ===== CUBLOC에서의 사용방법 ===== | ||
| - | |||
| - | 다음은 CB280모듈에서 CLCD모듈을 CUNET(I2C)으로 접속하여 표시하는 샘플 프로그램입니다. 본 프로그램을 실행시키면 LCD상에 숫자가 증가되는 상황을 볼 수 있습니다. | ||
| - | |||
| - | <code xbasic> | ||
| - | Const Device = Cb280 | ||
| - | Set Display 2,0,0,50 | ||
| - | Dim i As Integer | ||
| - | Delay 100 ' 최초 딜레이 (CLCD 모듈이 START UP 하는 시간을 기다려줌) | ||
| - | Cls | ||
| - | Delay 200 ' CLCD 가 클리어 하는데 걸리는 시간을 기다림 | ||
| - | Csroff | ||
| - | Clcdout 5,2, " | ||
| - | Delay 500 | ||
| - | Cls | ||
| - | Delay 100 | ||
| - | Do | ||
| - | Incr i | ||
| - | | ||
| - | | ||
| - | delay 100 | ||
| - | Loop | ||
| - | </ | ||
| - | |||
| - | ===== 캐릭터정의 사용방법 ===== | ||
| - | |||
| - | CLCD에는 유저정의 캐릭터를 사용할 수 있습니다. 화살표등과 같은 특수문자를 유저가 임의대로 정의하여 사용하실 수 | ||
| - | 있습니다. 코드8부터 15까지 총 8개의 캐릭터를 정의하여 사용할 수 있습니다. | ||
| - | |||
| - | <code xbasic> | ||
| - | Const Device = CB320 | ||
| - | Set Display 2,0,0,80 | ||
| - | Wait 100 | ||
| - | Cls | ||
| - | Wait 100 | ||
| - | Print 0x1b," | ||
| - | Print 0x1b," | ||
| - | Locate 0,0 ' | ||
| - | Print " | ||
| - | Print 8,9 ' 정의한 캐릭터를 표시 | ||
| - | Do | ||
| - | Loop | ||
| - | </ | ||
| - | |||
| - | 정의가 끝난후에는 해당 코드를 보내면, 정의된 캐릭터가 표시됩니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | 위 그림처럼 5 x 8 캐릭터를 정의하실 수 있습니만, | ||
| - | 8번째 줄은 커서가 위치해야되므로, | ||
| - | |||
| - | |||
| - | ===== MCU 에서 C 언어를 이용하여 CLCD 사용 ===== | ||
| - | |||
| - | 다른 MCU, 예를들면 PIC, AVR등에서도 CLCLD를 사용하실 수 있습니다. | ||
| - | 다음은 CCS-C (CCS 사의 PIC전용 C 컴파일러)를 사용해서 구동한 예입니다. (디바이스는 PIC16C711, 클록은 4MHz 사용, RS232전송 | ||
| - | 방법) | ||
| - | |||
| - | <code c> | ||
| - | # | ||
| - | #use delay(clock=4000000) // 4MHz 사용 시 | ||
| - | #use rs232(baud = 19200, xmit = PIN_B1, rcv=PIN_B0) | ||
| - | #byte TRISB = 0x85 | ||
| - | #byte PORTB = 5 | ||
| - | void main() | ||
| - | { | ||
| - | char i; | ||
| - | TRISB = 1; | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | i++; | ||
| - | } | ||
| - | | ||
| - | </ | ||
| - | |||
| - | ===== 아두이노에서 CLCD 사용 ===== | ||
| - | |||
| - | 다음은 FA-DUINO (산업용 아두이노)에서 CLCD를 사용한 예입니다. | ||
| - | |||
| - | <code c> | ||
| - | #define STATE_PIN 13 // RS232 포트 확인용입니다. | ||
| - | #define _DIR unsigned char // 자료형 재정의. | ||
| - | |||
| - | /* 함수 프로토타입 부분입니다. */ | ||
| - | void commandSet(char code); | ||
| - | void Cls(void); | ||
| - | void Csron(void); | ||
| - | void Csroff(void); | ||
| - | void Locate(_DIR x, _DIR y); | ||
| - | void Clcdout(_DIR x, _DIR y, String data); | ||
| - | /* ************************************** */ | ||
| - | |||
| - | void setup() { | ||
| - | pinMode(STATE_PIN, | ||
| - | digitalWrite(STATE_PIN, | ||
| - | Serial1.begin(19200); | ||
| - | while(!Serial1); | ||
| - | digitalWrite(STATE_PIN, | ||
| - | |||
| - | Cls(); // CLCD를 초기화하고, | ||
| - | Csroff(); // 커서출력을 비활성합니다. | ||
| - | |||
| - | /* 고정문구를 출력합니다. */ | ||
| - | Clcdout(1, | ||
| - | Clcdout(1, | ||
| - | /* ************************ */ | ||
| - | } | ||
| - | |||
| - | void loop() { | ||
| - | // put your main code here, to run repeatedly: | ||
| - | static unsigned long tmpd = 0x00; // 임시변수입니다. | ||
| - | |||
| - | /* 500ms마다 1씩 증가하는 값을 출력합니다. */ | ||
| - | |||
| - | Clcdout(9, | ||
| - | delay(500); | ||
| - | |||
| - | /* ****************************** */ | ||
| - | | ||
| - | } | ||
| - | |||
| - | /* 함수 정의부 */ | ||
| - | void commandSet(char code) | ||
| - | { | ||
| - | Serial1.print((char)0x1b); | ||
| - | Serial1.print((char)code); | ||
| - | } | ||
| - | |||
| - | void Cls() | ||
| - | { | ||
| - | commandSet(0x43); | ||
| - | delay(15); // 15ms 대기해줍니다. | ||
| - | } | ||
| - | void Csron() | ||
| - | { | ||
| - | commandSet(0x53); | ||
| - | } | ||
| - | void Csroff() | ||
| - | { | ||
| - | commandSet(0x73); | ||
| - | } | ||
| - | void Locate(_DIR x, _DIR y) | ||
| - | { | ||
| - | commandSet(0x4c); | ||
| - | Serial1.print((char)x); | ||
| - | Serial1.print((char)x); | ||
| - | Serial1.print((char)y); | ||
| - | Serial1.print((char)y); | ||
| - | delayMicroseconds(100); | ||
| - | } | ||
| - | void Clcdout(_DIR x, _DIR y, String data) | ||
| - | { | ||
| - | commandSet(0x4b); | ||
| - | Serial1.print((char)x); | ||
| - | Serial1.print((char)y); | ||
| - | Serial1.print((char)x); | ||
| - | Serial1.print((char)y); | ||
| - | |||
| - | Serial1.print(data); | ||
| - | Serial1.print((char)0x00); | ||
| - | } | ||
| - | |||
| - | </ | ||
| - | |||
| - | [[: | ||
