제 7 장 7 – 세그먼트 동작 시키기

Download Report

Transcript 제 7 장 7 – 세그먼트 동작 시키기

제 7 장
7 – 세그먼트 동작 시키기
(0~9, A, B, C, D, E, F 표시하기)
7.1
7-세그먼트 구조이해 및 동작 (1)
7-세그먼트는 8개의 LED소자를 배열해 놓은 것
이다.
8개의 LED중 7개를 숫자구성으로 사용함으로
“7-세그먼트”라 한다.
각각의 글자를 구성하는 LED를 점등시켜서 글
자를 표현한다.
[그림 7-1] 오른쪽의 표를 DB로 만들어 불러와
서 글자를 표현한다.
제7장 7-세그먼트 동작 시키기
2
7.1
7-세그먼트 구조이해 및 동작 (2)
c
b
d
a
h
f
g
e
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
h
1
0
1
0
0
0
1
0
1
0
1
1
1
1
1
1
g
1
0
1
1
0
1
1
0
1
0
0
1
1
1
1
0
f
1
1
0
1
1
1
1
1
1
1
1
1
0
1
0
0
e
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
d
1
1
1
1
1
0
0
1
1
1
1
0
0
1
0
0
c
1
0
1
1
0
1
1
1
1
1
1
0
1
0
1
1
b
1
0
0
0
1
1
1
1
1
1
1
1
1
0
1
1
a
0
0
1
1
1
1
1
0
1
1
1
1
0
1
1
1
[ 그림 7-1 ]
제7장 7-세그먼트 동작 시키기
3
7.1
7-세그먼트 구조이해 및 동작 (3)
U501
D0
D1
D2
D3
D4
D5
D6
D7
34
33
32
31
30
29
28
27
/RD
/WR
A0
A1
RESET
8255/CS1
5
36
9
8
35
6
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
/RD
/WR
A0
A1
RESET
8255/CS1
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
VDD
26
7
C501
0.1uF
VDD
VSS
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
R401
R402
R403
R404
R405
R406
R407
R408
330
330
330
330
330
330
330
330
a
b
c
d
e
f
g
h
SEG1
SEG2
SEG3
SEG4
출력포트 –
#8000H 번지를
호출하면 선택
82C55
8000H
번지 선택
제7장 7-세그먼트 동작 시키기
4
7.1
7-세그먼트 구조이해 및 동작 (4)
1
2
4
5
6
7
9
10
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
3
1
2
4
5
6
7
9
10
3
SEG501
8
8
3
3
7-세그먼트의 선택신호
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
8
8
제7장 7-세그먼트 동작 시키기
1
2
4
5
6
7
9
10
Q502
2SA733
Q501 SEG2
2SA733
R501
1K
1
2
4
5
6
7
9
10
FND
FND
SEG1
SEG502
R502
1K
5
7.1
7-세그먼트 구조이해 및 동작 (5)
8255에서 출력되는 전류가 GND로 빠지는 부분
에 PNP형 TR을 사용하여 스위칭 한다.
LED°¡ ON µÈ´Ù
LED°¡ OFF µÈ´Ù
a
b
c
d
e
f
g
h
a
b
c
d
e
f
g
h
Àü·ù°¡
È帥´Ù
제7장 7-세그먼트 동작 시키기
ON
À϶§
OFF
À϶§
6
7.1
7-세그먼트 구조이해 및 동작 (6)
PNP Æ®·£Áö½ºÅÍÀÇ µ¿ÀÛ
P
N
P
C
E
¿¡¹ÌÅÍ¿¡¼- Ä÷ºÅÍ ÂÊÀ¸·Î
Àü·ù°¡ Èê·¯°£´Ù
À̶§, º£À̽º(B) °¡ NÇü À̹ǷÎ
0V(LOW)¸¦ °É¾îÁà¾ß ÇÑ´Ù
Àü·ù¹æÇâ
B
+1
2 -
+1
¼ø¹æÇâ
제7장 7-세그먼트 동작 시키기
2
¿ª¹æÇâ
7
7.1
7-세그먼트 구조이해 및 동작 (7)
TR은 에미터(E), 베이스(B), 컬렉터(C)로 구성
된다
TR은 PNP형과 NPN형이 있으며, 베이스 전압에
P형은 (+), N형은 (-)를 걸어주면 순방향 전압
이 되어서 TR이 ON 된다
PNP형 TR은 베이스가 N형이므로, - 또는 LOW
(0V)를 인가해야 TR이 ON되어 전류를 보낸다.
제7장 7-세그먼트 동작 시키기
8
7.1
7-세그먼트 구조이해 및 동작 (8)
8255 포트 B는 각각 세그먼트의 TR에 연결되어
있다.
이 포트 에 LOW를 걸어줌으로 세그먼트를ON 시
킬 수 있다.
1번 7-세그먼트
8255
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
제7장 7-세그먼트 동작 시키기
SEG1
SEG2
SEG3
SEG4
2번 7-세그먼트
3번 7-세그먼트
4번 7-세그먼트
9
7.2 전광판의 원리 이해 및 여러 개의
7-세그먼트 동작 (1)
전광판의 원리 : 눈이 인식하지 못하는 시간
간격으로 순차적으로 LED를 점등시키면 전부
점등이 된 것처럼 보이는 데서 착안
모든 세그먼트는 같은 데이터라인을 가지고 있
음으로 세그먼트들은 같은 값을 가진다.
특정한 데이터를 주고 특정한 세그먼트만 ON
위의 실행을 일정간격 딜레이로 반복하면 모든
세그먼트가 동시에 다른 값들을 나타내는 것
처럼 보인다.
제7장 7-세그먼트 동작 시키기
10
7.2 전광판의 원리 이해 및 여러 개의
7-세그먼트 동작 (2)
1¹ø ¼¼±×
SEG1
2¹ø ¼¼±×
SEG2
제7장 7-세그먼트 동작 시키기
3¹ø ¼¼±×
SEG3
4¹ø ¼¼±×
SEG4
11
7.2 전광판의 원리 이해 및 여러 개의
7-세그먼트 동작 (3)
MAIN:
1¹ø ¼¼±×¸ÕÆ® µ¥ÀÌÅÍ Ãâ·Â
SEG1 Æ÷Æ®¸¸ LOW(³ª¸ÓÁö´Â HIGH)
ŸÀÓ µô·¹ÀÌ 1mS
1mS동안 ON
;;
2¹ø ¼¼±×¸ÕÆ® µ¥ÀÌÅÍ Ãâ·Â
SEG2 Æ÷Æ®¸¸ LOW(³ª¸ÓÁö´Â HIGH)
1mS동안 ON
ŸÀÓ µô·¹ÀÌ 1mS
;;
3¹ø ¼¼±×¸ÕÆ® µ¥ÀÌÅÍ Ãâ·Â
SEG3 Æ÷Æ®¸¸ LOW(³ª¸ÓÁö´Â HIGH)
1mS동안 ON
ŸÀÓ µô·¹ÀÌ 1mS
;;
4¹ø ¼¼±×¸ÕÆ® µ¥ÀÌÅÍ Ãâ·Â
SEG4 Æ÷Æ®¸¸ LOW(³ª¸ÓÁö´Â HIGH)
1mS동안 ON
ŸÀÓ µô·¹ÀÌ 1mS
;;
JMP
제7장 7-세그먼트 동작 시키기
MAIN
12
[실험] 1. 숫자 0~9, A~F 까지 DB로 만들
고, 세그먼트에 0, 1, 2, 3 을 표시 (1)
U501
D0
D1
D2
D3
D4
D5
D6
D7
34
33
32
31
30
29
28
27
/RD
/WR
A0
A1
RESET
8255/CS1
5
36
9
8
35
6
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
/RD
/WR
A0
A1
RESET
8255/CS1
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
VDD
26
7
C501
0.1uF
VDD
VSS
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
R505
R506
R507
R508
R509
R510
R511
R512
330
330
330
330
330
330
330
330
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
SEG1
SEG2
SEG3
SEG4
14
15
16
17
13
12
11
10
82C55
제7장 7-세그먼트 동작 시키기
13
1
2
4
5
6
7
9
10
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
3
1
2
4
5
6
7
9
10
3
SEG501
8
8
3
3
1. 숫자 0~9, A~F 까지 DB로 만들고,
세그먼트에 0, 1, 2, 3 을 표시 (2)
8
8
1
2
4
5
6
7
9
10
3
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
3
1
2
4
5
6
7
9
10
8
3
3
8
SEG503
SEG504
1
2
4
5
6
7
9
10
1
2
4
5
6
7
9
10
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
FND
8
8
FND
Q504
2SA733
SEG4
Q503
2SA733
제7장 7-세그먼트 동작 시키기
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
R502
1K
R501
1K
R503
1K
1
2
4
5
6
7
9
10
Q502
2SA733
SEG2
Q501
2SA733
SEG3
1
2
4
5
6
7
9
10
FND
FND
SEG1
SEG502
R504
1K
14
1. 숫자 0~9, A~F 까지 DB로 만들고,
세그먼트에 0, 1, 2, 3 을 표시 (3)
시작
↓
변수(R0),8255 초기화
↓
LED_DB에서 1번
세그먼트의 값을 가져온다
↓
8255 포트 A로 출력
↓
SEG1 포트 LOW
↓
1ms 딜레이
SEG1 포트 HIGH
제7장 7-세그먼트 동작 시키기
→
2,3,4번 세그먼트도
위와같은 방법으로
15
1. 숫자 0~9, A~F 까지 DB로 만들고,
세그먼트에 0, 1, 2, 3 을 표시 (4)
[ 기본 프로그램 설명(1/3) ]
ORG
0000H
START: JMP
INITIAL
;;
ORG
0035H
INITIAL:
MOV
SP,#5FH
MOV
IE,#00000000B
;;
INIT_8255:
MOV
DPTR,#8003H
MOV
A,#80H
MOVX
@DPTR,A
제7장 7-세그먼트 동작 시키기
;시작번지를 0000번지로 한다
;8051 초기 데이터(고정)
;프로그램 시작번지(35번지)
;스택포인터를 5FH로 잡는다
;인터럽트 모두 DISABLE
;8255의 컨트롤워드 입력
;포트A,B,C 모두 출력
;8255에 입력한다.
16
1. 숫자 0~9, A~F 까지 DB로 만들고,
세그먼트에 0, 1, 2, 3 을 표시 (5)
[ 기본 프로그램 설명(2/3) ]
MAIN:
MOV
A,#00H
MOV
MOVC
MOV
MOVX
MOV
MOV
MOVX
CALL
DPTR,#LED_DB
A,@A+DPTR
DPTR,#8000H
@DPTR,A
DPTR,#8001H
A,#11111110B
@DPTR,A
D_1MS
MOV
A,#01H
MOV
A,#02H
MOV
A,#03H
JMP
MAIN
;첫 번째 값..
;DB 에서 값을 가져온다.
;8255의 포트A로 출력한다
;7-세그먼트 값 출력…
;8255의 포트 B 선택
;SEG 1 선택(변경부분)
;1mS 타임 딜레이…
;;
제7장 7-세그먼트 동작 시키기
;두 번째 값..
;SEG2 선택하여 위의 BOX 의 내용을 반복한다
;세 번째 값..
;SEG3 선택하여 위의 BOX 의 내용을 반복한다
;네 번째 값..
;SEG4 선택하여 위의 BOX 의 내용을 반복한다
17
1. 숫자 0~9, A~F 까지 DB로 만들고,
세그먼트에 0, 1, 2, 3 을 표시 (6)
[ 기본 프로그램 설명(3/3) ]
LED_DB:
DB
11101110B
DB
00101000B
DB
11001101B
DB
01101101B
DB
00101011B
DB
01100111B
DB
11100111B
DB
00101110B
DB
11101111B
DB
00101111B
DB
10101111B
DB
11100011B
DB
11000110B
DB
11101001B
DB
11000111B
DB
10000111B
;;
$DELAY.INC
END
제7장 7-세그먼트 동작 시키기
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
레이블 (DB의 위치)
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
;시간지연함수 포함
;프로그램 종료
18