제 2 장 74HC574 소자를 이용한 LED DISPLAY

Download Report

Transcript 제 2 장 74HC574 소자를 이용한 LED DISPLAY

제 2 장
74HC574 소자를 이용한 LED DISPLAY
2.1 하드웨어란? (V=I·R) (1)
전압(V) : 전류가 흐를 수 있도록 해주는 전위
차. 높은 전압에서 낮은 전압으로 전류를 흘려
준다. TTL회로에서는 5V 가 사용된다.
전류(I) : 회로에 흐르면서 전자 소자들이 일
을 하면서 소비하는 것.
저항(R) : 전류의 흐름을 막는 소자이며, 각각
의 소자에게 적정량의 전류를 제공하기 위해
사용하는 소자
제 2장 74HC574 소자를 이용한
LED DISPLAY
2
2.1 하드웨어란? (V=I·R) (2)
Àü·ùÀÇ ¹æÇâ
5V
A
5V
°ø±ÞÀü·ù
B
R1
LED
È帣´Â Àü·ù ?
전압 : 5V
LED가 필요로 하는 전류 : 15mA
R=5000(V)/15(I) ≒ 330Ω
LED를 켜기 위한 저항값은 대략 330Ω
제 2장 74HC574 소자를 이용한
LED DISPLAY
3
2.2 어셈블리어란? (1)
어셈블리어 : 마이컴 운용을 위한 명령들
* 매일 해야 할것들 *
1. 10시에 화분에 물주기
2. 12시에 계단청소
3. 13시에 점심식사
4. 15시에 시장보기
제 2장 74HC574 소자를 이용한
LED DISPLAY
* 어셈블리어 *
MAIN : MOV A,#00H
MOV P1,A
CALL D_1S
MOV A,#0FFH
MOV P1,A
CALL D_1S
JMP MAIN
4
2.2 어셈블리어란? (2)
[ 어셈블리어 예제 ]
MAIN:
MOV
MOV
CALL
MOV
MOV
CALL
JMP
A,#00H
P1,A
D_1S
A,#0FFH
P1,A
D_1S
MAIN
;
;
;
;
;
;
;
A 레지스터에 00H을 넣는다
이 값을 포트1에 넣는다 (OFF)
1초 동안 딜레이…
다시 A 에 FFH를 넣는다
이 값을 포트1에 넣는다 (ON)
1초 동안 딜레이…
다시 메인으로 돌아간다
반복해서 실행을 한다. JMP라는 명
령어로 다시 처음부터 실행을 한다.
제 2장 74HC574 소자를 이용한
LED DISPLAY
5
2.2 어셈블리어란? (3)
U1
[ 회로도 ]
C1
30P
31
Y1
11.0592MhZ
C2
30P
19
18
RESET
9
12
13
14
15
데이터가
출력된다
PORT 1 Ãâ·Â
제 2장 74HC574 소자를 이용한
LED DISPLAY
1
2
3
4
5
6
7
8
EA/VP
X1
X2
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C31
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
17
16
29
30
11
10
6
2.3 어떻게 사용을 할 것인가?
에디터로 소스파일 작성
(mc8051 에디터로 작성)
↓
어셈블러 (어셈블링이라 한다)
↓
링크(LINKING)
↓
HEX→BIN 변환 (기계어로 변환한다)
↓
ROM OUT (ROM을 굽는다)
CPU 보드에 다운로드 한다
[ 어셈블리어를 이용한 개발과정 ]
제 2장 74HC574 소자를 이용한
LED DISPLAY
7
2.4 MC-E01MM보드에서 칩 선택하기(1)
A1,A0
A0
A1
0 . 0
¼¼Å¹±â
0 . 1
¿¡¾îÄÁ
1 . 0
³ÃÀå°í
1 . 1
û¼Ò±â
A0, A1의 입력에 따라
출력이 선택
A1=1, A0=1 이면 냉장
고가 선택된다.
2-4 µðÄÚ´õ
제 2장 74HC574 소자를 이용한
LED DISPLAY
8
2.4 MC-E01MM보드에서 칩 선택하기(2)
U7
A12
A13
A14
1
2
3
A15
6
4
5
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
15
14
13
12
11
10
9
7
8255/CS1
AD/CS2
CS3
CS4
CS5
CS6
12
13
14
15
16
17
18
19
541_EN
574_EN
LCD_EN
74HC138
74HC138 디코더 중 좌측의
어드레스라인(A,B,C)으로 우
측의 출력(Y0~Y7)을 선택
“G1”포트가 HIGH가 되어
야 74HC138 이 작동(A15가
HIGH가 된다)
U8
A9
A10
A11
A15
/RD
/WR
/PSEN
T1
1
2
3
4
5
6
7
8
9
11
10
11
12
13
14
15
16
17
18
19
F0
F1
F2
F3
F4
F5
F6
F7
/ROMCS
/RAMRD
마이컴에서 8000H 번지 이상
을 출력할 경우 74HC138 디
코더 칩이 선택
16V8
제 2장 74HC574 소자를 이용한
LED DISPLAY
9
2.4 MC-E01MM보드에서 칩 선택하기(3)
[MC-E01MM의
어드레스맵 ]
0000
0000
RAM ¿µ¿ª
7FFF
8000
9000
A000
B000
C000
D000
E000
F000
ROM ¿µ¿ª
7FFF
8000
F200
F201
F202
F203
--------
FFFF
FFFF
[
제 2장 74HC574 소자를 이용한
LED DISPLAY
ROM
¿µ
¿ª
]
82C55/CS1
CS2
CS3
CS4
CS5
CS6
---------HC574(¾µ¶§)
HC541(ÀÐÀ»¶§)
LCD CMD WRITE
LCD CMD READ
LCD DATA WRITE
LCD DATA READ
-------------------------------------
[ RAM
¹× I / O ¿µ¿ª ]
10
2.4 MC-E01MM보드에서 칩 선택하기(4)
Y0 선택
U1
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7
8
EA/VP
X1
X2
U7
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
80C31
제 2장 74HC574 소자를 이용한
LED DISPLAY
39
38
37
36
35
34
33
32
A0
A1
A2
A3
A4
A5
A6
A7
0
0
0
0
0
0
0
0
21
22
23
24
25
26
27
28
A8
A9
A10
A11
A12
A13
A14
A15
0
0
0
0
0
0
0
1
17
16
29
30
11
10
0
0
0
A12
A13
A14
1
2
3
1
A15
6
4
5
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
15
14
13
12
11
10
9
7
8255/CS1
AD/CS2
CS3
CS4
CS5
CS6
12
13
14
15
16
17
18
19
541_EN
574_EN
LCD_EN
74HC138
U8
0
0
0
1
8000H 번지
출력
1
A9
2
A10 3
A11 4
A15 5
/RD 6
/WR 7
/PSEN 8
T1
9
11
10
11
12
13
14
15
16
17
18
19
F0
F1
F2
F3
F4
F5
F6
F7
/ROMCS
/RAMRD
16V8
11
2.4 MC-E01MM보드에서 칩 선택하기(5)
A15 A14 A13 A12 A11 A10 A9 A8 A7
0
0
0
0
0
0
0
0
0
0
.
.
.
.
0
1
1
1
1
1
1
1
1
1
A6
0
A4
0
1
A5
0
.
.
1
A3
0
A2
0
A1 A0
0
0000H
1
1
1
1
7FFFH
¸Þ¸ð¸®
¿µ¿ª
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8000H
82C55 ¿µ¿ª
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
9000H
CS2 ¿µ¿ª
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
A000H
CS3 ¿µ¿ª
1
0
1
0
0
0
0
0
0
0
0
B000H
CS4 ¿µ¿ª
1
0
0
0
0
0
0
0
.
.
0
0
1
0
.
.
0
0
1
1
.
.
1
0
0
0
0
F000H
U7
A12
A13
A14
1
2
3
A15
6
4
5
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
15
14
13
12
11
10
9
7
82C55/CS1
CS2
CS3
CS4
CS5
CS6
F000H ¹øÁö
74HC138
제 2장 74HC574 소자를 이용한
LED DISPLAY
12
2.4 MC-E01MM보드에서 칩 선택하기(6)
F000H번지의 경우는 GAL16V8칩을 선택
GAL칩의 내용
541_EN : F000번지일 때 /RD 포트가 움직일 때 동작
574_EN : F000번지일 때 /WR 포트가 움직일 때 동작
LCD_EN : F200~F203 번지일 때 /RD,/WR 포트가 움직
일때 동작
/ROMCS = NOT(P3.5)
/RAMCS = A15
/RAMRD = (/RD AND P3.5) OR (/RD AND /PSEN)
제 2장 74HC574 소자를 이용한
LED DISPLAY
13
2.4 MC-E01MM보드에서 칩 선택하기(7)
U7
A12
A13
A14
1
2
3
A15
6
4
5
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
15
14
13
12
11
10
9
7
74HC138
U8
A9
A10
A11
A15
/RD
/WR
/PSEN
T1
1
2
3
4
5
6
7
8
9
11
10
11
12
13
14
15
16
17
18
19
F0
F1
F2
F3
F4
F5
F6
F7
12
13
14
15
16
17
18
19
541_EN
574_EN
LCD_EN
F000¹øÁö + /RD Æ÷Æ®
F000¹øÁö + /WR Æ÷Æ®
F200~F203¹øÁö + /RD,/WR Æ÷Æ®
/ROMCS
/RAMRD
NOT(P3.5)
(/RD AND P3.5) OR (/RD AND /PSEN)
16V8
제 2장 74HC574 소자를 이용한
LED DISPLAY
14
2.4 MC-E01MM보드에서 칩 선택하기(8)
/ROMCS=NOT(P3.5)
다운로드 전 : P3.5(T1)는 HIGH, ENABLE ROM
다운로드 후 : P3.5(T1)는 LOW, DISABLE ROM
/RAMRD=(/RD AND P3.5) OR(/RD AND /PSEN)
일반적인 램 READ일 때 : /RD PORT로 램에서 읽음
롬에서 읽을 때 : P3.5,/PSEN으로 역시 램에서 읽음
제 2장 74HC574 소자를 이용한
LED DISPLAY
15
2.4 MC-E01MM보드에서 칩 선택하기(9)
U3
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
HIGH
U9
2
1
NOT
LOW
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
U3
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
ROM
/ROMCS 20
22
1
LOWÀ̸é
ROM ¼±ÅõÊ
CE
OE
VPP
LOW
U9
2
1
HIGH
/ROMCS 20
22
1
NOT
27C256
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
HIGH°¡ µÇ¸é ROMÀÌ
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
ROM
CE
OE
VPP
27C256
¼±ÅõÇÁö ¾Ê´Â´Ù
제 2장 74HC574 소자를 이용한
LED DISPLAY
16
2.5 74HC574(출력소자) LATCH IC
란? (1)
컨트롤라인(CLK,OC)의 제어로 입력 데이터를
출력포트로 출력하며, 컨트롤 라인의 동작이
있기 까지 이전의 상태가 유지되도록 한 칩
버퍼 용으로 많이 사용하는 칩
#F000H 번지에 할당이 되어있다
출력소자 이므로 MOVX 명령어를 이용해서 동작
하면 된다
제 2장 74HC574 소자를 이용한
LED DISPLAY
17
2.5 74HC574(출력소자) LATCH IC
란? (2)
[ 74HC574 진리표 ]
출력제어(OC)
클록(CLK)
입력
출력
L
L
L
H
↑
↑
L
X
H
L
X
X
H
L
QO
Z
↑
Q0
Z
X
:
:
:
:
RISING EDGE(LOW에서 HIGH로 변화)
이전 값(클럭이 RISING EDGE 때 값)
High impedence
Don’t care
제 2장 74HC574 소자를 이용한
LED DISPLAY
18
[실험] 1. 74HC574로 임의의 데이터
출력하기 (MOVX 명령어) (1)
[ 사용 명령어 검토]
MOV
데이터 이동
(1바이트, 2바이트)
MOV A,#00H
MOV DPTR,#0F00H
MOVX
데이터의 입/출력
(/RD,/WR 핀이 움직인다)
MOVX @DPTR,A – 출력
MOVX A,@DPTR – 입력
CALL
서브루틴(함수) 호출
CALL D_1S
JMP
JUMP 해서 실행하라
JMP MAIN
제 2장 74HC574 소자를 이용한
LED DISPLAY
19
1. 74HC574로 임의의 데이터 출력하
기 (MOVX 명령어) (2)
시작
↓
초기화
↓
데이터 출력(#55H)
↓
1초 딜레이
반복해서 디스플레이
↓
데이터 출력(#0AAH)
↓
1초 딜레이
제 2장 74HC574 소자를 이용한
LED DISPLAY
20
1. 74HC574로 임의의 데이터 출력하
기 (MOVX 명령어) (3)
START:
;;
;;
ORG
JMP
ORG
INITIAL: NOP
NOP
MAIN:
MOV
MOV
MOVX
CALL
MOV
MOV
MOVX
CALL
JMP
;;
$DELAY.INC
END
0000H
INITIAL
;시작번지를 0000번지로 한다
;8051 초기 데이터(고정)
;인트럽트 벡터 영역
0035H
;프로그램 시작번지(35번지)
;NO OPERATION(동작 없음)
A,#55H
DPTR,#0F000H
@DPTR,A
D_1S
A,#0AAH
DPTR,#0F000H
@DPTR,A
D_1S
MAIN
;첫 번째 디스플레이 값
;74HC574 칩 선택 어드레스
;데이터를 출력한다
;1초 시간 지연
;두 번째 디스플레이 값
;74HC574 칩 선택 어드레스
;데이터를 출력한다
;1초 시간 지연
;다시 MAIN으로 간다(반복)
제 2장 74HC574 소자를 이용한
LED DISPLAY
;딜레이 함수 첨부
;PROGRAM END
21