ĐỒ ÁN MÔN HỌC
VI ĐIỀU KHIỂN
ĐẾM SẢN PHẨM ỨNG DỤNG VI ĐIỀU KHIỂN 8051
HIÊN THỊ LÊN LCD ,DỪNG ĐỘNG CƠ BĂNG CHUYỀN
Sinh viên thực hiện :
Giáo viên hướng dẫn: Ths.LÊ XỨNG
1.DẪN NHẬP
Ngày nay với sự phát triển của khoa học kỹ thuật ,tự động hóa sản xuất đang là một yêu cầu cấp thiết
để nâng cao năng suất ,giảm giá thành để tăng tính cạnh tranh nên việc ứng dụng kỹ thuật vi điều
khiển ,vi xử lý vào sản xuất là đều tất yếu.
Nếu nhìn vào quy trình sản xuất từ khâu cấp liệu,sản xuất sản phẩm,đóng gói sản phẩm thì ở khâu
nào cũng ứng dụng vi điều khiển, vì vậy khi chọn đề tài yêu cầu khó nhất là chọn đề tài làm sao cho
tính ứng dụng thực tiễn lại vừa sức với kiến thức mình đã học.Cuối cùng thì đề tài em chọn mạch
đếm sản phẩm ứng dụng vi điều khiển 8051.
MỤC ĐÍCH
đích YÊU CẦU CỦA ĐỀ TÀI
2. 1.Mục
- Hệ thống lại các kiến thức đã học cho sinh viên về môn vi điều khiển đó là cách thiết kế phần cứng,
viết chương trình … để hoàn thành yêu cầu đặt ra của thực tiễn
2.Yêu cầu
-Đếm số sản phẩm di chuyển trên băng chuyền ,hiển thị chính xác số sản phẩm đi qua,có khả năng
dừng băng chuyền.
-Trong đồ án này thực hiện đếm sản phẩm bằng phương pháp đếm xung, một mạch đếm sản phẩm yêu
cầu thực tế là phải đếm sản phẩm chính xác, có khả năng chống nhiễu.Tùy theo đặc điểm của sản
phẩm như là vê hình dáng ,kích thước ,vật liệu mà có các yêu cầu khác nhau
-Tuy nhiên trong phạm vi đồ án môn học và với mức độ kiến thức mình đã học đề tài này chỉ dừng ở
mức độ đếm sản phẩm tử 0000 đến 9999 ,hiển thị ra LCD và có khả năng dừng băng chuyền
3.LÊN PHƯƠNG ÁN THIẾT KẾ
1.Chọn phương pháp đếm xung
Có rất nhiều phương án đếm xung ứng dụng vi điều khiển đó là ta có thể sử dụng một cổng bất kỳ làm
đầu vào đếm xung, sử dụng ngắt, hoặc là sử dụng bộ định thời. ở đây ta chọn phương pháp ngắt
2.Thiết kế phần cứng
-để nhận biết được sản phẩm đi qua ta dùng cảm biến,có rất nhiều loại cảm biến có thể dùng trong việc
đếm sản phẩm như cảm biến điện dung,cảm biến cảm ứng từ,cảm biến quang .Đê đơn giản trong quá
trình thiết kế ta chọn cảm biến hồng ngoại
- Để hiển thị số sản phẩm đi qua ta có thể dùng led 7 đoạn,lcd
SƠ ĐỒ KHỐI MẠCH ĐẾM SẢN PHẨM
KHỐI
KHỐI HIỂN
HIỂN THỊ
THỊ
KHỐI
KHỐI CẢM
CẢM BIẾN
BIẾN
KHỐI XỬ LÝ
BÀN
BÀN PHÍM
PHÍM
KHỐI
KHỐI CHẤP
CHẤP HÀNH
HÀNH
4.THIẾT KẾ PHẦN CỨNG CHI TIẾT
1.Mạch cảm biến
Dùng cảm biến hồng ngoại và LM358
Nguyên lý hoạt động
- Điện trở R10 ,R13 dùng để hạn dòng cho led,biến trở VR51 và R11 phân áp cho 2 chân đầu vào
LM358.R12 phân áp cho transitor A1015 .LM 358 có nhiệm vụ so sánh tín hiệu đầu vào.
Khi chưa có sản phẩm đi qua led thu có tín hiệu điện trở giảm xuống >tăng nên Q2 không dẫn áp tại
đầu ra
ngắt 0 ≈5V
Khi có sản phẩm đi qua do bị che nên điện trở Led thu tăng áp trên chân 6 tăng giảm nên Q2 dẫn
áp tại đầu ra Ngat0 <0.8V ≈0V của vi điều khiển nên tạo ra một ngắt.
2.Mạch hiển thị
Sử dụng LCD 16x2
3.Mạch phím ấn
Phím ấn kết hợp cùng với tụ chống rung
* Lựa chọn cách kết nối
Có 3 cách kết nối nhận đầu vào cho vi điều khiển
* Chống rung phím
HIÊN TƯỢNG RUNG PHÍM
CÁCH KHẮC PHỤC
4. Mạch điều khiển
5.Mạch điều khiển động cơ
Để điều khiển động sử dụng mạch cầu H
5.THIẾT KẾ PHẦN MỀM
5.1 LƯU ĐỒ THUẬT TOÁN
1
a. Chương trình chính
S
BẮT
BẮT ĐẦU
ĐẦU
Đ
Start=1
Start=1
Xác
Xác lập
lập các
các thông
thông số
số ban
ban đầu:
đầu:
-Khai
-Khai báo
báo Stack,xóa
Stack,xóa các
các thanh
thanh ghi
ghi
-Định
-Định nghĩa
nghĩa cổng
cổng vào
vào ra,byte
ra,byte nhớ
nhớ
-Khai
-Khai báo
báo ngắt
ngắt ngoài
ngoài ,định
,định thời
thời
-Chạy
-Chạy Đ/C
Đ/C băng
băng chuyền
chuyền
-Cho
-Cho phép
phép ngắt
ngắt ngoài
ngoài
Khởi
Khởi động
động LCD
LCD
-Hiển
-Hiển thị
thị số
số sản
sản phẩm
phẩm đếm
đếm
Ghi
Ghi chuỗi
chuỗi
Đặt
Đặt sản
sản phẩm
phẩm
1
KẾT
KẾT THÚC
THÚC
b. Chương trình khởi động LCD
c.Chương trình con ghi chuỗi
START
START
A38H
A38H
A#0
A#0
Ghi_lệnh
Ghi_lệnh
A(A+DPTR)
A(A+DPTR)
A06H
A06H
Ghi_lệnh
Ghi_lệnh
Đ
A=
A=00 ??
S
Ghi_dữ
Ghi_dữ liệu
liệu
A0CH
A0CH
Ghi_lệnh
Ghi_lệnh
Tăng
Tăng con
con trỏ
trỏ hiển
hiển thị
thị
-DPTR=DPTR+
-DPTR=DPTR+11
A80H
A80H
Ghi_lệnh
Ghi_lệnh
RET
RET
d.Chương trình con ghi_lệnh
e.Chương trình con ghi_dữ liệu
START
-RS
-RS =0
=0
START
-RS
-RS =1
=1
-RW
-RW =0
=0
-RW
-RW =0
=0
-P0
-P0 A
A
-P0
-P0 A
A
-EN=1
-EN=1
-EN=1
-EN=1
DELAYMS
DELAYMS
EN=0
EN=0
DELAYMS
DELAYMS
RET
DELAYMS
DELAYMS
EN=0
EN=0
DELAYMS
DELAYMS
RET
f.Chương trình con Đặt sản phẩm
START
S
Phím
S
Phím
ngàn=0?
Đ
S
R2 =R2+1
S
R0=10?
Đ
R3 =R3+1
S
R1=10?
Đ
Phím đvi=0?
Đ
R1 =R1+1
S
Phím
chục=0?
Đ
R0 =R0+1
R0 =0
S
trăm=0?
Đ
Đ
S
R2=10?
R3=10?
R2 =0
R3 =0
Đ
R1 =0
RET
g.Chương trình Ngắt ngoài_1
h.Chương trình con tạo trễ
START
START
R4
R4 =R4+1
=R4+1
S
-Khởi
-Khởi tạo
tạo THx,TLx
THx,TLx
R4
R4 =99?
=99?
-- SETB
SETB TRx
TRx
Đ
-- R5
R5 =R5+1
=R5+1
-- R4
R4 =0
=0
S
S
TFx=1?
TFx=1?
R4
R4 =Bytelow?
=Bytelow?
Đ
Đ
R5
R5 =Bytecao?
=Bytecao?
-
TRx
TRx =0
=0
TFx
TFx =0
=0
-Dừng
-Dừng DC
DC
-Dừng
-Dừng đếm
đếm
-Xóa
-Xóa R4,R5
R4,R5
-Call
-Call DELAY15s
DELAY15s
RETI
RET
i.Thuật toán lưu số Đặt sản phẩm
-A
-A R1
R1
-- B
B #10
#10
-- MUL
MUL AB
AB
-ADD
-ADD A,R0
A,R0
-- Bytelowdat
Bytelowdat
A
A
-A
-A R3
R3
-- B
B #10
#10
-- MUL
MUL AB
AB
-ADD
-ADD A,R2
A,R2
-- Bytehighdat
Bytehighdat
A
A
k.Thuật toán xử lý số đếm để hiển thị
-A
-A R4
R4
-- B
B #10
#10
-- DIV
DIV AB
AB
-CHUC
-CHUC
A
A
-- A
A B
B
-DONVI
-DONVI A
A
-A
-A R5
R5
-- B
B #10
#10
-- DIV
DIV AB
AB
-NGAN
-NGAN
A
A
-- A
A B
B
-TRAM
-TRAM A
A
5.2 .CHƯƠNG TRÌNH ĐIỀU KHIỂN
;********************ĐỊNH NGHĨA CÁC CỔNG VÀO RA,BYTE DỮ LIỆU DÙNG***
RS
BIT
P2.5
RW
BIT
P2.6
EN
BIT
P2.7
START
BIT
P2.0
B_NGAN
BIT
P2.1
B_TRAM
BIT
P2.2
B_CHUC
BIT
P2.3
B_DONVI
BIT
P2.4
DONG_CO
BIT
P3.5
BYTECAODAT
DATA
31H
BYTELOWDAT
DATA
32H
DONVI
DATA
33H
CHUC
DATA
34H
TRAM
DATA
NGAN
DATA
35H
36H
;*************************************************
ORG
0000H
JMP
MAIN
ORG
0003H
LJMP NGAT0
ORG
0030H
MAIN:
MOV
SP,#5FH
MOV
TMOD,#11H
CLR
DONG_CO
MOV
R0,#0;THANH GHI HANG DON VI LUC DAT
MOV
R1,#0;THANH GHI HANG CHUC LUC DAT
MOV
R2,#0;THANH GHI HANG TRAM LUC DAT
MOV
R3,#0;THANH GHI HANG NGAN LUC DAT
MOV
R4,#0;BYTE THAP SO DEM TUC THI
MOV
R5,#0;BYTE CAO SO DEM TUC THI
LCALL
KHOI_TAO
LCALL DELAYMS
MOV
A,#01H
LCALL GHI_LENH
LCALL DELAYMS
MOV
A,#80H
LCALL GHI_LENH
LCALL DELAYMS
MOV
DPTR,#CHUOI1
LCALL GHI_CHUOI
MOV
LCALL
A,#0C0H
GHI_LENH
LCALL DELAYMS
MOV
DPTR,#CHUOI2
LCALL GHI_CHUOI
LCALL
MOV
LCALL
DELAYMS
A,#01H
GHI_LENH
LCALL DELAYMS
MOV
LCALL
A,#80H
GHI_LENH
LCALL DELAYMS
MOV
DPTR,#CHUOI3
LCALL GHI_CHUOI
MOV
A,#0C0H
LCALL GHI_LENH
LCALL DELAYMS
MOV
DPTR,#CHUOI4
LCALL GHI_CHUOI
LCALL
MOV
DELAYMS
A,#01H
LCALL GHI_LENH
LCALL DELAYMS
MOV
A,#80H
LCALL GHI_LENH
LCALL DELAYMS
MOV
DPTR,#CHUOI5
LCALL GHI_CHUOI
LOOP:
CALL
DAT_SP
MOV
A,#88H
LCALL GHI_LENH
MOV
DPTR,#MA_LCD
MOV
A,R3
MOVC A,@A+DPTR
LCALL GHI_DULIEU
MOV
A,#89H
LCALL GHI_LENH
MOV
A,R2
MOVC A,@A+DPTR
LCALL GHI_DULIEU
MOV
A,#8AH
LCALL GHI_LENH
MOV
A,R1
MOVC A,@A+DPTR
LCALL GHI_DULIEU
MOV
A,#8BH
LCALL GHI_LENH
MOV
A,R0
MOVC A,@A+DPTR
LCALL GHI_DULIEU
JB
START,LOOP
;************************* KHỞI TẠO NGẮT ****************************
SETB
EA
SETB
EX0
SETB
IT0
;*****************************************************
CLR
DONG_CO
MOV
A,R1
MOV
B,#10
MUL
AB
ADD
A,R0
MOV
BYTELOWDAT,A
MOV
A,R3
MOV
B,#10
MUL
AB
ADD
A,R2
MOV
BYTECAODAT,A
;*****************************************************
MOV
A,#0C0H
LCALL GHI_LENH
MOV
DPTR,#CHUOI6
LCALL GHI_CHUOI
LOOP9:
LCALL XU_LY
MOV
A,#0C8H
LCALL GHI_LENH
MOV
DPTR,#MA_LCD
MOV
A,NGAN
MOVC A,@A+DPTR
LCALL GHI_DULIEU
MOV
A,#0C9H
LCALL GHI_LENH
MOV
A,TRAM
MOVC A,@A+DPTR
LCALL GHI_DULIEU
MOV
A,#0CAH
LCALL GHI_LENH
MOV
A,CHUC
MOVC A,@A+DPTR
LCALL GHI_DULIEU
MOV
A,#0CBH
LCALL GHI_LENH
MOV
A,DONVI
MOVC A,@A+DPTR
LCALL GHI_DULIEU
LJMP
LOOP9
;******************XỬ LÝ SỐ LIỆU XUẤT RA LCD****************************
XU_LY: MOV
MOV
DIV
A,R5
B,#10
AB
MOV
NGAN,A
MOV
A,B
MOV
TRAM,A
MOV
A,R4
MOV
B,#10
DIV
AB
MOV
CHUC,A
MOV
A,B
MOV
DONVI,A
RET
;*******************DAT SAN PHAM ****************************
DAT_SP:
JB
INC
B_NGAN,NEXT
R3
CJNE
R3,#10,NEXT
MOV
R3,#0
NEXT:
JB
B_TRAM,NEXT1
INC
R2
CJNE
R2,#10,NEXT1
MOV
R2,#0
NEXT1:
JB
INC
B_CHUC,NEXT2
R1
CJNE
R1,#10,NEXT2
MOV
R1,#0