안내말씀
- 아래의 회로와 프로그램은 별도의 실험장치 없이 브레드보드나 만능 기판에 설치/실행 할 수 있도록 한 것입니다. (1) 회로 구성도에 나와 있는데로 부품을 구입하시어 회로를 구성한 후에 (2) 프로그램을 작성하시고 번역하여 (3) 89C51(EEPROM TYPE) 이나 87C51(EPROM TYPE)에 WRITE합니다.
프로그램을 WRITE하실 때에는 별도 판매되는 ROM WRITER나 실험장치에 있는 WRITER를 이용합니다. (4) IC 소켓이나 TEXTOOL을 이용하면 편리합니다. 문의 사항은 메일 주세요!
|
1. 8255를 이용한 FND 제어
(1) 회로 구성도
(2) 원시 프로그램
SS0 |
EQU |
00111111B |
; FND 문자 데이터 |
SS1 |
EQU |
00000110B |
|
SS2 |
EQU |
01011011B |
|
SS3 |
EQU |
01001111B |
|
SS4 |
EQU |
01100110B |
|
SS5 |
EQU |
01101101B |
|
SS6 |
EQU |
01111101B |
|
SS7 |
EQU |
00100111B |
|
SS8 |
EQU |
01111111B |
|
SS9 |
EQU |
01100111B |
|
|
ORG |
0000H |
|
|
MOV |
SP,#40H |
|
|
MOV |
A,#80H |
; 8255 모드 설정 |
|
MOV |
P2,A |
; 8255 컨트롤 레지스터 선택 |
|
SETB |
P0.0 |
; A0 = 1 |
|
SETB |
P0.1 |
; A1 = 1 |
|
SETB |
P1.1 |
; RD = 1 |
|
CLR |
P1.0 |
; WR = 0 |
|
SETB |
P1.0 |
; WR = 1 (*) |
LOOP1: |
MOV |
DPTR,#FONT |
; 상위 FND 초기화 |
|
MOV |
R4,DPL |
|
|
MOV |
R5,DPH |
|
|
MOV |
R6,#0 |
|
|
CLR |
A |
|
|
MOVC |
A,@A+DPTR |
|
|
MOV |
P2,A |
|
|
CALL |
PPI_A_O |
|
LOOP2: |
MOV |
R0,#10 |
; 반복 횟수 지정 |
|
MOV |
PTR,#FONT |
|
LOOP3: |
LR |
A |
|
|
MOVC |
A,@A+DPTR |
; 하위 숫자 출력 |
|
MOV |
P2,A |
|
|
CALL |
PPI_C_O |
|
|
INC |
DPTR |
; 글자 주소 증가 |
|
CALL |
DELAY |
; 시간 지연 |
|
DJNZ |
R0,LOOP3 |
; 하위 숫자가 10번을 마쳤는가 비교 |
|
PUSH |
DPL |
; 상위 숫자로 자리 올림 |
|
PUSH |
DPH |
|
|
INC |
R4 |
|
|
INC |
R6 |
|
|
MOV |
DPL,R4 |
|
|
MOV |
DPH,R5 |
|
|
CLR |
A |
|
|
MOVC |
A,@A+DPTR |
|
|
MOV |
P2,A |
; 상위 숫자 출력 |
|
CALL |
PPI_A_O |
|
|
POP |
DPH |
|
|
POP |
DPL |
|
|
CJNE |
R6,#0AH,LOOP2 |
; 상위 숫자가 9를 넘었나 비교 |
|
JMP |
LOOP1 |
; 넘었을 경우 다시(00) 시작 |
DELAY: |
MOV |
R1,#00 |
; 시간 지연 |
DL1: |
MOV |
R2,#00 |
|
DL2: |
NOP |
|
|
|
DJNZ |
R2,DL2 |
|
|
DJNZ |
R1,DL1 |
|
|
RET |
|
|
PPI_A_O: |
|
|
; 8255 포트 A로 출력 선택 |
|
CLR |
P0.0 |
; A0 = 0 |
|
CLR |
P0.1 |
; A1 = 0 |
|
SETB |
P1.1 |
; RD = 1 |
|
CLR |
P1.0 |
; WR = 0 |
|
SETB |
P1.0 |
; WR = 1 (*) |
|
RET |
|
|
PPI_C_O: |
|
|
; 8255 포트 C로 출력 선택 |
|
CLR |
P0.0 |
; A0 = 0 |
|
SETB |
P0.1 |
; A1 = 1 |
|
SETB |
P1.1 |
; RD = 1 |
|
CLR |
P1.0 |
; WR = 0 |
|
SETB |
P1.0 |
; WR = 1 (*) |
|
RET |
|
|
FONT |
DB |
SS0,SS1,SS2,SS3,SS4 |
; 숫자 데이터를 메모리에 할당 (정의) |
|
DB |
SS5,SS6,SS7,SS8,SS9 |
|
|
END |
|
|
|
|
|
|
2. 내장 포트를 이용한 FND 제어
(1) 회로 구성도
(2) 원시 프로그램
SS0 |
EQU |
00111111B |
; FND 문자 데이터 |
SS1 |
EQU |
00000110B |
|
SS2 |
EQU |
01011011B |
|
SS3 |
EQU |
01001111B |
|
SS4 |
EQU |
01100110B |
|
SS5 |
EQU |
01101101B |
|
SS6 |
EQU |
01111101B |
|
SS7 |
EQU |
00100111B |
|
SS8 |
EQU |
01111111B |
|
SS9 |
EQU |
01100111B |
|
|
ORG |
0000H |
|
|
MOV |
SP,#40H |
|
LOOP1: |
MOV |
DPTR,#FONT |
; FND2 변수 초기화 |
|
MOV |
R3,#0 |
|
|
MOV |
FND2L,DPL |
|
|
MOV |
FND2H,DPH |
|
LOOP2: |
MOV |
R0,#10 |
; FND1 변수 초기화/반복 횟수 설정 |
|
MOV |
DPTR,#FONT |
|
|
MOV |
FND1L,DPL |
|
|
MOV |
FND1H,DPH |
|
LOOP3: |
CALL |
FND_OUT |
|
|
INC |
FND1L |
; FND1 숫자 증가 |
|
DJNZ |
RO,LOOP3 |
; FND2 숫자 증가 |
|
INC |
FND2L |
|
|
INC |
R3 |
|
|
CJNE |
R3,#0AH,LOOP2 |
; FND2가 10번을 했는가 비교 |
|
JMP |
LOOP1 |
|
DELAY: |
MOV |
R1,#00 |
; 시간 지연 |
DL1: |
NOP |
|
|
|
DJNZ |
R1,DL1 |
|
|
RET |
|
; 하위 숫자 출력 |
FND_OUT: |
MOV |
R4,#50H |
; FND 출력 |
FND_LOOP: |
MOV |
DPL,FND1L |
|
|
MOV |
DPH,FND1H |
; 글자 주소 증가 |
|
SETB |
P0.1 |
; 시간 지연 |
|
CLR |
P0.0 |
; 하위 숫자가 10번을 마쳤는가 비교 |
|
CLR |
A |
; 상위 숫자로 자리 올림 |
|
MOVC |
A,@A+DPTR |
|
|
CPL |
A |
|
|
MOV |
P2,A |
|
|
CALL |
DEALY |
|
|
MOV |
DPL,FND2L |
; FND2 출력 |
|
MOV |
DPH,FND2H |
|
|
SETB |
P0.0 |
|
|
CLR |
P0.1 |
|
|
CLR |
A |
|
|
MOVC |
A,@A+DPTR |
|
|
CPL |
A |
|
|
MOV |
P2,A |
|
|
CALL |
DELAY |
|
|
DJNZ |
R4,FND_LOOP |
|
|
RET |
|
|
FONT |
DB |
SS0,SS1,SS2,SS3,SS4 |
; 숫자 데이터를 메모리에 할당 (정의) |
|
DB |
SS5,SS6,SS7,SS8,SS9 |
|
FND2L |
DB |
00H |
|
FND2H |
DB |
00H |
|
FND1L |
DB |
00H |
|
FND1H |
DB |
00H |
|
|
END |
|
|
|
|
|
|
3. 16*16 DOT MATRIX를 이용한 문자 출력
(1) 회로 구성도
(2) 원시 프로그램
|
ORG |
0000H |
| |||||||||
|
MOV |
SP,#60H |
| |||||||||
|
JMP |
START |
| |||||||||
FND_DAT: |
|
|
; 폰트 데이터 | |||||||||
|
DB |
00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H | ||||||||||
|
DB |
08H, 1CH, 36H, 63H, 7FH, 7FH, 63H, 63H ; A | ||||||||||
|
DB |
7EH, 63H, 63H, 7EH, 7EH, 63H, 63H, 7EH ; B | ||||||||||
|
DB |
3EH, 7FH, 63H, 60H, 60H, 63H, 7FH, 3EH ; C | ||||||||||
|
DB |
7CH, 7EH, 63H, 63H, 63H, 63H, 7EH, 7CH ; D | ||||||||||
|
DB |
7FH, 7FH, 60H, 7CH, 7CH, 60H, 7FH, 7FH ; E | ||||||||||
|
DB |
7FH, 7FH, 60H, 7CH, 7CH, 60H, 60H, 60H ; F | ||||||||||
|
DB |
3EH, 7FH, 63H, 60H, 67H, 63H, 7FH, 3BH ; G | ||||||||||
|
DB |
DB 63H, 63H, 63H, 7FH, 7FH, 63H, 63H, 63H ; H | ||||||||||
|
DB |
7FH, 7FH, 1CH, 1CH, 1CH, 1CH, 7FH, 7FH ; I | ||||||||||
|
DB |
7FH, 7FH, 0CH, 0CH, 0CH, 6CH, 7CH, 38H ; J | ||||||||||
|
DB |
62H, 66H, 6CH, 78H, 78H, 6CH, 66H, 62H ; K | ||||||||||
|
DB |
60H, 60H, 60H, 60H, 60H, 60H, 7FH, 7FH ; L | ||||||||||
|
DB |
63H, 77H, 77H, 7FH, 6BH, 6BH, 63H, 63H ; M | ||||||||||
|
DB |
63H, 73H, 73H, 6BH, 6BH, 67H, 67H, 63H ; N | ||||||||||
|
DB |
1CH, 3EH, 63H, 63H, 63H, 63H, 3EH, 1CH ; O | ||||||||||
|
DB |
7CH, 7FH, 63H, 63H, 7FH, 7CH, 60H, 60H ; P | ||||||||||
|
DB |
DB 1CH, 3EH, 63H, 63H, 6BH, 67H, 3EH, 1DH ; Q | ||||||||||
|
DB |
7CH, 7FH, 63H, 7FH, 7CH, 78H, 6CH, 66H ; R | ||||||||||
|
DB |
3CH, 66H, 42H, 30H, 0CH, 42H, 66H, 3CH ; S | ||||||||||
|
DB |
7FH, 7FH, 1CH, 1CH, 1CH, 1CH, 1CH, 1CH ; T | ||||||||||
|
DB |
77H, 77H, 36H, 36H, 36H, 36H, 3EH, 1CH ; U | ||||||||||
|
DB |
63H, 63H, 36H, 36H, 1CH, 1CH, 08H, 08H ; V | ||||||||||
|
DB |
63H, 63H, 6BH, 6BH, 7FH, 77H, 77H, 63H ; W | ||||||||||
|
DB |
41H, 63H, 36H, 1CH, 1CH, 36H, 63H, 41H ; X | ||||||||||
|
DB |
63H, 63H, 36H, 1CH, 1CH, 1CH, 1CH, 1CH ; Y | ||||||||||
|
DB |
7FH, 7FH, 03H, 0CH, 18H, 60H, 7FH, 7FH ; Z | ||||||||||
|
DB |
00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H | ||||||||||
|
|
|
| |||||||||
PPI_CON: |
|
|
; 8255 컨트롤 레지스터 설정 | |||||||||
|
MOV |
P2,A |
| |||||||||
|
SETB |
P1.0 |
| |||||||||
|
SETB |
P1.1 |
| |||||||||
|
SETB |
P1.2 |
| |||||||||
|
CLR |
P1.3 |
| |||||||||
|
SETB |
P1.3 |
| |||||||||
|
RET |
|
| |||||||||
PPI_B_O: |
|
|
; 8255 포트 B로 출력 | |||||||||
|
MOV |
P2,A |
| |||||||||
|
CLR |
P1.0 |
| |||||||||
|
SETB |
P1.1 |
| |||||||||
|
SETB |
P1.2 |
| |||||||||
|
CLR |
P1.3 |
| |||||||||
|
SETB |
P1.3 |
| |||||||||
|
RET |
|
| |||||||||
PPI_C_O: |
|
|
; 8255 포트 C로 출력 | |||||||||
|
MOV |
P2,A |
| |||||||||
|
SETB |
P1.0 |
| |||||||||
|
CLR |
P1.1 |
| |||||||||
|
SETB |
P1.2 |
| |||||||||
|
CLR |
P1.3 |
| |||||||||
|
SETB |
P1.3 |
| |||||||||
|
RET |
|
| |||||||||
DELAY: |
|
|
; 지연 루틴 | |||||||||
|
MOV |
R6,#40H |
| |||||||||
DL1: |
NOP |
|
| |||||||||
|
DJNZ |
R6,DL1 |
| |||||||||
|
RET |
'전자기술' 카테고리의 다른 글
|