마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 13. 시리얼 통신 접속 PC 단말
첨부파일

 

                  PIC와 액정 표시기를 조합한 PC의 단말
                  PC와는 RS232C 접속, 300 bps~9600 bps의 통신 속도,
                  PIC의 표준 통신 라이브러리로서 사용 가능. (새치기 방식)
 


시리얼 통신 접속 단말

  PIC16F84와 액정 표시기를 조합한 단말로
  PC와는 RS232C의 시리얼 통신으로 접속
  300 bps~9600 bps의 통신 속도로 송수신이 가능


1. 개요

  PIC16F84를 사용해 시리얼 통신을 실시할 때의 표준 라이브러리로서 사용 가능한
  프로그램을 목표로 해 작성했습니다.
  마이크로칩사의 어플리케이션 노트를 참고에 여분의 곳을 삭제해,
  안정인 통신을하기 위한 궁리를 추가했습니다.
  통신 속도는 300 bps에서 9600 bps까지 대응 가능해, 파라미터를 지정해 아센
  불 다시 하면 속도 변경이 가능한 것 같게 되어 있습니다.

2. 사양

  통신 사양으로서는, 아래와 같은님이 현재 가장 잘 사용되고 있는 내용으로 한정하고 있습니다.
  그 때문에, 파라미터의 수도 최소가 되어 있어, 속도 지정의 파라미터 뿐입니다.
 (1) 통신 인터페이스 사양
  ·통신 방식조보동기(일반의 비synchronous communication입니다. )
      시작 비트 :1비트
      데이터 비트  :8비트
      stop bit :1비트
      패리티    :없음
  ·하드웨어 인터페이스  RS232C(일반의 PC와 같다)
    사용 신호 :TX(송신 데이터)
          RX(수신 데이터)
          CTS(송신 제어)
          RTS(수신 제어)
  ·통신 속도  300, 1200, 2400, 4800, 9600의 5 종류
        (다만, 마이크로컴퓨터의 클락이 10 MHz때)
 (2) 기능 사양
   통신의 확인을 할 수 있는 레벨의 기능으로 한정하고 있기 때문에, 간단한 기능만입니다.
   ·3개의 스윗치를 누르면(자) 각각 대응해 「1」 「2」 「3」의 데이터를
    PC측에 송신 출력한다.
   ·그대로 이번은 PC로부터 1 문자 보내져 오는 것을 기다려, 수신한 데이터
    (을)를 액정에 표시한다.
   ·스윗치가 밀린채로 있으면 상기를 반복합니다.

3. 회로 구성

  회로로서는 도달해 간단합니다. PIC16F84와 액정 표시기, 거기에 RS232C 인터
  페이스의 3개를 조합했을 뿐입니다.
  전원으로서는 3 단자 레귤레이터를 사용해, 입력은 DC6V~12 V정도로 OK입니다.
  회로도는 밑그림과 같이 되어 있습니다. CTS는 그대로 RTS 신호로서 꺾어 반
  하고 있습니다. CTS나 TX, RX에 있는 괄호내의 번호는 RS232C용의 25 핀의
  연결기의 접속처 핀 번호입니다.

  (2002/8/25)
  (주) 아래와 같이 회로도에서 MAX232의 2 핀의 콘덴서의 접속은 실수입니다
      정확하게는 방향을 반대로 해 GND를 전원의 5 V에 접속합니다.

 

   또 아래와 같은 파일은 회로도와 패턴도의 원도입니다. HiWIRE2로 봐 주세요.

     ★RS232C 단말 회로도
     ★RS232C 단말 패턴도

4. 프로그램

  여기서 작성한 시리얼 통신의 프로그램은타이머 새치기를 사용하고 있습니다. 따라서
  다른 처리와 concurrent processing가 가능해, 1개의 데이터의 송수신이 완료할 때까지 다른 처리를 대
  다툴 필요가 없고 동시에 병행해 처리할 수가 있습니다.
  우선 통신 처리의 프로그램은 크게 나누어 4개의 부분으로부터 구성되어 있습니다.
   (1) 변수, 정수 정의, 초기화 부분
   (2) 송신 처리 부분(PUTCHAR)
   (3) 수신 처리 부분(GETCHAR)
   (4) 새치기 처리 부분(INTERRUPT)
  프로그램은 아래와 같이로 다운로드할 수 있습니다. MPLAB로 어셈블(assemble) 해 주세요.

    시리얼 통신 단말 프로그램 리스트

 (1) 프로그램의 흐름
  (a) 송신
    PUTCHAR가 CALL 되면(자) 우선 시작 비트를 출력한 뒤, 타이머 0을
    세트 해 새치기 대기로 합니다.
    그리고는 일정시간 후(1비트 분의 시간)에 새치기가 들어가므로 데이터를 1비트
    씩 출력해서는, 타이머 0을 재스타트 시킵니다. 마지막 데이터의 종료할입
    보고의 다음에는 stop bit를 출력해 송신이 완료합니다.
  (b) 수신
    GETCHAR가 CALL 되면(자), 우선 시작 비트를 검출해 새치기가 들어가는 것처럼
    타이머 0을 watch dog timer 모드로 카운터를 FF에 세트 합니다.
    이것으로 외부로부터 1회에서도 서 내려감의 펄스가 들어가면(자) 카운터가 오버플로우
    해 새치기가 발생합니다. 즉 시작 비트를 검출할 수 있게 됩니다.
    이 새치기가 들어가면(자) 10μsec의 지연 후에 한번 더 입력을 읽어들여 확실히
    스타트 펄스인 것을 확인합니다. 만약 시작 비트가 아니었으면
    노이즈였다는 것으로, 아무것도 하지 않고 재차 시작 비트를 기다립니다.
    시작 비트의 확인을 할 수 있으면(자), 이번은 1비트분 보다 약간 긴 시간을 타이
    마에 세트 해 새치기를 기다립니다. 이 세치기가 들어 오면(자) 데이터를 입력
    해 제1비트째의 데이터로서 격납합니다. 계속되어 1비트 분의 타이머를
    세트 해 다음의 비트의 시간을 기다립니다. 이렇게 해 새치기의 때 마다 차례차례 데이터를
    독 붐비어 마지막 stop bit의 확인을 할 수 있으면(자) 1개 분의 데이터가 수신 완료 물어
    것이 됩니다. 이것을 그림으로 가리키면(자) 밑그림이 됩니다.

   

 (2) 사용법
   이 통신 프로그램의 사용법은 간단해 아래와 같은님이 합니다.
  (a) 통신 속도 파라미터의 지정과 어셈블(assemble)
    통신 속도의 지정에는, BAUDRATE와 BITTMR의 2개의 파라미터의 지정을 합니다.
    이 파라미터의 데이터는 아래 표와 같이 합니다.

통신 속도
(bps)

BAUDRATE

BITTMR
(16 진수)

300

5

7E

1200

3

7E

2400

2

80

4800

1

84

9600

0

86

     예를 들면 9600 bps때에는 아래와 같은 기술로서 어셈블(assemble) 합니다.
       BAUDRATE  SET  0    ;preset to 9600bps
       BITTMR   SET  086H  ;TMR0 DATA -122

  (b) 송신할 때
    송신때로는, 우선 송신하는 데이터를 TXREG에 세트 하고 나서 CALL PUTCHAR로
    송신 처리를 CALL 합니다. 예를 들면 아래와 같은님이 합니다.
           MOVLW  "1"    ;SEND 1
           MOVWF  TXREG
           CALL   PUTCHAR  ;send data
    그리고 이 후는 다른 처리로 옮겨 상관하지 않습니다. 송신 완료를 확인하려면 , TXBUSY
    (을)를 체크하는 것으로 실시합니다.
      WAITLP
           BTFSC  TXBUSY   ;check end of send
           GOTO   WAITLP

  (c) 수신할 때
    수신도 새치기로 실행되고 있기 때문에, 임의의 시점에서 수신할 수가 있습니다.
    이 수신을 하기 위해서는, 우선 GETCHAR를 CALL 합니다. 이것은 어디서 실행해도
    상관하지 않습니다. 그리고 실제의 수신 데이터를 받았는지 어떠했는지는, RECV를 체크
    하는 것으로 실시합니다. 데이터 수신이 있었을 경우에는, 이 데이터가 정상적으로 수신했다
    물건인지 어떤지를 ERROR를 체크하는 것으로 확인합니다. 정상적인 때에는 RXREG에
    데이터가 격납되고 있기 때문에 이것을 새다 뭅니다. 예를 들면 아래와 같은님이 합니다.
    우선 프로그램의 최초의 (분)편으로 GETCHAR를 CALL
           CALL  GETCHAR    ;start receive
           (이 후는 다른 처리를 실행해 상관없다)
    수신 데이터 유무를 체크한다.
     RCVWAIT  BTFSC  RECV     ;wait received
           GOTO   RCVWAIT
           BTFSC  ERROR     ;error check
           GOTO   ERR
           MOVF   RXREG, W    ;get data

    실제로 이 형태의 처리에서는 상시 RECV를 체크해야 하기 때문에, concurrent processing
    (은)는 아니게 되어 버립니다. 프로그램의 완전한 새치기에 의한 concurrent processing를 하는 경우
    에는, 수신 처리 부분의 최후인 「stop bit process」로 수신 처리의 프로그램
    (을)를 call 하도록(듯이) 추가합니다. (리스트중에 코멘트로 주기되어 있습니다)

4. 외관 구성

 이하의 사진이 외관입니다만, 이번은 통신 프로그램 시험용의 것이라고 하는 것으로, 특히 케이스
 에는 넣고 있지 않습니다.
 사진에는 없습니다만, 외부 연결기로서 25 핀의 DSUB 연결기를 RS232C용과의
 접속용으로서 본체 우하에 있는 연결기와 접속하고 있습니다.

전체의 외관입니다. 우하의 연결기로 통신용 연결기와
스윗치를 잇습니다.
PIC 등은 액정 표시기의 아래 쪽에 실장되고 있습니다.

위쪽의 액정 표시기를 떼어냈습니다. 액정 표시기는
연결기로 접속하게 되어 있습니다.
RS232C용의 IC(MAX232) 용의 콘덴서는 키가 크기 때문에
재워 달고 있습니다.

실장 상태를 옆으로부터 본 것으로, 액정 표시기아래에 부품이
실장되고 있는 것이 잘 안다고 생각합니다.

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com