Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| uif:uif420b:index [2026/02/07 23:13] – admin | uif:uif420b:index [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== UIF420B ======= | ||
| - | 본 제품은 간단한 사용자 인터페이스용 장치입니다. | ||
| - | 20×4 영문 LCD와 7개의 키가 내장되어 있어 기본적인 입력과 출력을 지원합니다. | ||
| - | |||
| - | 일부 현장에서 HMI(휴먼 머신 인터페이스)는 너무 과분한 경우가 있는데, 이때 HMI 대용으로 UIF420B가 적합합니다. | ||
| - | 또한, HMI제품에 비해 내구성이 뛰어나 다양한 환경에서 안정적으로 활용할 수 있습니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | * RS232C 인터페이스 | ||
| - | * 통신방식 : 보레이트 선택 가능 (4800 ~ 115200bps), 8비트, NONE 패리티, 1 스톱비트 | ||
| - | * 전원 전압 : 9~24VDC | ||
| - | * 소비전류 : 1.2W | ||
| - | * 동작 환경 : 0~50C | ||
| - | * 사용습도 : 35~85% (단 결로없는 환경) | ||
| - | * 맴브레인 내구도 : 100,000회 (Force 250gf) | ||
| - | |||
| - | ===== 명칭과 기능 ===== | ||
| - | |||
| - | ^RS232C 핀 ^ 기능 ^ | ||
| - | | 2번 | TX (+/-12V) | | ||
| - | | 3번 | RX (+/-12V) | | ||
| - | | 5번 | GND | | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | * 10: 후면에 보드를 장착할 경우 지지대 연결용 | ||
| - | * 11: 캐릭터 LCD 콘트라스트 조절 | ||
| - | * 12: RS232C통신 연결 포트 | ||
| - | * 13: 사용안함 | ||
| - | |||
| - | |||
| - | {{ : | ||
| - | |||
| - | * 5: SPI커넥터 (사용안함) | ||
| - | * 6: I2C통신 (사용안함) | ||
| - | * 7: 보레이트 조정 DIP스위치 | ||
| - | * 8,9: 전원 연결 (9~24VDC) | ||
| - | |||
| - | ==== Dip스위치 ==== | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | * 4번 : 반드시 OFF | ||
| - | * 5번 : On=부저음 끄기, Off=부저음 켜기 | ||
| - | * 6번 : On=Test모드, | ||
| - | |||
| - | ==== RS232C터미널 블록 단자 연결법 ==== | ||
| - | |||
| - | 제품에 RS232C 터미널 블록이 하나 동봉되어 있습니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | * RX <-- HOST의 TX와 연결 | ||
| - | * TX --> HOST의 RX와 연결 | ||
| - | * 5V 사용안함 | ||
| - | * GND --- HOST의 GND와 연결 | ||
| - | |||
| - | HOST : MSB 또는 큐블록, FADUINO 와 같은 메인장치를 뜻합니다. | ||
| - | |||
| - | 아래 사진처럼 연결하여 사용하실 수 있습니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | |||
| - | ===== 제어 명령 설명 ===== | ||
| - | |||
| - | 화면 문자 표시 방법은 단순합니다. RS232C 인터페이스를 통해 UIF420B로 ASCII코드를 보내면 해당 ASCII코드의 내용이 LCD화면상에 표시됩니다. | ||
| - | |||
| - | 만약 커서위치를 바꾼다던가, | ||
| - | |||
| - | ^ 특수명령 | ||
| - | ^ 캐릭터 커서 On | ESC S | 커서를 On 합니다. | ||
| - | ^ 캐릭터 커서 Off | ESC s | 커서를 Off 합니다. | ||
| - | ^ LCD 지우기 | ||
| - | ^ 백라이트 ON/OFF | ESC BL # | 백라이트를 ON또는 OFF합니다. #위치에 0이면 OFF, 1이면 ON | 1B 42 4C 01 | | ||
| - | ^ 좌표 설정 | ||
| - | ^ 부저 ON 시간 설정 | ||
| - | ^ 반전된 스캔코드 값도 전송 | ||
| - | |||
| - | ==== 버튼 입력시 스캔 코드 ==== | ||
| - | |||
| - | 제품에 있는 버튼을 누르면 아래 스캔코드가 RS232C로 송출됩니다. 메인 컨트롤러에서 이 스캔코드를 받아서 어떤 버튼이 눌렀는지 확인하세요. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | ===== 큐블록(MSB)연결시 ===== | ||
| - | |||
| - | 큐블록은 UIF를 위한 관련 명령이 준비되어 있습니다. | ||
| - | |||
| - | < | ||
| - | #include " | ||
| - | Dim A As Integer | ||
| - | Dim B As Integer | ||
| - | Opencom 1, | ||
| - | Set Uif 2,1 | ||
| - | On Recv1 Gosub ABC | ||
| - | |||
| - | Cls | ||
| - | Wait 10 | ||
| - | Csroff | ||
| - | Locate 0,0 | ||
| - | Print " | ||
| - | Do | ||
| - | Print LOC, | ||
| - | Incr B | ||
| - | Wait 500 | ||
| - | Loop | ||
| - | |||
| - | ABC: | ||
| - | A=Get(1, | ||
| - | Print LOC, | ||
| - | Return | ||
| - | </ | ||
| - | |||
| - | ==== Set UIF 명령 사용법 ===== | ||
| - | |||
| - | Set Uif 디스플레이종류, | ||
| - | |||
| - | * 디스플레이종류 : 1=UIF416H, 2=UIF420A | ||
| - | * 채널번호 : 1=RS232채널1, | ||
| - | |||
| - | 먼저 OPENCOM 명령으로 RS232채널을 오픈한 다음, SET UIF명령으로 디스플레이 종류를 정합니다. | ||
| - | |||
| - | 키를 누르면 RS232 를 통해 해당키의 스캔코드가 수신됩니다. GET 명령으로 수신된 데이터를 확인할 수 있습니다. | ||
| - | |||
| - | ===== 아두이노 (C언어) 연결시 ====== | ||
| - | |||
| - | 아두이노에서 사용한 예제 소스입니다. | ||
| - | |||
| - | <code c> | ||
| - | void setup() { | ||
| - | Serial1.begin(19200); | ||
| - | uif_clear(); | ||
| - | uif_light(1); | ||
| - | uif_locate(0, | ||
| - | Serial1.print(" | ||
| - | uif_locate(0, | ||
| - | Serial1.print(" | ||
| - | } | ||
| - | |||
| - | int cnt = 0; | ||
| - | |||
| - | void loop() { | ||
| - | | ||
| - | | ||
| - | | ||
| - | |||
| - | while (Serial1.available()> | ||
| - | char inChar = (char)Serial1.read(); | ||
| - | uif_locate(12, | ||
| - | Serial1.print(inChar, | ||
| - | } | ||
| - | | ||
| - | } | ||
| - | |||
| - | void uif_clear() //전체 화면을 지웁니다. | ||
| - | { Serial1.write(0x1b); | ||
| - | |||
| - | void uif_light(unsigned char on_off) //back light 설정 인자 값 0 or 1 | ||
| - | { Serial1.write(0x1b); | ||
| - | |||
| - | void uif_locate(unsigned char x, unsigned char y) //표시될 문자의 x축과 y축의 위치를 설정합니다 | ||
| - | { Serial1.write(0x1b); | ||
| - | |||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | ===== 메뉴 운영 법 ====== | ||
| - | |||
| - | 본 제품은 다음과 같은 방식으로 사용하도록 고안된 제품입니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | |||
| - | ===== 운영 예 ===== | ||
| - | |||
| - | 기계(또는 장치)가 작동중에는 LCD는 현재 상태를 표시하는 용도로 씁니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | MENU버튼을 누르면 설정모드로 진입합니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | 화살표를 눌러서 원하는 설정이 나올때까지 찾아갑니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | 원하는 설정이 나오면 메뉴1,2,3 중 하나늘 눌러서 설정값을 바꿉니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | 설정이 모두 끝났으면 Exit키를 눌러 설정모드에서 빠져나갑니다. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | **주의사항** : 가끔 위의 예처럼 동작하는 것인줄 알고 구매하시는 분들이 있습니다. | ||
| - | 실제 동작을 위한 소프트웨어는 여러분이 사용하는 메인 장치에서 직접 코딩해야 합니다. 메인 장치는 큐블록(CUBLOC)이나 아두이노(Arduino) 등을 사용할 수 있습니다. | ||
| - | |||
| - | 실제 현장에 가보면 수많은 조작스위치가 설치된 경우를 종종 볼 수 있습니다. 이 방식을 이용하면 아래 사진처럼 수많은 설정키를 본 제품 하나로 대체할 수 있습니다. (물론 약간 수고스러운 코딩 작업을 직접 해주셔야만 합니다.) | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | ==== 응용 예제 (CUBLOC 소스) ==== | ||
| - | |||
| - | 위의 예처럼 동작하는 예제 소스입니다. 이 소스를 기반으로 여러분의 현장에 맞는 설정(텍스트)로 바꾸어 사용하세요. | ||
| - | |||
| - | < | ||
| - | #include " | ||
| - | Dim Mode As Byte | ||
| - | Opencom 1, | ||
| - | Set Uif 2,1 | ||
| - | Mode = 0 | ||
| - | ModeDisplay | ||
| - | |||
| - | Do | ||
| - | If Blen(1,0) > 0 Then | ||
| - | KeyProc | ||
| - | Endif | ||
| - | Loop | ||
| - | |||
| - | |||
| - | Sub ModeDisplay() | ||
| - | Select Case Mode | ||
| - | Case 0 | ||
| - | ' Main Mode | ||
| - | Cls | ||
| - | Print LOC, | ||
| - | Print LOC, | ||
| - | Print LOC, | ||
| - | Print LOC, | ||
| - | Case 1 | ||
| - | ' Setup mode page 1 | ||
| - | Cls | ||
| - | Print LOC, | ||
| - | Print LOC, | ||
| - | Case 2 | ||
| - | ' Setup mode page 2 | ||
| - | Cls | ||
| - | Print LOC, | ||
| - | Print LOC, | ||
| - | Case 3 | ||
| - | ' Setup mode page 3 | ||
| - | Cls | ||
| - | Print LOC, | ||
| - | Print LOC, | ||
| - | End Select | ||
| - | End Sub | ||
| - | |||
| - | Sub KeyProc() | ||
| - | Dim Rx As Byte | ||
| - | Rx=Get(1, | ||
| - | Select Case Mode | ||
| - | Case 0 | ||
| - | If Rx = 13 Then Mode = 1 | ||
| - | If Rx = 14 Then Mode = 0 'Exit | ||
| - | ModeDisplay | ||
| - | Case 1 | ||
| - | If Rx = 10 Then Mode = 2 | ||
| - | If Rx = 14 Then Mode = 0 'Exit | ||
| - | ModeDisplay | ||
| - | Case 2 | ||
| - | If Rx = 9 Then Mode = 1 | ||
| - | If Rx = 10 Then Mode = 3 | ||
| - | If Rx = 14 Then Mode = 0 'Exit | ||
| - | ModeDisplay | ||
| - | Case 3 | ||
| - | If Rx = 9 Then Mode = 2 | ||
| - | If Rx = 14 Then Mode = 0 'Exit | ||
| - | ModeDisplay | ||
| - | End Select | ||
| - | End Sub | ||
| - | |||
| - | |||
| - | </ | ||
| - | |||
| - | < | ||
| - | <iframe width=" | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | [[index|상위 페이지로]] | ||
