Luận văn tốt nghiệp Trang 3
Begin
Đ
S
Đ
S
S
Đ
CHƯƠNG 10
THIẾT KẾ PHẦN MỀM
Hiển thò chữ
PR
Nhập số
chương trình
Phím
PRO ?
Phím
Enter ?
Chạy chương
trình
Nhập dữ
liệu cần
hiển thò
Phím
Enter ?
Phím
PRO ?
Luaän vaên toát nghieäp Trang 4
Ñ
S
Luận văn tốt nghiệp Trang 5
Cách sử dụng:
Đầu tiên mở máy lên, sau đó chọn chương trình. Nếu ta
nhập số hiệu chương trình (từ 0 đến 7) và ấn phím ENTER thì
chương trình tương ứng với số ta nhập sẽ được thực hiện. Nếu
ta ấn một trong các phím số từ 0 đến 7 thì có nghóa là đặt tên
cho chương trình mới với số vừa ấn. Tiếp theo nếu không ấn
phím PRO thì quang báo sẽ ở chế độ chờ nhập số hiệu chương
trình, còn nếu có ấn PRO thì quang báo sẽ cho phép bắt đầu
nhập dòng thông báo. Sau khi nhập dòng thông báo xong nếu
không nhấn PRO thì quang báo vẫn ở chế độ chờ nhập dòng
thông báo tiếp theo. Còn nếu kết thúc bằng phím ENTER thì
lúc đó quang báo sẽ quay trở về trạng thái ban đầu là chọn
chương trình, và cứ thế trình tự lại lặp lại như trên.
II . LƯU ĐỒ HỆ THỐNG CHO QUANG BÁO:
Qua cách sử dụng cho người dùng quang báo như trên thì
người thiết kế đặt ra lưu đồ hệ thống cho mạch như sau:
Luận văn tốt nghiệp Trang 6
LƯU ĐỒ HỆ THỐNG QUANG BÁO
Nhấn phím
ENTER?
Nhấn phím
Pro ?
Nhấn phím
Pro ?
S
S
Đ
Đ
Nhập dòng
thông báo
Khởi tạo 8255
Xác lập vùng SP
Begin
Call hiển thò
chữ PR
Nhập số hiệu
chương trình
Nhập số hiệu
chương trình
Đ
S
Chạy chương
trình
Luaän vaên toát nghieäp Trang 7
Luận văn tốt nghiệp Trang 8
Đầu tiên khởi tạo 8255A, xác lập vùng SP. Gọi chương
trình quét phím, hiển thò đoạn chương trình là PR, sau đó gọi
chương trình quét phím và nhập số hiệu chương trình từ số 0
đến số 7 và nhấn phím PRO. Sau khi nhấn phím PRO lúc đó ta
nhập nội dung dòng thông báo từ bàn phím, sau khi nhập dòng
thông báo xong thì nhấn phím PRO để báo cho Vi xử lí biết
dòng thông báo đã kết thúc. Sau đó, ta nhấn số hiệu chương
trình và nhấn phím ENTER thì chương trình tương ứng với số
hiệu vừa nhập sẽ được thực hiện.
Lưu đồ hệ thống trên nếu ta viết thành một chương trình
lớn thì sẽ rất dài, dễ mắc nhiều lỗi sai sót mà ta khó kiểm tra
sữa chữa. Vì thế ta sẽ tách ra thành nhiều chương trình nhỏ để
dễ viết, khi ráp vào thành một chương trình hệ thống lớn sẽ
tránh được nhiều rắc rối.
1 . Chương trình hiển thò :
Mục đích là hiển thò 35 byte dữ liệu lên 35 cột của Ma
trận LED .
Theo cách kết nối phần cứng thì toàn bộ dữ liệu hàng
của Ma trận LED kết nối song song nhau ở mức thấp và cột ở
mức cao thông qua hoạt động của 74LS164. Muốn cho dữ liệu
của cột một của LED thứ nhất sáng thì ngõ dữ liệu gởi cho
hàng phải ở mức thấp và dữ liệu gởi ra cho cột (tức là ngõ ra
Q
A
của 74LS164 thứ nhất) ở mức cao, lúc đó cột một sáng.
Lưu đồ của chương trình Text 35
PC0 nối với chân Ck của 74LS164
PC1 nối với chân AB của 74LS164
PC2 nối với chân Clear của 74LS164
Port C có đòa chỉ là 12h
Port A có đòa chỉ là 10h
Luận văn tốt nghiệp Trang 9
Đ
S
LƯU ĐỒ CHƯƠNG TRÌNH HIỂN THỊ
Begin
Call reset
Call Startx
(A)
Port A
(M) A
35
Bộ đếm
Call delay
(HL) + 1 HL
(
Bộ đếm)
-
1
0 port A
Luận văn tốt nghiệp Trang 10
Bộ đếm =
Luaän vaên toát nghieäp Trang 11
;
;Chuong trinh hien thi 35 byte du lieu len
35 cot cua ma tran led
;
org 0000h
lxi sp,5ff0h
jmp main
org 1e00h
main: mvi a,80h
out 13
c1: lxi h,2000h
call reset
call startx
mvi b,35
c2: mov a,m
out 10
call delay
inx h
dcr b
jnz xoaled
jmp c1
;
;Chuong trinh reset
;
mvi a,00h
out portc
out porta
ret
;
;Chuong trinh xoa led
;
mvi a,00h
out 10h
Luaän vaên toát nghieäp Trang 12
call clock
jmp c2
Luận văn tốt nghiệp Trang 13
Đ
S
S
Đ
S
LƯU ĐỒ DỊCH CHUYỂN 256 BYTE DỮ LIỆU
2000
H
09
C
Call reset
Call Startx
35
Bộ đếm
(M)
A
(A)
port A
Call delay
(HL) +1
HL
Bộ đếm
-
1
0
port A
C
-
1
C
C = 0
2001
HL
(L)
A
A = FF ?
Bộ đếm = 0
Begin
Luaän vaên toát nghieäp Trang 14
Ñ
Luận văn tốt nghiệp Trang 15
LƯU ĐỒ CHỌN CHƯƠNG TRÌNH
Đ
Phím số 0
- 7
Nhấn phím
Run?
Nhấn phím
Pro ?
Nhấn phím
Pro ?
RET
Vào RAM
copy dữ liệu
Call hiển thò
Call quét phím
Begin
Đ
Đ
Đ
S
S
S
Luaän vaên toát nghieäp Trang 16
Luận văn tốt nghiệp Trang 17
2 .Chương trình chính của quang báo :
org 0000h
jmp main
org 0100h
main: lxi sp,5f00
mvi a,80h
out 13h
mvi a,90h
out 03h
call copy
mvi a,00h
sta 5f01h
a2: mvi a,00h
sta 5f00h
a1: call catdata
lxi h,4000h
call h_t_data
lda 5f00h
cpi 00h
jz a1
cpi prog
jz a3
cpi run
jnz a1
;
;Chay chuong trinh hien thi data
;
org 0131h
mvi a,00h
sta 5f00h
ctc3: call addr
call h_t_data
ctc4: lda 5f00h
cpi 00h
jz ctc3
Luaän vaên toát nghieäp Trang 18
jmp a2
;
;Chuong trinh nhap chuoi du lieu
;
org 0200h
a3: mvi a,00h
sta 5f00h
call addr
call clear
mvi l,00h
shld 5f02h
a4: lhld 5f02h
call a6
call h_t_p1
lda 5f00h
cpi prog
jnz a4
lhld 5f02h
call cong35
mvi b,35 ; 35 cot
xra a
a5: mov m,a
inr l
dcr b
jnz a5
lhld 5f02h
call cong35
shld 5e00h
jmp a2
;
;Chuong trinh con cat 5 byte cua led
;
org 0300h
a6: push h
push b
Luaän vaên toát nghieäp Trang 19
push d
mvi d,05
lxi b,4060h
call cong35
a7: mov a,m
stax b
inr c
inr l
dcr d
jnz a7
pop d
pop b
pop h
ret
cong30: mvi a,30
add l
mov l,a
mov a.h
aci 00h
mov h,a
ret
cong35: mvi a,35
add l
mov l,a
mov a,h
aci 00h
mov h,a
ret
;
;Chuong trinh con copy chu pro tu EPROM ra
RAM
;
org 0500h
push h
Luận văn tốt nghiệp Trang 20
x1: push b
lxi h,1000h ;Vung du lieu
lxi b,4000h
x2: mov a,m
stax b
inr c
inr l
mov a,l
cpi 36
jnz x2
pop b
pop h
ret
;
;chuong trinh con cat du lieu de nhap nhay
;
org 0515h
catdata: lxi h,401eh
lxi b,4050h
x3: mov a,m
stax b
inr c
inr l
mov a,l
cpi 36
jnz x3
ret
;
;Chuong trinh address
;
Xử lí đòa chỉ kết quả chứa trong thanh ghi HL .
Org 0526h
x4: lda 5f01h
add a
ori 50h
Luaän vaên toát nghieäp Trang 21
mov h,a
mvi l,00
ret
;
;Chuong trinh con hien thi chu PR dung yen,
dau nhap nhay
;
org 0600
x5: push h
mvi c,09h
x6: call reset
call startx
mvi b,35
x7: mov a,m
out porta
call delay1
inx h
dcr b
jnz x10
dcr c
jnz x8
pop h
jmp z1
x8: pop h
push h
jmp x6
;
;xoa vung nho de nhap nhay
;
z1: push h
lxi h,401eh
mvi a,00h
mov m,a
Luaän vaên toát nghieäp Trang 22
inr l
mov a,l
cpi 36
jnz x9
pop h
z4: push h
mvi c,09h
z5: call reset
z6: call startx
mvi b,35
z3: mov a,m
out porta
call delay1
inx h
dcr b
jnz z7
dcr c
jnz z3
pop h
jmp z8
z2: pop h
push h
jmp z6
z7: mvi a,00h
out porta
call clkx
jmp z3
;
;tra lai cac du lieu ban dau
;
z8: push h
lxi b,4050h
mvi l,30
z5: ldax b
mov m,a
inr l
Luaän vaên toát nghieäp Trang 23
inr c
mov a,l
cpi 36
jnz z5
pop h
ret
;
;Chuong trinh nhan 5 noi dung thanh ghi a
;
org 0a00h
nhan6: push d
mvi d,06h
mov e,a
cpi 00h
jz nhan61
xra a
nhan62: add d
dcr e
jnz nhan62
nhan61: pop d
ret
;
;Chuong trinh con copy 5 byte giai ma hien
thi
;
org 0a11h
k2: push h
psh b
lxi h,2000h
mov l,a
lxi b,4050h
k1: mov a,m
stax b
Luaän vaên toát nghieäp Trang 24
inr l
inr c
mov a,c
cpi 55h
jnz k1
pop b
pop h
ret
;
; Chuong trinh con xoa vung nho hien thi
chu Pr
;
org 0a27h
clear: push h
push b
mvi b,30
xra a
clear1: mov m,a
inr l
dcr b
jnz clear1
mvi b,05
inr a
clear2: mov m,a
inr l
dcr b
jnz clear2
;
;Chuong trinh con chay chuoi du lieu nhap
tai 0b00h
;
Luận văn tốt nghiệp Trang 25
org 0b00h
h_t_data: push h
mvi c,09h
htx6: call reset ;goi chuong trinh con
reset 74164
call startx
mvi b,35
htx7: mov a,m
out 10h
call delay3
inx h
dcr b ;giam cot
jnz htx10
dcr c
jnz htx8
pop h
inx h
lda 5e00h
cmp l
jnz h_t_data
lda 5a01h
cmp h
jnz h_t_data
ret
htx8: pop h
push h
jmp htx6
htx10: mvi a,00h
out 10h
call clkx
jmp htx7
;
;Chuong trinh tao xung startx
;
Tạo một ngõ ra của 74LS164 lên mức cao .
Luận văn tốt nghiệp Trang 26
mvi a,06h ;AB = CL =1 ; Ck = 0
out portc
mvi a,07h ;AB = CL = Ck = 1
out portc
mvi a,06h ;AB = CL = 1;Ck = 0
out portc
mvi a,04h ;CL = 1;AB = Ck = 0
out portc
ret
;
;Chuong trinh tao xung clock
;
Tạo một xung Clock
mvi a,04h ;CL = 1;AB = Ck = 0
out portc
mvi a,05h ;CL = Ck = 1;AB = 0
out portc
mvi a,04h
out portc
ret
;
;Chuong trinh delay 0,5s
;
lxi b,83ffh
h1: dcx b
mov a,c
ora b
jnz h1
ret
Luận văn tốt nghiệp Trang 27
3 . Chương trình bàn phím
Port A của 8255 thứ nhất quét hàng cho bàn phím (8
hàng) và Port C của 8255 thứ nhất sẽ quét cột cho bàn phím (7
cột) . Port A nhập , Port C xuất .
org 1200h
push psw
push b
push d
push h
x1: mvi a,00h
out 02h
in 00h
cpi 0ffh
jz x1
rrc
jnc row_1
rrc
jnc row_2
rrc
jnc row_3
rrc
jnc row_4
rrc
jnc row_5
rrc
jnc row_6
rrc
jnc row_7
rrc
jnc row_8
exit: pop h
pop d
pop b
pop psw
row_1: mvi a,0feh
out 02h