Tải bản đầy đủ (.pdf) (10 trang)

thiết kế mạch VDK đếm sản phẩm, chương 12 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (108.63 KB, 10 trang )

Chương 12: Chương trình tăng 1
Cứ có một sản phẩm đi qua đầu dò (chú ý ngõ ra chân 8 của
IC567 từ nức logic 0 lên mức 1 sau đó được đưa qua cổng đảo
nên ngõ ra là mức logic 0) được đưa vào bit 0 của port B1 sẽ làm
thay đổi mức logic từ 1 xuống 0 thì ô nhớ dùng cho việc đếm
sản phẩm sẽ được tăng lên một đơn vò thông qua việc gọi
chương trình con tăng 1, và khi đủ số sản phẩm thì ô nhớ dùng
cho việc đếm số hộp cũng được tăng lên một đơn vò thông qua
chương trình con tăng 1, và cứ mỗi lần như vậy sự thay đổi số
liệu trong các ô nhớ được đẩy liên tục ra led để hiển thò. Vì
đếm sản phẩm đến tối đa là 999 và đếm số hộp tối đa là 9999
nên phải sử dụng 2 byte để đếm sản phẩm từ hàng đơn vò đến
hàng chục sử dụng byte thấp, còn hàng trăm và hàng ngàn sử
dụng byte cao. Nên khi so sánh số liệu đang đếm với số liệu đã
lưu ban đầu xem đã bằng chưa thì phải so sánh lần lượt byte cao
trước tức là hàng ngàn, hàng trăm sau đó tới byte thấp tức là
hàng chục hàng đơn vò.
RET
Xóa cờ tràn phụ AC
Xóa cờ tràn C
A

A +1
Hiệu chỉnh thập phân thanh ghi
A
Bắt đầu
5. Chương trình con kiểm tra phím ấn: IN – HEX
Nếu như có phím được ấn thì bit C = 0. Vì có khoảng thời gian
nhấn phím nên gọi chương trình dò tìm mã phím ấn 50 lần bằng
việc nạp 50 vào R3 và giảm R3. Khi R3 = 0 thì cất mã phím vào
ngăn xếp. Trong lúc đợi phím được nhả ra gọi chương trình dò


tìm mã phím ấn 50 lần để xem phím có còn được nhấn nữa hay
không. Khi R3 = 0 thì lấy mã phím trao cho thanh ghi A.

Bắt đầu
RET
Không có phím ấn
#50

(R3)
#50

(R3)
#50

(R3)
Gọi CT dò mã
phím

C= 0
S
Đ
R3
-
1
Có phím ấn
Cất ACC
R3= 0
Đ
Gọi CT dò
mã phím

C = 1
S
S
R3
-
1
R3= 0
Đ
Lấy ACC
Lưu đồ thuật giải kiểm tra phím ấn
S
Đ

6. Chương trình dò mã phím ấn:
8051 luôn đọc dữ liệu từ Port 1 để dò tìm mã phím. Khi có
một phím được ấn thì cờ C = 1 và mã của phím ấn được lưu tạm
thời vào thanh ghi R6. Sau đó tăng dần R6 lên 4 đơn vò để dò
mã phím tiếp theo, (mã phím )
 (A)
Đ
R6 =0
#FE  A
# 4

R6
A  R7
#4  A
XÓA C
A –R6
A


R6
R7  A
Xoay A
R6
-
1
Bắt đầu
A  R7
A  P1
Đọc port 1
A AND #0F0H

A = #
Đ
S
S
7. Chương trình đầu dò:
8051 luôn luôn đọc dữ liệu từ đầu dò (Port B4) nên nội
dung thanh ghi A bằng nội dung ô nhớ 4001H. Cứ mỗi sản phẩm
đi tới cảm biến, cảm biến sẽ tạo ra mức logic điện áp cao 5 volt,
lúc đó Port B.0 = 1 = ACC.0 . Vì có khoảng thời gian sản phẩm
đi qua nên mức logic điện áp phải tồn tại ít nhất khoảng 100
s
do đó phải liên tục kiểm tra dữ liệu từ đầu dò. Khi mức logic
điện áp chuyển từ 1 xuống 0 (tương ứng với 1 sản phẩm đã đi
qua cảm biến). thì phải có khoảng thời gian ít nhất để chờ sản
phẩm tiếp theo đi tới nên mức logic thấp cũng phải tồn tại ít
nhất 100
s. Dò mức điện áp trong khoảng thời gian 100 s bằng

cách nạp 100 vào R3, giảm R3, khi R3
 0 vẫn tiếp tục dò mức.
Lưu đồ thuật giải dò mức điện áp như sau:
Bắt đầu
DPTR  # CẢM
BIẾN
A

@DPTR
S
Đ
ACC. 0 =1
R3 = 0
R3
-
1
Đ
S
R3

#100
A

@DPTR (đọc port B1)
ACC.0 = 0
Đ
S
S
R3
-

1
RET
R3 = 0
Đ
8. Chương trình Blank: xóa số 0 không có nghóa
Chương trình này có ý nghóa như sau: khi số sản phẩm hay
số hộp chỉ tới hàng đơn vò, chục, trăm thì những số 0 đứng trước
nó không có nghóa bò loại bỏ (không sáng ) và các ô nhớ có
nghóa được lưu (lần lượt từ hàng đơn vò
 hàng ngàn) vào các
ô nhớ từ 70H
 77H. Loại bỏ bằng cách so sánh giá trò lớn nhất
hàng ngàn với số 0 nếu đúng là 0 thì xóa led hiển thò hàng ngàn,
tiếp tục so sánh xem ô nhớ hàng trăm với số 0 nếu đúng là 0 thì
xóa led hiển thò hàng trăm, tương tự cho hàng chục, còn ô nhớ
hàng đơn vò giá trò bằng bao nhiêu thì led hàng đơn vò cũng hiển
thò.
Baté đầu
A  DEMHOP H
LED 70  NGAN
LED 71  TRAM
A  DEMHOP L
LED 72  CHUC
LED 73  DONVI

( 1)
A =0
S
Xoùa LED 72
A


LED 75
Ñ
Xoùa LED 70
A  LED 71
A =0
S
Xoùa LED 71
A  LED 72
A =
Ñ
Xoùa LED 75
A  LED 76
A =
Ñ
S
Xoùa LED 76
RET
A
Ñ
Chöông trình blank

×