This is an old revision of the document!


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모드, 사용중에는 반드시 Off

RS232C터미널 블록 단자 연결법

제품에 RS232C 터미널 블록이 하나 동봉되어 있습니다.

  • RX ←- HOST의 TX와 연결
  • TX –> HOST의 RX와 연결
  • 5V 사용안함
  • GND — HOST의 GND와 연결

HOST : MSB 또는 큐블록, FADUINO 와 같은 메인장치를 뜻합니다.

아래 사진처럼 연결하여 사용하실 수 있습니다.

제어 명령 설명

화면 문자 표시 방법은 단순합니다. RS232C 인터페이스를 통해 UIF420B로 ASCII코드를 보내면 해당 ASCII코드의 내용이 LCD화면상에 표시됩니다.

만약 커서위치를 바꾼다던가, 전체화면을 클리어하는 등의 특수한 동작을 하려면 제어코드를 사용해야 합니다. LCD 제어 명령은 ESC코드 (HEX 1B)를 선두로, 1개의 영문자를 보내 동작을 지시한 뒤, 그에 필요한 각종 인수를 보내는 형식으로 되어 있습니다.

특수명령 명령코드 설명 전송 예 (16진수)
캐릭터 커서 On ESC S 커서를 On 합니다. 1B 53
캐릭터 커서 Off ESC s 커서를 Off 합니다. 1B 73
LCD 지우기 ESC C 전체 화면을 지웁니다. 이 명령 사용후 약 20mS지난후 다음 명령을 보내야 합니다. 1B 43
백라이트 ON/OFF ESC BL # 백라이트를 ON또는 OFF합니다. #위치에 0이면 OFF, 1이면 ON 1B 42 4C 01
좌표 설정 ESC L X Y X Y 위치로 표시 지점을 이동시킵니다. 1B 4C 00 00
부저 ON 시간 설정 ESC Z #L #H 스위치를 누를때 BEEP음 발생시간을 결정합니다.
0으로 설정하면 BEEP음을 발생시키지 않습니다.
#L=하위바이트, #H=상위바이트
1B 5A BC 02
반전된 스캔코드 값도 전송 ESC H UIF에서 외부로 KEY값 전송 시 정상 1Byte와 반전된 1Byte 총 2Byte를 전송합니다.
수신 측에서는 받은 2개의 데이터를 서로 비교하여 데이터의 이상 유무를 알 수 있습니다.
1B 48

버튼 입력시 스캔 코드

제품에 있는 버튼을 누르면 아래 스캔코드가 RS232C로 송출됩니다. 메인 컨트롤러에서 이 스캔코드를 받아서 어떤 버튼이 눌렀는지 확인하세요.

큐블록(MSB)연결시

큐블록은 UIF를 위한 관련 명령이 준비되어 있습니다.

#include "MSB6XX"
Dim A As Integer
Dim B As Integer
Opencom 1,19200,3,50,50 
Set Uif 2,1 
On Recv1 Gosub ABC

Cls
Wait 10
Csroff
Locate 0,0
Print "COMFILE"
Do
	Print LOC,10,0,Dec B
	Incr B
	Wait 500
Loop

ABC:
A=Get(1,1) 
Print LOC,1,1,Hex2 A
Return

Set UIF 명령 사용법

Set Uif 디스플레이종류, 채널번호

  • 디스플레이종류 : 1=UIF416H, 2=UIF420A
  • 채널번호 : 1=RS232채널1, 2=RS232채널2, 3=RS232채널3

먼저 OPENCOM 명령으로 RS232채널을 오픈한 다음, SET UIF명령으로 디스플레이 종류를 정합니다.

키를 누르면 RS232 를 통해 해당키의 스캔코드가 수신됩니다. GET 명령으로 수신된 데이터를 확인할 수 있습니다.

아두이노 (C언어) 연결시

아두이노에서 사용한 예제 소스입니다.

void setup() {
  Serial1.begin(19200); //보레이트 19200 설정
  uif_clear(); //전체 화면을 지움
  uif_light(1);  //back light를 on
  uif_locate(0,0);
  Serial1.print("== UIF420B MAIN ===");
  uif_locate(0,3);
  Serial1.print("AUTO     ON      OFF");
}
 
int cnt = 0;
 
void loop() {
 cnt++; //카운터 값을 증가
 uif_locate(6,2);
 Serial1.print(cnt, DEC); //카운터 값을 표시
 
 while (Serial1.available()>0) {
  char inChar = (char)Serial1.read();
  uif_locate(12,2); 
  Serial1.print(inChar, DEC);
  }
 delay(100);
}
 
void uif_clear() //전체 화면을 지웁니다.
{ Serial1.write(0x1b); Serial1.write(0x43);  delay(50); }
 
void uif_light(unsigned char on_off) //back light 설정 인자 값 0 or 1
{ Serial1.write(0x1b);Serial1.write(0x42);Serial1.write(0x4c); Serial1.write(on_off); }
 
void uif_locate(unsigned char x, unsigned char y) //표시될 문자의 x축과 y축의 위치를 설정합니다
{ Serial1.write(0x1b);Serial1.write(0x4C);Serial1.write(x); Serial1.write(y); }

메뉴 운영 법

본 제품은 다음과 같은 방식으로 사용하도록 고안된 제품입니다.

운영 예

기계(또는 장치)가 작동중에는 LCD는 현재 상태를 표시하는 용도로 씁니다.

MENU버튼을 누르면 설정모드로 진입합니다.

화살표를 눌러서 원하는 설정이 나올때까지 찾아갑니다.

원하는 설정이 나오면 메뉴1,2,3 중 하나늘 눌러서 설정값을 바꿉니다.

설정이 모두 끝났으면 Exit키를 눌러 설정모드에서 빠져나갑니다.

주의사항 : 가끔 위의 예처럼 동작하는 것인줄 알고 구매하시는 분들이 있습니다. 실제 동작을 위한 소프트웨어는 여러분이 사용하는 메인 장치에서 직접 코딩해야 합니다. 메인 장치는 큐블록(CUBLOC)이나 아두이노(Arduino) 등을 사용할 수 있습니다.

실제 현장에 가보면 수많은 조작스위치가 설치된 경우를 종종 볼 수 있습니다. 이 방식을 이용하면 아래 사진처럼 수많은 설정키를 본 제품 하나로 대체할 수 있습니다. (물론 약간 수고스러운 코딩 작업을 직접 해주셔야만 합니다.)

응용 예제 (CUBLOC 소스)

위의 예처럼 동작하는 예제 소스입니다. 이 소스를 기반으로 여러분의 현장에 맞는 설정(텍스트)로 바꾸어 사용하세요.

#include "MSB6XX"
Dim Mode As Byte
Opencom 1,19200,3,50,50 
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,0,0,"AB Control System"
		Print LOC,0,1,"Fan#1 120Rpm"
		Print LOC,0,2,"Fan#2 3200Rpm"
		Print LOC,0,3,"Fan#2 Off"
	Case 1
		' Setup mode page 1
		Cls
		Print LOC,0,0,"FAN OUTER #1"
		Print LOC,0,3,"AUTO     ON     OFF"
	Case 2
		' Setup mode page 2
		Cls
		Print LOC,0,0,"FAN OUTER #2"
		Print LOC,0,3,"AUTO     ON     OFF"
	Case 3
		' Setup mode page 3
		Cls
		Print LOC,0,0,"FAN OUTER #3"
		Print LOC,0,3,"AUTO     ON     OFF"
	End Select
End Sub

Sub KeyProc()
	Dim Rx As Byte
	Rx=Get(1,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	

hJChrU0LqSc

상위 페이지로