• 검색 결과가 없습니다.

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 LSB BIT 0

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

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 ' 숫자표시기를 초기화함

' 키보드에서 숫자를 받아 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 ' 숫자표시기 포트 주소

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

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 ' 애니메이션 데이터 읽어들인다.

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키가 눌려지면 끝난다.

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 회로도

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는 저자의 컴퓨터 기종의 예를 들어 작성하였다.

[표 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

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 제어프로그램

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

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에서 다운로드 하면 된다.

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].

[그림 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"

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에서 생성되

Visual Basic 3.0을 이용한 개발환경은 [그림 3.5.10]와 같다. 여기에서 제어되고 있는 제어 소스는 아래와 같은데 Visual Basic 3.0에서 생성되

관련 문서