• 검색 결과가 없습니다.

廢棄用 PC(Personal Computer)를 이용한 교육용 마이크로프로세서 실험장치의 具現

N/A
N/A
Protected

Academic year: 2021

Share "廢棄用 PC(Personal Computer)를 이용한 교육용 마이크로프로세서 실험장치의 具現"

Copied!
112
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

碩士學位論文

廢棄用 PC(Personal Computer)를 이용한 교육용 마이크로프로세서 실험장치의 具現

Implementation of an educational microprocessor trainer using the used Personal Computers

提 出 者 : 申 在 慶 指導敎授 : 安 鉉 植

2001年

電子工學敎育專攻

國民大學校 敎育大學院

(2)

碩士學位論文

廢棄用 PC(Personal Computer)를 이용한 교육용 마이크로프로세서 실험장치의 具現

Implementation of an educational microprocessor trainer using the used Personal Computers

提 出 者 : 申 在 慶 指導敎授 : 安 鉉 植

2001年

電子工學敎育專攻

國民大學校 敎育大學院

(3)

廢棄用 PC(Personal Computer)를 이용한 교육용 마이크로프로세서 실험장치의 具現

Implementation of an educational microprocessor trainer using the used Personal Computers

이 論文을 碩士學位論文으로 提出함

2001年 11月 23日

國民大學校 敎育大學院 電子工學敎育專攻

申 在 慶

(4)

申 在 慶의

碩士學位 請求論文을 認准함.

審査日 : 2001年 11月 23日

審 査 委員 長 成 榮 洛 印 審 査 委 員 姜 東 郁 印 審 査 委 員 安 鉉 植 印

國民大學校 敎育大學院

(5)

감사의 글

어느 한 곳, 잘난 것 없는 筆者가 너무나도 높아 보이기만 하던 論文이 라는 것에 終止符를 찍으려하니, 그 동안 筆者를 진정으로 걱정해 주고, 사랑해 주신 부모님(신 , 이 , 이 , 김) 께 진심으로 감사를 올립니다.

그리고, 본 論文이 세상에 빛을 볼 수 있도록 다듬어 주시고 격려해 주 신, 존경하는 안현식 지도교수님, 김동명 교수님, 홍안의 교수님께도 감사 를 드립니다.

언제나 부족한 男便에게 오랜 세월 묵묵히 가정을 돌보며, 따듯하게 사 랑해준, 아내 이혜련에게 감사의 말을 전하며, 튼튼하게 자라고 있는 사랑 하는 아들 泳에게 아빠가 최선을 다하는 모습을 보여 줄 수 있어서 기쁘 게 생각합니다.

끝으로 항상 저에게 힘이 되어 주신 오민호, 장호석, 한종원, 한훈희, 진 교삼 선배님과 오랜 세월 깊은 가르침을 주신 김태규, 원종환, 박덕철, 박 문기, 홍성익, 김동영 스승님과 竹馬故友 이용진, 신성호, 김병욱과 함께 작지만 소중한 기쁨을 나누고자 합니다.

(6)

목 차 국문요약

·

서론

1·1 연구의 필요성 및 목적···1

1·2 연구 내용 및 기대효과···3

·

본론

2·1 개인용 컴퓨터(PC)의 보급현황···4

2·2 廢棄用컴퓨터의 발생 현황···4

2·3 국내 廢棄用컴퓨터의 재활용···5

2·4 선진국 廢棄用컴퓨터의 재활용···6

2·5 본 논문의 廢棄用컴퓨터 재활용···7

·

병렬포트 제어

3·1 병렬포트 역사···9

3·2 병렬포트란?···9

3·3 병렬포트의 규격···10

3·3·1 병렬포트의 신호···10

3·3·2 병렬포트의 I/O ADDRESS···12

3·4 병렬포트의 기본 제어···12

3·4·1 &H378D를 기준으로 한 각각의 I/O ADDRESS Control···13

3·4·2 &H378D의 I/O ADDRESS 출력 Control Board 제작····13

3·4·3 Control Board와 IBM-PC의 연결···14

3·4·4 Quickbasic 이용 순차 출력1 제어프로그램···14

3·4·5 Quickbasic 이용 순차 출력2 제어프로그램···15

3·4·6 Quickbasic 이용 ON, OFF 출력 제어프로그램···16

3·4·7 Quickbasic 이용 LED값 표시 출력 제어프로그램···16

3·4·8 Quickbasic 이용 좌,우 Shift 출력 제어프로그램···18

3·4·9 Visual Basic 이용 출력 제어프로그램···19

3·4·10 TurboC++ 이용 LED ON,OFF 반전 제어프로그램1····20

(7)

3·4·11 TurboC++ 이용 LED ON,OFF 반전 제어프로그램2····21

3·4·12 TurboC++ 이용 LED ON,OFF 반전 제어프로그램3····23

3·4·13 TurboC++ 이용 LED 순차 제어프로그램···25

3·5 병렬포트의 응용 제어···27

3·5·1 Seven Segment(FND) Control Board 제작1···27

3·5·2 Quickbasic 이용 Seven Segment1 제어프로그램···28

3·5·3 Quickbasic 이용 Seven Segment2 제어프로그램···29

3·5·4 Quickbasic 이용 Seven Segment3 제어프로그램···30

3·5·5 Data Input Board 제작···32

3·5·6 Quickbasic 이용 Data Input 제어프로그램1···33

3·5·7 Quickbasic 이용 Data Input 제어프로그램2···33

3·5·8 Quickbasic 이용 방범(防犯) 제어프로그램···35

3·5·9 Visual Basic 이용 Data Input 제어프로그램···35

3·5·10 Relay Control Board 제작···38

3·5·11 Quickbasic 이용 Relay 제어프로그램···39

3·5·12 Visual Basic 이용 Relay 제어프로그램···40

3·5·13 Seven Segment Control Board 제작2···43

3·5·14 Turbo C++ 이용 100진 카운터 제어프로그램···44

3·5·15 Turbo C++ 이용 Clock 제어프로그램···46

·

직렬포트 제어

4·1 직렬포트 역사···49

4·2 직렬포트란?···49

4·3 직렬포트의 규격···50

4·3·1 직렬포트의 물리적/전기적 규격···50

4·3·2 RS-232C 신호···52

4·3·2·1 TXD - Transmit Data···52

4·3·2·2 RXD - Receive Data···52

4·3·2·3 RTS - Ready To Send···52

4·3·2·4 CTS - Clear To Send···52

4·3·2·5 DTR - Data Terminal Ready···52

4·3·2·6 DSR - Data Set Ready···53

(8)

4·3·2·7 DCD - Data Carrier Detect···53

4·3·2·8 RI - Ring Indicator···53

4·3·3 직렬 포트의 표준 IRQ와 I/O주소···53

4·4 직렬포트의 제어···54

4·4·1 Control Connector 제작···54

4·4·2 직렬포트 제어···55

4·4·3 Visual Basic을 이용한 직렬포트 제어프로그램···55

·

ISA BUS Control

5·1 ISA BUS 역사···57

5·2 ISA BUS란?···57

5·3 ISA BUS의 규격···58

5·3·1 ISA BUS의 전기적 규격···58

5·3·2 ISA BUS의 신호···59

5·3·2·1 ISA BUS의 A0∼A19···60

5·3·2·2 ISA BUS의 A17∼A22···60

5·3·2·3 ISA BUS의 CLK···60

5·3·2·4 ISA BUS의 Reset DRV···60

5·3·2·5 ISA BUS의 D0∼D15···60

5·3·2·6 ISA BUS의 ALE···60

5·3·2·7 ISA BUS의 #I/O CH CK···61

5·3·2·8 ISA BUS의 CH RDY···61

5·3·2·9 ISA BUS의 IRQ3-7 , IRQ9-12 , IRQ14-15···61

5·3·2·10 ISA BUS의 #IOR···62

5·3·2·11 ISA BUS의 #IOW···62

5·3·2·12 ISA BUS의 #SMEMR , #MEMR···62

5·3·2·13 ISA BUS의 DRQ0-3, DRQ5-7···62

5·3·2·14 ISA BUS의 AEN···62

5·3·2·15 ISA BUS의 #REFRESH···62

5·3·2·16 ISA BUS의 SBHE···62

5·3·2·17 ISA BUS의 #MASTER···63

(9)

5·3·2·18 ISA BUS의 OSC···63

5·4 ISA BUS의 제어···63

5·4·1 SA BUS의 Control Bread Board 제작···63

5·4·2 ISA BUS의 Control Board 제작···64

5·4·3 ISA BUS의 Control Board 제어···65

5·4·3·1 8255의 구조 및 기능···66

5·4·3·2 모드 지정 및 동작 모드···66

5·4·3·3 모드 0의 기본 입출력도···67

5·4·3·4 Visual Basic 이용 제어 Program···67

·

논문 홈페이지(Homepage)

···70

·

결 론

···71

參考文獻

···73

ABSTRACT

···74

부 록

[부록1] VB 3.0을 이용한 출력 제어 전체 Source···76

[부록2] box_a.h 헤더파일 전체 Source···79

[부록3] QB4.5를 이용한 방범 프로그램 전체 Source···82

[부록4] box_b.h 헤더파일의 전체 Source···87

[부록5] VB3.0을 이용한 직렬포트 제어 전체 Source···99

[부록6] ISA BUS의 Control 전체 Source···113

(10)

표 목 차

[표 2.1] 연도별 PC 보급현황···4

[표 2.2] PC 폐기 발생량 추정···5

[표 3.3.1] Parallel Port의 신호···10

[표 3.3.2] &H378D을 기준으로 한 각각의 I/O ADDRESS···12

[표 3.3.3] &H378D를 기준으로 한 각 비트들은 고유의 값···12

[표 3.5.1] 세그먼트 표1···28

[표 3.5.2] 세그먼트 표2···29

[표 3.5.3] 세그먼트 표3···30

[표 3.5.4] Data Input Value···34

[표 4.3.1] 9핀 컨넥터 (DB-9)···51

[표 4.3.2] 25핀 컨넥터 (DB-25)···51

[표 4.3.3] 직렬 포트의 표준 IRQ와 I/O주소···53

[표 5.3.1] XT와 AT 공통부분···59

[표 5.3.2] 확장된 ISA 카드의 기능과 핀구조···61

[표 5.3.3] 8255의 포트···66

(11)

그 림 목 차

[그림 1.1] 컴퓨터 내구 年數와 활용도···2

[그림 3.3.1] 25-way Female D-Type Connector···11

[그림 3.3.2] Parallel Printer Adapter (IBM PC/AT) Block Diagram·11 [그림 3.4.1] Control Board···13

[그림 3.4.2] Control Board 회로도···13

[그림 3.4.3] Connector 연결도···14

[그림 3.4.4] Visual Basic 3.0을 이용한 출력 제어프로그램···19

[그림 3.4.5] Visual Basic 3.0을 이용한 개발환경···19

[그림 3.4.6] Turbo C++ 3.0 이용한 개발환경···20

[그림 3.4.7] box_a.h 헤더파일 그래픽1···22

[그림 3.4.8] box_a.h 헤더파일 그래픽2···25

[그림 3.4.9] box_a.h 헤더파일 그래픽3···26

[그림 3.5.1] FND Control Board1···27

[그림 3.5.2] FND Control Board 회로도1···27

[그림 3.5.3] 데이터(Data) 입력(input) Board···32

[그림 3.5.4] 데이터(Data) 입력(input) Board 회로도···32

[그림 3.5.5] Visual Basic 3.0을 이용한 Data Input 제어프로그램··35

[그림 3.5.6] Visual Basic 3.0을 이용한 개발환경···36

[그림 3.5.7] Relay Control Board···38

[그림 3.5.8] Relay Control Board 회로도···39

[그림 3.5.9] Visual Basic 3.0을 이용한 Relay 제어프로그램···40

[그림 3.5.10] Visual Basic 3.0을 이용한 개발환경···42

[그림 3.5.11] FND Control Board2···43

[그림 3.5.12] FND Control Board 회로도2···43

[그림 3.5.13] box_b.h 헤더파일 그래픽1···44

[그림 3.5.14] box_b.h 헤더파일 그래픽2···46

[그림 4.3.1] RS-232C 컨넥터···50

[그림 4.3.2] RS-232C 신호···52

[그림 4.4.1] Control Connector 제작···54

[그림 4.4.2] DTE, DCE Connector···54

(12)

[그림 4.4.3] Visual Basic 3.0을 이용한 Serial Port 제어프로그램··55

[그림 4.4.4] Visual Basic 3.0을 이용한 개발환경···56

[그림 5.3.1] ISA(Industrial System Architecture) BUS···58

[그림 5.4.1] SA BUS의 Control Bread Board 제작···63

[그림 5.4.2] ISA BUS의 Control Board 회로도···64

[그림 5.4.3] ISA BUS의 Control Board···65

[그림 5.4.4] 8255의 구조 및 기능···65

[그림 5.4.5] 8255 모드 지정 및 동작 모드···66

[그림 5.4.6] 8255 모드 0의 기본 입출력도···67

[그림 5.4.7] ISA BUS의 제어 프로그램···67

[그림 5.4.8] Visual Basic 3.0을 이용한 개발환경···68

[그림 6.1] 논문 홈페이지(Homepage)···70

(13)

국 문 요 약

廢棄用 PC(Personal Computer)를 이용한 교육용 마이크로프로세서 실험장치의 具現

國民大學校 敎育大學院 電子工學敎育 專攻 申 在 慶 指導敎授 : 安 鉉 植

본 논문은 산업현장 및 교육현장에서 사용 내구연한이 지난 컴퓨터를 교육적으로 다시 학교 수업에 재활용하여 사용하자는 것이다.

즉, 공업계 고교 전자관련 학과에서 실험과 실습을 하는 컴퓨터 구조 실험 및 마이크로프로세서 실험·실습 교과에 성능이 우수한 廢棄用 PC(Personal Computer)를 이용하자는 근본 Idea에서 출발하였다.

지금의 교육용 컴퓨터 Lifetime을 보면 보통 3년에서 4년 주기로 새로 운 컴퓨터를 구입해야 하는 현실 속에서 새롭게 심각한 환경 문제로 제기 되는 廢棄用 PC(Personal Computer)처리문제를 일부나마 해결 할 수 있 는 방안이 되고 학교현장의 학생들에게는 廢자원의 재활용이라는 교육적 인 측면도 인식시킬 수 있는 一石二鳥의 효과도 기대할 수 있다.

특히, 버려지는 컴퓨터를 재활용하여 사용하기 때문에 교육자재는 손쉽 게 구할 수 있을 뿐만 아니라 컴퓨터 운송비를 제외한 일체의 교육 기자 재 구입경비도 들지 않아 국가적으로 교육기자재 구입예산을 효율적으로 사용할 수 있다.

본 연구의 이론적인 배경은 廢棄用 PC(Personal Computer)를 이용하여 컴퓨터 구조 실험·실습에 필요한 기본적인 하드웨어 원리 및 입·출력 인터페이스를 이용하여 외부 기기의 제어를 목적으로 하고 있다.

사용되어지는 OS(Operating Systems)는 MS-DOS 6.2와 Windows3.1과 Windows 95를 기반으로 하여, 각종 컴퓨터 언어(Language)를 사용하여 제어 프로그램을 제작하고, 인터페이스 실험장치를 구동하여 컴퓨터의 입·출력제어방법을 배우는 새로운 컴퓨터구조 실험 교구로 재활용된다.

(14)

제작에 이용되는 컴퓨터는 386PC와 486PC와 586(Pentium100㎒)기종을 대상으로 하고 있기 때문에, 사용되어지는 OS(Operating Systems)는 각 각의 기종에 적합한 것을 사용한다. 또한, 입·출력제어 프로그램을 제작 하는 각종 컴퓨터 언어(Language)는 Microsoft Quick Basic 4.5와 Microsoft Visual Basic 3.0 및 6.0으로 각각의 OS(Operating Systems)에 적합한 컴퓨터 언어를 택하여 제어프로그램을 제작한다.

각종 제어 프로그램 및 하드웨어 개발은 OS(Operating Systems)의 두 종 류 DOS와 Windows에 따라 구분되어 지는데, 386PC의 경우에는 Microsoft Quick Basic4.5에 의해 제어용 프로그램을 개발한다.

또한, 486PC는 Microsoft Visual Basic 3.0으로 586(Pentium100㎒)PC는 Microsoft Visual Basic 6.0으로 제어용 도구를 개발한다.

본 논문에서 제작하는 입·출력 프로그램과 하드웨어 제어도구의 종류는 아래 와 같다.

1) 병렬포트 제어 프로그램과 하드웨어 제작법 개발.

2) 직렬포트 제어 프로그램과 하드웨어 제작법 개발.

3) ISA BUS 제어 프로그램과 하드웨어 제작법 개발.

본 연구의 과정을 통하여 학교현장의 교사들에게 현실적으로 학교 수업에 활 용할 수 있는 기술이 되도록 http://www.cpu114.com으로 논문 홈페이지를 제공 하여 지속적인 교육자료 보급이 가능하게 배려해 두었다.

(15)

I. 서론

1.1 연구의 필요성 및 목적

80년대부터 서서히 보급되던 개인용 컴퓨터는 최근 들어 컴퓨터를 이용 한 정보통신분야의 보급 확대와 성능 개선으로 하루가 다르게 새로운 기 능이 추가된 컴퓨터가 출현하면서 이제는 가정마다 컴퓨터가 없는 집이 드물 만큼 일반화되었다. 그러나 새로운 컴퓨터의 교체가 잦아지면서 제 품의 Lifetime(개인용 컴퓨터의 경우 내구 年數가 평균 4년)이 짧아져 폐 컴퓨터의 처리 문제가 새로운 쓰레기문제로 대두되었다. 지금의 컴퓨터 Lifetime을 보면 3년에서 4년을 주기로 새로운 컴퓨터 기종으로 교체하는 것이 일반적인 사회 현상이다. 교육현장에서도 전산수업용으로 보급된 컴 퓨터 기종이 컴퓨터 운영체제(OS)와 응용 소프트웨어의 고급화 현상으로 인하여 내구 年數가 지난 컴퓨터는 폐기(廢棄)해야하는 현실 속에서 새로 운 환경파괴의 문제점으로 대두되고 있다. 이러한 문제점에 대해 최근 정 보통신부, 환경부, 통상산업부 등에서 대처방안을 검토하고는 있으나, 컴 퓨터 보급률이 매년 20%이상의 증가율을 보이는 상황에서 폐기(廢棄)용 컴퓨터의 처리문제는 또 하나의 사회문제로 대두되고 있다[1].

국내의 컴퓨터 재활용 현황을 보면, 컴퓨터 재생(분해, 해체, 재활용)에 관여하는 업체는 경북 구미소재의 승내사외 몇몇 고물상이 있는 것으로 알려져 있으나 전체 재활용 업체 수는 파악이 안되고 있다. 또한, 전체 재 활용량 파악도 불가하고 재활용시스템을 갖추어 廢컴퓨터만 전문적으로 재활용하는 재생업체는 없는 것으로 알려져 있다.

여러 선진국들의 재활용 현황을 보면, 미국에서는 독특한 아이디어로 재생산업을 주도하고 있고, 영국은 환경적인 의무를 부가하는 측면에서 컴퓨터 재활용을 다루고 있으며, 캐나다는 정부의 재정적인 후원 아래 구 형 컴퓨터에서도 구동 가능한 소프트웨어 보급과 개발로 컴퓨터 재활용을 다루어, 사회복지증진의 일환으로 시행하고 있다[2].

학교에서의 재활용 현황을 보면, 정보화 부분이 90년대부터 꾸준히 확 대되어, 2000년 대통령 연두 연설에서는 학교의 정보화 부분에 힘을 기울 이겠다는 발표가 있었다.

그러나, 학교 정보화에 따른 구형 컴퓨터의 교체와 폐기(廢棄)는 학교

(16)

의 또 다른 문제점으로 대두되고 있지만 적절한 대안방법이 없는 것이 현실이다.

본 論文에서는 학교에서 폐기(廢棄)되는 구형컴퓨터의 일부를 컴퓨터 구조 및 기능 교육 수업에 재활용하는 방안에 대하여 연구하여 학교에서 의 재활용 교수도구를 제작하고 관련 프로그램을 개발하고자 한다.

따라서, 본 연구는 산업현장과 교육현장에서 폐기(廢棄)되는 이기종(異 機種)의 컴퓨터를 공업계 고교 또는 대학교의 전자관련 학과에서 컴퓨터 구조 실험 및 마이크로 프로세서(Microprocessor) 실험용 킷트(Kit)로 재 활용하는 것을 목적으로 한다.

1.2 연구 내용 및 기대효과

연구 내용의 접근 방법은 우리나라의 폐기(廢棄)용 컴퓨터의 발생 실태 와 발생수량 및 재활용 사례 등을 분석했다. 그리고, 환경부, 교육부, 정보 통신부, 통상산업부에서 제공되는 폐기(廢棄)용 컴퓨터의 예상 수량을 파 악하여 보았다. 또한, 학교현장에서 교사가 학생들에게 재활용하여 수업에 사용되어지는 폐기(廢棄)용 컴퓨터의 재활용방법 및 기타 교구 제작법 등 을 구체적으로 기술하였다. 그리고 구체적으로 제어하게되는 프로그램 언 어의 소스를 제공해줌으로서 일선의 교사와 학생이 응용하여 사용할 수 있도록 연구의 중심을 맞추었다.

본 硏究에서 가장 기대되는 부분은 60만대의 임의로 폐기처분되는 컴퓨터 의 일부를 일선 교육장의 교구로 재활용한다는 방법이다.

특히, 反환경적인 컴퓨터를 활용도가 없다는 막연한 이유로 버러지 것을 교육현장에서 일부 흡수하므로 학생들에게 재활용의 중요성을 인식시키고 나아가 훌륭한 수업교구로 재활용한다.

서울시 교육청관내 공업계 고교를 예를 들어 설명하면, 컴퓨터 구조 실험에 재활용 컴퓨터로 수업교구를 만들어 수업에 임한다면 34개 공업 계 학교 60개의 학과에서 도입이 가능하다[3].

그래서, 교육기자재의 효율적인 사용을 기대할 수 있는 장점과 함께 일 부 환경보존이라는 장점을 가지고 있어 일석이조(一石二鳥)의 교육적 효 과도 기대될 수 있다.

(17)

[그림1.1] 컴퓨터 내구 年數와 활용도

본 硏究는 위의 [그림1-1] 컴퓨터의 내구 年數와 활용도 그래프와 같이 4년간 일반적인 전산수업용으로 사용하여 학생들의 정보 능력 향상에 기 여를 하며, 컴퓨터의 활용도가 현저히 떨어지는 4년 이후에는 공업계 고 등학교 또는 대학교의 전자과, 전기과, 정보통신과, 전자계산기과 관련 컴 퓨터 구조 실험 및 마이크로프로세서(Microprocessor)실험에 재활용한다 면, 환경은 물론, 훌륭한 수업 교구로서 활용이 기대 되어 시너지효과 (Synergy effect)를 기대할 수 있다.

이렇게 얻어지는 교육적 이득은 환경보호의 교육적 측면과 컴퓨터 구조 실험 교구 개발의 시너지효과(Synergy effect)를 증대시키는 좋은 기회가 될 것으로 기대가 된다. 또 하나의 장점은 교구가 상당히 많이 존재한다 는 것이다. 그 동안은 교구의 파손을 우려하여 쉽게 교구를 학생들이 사 용하기가 힘들었는데 폐기용 컴퓨터로 수업교구를 사용하므로 부담 없는 교구실습이 가능하다.

본 論文의 구성은 폐기(廢棄)되는 이기종(異機種)의 컴퓨터를 가지고 Ⅲ 장에서 Parallel Port 제어방법을 제공하고 있고, Ⅳ장에서는 Serial Port 제어방법이며,Ⅴ장에서는 ISA BUS를 이용한 제어 교육방법을 제시한다.

그리고, Ⅵ장에서는 논문 홈페이지(Homepage)를 만들어 지속적인 교구제 작법과 교육방법을 제공하여, 효과적으로 재사용 하고자 한다.

(18)

Ⅱ. 본론

2.1 개인용 컴퓨터(PC)의 보급현황

우리나라의 컴퓨터 보급 현황을 보면 컴퓨터는 크게 개인용 컴퓨터 (PC), 워크스테이션, 중.대형급의 범용 컴퓨터로 구분하는 데 우리가 일반 적으로 컴퓨터라고 부르는 것은 개인용 컴퓨터, 즉 PC를 말한다. 가동 수 만을 비교할 때 PC의 비중이 매우 높게 볼 수 있다. 이러한 개인용 컴퓨 터(PC)의 보급현황은 일반적으로 PC의 경우 '95년 한해동안 1,654,000대 의 PC가 보급되었으며, 96년에는 4,288,000대, 97년에는 4,535,000대, 98년 에는 5,089,000대의 증가를 가져왔다[1].

[표 2.1] 연도별 PC 보급현황

(단위 : 천대)

구 분 ’91 ‘92 ’93 ‘94 ’95

당해연도 보급대수 (증감률, %)

764 (11.5)

911 (19.2)

1,294 (42.0)

1,490 (15.1)

1,654 (11.0)

누계보급대수 2.353 3,264 4,558 6,048 7,702

실가동대수 (‘91=100)

2,115 (100)

2,800 (132)

3,654 (173)

4,459 (211)

5,349 (253)

주) 실가동 대수는 당해연도를 포함한 4년간의 누계치, 누계보급대수는 ‘83년 이후의 보급대수임.

2.2 廢컴퓨터의 발생 현황

廢컴퓨터 발생원을 보면, 주요 발생원은 가정, 회사, 공공기관에서 발생 하며 개인용 컴퓨터(PC)가 발생량의 대부분으로 추정한다[1].

(19)

[표 2.2] PC 폐기 발생량 추정

(단위 : 천대) 구 분 ’95 ‘96 ’97 ‘98 ’99 2000

PC

배출잠재량 403 637 665 805 1,154 1,386

실 폐기량 121 191 200 242 346 416

프린터

배출잠재량 163 213 237 415 469 703

실 폐기량 49 64 71 125 141 211

자료) 한국전자산업진흥회 (‘96한국 컴퓨터 보급 현황 및 가전제품 구매성향 조사를 근거로 작성, 세부자료는 미 공개)

2.3 국내 廢컴퓨터의 재활용 현황

국내의 재활용 현황은 컴퓨터 재생(분해, 해체, 재활용)에 관여하는 업체는 경북 구미소재의 승내사외 몇몇 고물상이 있는 것으로 알려져 있으나 전체 재활용 업체 수는 파악이 안 된다, 또한 전체 재활용량 파악도 불가하고 재활용시스템을 갖추어 廢컴퓨터만 전문적으로 재활 용하는 재생업체는 없는 것으로 알려져 있다.

승내사의 경우도 컴퓨터만 수집하여 재생하는 곳이 아니라 TV등 가전제품 재활용시와 같은 방법으로 수작업으로 해체하여 재질별 재 활용 하고있다.

일부 고물상의 경우는 다른 가전제품과 같이 有價物만 회수하는 정 도로 알려져 있다.

기타 (사)전국가전·가구재활용협의회에서 廢컴퓨터를 회수, 수리하 여 재판매하고 있고. 불용품 및 고장품은 폐가전처리와 동일하게 구 청에서 처리하는 실태이다.

P.C.B의 경우 일부는 국내에서 일부 도금업자 등에 의해 귀금속을 회수하는 곳도 있고 P.C.B만을 회수하여 미국, 일본 등에 수출하는 업체도 일부 있다[1].

(20)

2.4 선진국 廢컴퓨터의 재활용 현황

미국, 영국, 캐나다의 computer recycling 공통이념은 동일하다. 그러나, 각 나라별로 독창적이고(creatively), 독특하게(uniquely) 컴퓨터의 재활용 을 다루고 있다. 즉, 못쓰거나 오래되어 버려져야 할 컴퓨터를 기증 받아 필요로 하는 곳에 적절하게 분배되어, 공익적인 효과를 누리는 공통이념 은 3국이 동일하나, 그 접근방법은 computer recycling을 다루어야 할 시 점에 봉착한 우리나라에게 시사하는 바가 크다고 할 수 있다.

미국은 독특한 Idea로 재생산업(computer-recycling industry)을 주도하 게 되었고, 영국은 환경적인 의무(environmental responsibility) 측면에서 computer recycling을 다루었으며, 캐나다는 정부의 재정적인 후원아래 정통적인 computer recycling을 다루어, 사회복지증진의 일환으로 시행하 고 있다[2].

실리적인 미국의 computer recycling은 Canegie Mellon University의 연구보고서에 의하면 2005년까지 1억5000만대의 구형 컴퓨터가 쓰레기장 에 폐기처분될 것으로 예상된다. 이러한 현실에 미국 대부분의 컴퓨터, 전 자제품 메이커들이 recycling 산업에 뛰어들고 있다. 그중, 전기, 전자, 컴 퓨터의 다국적 회사인 R. Frazier Inc.는 컴퓨터 재생산업에 선두적인 역 활을 하고 있다. 또한, 컴퓨터 메이커의 대기업인 Digital Equipment Corp.(DEC)는 미국 플라스틱 협회(APC)의 컴퓨터 플라스틱 폐기물 재생 계획에 참가하고 있다. 미국의 CRC는 286 컴퓨터를 인습에 메이지 않는 창조적인 계획에 많이 공급하고 있다. 샌프란시스코의 경찰은 권총과 컴 퓨터를 바꾸어 주는 이벤트를 1995년 4월22일 한바 있는데, 그때 135정의 권총이 컴퓨터와 바꾸어졌다고 한다. 정말 창조적인 착상이 아닐 수 없다.

이때 권총과 컴퓨터를 바꾼 사람들은 Black Chamber of Commerce에 의 해 제공되는 공짜 컴퓨터 강습반에서 교육을 받게 해 컴퓨터를 공부할 기 회를 주었다. 이와 같은 The computer-for-guns exchange 계획은 경찰 관리와 지역유지 그리고 CRC(computer recycling center)에 의해 점차 개 발되어져 가고 있다[2].

환경적인 측면을 중시한 영국의 computer recycling은 해마다 약600만 개의 폐기 전자제품이 쓰레기장에 버려졌다. 그러나 이들 폐기품과 관련 된 제조업자들이 재활용하거나, 처리해야 할 의무가 없지만 영국정부와

(21)

환경관련 민간단체 그리고 제조업자들은 이들 폐기품의 유독성, 즉 수은, 카드뮴 같은 유독성 화학물질이 제거되지 않고, 쓰레기장에 그대로 버려 져, 특히 납과 같은 인체에 해로운 것들로 인해서 환경 오염 이라는 재앙 을 초래케 하기 때문에 최근 들어 컴퓨터를 포함한 전자제품의 재활용 요 구가 자발적으로 일고 있다. 신사나라 다운 참여의식은 1995년 영국정부 의 생산자의무(producer responsibility)를 채택하여 제조회사에서 못쓰게 된 제품을 회수할 의무가 있게 되었다. 이러한 영국정부의 법규제정은 전 자회사에게 재활용을 하라는 압박이 아니고, 환경적인 의무에서 필요로 한다는 것이다. 생산자의무가 채택되기 전인 1994년에도 5000톤의 구형 컴퓨터 설비들이 모여졌고, 그중 85%가 스페어나 재활용으로 쓰여졌습니 다. 키보드의 PVC와 케이스의 플라스틱은 잘게 부수고 일련의 공정을 거 쳐 새로운 키보드나 케이스로 만들었고, 무엇보다도 귀찮게 생각하던 PCB의 재활용이 활발하게 이루어지고 있다[2].

복지증진을 목표로 한 캐나다의 computer recycling은 1995년 4월30일 캐나다 교육부장관인 Dave Cooke는 주 정부의 잉여 컴퓨터는 컴퓨터가 가장 필요로 하는 곳으로 보내질 것이라고 발표했다. 기증 받고, 수리된 컴퓨터는 배치위원회가 선정한대로 원주민학교와 벽지학교, 정보기술과 네트워킹이 가장 필요로 하는 오지의 학교로 보내졌다. 1995년 처음으로 캐나다 전체를 통해 학교로 보내진 재생 컴퓨터는 7000대가 됩니다. 연방 정부는 이러한 computer recycling 프로그램을 재정적, 행정적인 면에서 전적으로 지원하고 있다. 분배되는 컴퓨터는 대부분 DOS-based PC 본체 와 모니터, 키보드, 프린트가 한Set로 되어 있다. 이같이 낮은 기종이지만 캐나다 연방정부는 이러한 기종을 원할 하게 운용할 수 있는 프로그램 (software)을 지원하여 인터넷, 키보드 자판 연습이나 워드를 익히는데 아 무 지장이 없다. 연방정부는 개인이나 지방학교에 지원되는 50 titles의 소 프트웨어, 즉, WordPerfect, CorelDraw 같은 소프트웨어를 개발하여 이를 필요로 하는 곳에 무상으로 공급하고 있다[2].

2.5 본 논문의 廢컴퓨터 재활용

본 논문의 廢컴퓨터 재활용은 캐나다 정부의 computer recycling비슷한 방법이지만 다른 점이 있다면 일반인들에게 교육용으로 보급하는 것이 아

(22)

닌 대학 또는 공업계고교 전자관련학과의 컴퓨터 구조실험 실습용으로 교 구(敎具)화 하여 사용하자는 근본 아이디어에서 출발하였다.

多年間 학교현장에서 컴퓨터 하드웨어 관련 수업을 하다가 느낀 바는 컴퓨터 자원의 낭비가 다른 敎具 보다 초기투자비용이 비싼 만큼에 비해 효율성이 떨어지는 점을 안타깝게 생각되어 활용 할 수 있는 방안에 대하 여 연구하였다.

분명히 밝혀두지만, 본 논문은 새롭고 深奧한 학술적인 가치보다는 발 상의 전환을 통하여 기존의 컴퓨터 하드웨어 제어 기술에 廢컴퓨터의 재 활용이라는 사회적인 현상을 접목한 작업이라 말할 수 있다.

筆者가 본 논문을 준비하는 3年가랑, 實在의 수업의 적용한 결과 학생 들에게 computer recycling이라는 환경 교육적 측면과 손쉽게 컴퓨터 하 드웨어 제어기술을 익힐 수 있는 긍정적인 두 가지 교육적 효과를 기대할 수 있었다.

본 논문의 廢컴퓨터 재활용방법은 Ⅲ장에서 Parallel Port Control이고,

Ⅳ장에서는 Serial Port Control이며,Ⅴ장에서는 ISA BUS Control 교육방 법을 제시한다. 그리고, Ⅵ장에서는 논문 홈페이지(Homepage)를 만들어 지속적인 교구제작법과 교육방법을 제공하고 있다.

또한, 계속적으로 PCI Control과 AGP Control과 USB 통신 등과 같이 새롭게 보급되는 기술을 논문 홈페이지(http://www.cpu114.com)를 통 하여 보급할 계획이다.

(23)

Ⅲ. 병렬포트 제어

3.1 병렬포트 역사

1981년에 IBM사가 PC를 발표하면서 당시 고속인 dot matrix 프린터를 사용하기 위해서 저속인 시리얼(Serial) 포트의 대안으로서 패러렐 포트가 나왔다. 패러렐 포트는 한번에 1bit 씩 전송하는 시리얼 포트에 비해 동시 에 8bit를 전송할 수 있어 처음에는 dot Matrix 프린터에만 사용되었으나 점차 기술이 발전되어 감에 따라 고성능 주변기기를 연결하여 사용하게 되었다. 그러나 PC의 성능은 급속도로 발전되어 문제점들이 발생하였다.

즉, 전송속도가 최대 150KB/s로 느리고, 전기적인 접속에 정해진 규격이 없어 여러 장비들간에 호환성이 없고, 외부 케이블의 연결이 최대 6피트 로 제한되었다.

1991년에 프린터 제조업자들이 모여 NPA(Network Printing Alliance) 를 구성하여 IEEE에 고속 양방향 연결 규격을 만들기 위한 위원회 구성 을 제안하였다. 이 위원회가 IEEE 1284 위원회로서 1994 3월에 최종판 (Standard Signaling Method for Bi-directional Parallel Peripheral Interface for Personal Computers)이 결정되었다[12].

3.2 병렬포트란?

총25핀으로서 17개의 신호와 8개의 접지선(GND)으로 되었으며, 신호선 은 Control 4선, Status 5선, Data 8선이다. 맨 처음에 만들어 질 때에는 Control선은 PC에서 프린터로 접속과 handshaking 신호이고, Status선은 프린터의 상태를 나타내는 신호이고, data 선은 PC에서 프린터로 데이터 를 보내는 선이었다. 패러렐 포트가 PC의 I/O에 mapping이 되어 있는데, 이 LPT 포트의 주소는 3BCh, 378h, 278h로 시작된다. 처음에는 3개의 register로 되었으나 1284규격에서 378h와 278h는 8-16개의 register를 사 용할 수 있도록 하였다.

응용 분야는 가격이 싸면서 비교적 빠른 전송 속도로 PC외부에 각종 장치를 연결하여 사용할 수 있는 유일한 방법이므로 프린터 외에도 응용 분야는 매우 다양하다. 특히 PC 케이스를 열지 않고서 주변기기를 연결

(24)

하므로 사용하기가 매우 편리하면서 어떠한 PC라도 기본적으로 패러렐 포트가 표준으로 1개 이상 장착되어 있다.

저장장치(하드디스크, CD-ROM, CD-RW, DVD, LS-120, ZIP 드라이브, MO 드라이브), 스캐너, PCMCIA Card, Compact Flash Card, Multimedia Card Reader, 프린터, MP3 Player, 디지털 카메라, A/D Converter, Data Acquisition Device 등에 사용되는 컴퓨터에 있어서 기본적인 입출력(I/O) Port이다[13].

3.3 병렬포트의 규격

3.3.1 병렬포트의 신호

컴퓨터의 병렬포트의 각 핀 신호는 아래와 같다. 출력(컴퓨터에서 프린 터로 신호를 보냄), 입력(프린터에서 컴퓨터로 신호를 보냄)으로 정하면 병렬포트별 신호의 기능은 다음과 같다.

[표 3.3.1] 병렬포트의 신호

신 호 명 기 능 출력 입력

STROBE(1) PD0(2) PD1(3) PD2(4) PD3(5) PD4(6) PD5(7) PD6(8) PD7(9) -ACK(10) BUSY(11) PE(12) SLCT(13) AUTOFD(14)

-ERROR(15) -INIT (16) SLCTIN(17)

GND(18) GND(19) GND(20) GND(21) GND(22) GND(23) GND(24) GND(25)

프린터가 데이터를 가져가도록 하는 신호 데이터 비트 0

데이터 비트 1 데이터 비트 2 데이터 비트 3 데이터 비트 4 데이터 비트 5 데이터 비트 6 데이터 비트 7

컴퓨터로부터 받은 데이터를 인식했음을 알리는 신호 프린터가 인쇄 중 또는 데이터 처리 중을 알리는 신호 프린터에 종이가 없음을 컴퓨터에 알리기 위한 신호 프린터의 전원이 켜져 있는 지를 알기 위한 신호 프린터에게 케리지 리턴 후 자동으로 라인 피드 하도록 함 프린터가 종이가 없거나 에러가 발생했음을 알리는 신호 프린터를 초기화 (RESET)하기 위한 신호

컴퓨터와 연결되었음을 프린터에게 알림

(25)

[그림 3.3.1] 25-way Female D-Type Connector

위의 [그림 3.3.1]과 같이 PC의 병렬포트에는 12 개의 digital outputs와 5 digital inputs가 있는데 이들은 I/O space에서 3 개의 연속적인 8-bit port로 읽고 쓸 수 있다. DATA port로 쓰는 8 output pins, STATUS port로 읽어드리는 5 input pins (one inverted), CONTROL port로 쓰는 4 output pins (three inverted), GROUND된 나머지 8 pins 등으로 구성 되어 있다[14].

[그림 3.3.2] Parallel Printer Adapter (IBM PC/AT) Block Diagram

(26)

3.3.2 &H378D을 기준으로 한 각각의 I/O ADDRESS

[표 3.3.2] &H378D를 기준으로 한 각각의 I/O ADDRESS

어드레스 기 능

&H378 PD0에서 PD7까지의 데이터 비트를 출력하는 어드레스

&H37A -STROBE,-AUTOFD,-INIT,-SLCTIN 등의 신호를 출력하는 어드레스

&H379 -ACK, BUSY, PE, SLCT,-ERROR신호의 상태를 얻는 어드레스

3.4 병렬포트의 기본 제어

3.4.1 &H378D를 기준으로 한 각각의 I/O ADDRESS Control

[표 3.3.2]를 기준으로 만약 데이터 비트 PD0에서 PD7을 병렬포트로 출 력하고 싶을 때를 BASIC프로그램에서 구현(具現)하여 보면 OUT

&H378,FFH라고 하면 된다. 앞의 프로그램은 &H378 I/O ADDRESS에 FFH을 출력하는 것으로 이 경우 병렬포트의 PD0에서 PD7의 출력 전압 은 +5V가 된다. 또한, 모두 0V로 출력할 경우에는 OUT &H378,00H 일 때에는 병렬포트의 PD0에서 PD7의 출력 전압은 0V가 된다.

그리고 가장 오른쪽에 있는 비트를 LSB(Least Significant Bit), 가장 왼쪽의 비트를 MSB(Most Significant Bit) 라고 하며 오른쪽에서 왼쪽으 로 가면서 차례로 번호가 매겨져 있다. 그리고 각 비트들은 고유의 값을 가지고 있는데, 이 값은 그 비트의 자릿수의 값이다.

이 내용을 도표로 정리하여 보면 아래와 같다[16].

[표 3.3.3] &H378D를 기준으로 한 각 비트들은 고유의 값 비트번호 MSB

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 LSB BIT 0 승수 27 26 25 24 23 22 21 20

값 128 64 32 16 8 4 2 1

(27)

3.4.2 &H378D의 I/O ADDRESS 출력 Control Board 제작

[그림 3.3.1]을 참고로 하여 Control Board를 제작하여 보면 [그림 3.4.1]

과 같이 제작이 가능하다. 물론, 간단히 출력 을 Test하는 회로에 불과하지만 학생들에게 IBM-PC의 I/O ADDRESS 출력을 제어하여 보는 능력을 배양하는 데에는 부족함이 없 는 회로이다. 여기에서 사용되어 지는 부품 은 발광다이오드(LED) 8개, 저항 330Ω 8개, 기판 SYE-XTS 1개, 25-way Female Type Connector 1개를 사용한다.

[그림 3.4.1] Control Board

회로에 대한 간단한 설명을 요약하여 보면 발광다이오드(LED)는 각 I/O ADDRESS에서 출력되는 Data 신호를 표시하는 모니터 회로로서 동 작을 한다.

[그림 3.4.2] Control Board 회로도

그리고 저항 330Ω은 발광다이오드(LED)를 각 Port에서 발생할 수 있 는 과 전류로부터 보호하는 역할을 한다.

(28)

3.4.3 Control Board와 IBM-PC의 연결

Control Board와 IBM-PC의 연결은 [그림 3.4.3]과 같이 25-way male Type Connector를 그림과 같이 1:1로 제작한다. 25p Connector단자를 모두다 연결하는 것을 추천한다.

왜냐하면 사용목적에 따라 한번제작으로 여러 가지 용도로 사용할 수 있기 때 문이다.

[그림 3.4.3] Connector연결도

3.4.4 Quickbasic 4.5를 이용한 순차 출력1 제어프로그램

아래의 프로그램은 LED들이 하나에서 시작해서 차례로 모든 LED들이 다 켜지는 것을 반복한다[16].

' 순차 출력1 제어프로그램 DO

OUT &H378, 1

FOR I = 0 TO 10000:NEXT OUT &H378, 1 + 2

FOR I = 0 TO 10000:NEXT OUT &H378, 1 + 2 + 4 FOR I = 0 TO 10000:NEXT OUT &H378, 1 + 2 + 4 + 8 FOR I = 0 TO 10000:NEXT OUT &H378, 1 + 2 + 4 + 8 + 16 FOR I = 0 TO 10000:NEXT

OUT &H378, 1 + 2 + 4 + 8 + 16 + 32 FOR I = 0 TO 10000:NEXT

OUT &H378, 1 + 2 + 4 + 8 + 16 + 32 + 64 FOR I = 0 TO 10000:NEXT

(29)

OUT &H378, 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 FOR I = 0 TO 10000:NEXT

LOOP UNTIL INKEY$ <> ""

3.4.5 Quickbasic 4.5를 이용한 순차 출력2 제어프로그램

&H378D의 I/O ADDRESS 출력 Control Board 제어프로그램은 Quickbasic 4.5를 이용하여 제어한다[8].

' 순차 출력2 제어프로그램

p = &H378 '출력 Port의 I/O ADDRESS값을 지정한다.

led = &H1 ' led의 초기 출력 값을 지정한다.

FOR i = 1 TO 9

OUT p, led 'OUT &H378, &H1을 출력한다.

GOSUB delay '지연루프로 이동한다.

led = (led * 2)

NEXT i

led = &HFF

FOR i = 1 TO 10 OUT p, led

GOSUB delay led = (led / 2)

NEXT i END

delay:

FOR y = 1 TO 5000 '컴퓨터 기종에 따라 지연시간 조절.

(30)

NEXT y RETURN

3.4.6 Quickbasic 4.5를 이용한 ON, OFF 출력 제어프로그램

아래의 프로그램을 실행시키면 초기 화면에서는 출력이 나오지 않지만 숫자 1을 누르면 화면에 "ON" 이 표시되면서 LED가 ON이 되고, 0을 누 르면 "OFF" 가 나오고 LED는 OFF가 된다. 프로그램 종료하려면 숫자 9 를 누르면 된다[16].

' ON, OFF 출력 제어프로그램 DO

a$ = INKEY$

IF a$ = "1" THEN OUT &H378, 1:PRINT "ON"

IF a$ = "0" THEN OUT &H378, 0:PRINT "OFF"

LOOP UNTIL a$ = "9"

3.4.7 Quickbasic 4.5를 이용한 LED값 표시 출력 제어프로그램 16진 값을 프린터 포트에 연결된 LED로 표시하고 컴퓨터 화면에는 2진

값으로 표시한다[8].

CLS

DEFSTR K P = &H378

LOCATE 9, 7: hexprint$ = "SELECT NUMBER 1 2 3 4 5 6 7 8 9 A B C D E F"

PRINT hexprint$

msb = &H0

start:

DO

keyin = INKEY$

(31)

LOOP WHILE keyin = ""

SELECT CASE keyin CASE "0" TO "9"

conv = VAL(keyin) OUT P, conv OR msb

CASE "a" TO "f", "A" TO "F"

conv = ASC(UCASE$(keyin)) - 55

OUT P, conv OR msb

CASE ELSE BEEP

END SELECT

h = conv OR msb

PRINT HEX$(h); : PRINT " Bin is ";

bin:

bin$ = ""

FOR i = 0 TO 7

bin$ = STR$(h MOD 2) + bin$

h = FIX(h / 2) NEXT i

PRINT bin$

msb = conv * &H10

GOTO start

(32)

3.4.8 Quickbasic 4.5를 이용한 좌,우 Shift 출력 제어프로그램

출력되는 신호를 차례로 좌,우 Shift 되도록 제어하는 무한 루프 프로그 램을 응용한다[16].

CLS '화면을 초기화 합니다.

ADDR = &H378 ' 데이터 레지스터 주소를 설정한다.

DELAY = 10000 ' 지연시간 설정. 각자 취향에 따라 변경한다.

DO ' 무한루프를 돌게 한다.

FOR LEDNO = 1 TO 7 ' 1번부터 7번 LED까지 차례로 켠다.

OUT ADDR, 2 ^ (LEDNO - 1) ' 레지스터에 값을 계산해 넣는다.

FOR I = 0 TO DELAY: NEXT ' 불빛 속도 지연루프.

NEXT ' 다음 LED를 켜기 위해 처음으로 이동한다.

FOR LEDNO = 8 TO 2 STEP -1 ' 8번부터 2번까지 다시 회전한다.

OUT ADDR, 2 ^ (LEDNO - 1) FOR I = 0 TO DELAY: NEXT NEXT

LOOP UNTIL INKEY$ <> "" ' 아무 키나 누를 때까지 루프 한다.

(33)

3.4.9 Visual Basic 3.0을 이용한 출력 제어프로그램

3.4.9절에서는 Visual Basic 3.0을 이용하여 제어하는 방법을 소개한다.

물론 위의 Quickbasic 4.5를 이용하여 제어하는 것과 동일하지만 폐기용 컴퓨터의 재활용이라는 측면에서 여기서는 Windows환경의 컴퓨터에서 제어하는 방법을 소개한다.

[그림 3.4.4] Visual Basic 3.0을 이용한 출력 제어프로그램

[그림 3.4.5] Visual Basic 3.0을 이용한 개발환경

3.4.9절에서는 [그림 3.4.4]와 같이 Windows환경의 컴퓨터에서 제어되는 프로그램을 구성하였다. Visual Basic 3.0을 이용한 개발환경은 [그림 3.4.5]와 같다. 여기에서 제어되고 있는 제어 소스는 아래와 같은데 Visual Basic 3.0에서 생성되는 *.frm 파일을 메모장으로 Open한 소스이다.

(34)

이때는 반드시 Windows의 System 밑에 반드시 inpout.dll 파일과 vbrun300.dll 파일이 존재하여야만 출력 제어가 가능하다. 이 파일을 구하 려면 논문홈페이지 http://www.cpu114.com에서 다운로드 하면 된다.

또한, Visual Basic 3.0을 이용한 출력 제어의 전체 Program은 [부록1]

Visual Basic 3.0을 이용한 출력 제어 전체 Source에 첨부되어 있다.

3.4.10 Turbo C++ 3.0을 이용한 LED ON, OFF 반전 제어프로그램1 3.4.10절에서는 Turbo C++ 3.0을 이용하여 제어하는 방법을 소개한다.

물론, Turbo C++ 3.0의 일반적인 사항이지만 반드시 Option에서 Linker 에서Graphics library를 선택하고 Standard Run Time도 선택한다. 또한, 디렉토리 선택도 Option에서 Directories에서 Include Directories설정을 C:\TC30\INCLUDE와 Library Directories설정을 C:\TC30\LIB를 사용자 환경에 맞는 적절한 Path로 설정하여야 한다[20].

[그림 3.4.6] Turbo C++ 3.0 이용한 개발환경

#include <dos.h>

#include <stdio.h>

#include <conio.h>

main()

(35)

{

int count,kb_press;

clrscr();

gotoxy(15,5);

printf("LED ON_OFF 반전 PROGRAM");

gotoxy(15,15);

printf("종료시-> Ctrl+Z을 누르세요!");

outportb(0x37a,0x04);

_setcursortype(_NOCURSOR);

for(;;) {

gotoxy(15,6);

printf("0 0 0 0 0 0 0 0");

outportb(0x378,0x00);

delay(300);

gotoxy(15,6);

printf("1 1 1 1 1 1 1 1");

outportb(0x378,0xff);

delay(300);

if (kbhit()) {

kb_press = getch();

if (kb_press==26) break;

} } }

3.4.11 Turbo C++ 3.0을 이용한 LED ON, OFF 반전 제어프로그램2 3.4.11절에서는 LED의 ON, OFF를 그래픽환경으로 컴퓨터 모니터에 구 현하는 프로그램을 소개한다. [부록2] 소스는 "box_a.h"라는 헤더파일을 보여주고 있는데 이것은 병렬포트로 출력되는 LED의 ON, OFF제어상태 를 컴퓨터 모니터로 확인할 수 있는 헤더파일 소스이다.

(36)

여기에서도 3.4.10절과 같이 Option에서 Linker에서Graphics library를 선택하고 Standard Run Time도 선택한다. 또한, 디렉토리 선택도 Option 에서 Directories에서 Include Directories설정을 C:\TC30\INCLUDE와 Library Directories설정을 C:\TC30\LIB를 사용자 환경에 맞는 적절한 Path로 설정하여야 한다. 또한, *.bgi 파일은 Borland Graphic Interface로 서 각종 VGA카드를 지원해 주는 파일이다. 그리고, *.chr 파일은 각종 문 자체를 지원해주는 파일이다. 위의 모든 파일을 구하려면 논문홈페이지 http://www.cpu114.com에서 다운로드 하면 된다[20].

또한, box_a.h 헤더파일 전체 Program은 소스 [부록2] box_a.h 헤더파 일 전체 Source에 첨부되어 있다. 아래의 [그림 3.4.7]은 box_a.h 헤더파일 로 구현한 제어 그래픽을 보여주고 있다.

[그림 3.4.7] box_a.h 헤더파일 그래픽1

아래의 소스는 "box_a.h"파일을 이용하여 LED ON, OFF 반전되도록 제어프로그램을 구현하였다[20].

#include "box_a.h"

void main(void) {

(37)

int kb_press;

int graphdriver=DETECT, graphmode;

initgraph(&graphdriver, &graphmode, "");

cleardevice();

tool_box();

// start user program outportb(0x37a,0x04);

for(;;) {

port_1_d_off();

outportb(0x378,0x00);

delay(1000);

port_1_d_on();

outportb(0x378,0xff);

delay(1000);

if (kbhit()) {

kb_press = getch();

if (kb_press==26) break;

} }

closegraph();

}

3.4.12 Turbo C++ 3.0을 이용한 LED ON, OFF 반전 제어프로그램3 3.4.12절에서는 "box_a.h" 헤더파일을 이용하여 상위4비트와 하위4비트 를 교대로 LED ON, OFF시키도록 제어하는 프로그램을 구현하였다.

#include "box_a.h"

#define p1_on 12

(38)

#define p2_on 10

#define p3_on 7 void main(void)

{

int kb_press;

int graphdriver=DETECT, graphmode;

initgraph(&graphdriver, &graphmode, "");

cleardevice();

tool_box();

// start user program

outportb(0x37a,0x04);

for(;;) {

port_1_d_status(p1_on,p1_on,p1_on,p1_on,p_off,p_off,p_off,p_off);

outportb(0x378,0xf0);

delay(300);

port_1_d_status(p_off,p_off,p_off,p_off,p1_on,p1_on,p1_on,p1_on);

outportb(0x378,0x0f);

delay(300); // 300/1000(0.3초) 시간지연 if (kbhit())

{

kb_press = getch();

if (kb_press==26) break;

} }

closegraph();

}

(39)

[그림 3.4.8] box_a.h 헤더파일 그래픽2

3.4.13 Turbo C++ 3.0을 이용한 LED 순차 제어프로그램

3.4.13절에서는 "box_a.h" 헤더파일을 이용하여 LED 순차적으로 제어하 는 프로그램을 구현하였다.

#include "box_a.h"

void main(void) {

int kb_press;

int data,count;

int graphdriver=DETECT, graphmode;

initgraph(&graphdriver, &graphmode, "");

cleardevice();

tool_box();

// start user program data=0x80;

count=0;

(40)

outportb(0x37a,0x04);

for(;;) {

outportb(0x378,data);

data=data>>1;

if(data==0x00) data=0x80;

port_1_d_sel(count);//0-7 count=count++;

if(count>7) count=0;

delay(300); // 300/1000(0.3초) 시간지연 if (kbhit())

{

kb_press = getch();

if (kb_press==26) break;

} }

closegraph();

}

[그림 3.4.9] box_a.h 헤더파일 그래픽3

(41)

3.5 병렬포트의 응용 제어

3.5.1 Seven Segment(FND) Control Board 제작1

[그림 3.4.1] Control Board를 응용하여 기본적인 부품 및 회로를 첨가 하여 새롭게 제어할 수 있는 응용 보드를 제작한다. 3.5.1에서는 Seven Segment(FND)를 이용하여 보드를 제작한 다. [그림 3.5.1] FND Control Board의 제 작에 사용되는 부품은 저항 150Ω 1개와 Common Cathode FND 500 1개를 사용하 는데 제작방법은 [그림 3.4.1] Control Board의 제작방법과 동일한 기판 SYE-XTS 1개, 25-way Female Type Connector 1개를 사용한다.

[그림 3.5.1] FND Control Board1

[그림 3.5.2] FND Control Board 회로도1

(42)

3.5.2 Quickbasic 4.5를 이용한 Seven Segment(FND)1 제어프로그램 Seven Segment(FND)1 제어프로그램의 동작은 키보드에서 숫자를 입 력받아 그 숫자를 그대로 프린터포트의 숫자표시기에 표시하는 간단한 기 능을 제어하는 것으로 프로그램은 폰트 데이터를 배열에 하나씩 넣는 걸 로 시작한다. 폰트데이터는 그 값을 바꿀 필요가 없으므로 READ- DATA문안에 넣어서 배열로 읽어들인다. 또한 숫자별로 발광시키는 세그 먼트를 표로 만들어보면 아래의 [표 3.5.1] 세그먼트 표1과 같다[16].

[표 3.5.1] 세그먼트 표1

숫자 표시 세그먼트 세그먼트에 해당하는 자릿수 더한값

0 A B C D E F 1 2 4 8 16 32 63

1 B C 2 4 6

2 A B D E G 1 2 8 16 64 91

3 A B C D G 1 2 4 8 64 79

4 B C F G 2 4 32 64 102

5 A C D F G 1 4 8 32 64 109

6 A C D E F G 1 4 8 16 32 64 125

7 A B C F 1 2 4 32 39

8 A B C D E F G 1 2 4 8 16 32 64 127

9 A B C D F G 1 2 4 8 32 64 111

' 10진수 표시 프로그램 CLS '화면 초기화

DIM FONT(9) ' 폰트데이터를 넣을 배열 준비 FOR I = 0 TO 9 ' 배열에 순서대로 읽어 넣음 READ FONT(I)

NEXT

DATA 63, 6, 91, 79, 102 ' 폰트데이터 DATA 109, 125, 39, 127, 111

' 다음 프린터포트의 주소를 변수에 지정합니다.

SgAddr = &H378 ' 숫자표시기 포트 주소

' 그리고 숫자표시기를 초기화시키는데, 모든 세그먼트를 OFF 한다.

OUT SgAddr, 0 ' 숫자표시기를 초기화함

(43)

' 키보드에서 숫자를 받아 FND에 출력하는 무한루프를 구성한다.

DO

INPUT NUMBER ' 표시할 숫자를 입력받음

OUT SgAddr, FONT(NUMBER) ' 숫자표시기에 숫자 출력 LOOP ' 끝없이 반복

3.5.3 Quickbasic 4.5를 이용한 Seven Segment(FND)2 제어프로그램 이 절에서는 3.5.2를 응용하여 16진수를 표시하는 폰트를 제작하여보면 [표 3.5.2] 세그먼트 표2와 같다[16].

[표 3.5.2] 세그먼트 표2

숫자 표시 세그먼트 세그먼트에 해당하는 자릿수 더한값

A A B C E F G 1 2 4 16 32 64 119

B(b) C D E F G 4 8 16 32 64 124

C A D E F 1 8 16 32 57

D(d) B C D E G 2 4 8 16 64 94

E A D E F G 1 8 16 32 64 121

F A E F G 1 16 32 64 113

' 16진수 표시프로그램

DIM FONT(15) '폰트데이터를 넣을 배열 준비한다.

FOR I = 0 TO 15 ' 배열에 순서대로 읽어 넣는다.

READ FONT(I) NEXT

' 그리고 폰트데이터에 A...F까지의 데이터를 추가한다.

DATA 63, 6, 91, 79, 102 ' 폰트데이터 DATA 109, 125, 39, 127, 111

DATA 119, 124, 57, 94, 121, 113 ' 16진수 숫자 추가 폰트데이터

' 다음 프린터포트의 주소를 변수에 지정한다.

SgAddr = &H378 ' 숫자표시기 포트 주소

(44)

' 그리고 숫자표시기를 초기화시키는데, 모든 세그먼트를 꺼 놓는다.

OUT SgAddr, 0 ' 숫자표시기를 초기화한다.

' 키보드에서 숫자를 받아 FND에 출력하는 무한루프를 구성한다.

DO

INPUT NUMBER ' 표시할 숫자를 입력받는다.

OUT SgAddr, FONT(NUMBER) ' 숫자표시기에 숫자 출력한다.

LOOP ' 끝없이 반복

3.5.4 Quickbasic 4.5를 이용한 Seven Segment(FND)3 제어프로그램 이 절에서는 3.5.3을 응용하여 숫자표시기(FND)를 가지고 전자주사위를 구현한다. 전자주사위는 1에서 6까지의 숫자가 무작위로 표시하도록 한다.

그리고, 숫자표시기의 직사각형으로 배치된 6개 세그먼트를 차례로 켜나 감으로써 반짝이는 불이 전자주사위 주변을 회전하는 효과를 내어본다.

즉 A, B 세그먼트를 켠 다음 다시 B, C... 다음 다시 C, D... 이런 식으로 하나씩 엇물려 켜나가면서 불이 숫자표시기를 회전하게 한다[16].

세그먼트 A와 B를 켜려면, 각각의 자릿수인 1과 2를 더한 3을 데이터 레지스터에 써넣으면 된다. 그러면 B와 C는 2 + 4 = 6이 되고, C와 D는 4 + 8 = 12가 된다. 이것을 표로 만들면 [표 3.5.3] 세그먼트 표3과 같다.

[표 3.5.3] 세그먼트 표3

표시 세그먼트 세그먼트 자릿수 더한값

A B 1 2 3

B C 2 4 6

C D 4 8 12

D E 8 16 24

E F 16 32 48

F A 32 1 33

' 전자주사위 프로그램

Fadd = &H378 ' 어드레스 지정 한다.

DIM ANI(5), FONT(15) ' 배열 준비 한다.

FOR I = 0 TO 5 ' 애니메이션 데이터 읽어들인다.

(45)

READ ANI(I) NEXT

DATA 3, 6, 12, 24, 48, 33 ' 애니메이션 데이터

FOR I = 0 TO 15 ' 숫자 폰트데이터를 읽어 넣는다.

READ FONT(I) NEXT

DATA 63, 6, 91, 79, 102 ' 숫자 폰트데이터 DATA 109, 125, 39, 127, 111

DATA 119, 124, 57, 94, 121, 113

LOT = 0 ' 처음 배열 위치 지정한다.

DO ' 메인 루프

CLS ' 화면 지움

LOCATE 5, 5:PRINT "Press <Space> Key to betting!!"

DO

OUT Fadd, ANI(LOT)

IF LOT < 5 THEN LOT = LOT + 1 ELSE LOT = 0 FOR I = 0 TO 5000:NEXT ' 시간지연루프

LOOP UNTIL INKEY$ = " " ' 스페이스 KEY를 칠 때까지 수행 OUT Fadd, FONT(INT(RND * 6) + 1) ' 주사위 숫자 표시한다.

CLS

LOCATE 5, 5:PRINT "Press Any key to continue or"

LOCATE 7, 5:PRINT "Press <Esc> Key to quit the game!!"

A$ = INPUT$(1)

LOOP UNTIL A$ = CHR$(27) ' ESC키가 눌려지면 끝난다.

(46)

3.5.5 Data Input Board 제작

병렬포트를 가지고 지금까지는 출력하는 회로를 제작하여 제어는 프로 그램을 구현하여 보았다. 3.5.5장에서는 병 렬포트를 가지고 입력하는 회로를 구성하 여 보고, 제어하는 프로그램을 구현한다.

&H379 I/O ADDRESS는 각종 신호의 상 태를 얻는 어드레스이다. 입력하는 비트별 내용은 [표 3.3.2]&H378D를 기준으로 한 각각의 I/O ADDRESS와 같다. [그림 3.5.3] Data Input Board의 제작에 사용되 는 부품은 저항 330Ω 5개와 발광다이오드 5개를 사용한다.

[그림 3.5.3] Data Input Board

그리고, Dip SW 10p 1개, LM7805 1개, 건전지 스냅 1개를 사용하는데 제작방법은 [그림 3.4.1] Control Board의 제작방법과 동일한 기판 SYE-XTS 1개, 25-way Female Type Connector 1개를 사용한다.

[그림 3.5.4] 데이터(Data) 입력(input) Board 회로도

(47)

3.5.6 Quickbasic 4.5를 이용한 Data Input 제어프로그램1

Data Input 제어프로그램은 &H379 I/O ADDRESS에서 얻어지는 Data 상태를 읽어 제어하는 프로그램으로 기본제어 방법을 소개한다. 각 신호 에 입력되는 입력 값을 베이직 프로그램으로 구해보았는데, 방법은 다음 과 같다.

' Data Input 제어프로그램

PRINT INP(&H379) ' Dip SW로부터 입력되는 값을 화면에 나타낸다.

FOR I=1 TO 2000 : NEXT ' 화면에 나타내는 시간을 지연한다.

3.5.7 Quickbasic 4.5를 이용한 Data Input 제어프로그램2

3.5.6을 조금 응용하여 Data Input 제어프로그램을 구현하여 보면 아래 와 같다.

' Data Input 제어프로그램

' Data Input 값을 A변수에 저장한다.

A=INP(&H379)

' A변수의 값이 136와 같다면 소리가나고 그렇지 않으면 종료한다.

IF A=136 THEN BEEP ELSE END

즉, DIP SW에서 입력되는 값이 136와 같다면 소리가 울리고 그렇지 않으면 마친다.

예를 들어 DIP SW ERROR 즉, 15번 핀을 ON했을 때 나타나는 값은 136을 나타나고 있다. 그래서 원시적인 방법이지만 하나하나 눌러서 검출 한 값은 아래의 [표 3.5.4] Data Input Value와 같다.

또한, 입력되는 Value는 25이 되므로 32가지의 경우의 Data Input Value를 검출할 수 있다. 그리고, 컴퓨터의 기종에 따라 얻어지는 Value 는 차이가 날 수 있으므로 아래의 [표 3.5.4] Data Input Value는 저자의 컴퓨터 기종의 예를 들어 작성하였다.

(48)

[표 3.5.4] Data Input Value

Pin 11 10 12 13 15

Value 기능 BUSY(S7) ACK(S6) PE(S5) SLCT(S4) ERROR(S3)

1 0 0 0 0 0 128

2 0 0 0 0 1 136

3 0 0 0 1 0 144

4 0 0 0 1 1 152

5 0 0 1 0 0 160

6 0 0 1 0 1 168

7 0 0 1 1 0 176

8 0 0 1 1 1 184

9 0 1 0 0 0 192

10 0 1 0 0 1 200

11 0 1 0 1 0 208

12 0 1 0 1 1 216

13 0 1 1 0 0 224

14 0 1 1 0 1 232

15 0 1 1 1 0 240

16 0 1 1 1 1 248

17 1 0 0 0 0 0

18 1 0 0 0 1 8

19 1 0 0 1 0 16

20 1 0 0 1 1 24

21 1 0 1 0 0 32

22 1 0 1 0 1 40

23 1 0 1 1 0 48

24 1 0 1 1 1 56

25 1 1 0 0 0 64

26 1 1 0 0 1 72

27 1 1 0 1 0 80

28 1 1 0 1 1 88

29 1 1 1 0 0 96

30 1 1 1 0 1 104

31 1 1 1 1 0 112

32 1 1 1 1 1 120

(49)

3.5.8 Quickbasic 4.5를 이용한 방범(防犯) 제어프로그램

위의 [표 3.5.4] Data Input Value를 이용하여 입력되는 Data Value를 받아 제어하는 방범(防犯)제어 시스템을 구현하여 보았다.

또한, Quickbasic4.5를 이용한 방범(防犯) 제어프로그램의 전체 Program 은 소스 [부록3] Quickbasic 4.5를 이용한 방범(防犯) 제어프로그램 전체 Source에 첨부되어 있다.

100 '검색

COLOR 4, 3 : LOCATE 10, 23 : PRINT TIME$

y = INP(&H379)

IF y = 128 THEN GOSUB 1000

IF y = 192 THEN c(1) = 1: GOSUB 1000 IF y = 0 THEN c(2) = 1: GOSUB 1000

[부분Source 3.5.1] QB4.5를 이용한 방범 프로그램 부분Source

3.5.9 Visual Basic 3.0을 이용한 Data Input 제어프로그램

3.4.9절과 같이 Visual Basic 3.0을 이용하여 제어하는 방법을 소개한다.

물론 위의 Quickbasic 4.5를 이용하여 제어하는 것과 동일하지만 폐기용 컴퓨터의 재활용이라는 측면에서 여기서는 Windows환경의 컴퓨터에서 제어하는 방법을 소개한다.

[그림 3.5.5] Visual Basic 3.0을 이용한 Data Input 제어프로그램

(50)

3.5.9절에서는 [그림 3.5.5]와 같이 Windows환경의 컴퓨터에서 제어되는 프로그램을 구성하였다. Visual Basic 3.0을 이용한 개발환경은 [그림 3.5.6]와 같다. 여기에서 제어되고 있는 제어 소스는 아래와 같은데 Visual Basic 3.0에서 생성되는 *.frm 파일을 메모장으로 Open한 소스이다.

[그림 3.5.6] Visual Basic 3.0을 이용한 개발환경 VERSION 2.00

Begin Form Form1

Caption = "병렬포트 제어 프로그램"

ClientHeight = 2820 ClientLeft = 1275 ClientTop = 1890 ClientWidth = 10110 Height = 3225 Left = 1215 LinkTopic = "Form1"

ScaleHeight = 2820 ScaleWidth = 10110

Top = 1545

(51)

Width = 10230

Begin CommandButton Command10 Caption = "종 료"

Height = 615 Left = 1080 TabIndex = 1

Top = 1440

Width = 8655 End

Begin CommandButton Command1

Caption = "입력보기(Click)"

Height = 615 Left = 1080 TabIndex = 0

Top = 600

Width = 8655 End

End

Declare Function Inp Lib "inpout.dll" (ByVal Port%) As Integer Declare Sub OUT Lib "inpout.dll" (ByVal Port%, ByVal Value%)

Sub Command1_Click () Print Inp(&H379)

For i = 1 To 2000: Next End Sub

Sub Command10_Click () End

End Sub

이때는 반드시 Windows의 System 밑에 반드시 inpout.dll 파일과 vbrun300.dll 파일이 존재하여야만 출력 제어가 가능하다. 위의 파일을 구 하려면 논문홈페이지 http://www.cpu114.com에서 다운로드 하면 된다.

(52)

3.5.10 Relay Control Board 제작

디지털 회로에서 외부에 있는 전자기기나 모터 등을 구동시키는 경우에 가장 손쉽게 사용되는 것이 전자 릴레이(Relay)이다. 이 릴레이는 전자석 과 기계접점으로 구성되어 있어 전자석을 on/off 함으로서 기계접점을 on/off 할 수 있다. 또한, 출력에 트랜 지스터를 연결함으로써 베이스단자에 전류를 흘려주게 되고, 트랜지스터 콜 렉터 단자에는 베이스 전류의 수십 배 에 해당하는 콜렉터 전류를 흘릴 수 있게 된다. 트랜지스터의 증폭작용으로 인하여 릴레이에는 정격전압과 충분한 동작전류를 공급할 수 있게 된다. 릴레 이와 병렬로 연결된 다이오드는 릴레 이의 스위칭 작용으로 발생하는 서지 (릴레이의 코일에 의한 역기전압으로 발생되는 펄스성 전압)전압의 흡수용으 로, 아주 중요한 역할을 한다.

[그림 3.5.7] Relay Control Board

릴레이와 같이 전류용량이 비교적 큰 부하를 구동하는 다른 방법으로, 오픈 컬렉터 타입의 IC를 이용하거나 전류 증폭률이 큰 달링턴 드라이버 IC를 이용하는 방법도 있다.

그리고, 사용되는 부품은 저항 470Ω 1개, 다이오드 1N4001 1개, Header 1개, Relay DC9V 1개, 트랜지스터 C945 1개, 사용하는데 제작방 법은 [그림 3.4.1] Control Board의 제작방법과 동일한 기판 SYE-XTS 1 개, 25-way Female Type Connector 1개를 사용한다[17].

(53)

[그림 3.5.8] Relay Control Board 회로도

3.5.11 Quickbasic 4.5를 이용한 Relay 제어프로그램

아래의 프로그램을 실행시키면 초기 화면에서는 출력이 나오지 않지만 숫자 1을 누르면 화면에 "Relay ON" 이 표시되면서 Relay가 ON이 되고, 0을 누르면 "Relay OFF" 가 나오고 Relay는 OFF가 된다. 프로그램 종료 하려면 숫자 9를 누르면 된다[16].

' Relay ON, OFF 출력 제어프로그램 DO

a$ = INKEY$

IF a$ = "1" THEN OUT &H378, 1:PRINT "Relay ON"

IF a$ = "0" THEN OUT &H378, 0:PRINT "Relay OFF"

LOOP UNTIL a$ = "9"

(54)

3.5.12 Visual Basic 3.0을 이용한 Relay 제어프로그램

3.4.9절과 같이 Visual Basic 3.0을 이용하여 제어하는 방법을 소개한다.

물론 위의 Quickbasic 4.5를 이용하여 제어하는 것과 동일하지만 폐기용 컴퓨터의 재활용이라는 측면에서 여기서는 Windows환경의 컴퓨터에서 제어하는 방법을 소개한다.

[그림 3.5.9] Visual Basic 3.0을 이용한 Relay 제어프로그램

Visual Basic 3.0을 이용한 개발환경은 [그림 3.5.10]와 같다. 여기에서 제어되고 있는 제어 소스는 아래와 같은데 Visual Basic 3.0에서 생성되 는 *.frm 파일을 메모장으로 Open한 소스이다.

VERSION 2.00 Begin Form Form1

Caption = "병렬포트 제어 프로그램"

ClientHeight = 2610 ClientLeft = 1275 ClientTop = 1890 ClientWidth = 10110 Height = 3015 Left = 1215 LinkTopic = "Form1"

ScaleHeight = 2610 ScaleWidth = 10110

Top = 1545

Width = 10230

(55)

Begin CommandButton Command10 Caption = "종 료"

Height = 615

Left = 360

TabIndex = 2

Top = 1440

Width = 9375 End

Begin CommandButton Command2 Caption = "Relay OFF"

Height = 495 Left = 5280 TabIndex = 1

Top = 600

Width = 4455 End

Begin CommandButton Command1 Caption = "Relay ON"

Height = 495

Left = 360

TabIndex = 0

Top = 600

Width = 4455 End

End

Declare Function Inp Lib "inpout.dll" (ByVal Port%) As Integer Declare Sub OUT Lib "inpout.dll" (ByVal Port%, ByVal Value%)

Sub Command1_Click () OUT &H378, 1

End Sub

(56)

Sub Command10_Click () End

End Sub

Sub Command2_Click () OUT &H378, 0

End Sub

[그림 3.5.10] Visual Basic 3.0을 이용한 개발환경

이때는 반드시 Windows의 System 밑에 반드시 inpout.dll 파일과 vbrun300.dll 파일이 존재하여야만 출력 제어가 가능하다.

위의 모든 파일을 구하려면 논문홈페이지 http://www.cpu114.com에서 다운로드 하면 된다.

(57)

3.5.13 Seven Segment(FND) Control Board 제작2

3.5.13절에서는 Seven Segment를 이용하여 99진 카운터와 시계를 제작 하는 회로를 구성하였다. 사용되는 부품은 저항 130Ω 8개, Common Cathode FND 4개를 사용하는데 제작방법은 [그림 3.4.1] Control Board의 제작방법과 동일한 기판 SYE-XTS 1개, 25-way Female Type Connector 1개를 사용한다 [20].

[그림 3.5.11] FND Control Board2

[그림 3.5.12] FND Control Board 회로도2

(58)

3.5.14 Turbo C++ 3.0을 이용한 100진 카운터 제어프로그램

FND Control Board2의 세 번째와 네 번째 FND를 이용하여 100진 카 운터를 제작한다. 3.4.14절에서도 Turbo C++ 3.0의 일반적인 사항이지만 반드시 Option에서 Linker에서Graphics library를 선택하고 Standard Run Time도 선택한다. 또한, 디렉토리 선택도 Option에서 Directories에서 Include Directories설정을 C:\TC30\INCLUDE와 Library Directories설정 을 C:\TC30\LIB를 사용자 환경에 맞는 적절한 Path로 설정하여야 한다.

[부록4]는 "box_b.h"라는 헤더파일을 보여주고 있는데 이것은 병렬포트 로 출력되는 FND의 제어상태를 컴퓨터 모니터로 확인할 수 있는 헤더파 일 소스이다. 또한, *.bgi 파일은 Borland Graphic Interface로서 각종 VGA카드를 지원해 주는 파일이다. 그리고, *.chr 파일은 각종 문자체를 지원해주는 파일이다.

위의 모든 파일을 구하려면 논문홈페이지 http://www.cpu114.com에서 다운로드 하면 된다[20].

또한, box_b.h 헤더파일의 전체 Program은 소스 [부록4] box_b.h 헤더 파일의 전체Source에 첨부되어 있다.

아래의 [그림 3.5.13]은 box_b.h 헤더파일로 구현한 제어 그래픽을 보여 주고 있다.

[그림 3.5.13] box_b.h 헤더파일 그래픽1

수치

[그림 3.3.2] Parallel Printer Adapter (IBM PC/AT) Block Diagram
[그림 3.4.7] box_a.h 헤더파일 그래픽1
[그림 3.4.8] box_a.h 헤더파일 그래픽2 3.4.13 Turbo C++ 3.0을 이용한 LED 순차 제어프로그램 3.4.13절에서는 &#34;box_a.h&#34; 헤더파일을 이용하여 LED 순차적으로 제어하 는 프로그램을 구현하였다
[그림 3.5.1] FND Control Board1
+7

참조

관련 문서

• 작업 관리자는 컴퓨터에서 실행 중인 프로그램과 프로세스에 대핚 정보를 제공하며 가장 많이 사용되는 프로세스 성능 측정값을 제공 핚다. • 작업 관리자를 실행하는

•• 사용자가 사용자가 입력핚 입력핚 명령이나 명령이나 파읷에서 파읷에서 인어 인어 들읶 들읶 명령을 명령을 해석하고 해석하고

–– 주 주 기능은 기능은 CPU CPU 내에 내에 있는 있는 회로로 회로로 기계어 기계어 명령을 명령을 해독하여 해독하여 필요핚 필요핚 제어 제어 싞호를.

• 예전에는 컴퓨터를 멀티미디어 시스템이라고 정의했지만, 최근에는 스마트폰과 태블릿 PC 같은 스마트 미디어들도

•• 비압축 비압축 디지털 디지털 오디오 오디오//비디오 비디오 데이터를 데이터를 젂송하기 젂송하기 위핚 위핚 소형 소형

現代 韓國漢字音 -ju형은 現代 中國漢字音에서 -uei형, -ei형, -i형으로 대응되며, 日本 常用漢字音에서는 -i형, -ui형으로 대응된다.. 現代

이 과정을 통해 학생들이 컴퓨터가 과학 및 기 술의 발전에 따라 어떻게 진화해 왔고, 인류의 삶에 어떤 영향을 미쳤는가를 역사적인

이렇게 얻은 많은 정보들은 스마트 폰, 태블릿 PC 등의 다양한 어플리케이션 기능을 이용하면 새롭게 재생산하여 다른 사람들과 공유 할 수