Tải bản đầy đủ (.doc) (20 trang)

thiết kế bộ đếm sản phẩm sử dụng cảm biến hồng ngoại, sản phẩm hiển thị trên lcd

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 (357.26 KB, 20 trang )

ĐỀ TÀI
THIẾT KẾ BỘ ĐẾM SẢN PHẨM SỬ DỤNG CẢM
BIẾN HỒNG NGOẠI, SẢN PHẨM HIỂN THỊ TRÊN
LCD.
File đính kèm 010.rar
1
Phụ lục
Lời nói đầu :
Phần một: Cơ sở lý thuyết.
I: Giới thiệu về bộ vi điều khiển 8051(89S52):
1: Đặc điểm của IC vi điều khiển.
2: Cấu trúc bên trong của 8051(89S52).
3: Các Port của 89S52.
a: Port 0 (P0.0-P0.7)
b: Port 1 (P1.0-P1.7)
c: Port 2 (P2.0-P2.7)
d: Port 3 (P3.0-P3.7)
4: Nghiên cứu tổng thể về vi điều khiển.
4.1: Hoạt động định thời:
4.2: Cổng nối tiếp:
4.2: Ngắt và xử lý ngắt:
II: Giới thiệu về LM358:
1: Cấu tạo của LM358:
2: Hoạt động của LM358:
III: Bộ cảm biến hồng ngoại:
1: Cấu tạo:
2: Hoạt động:
Phần hai :Nội dung thiết kế sản phẩm.
1: Sơ đồ nguyên lý:
2: Nguyên lý hoạt động:
3: Thuật toán chương trình:


4: Phần mềm:
5: Thuyến trình phần mềm:
Phần ba: Mạch demo kết luận ưu nhược điểm của sản phẩm.
1: Mạch demo:
2: Ưu điểm:
3: Nhược điểm:
4: Khắc phục nhược điểm:
5: Ứng dụng thực tế:
Phần ba: Tài liệu tham khảo
2
LỜI NÓI ĐẦU
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một
chíp có thể lập trình được, dùng để điều khiển hoạt động của hệ thống. Bộ
vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo lường
thời gian và tiến hành đọc mở một cơ cấu nào đó.
Người lập trình có thể sử dụng nhiều ngôn ngữ để lập trình cho vi điều
khiển; Nhưng thường sử dụng hai ngôn ngữ chính để lập trình đó là :
Ngôn ngữ lập trình C và ngôn ngữ lập trình Assembly (lập trình trên phần
cứng của máy tính).
Sau khi lập trình xong phần trình dịch được nạp vào IC và dùng IC này để
điều khiển các hệ thống theo yêu cầu đề ra:
Hiện nay vi điều khiển rất phát triển, nó được ứng dụng vào rất nhiều lĩnh
vực như: Sản xuất công nghiệp, tự động hoá và rất nhiều lĩnh vực khác.
So với kỹ thuật số thì vi điều khiển nhỏ gọn hơn rất nhiều do nó được tích
hợp lại và được lập trình để điều khiển.
Tiếp xúc và nghiên cứu vi điều khiển ban đầu cũng có nhiều điều bỡ ngỡ
và lúng túng trong lập trình; Nhưng qua học tập và được sự hướng dẫn
nhiệt tình của các thầy cô bộ môn và đặc biệt là thầy giáo bộ môn Nguyễn
Anh Dũng thì chúng em cũng từng bước nắm được những kiến thức về vi
điều khiển cũng như những yêu cầu sử lý:

Với đề tài : Mạch đếm sản phẩm hiện thị LCD sử dụng cảm biến hồng
ngoại chúng em hy vọng sẽ đạt kết quả tốt. Có thể trong quá trình thiết kế
và ứng dụng có nhiều vấn đề có thể chưa được như mong muốn, chúng
em mong được sự nhận xét chỉ bảo của các thầy để chúng em có thể hoàn
thành tốt hơn những đồ án về sau.
Chúng em xin chân thành cảm ơn!!!
Giáo viên hướng dẫn : Nguyễn Anh Dũng
Sinh viên thực hiên : Đặng Văn Hoan
Nguyễn Văn Hiếu
Phạm Sỹ Thìn
3
PHẦN MỘT
CƠ SỞ LÝ THUYẾT
I: Giới thiệu sơ lược về bộ vi điều khiển 8051(89S52):
1: IC vi điều khiển thuộc họ MCS51 có các đặc điểm sau:
4 kbyte ROM
128 byte RAM
4 port I/O 8 bit
2 bộ định thời
1 cổng nối tiếp
6 nguồn ngắt
Nhưng thực tế hiện nay ta hay sử dụng 8052 (89S52) cũng là một thành
viên họ 8051 . 8052 có tất cả các đặc tính của 8051 ngoài ra còn có thêm
4 kbyte ROM, 128 byte RAM và một bộ định thời nữa.
Hình1 : Vi điều khiển 8051
2: Cấu trúc bên trong IC8051:
Phần chính của vi điều khiển 8051 là bộ vi xử lý trung tâm ( CPU: central
processing unit).
4
Đơn vị xử lý trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn

có khả năng đưa một tín hiệu giữ nhịp từ bên ngoài.
Chương trình đang chạy có thể dừng lại nhờ một khối điều khiển ngắt ở
bên trong. Các nguồn ngắt có thể là : Các biến cố ở bên ngoài, sự tràn của
bộ đếm định thời hoặc cũng có thể là giao diện nối tiếp.
Ba bộ định thời 16bit hoạt động như một bộ đếm.
Các cổng Port0, Port1, Port2, Port3. Sử dụng vào mục đích điều khiển và
xuất nhập tín hiệu. Ở cổng Port3 có thêm các đường dẫn điều khiển dùng
để trao đổi với bộ nhớ bên ngoài, hoặc để đầu nối giao diện nối tiếp, cũng
như các đường ngắt dẫn ở bên ngoài.
Hình2 : Sơ đồ khối 89S52.
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ,
làm việc độc lập với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt
trong dải rộng và được ấn định bằng một bộ định thời.
5
Trong vi điều khiển 8051 có hai thành phần quan trọng khác đó là bộ nhớ
và các thanh ghi:
Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM dùng để lưư trữ dữ liệu và
mã lệnh.
Các thanh ghi sử dụng để lưư trữ thông tin trong quá trình xử lý. Khi
CPU làm việc nó thay đổi nội dung các thanh ghi.
3: Các Port của 89S52:
a :Port0 (P0.0-P0.7):
Port 0 gồm 8 chân, ngoài chức năng xuất nhập, Port 0 còn là bus đa hợp
dữ liệu và địa chỉ (AD0-AD7), chức năng này sẽ được sử dụng khi 8051
giao tiếp với thíêt bị ngoài có các kiến trúc bus như mạch nhớ, mạch
PIO…
Hình 3: Cấu trúc của các chân trên Port 0.
b :Port1 (P1.0-P1.7):
Đối với 8051, chức năng duy nhất của Port 1 là chức năng xuất nhập,
cũng như các Port khác Port 1 có thể xuất nhập theo bit hoặc theo byte.

Hình 4: Cấu trúc của các chân trên Port 1 và Port3.
6
c :Port2 (P2.0-P2.7):
Port 2 là một Port công dụng kép trên các chân 21-28 được dùng như các
đường xuất nhập hoặc là byte cao cua Bus địa chỉ với các thiết kế dùng
bộ nhớ mở rộng
Hình 5 : Cấu trúc các chân trên Port 2
d :Port3 (P3.0-P3.7):
Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng
riêng, cụ thể như sau :
Port Tên Chức năng chuyển đổi
P3.0 RXD Dữ liệu nhận cho Port nối tiếp
P3.1 TXD Dữ liệu phát cho Port nối tiếp
P3.2 INT0\ Ngắt 0 bên ngoài
P3.3 INT1\ Ngắt 1 bên ngoài
P3.4 T0 Ngõ vào của Timer/Counter 0
P3.5 T1 Ngõ vào của Timer/Counter 1
P3.6 WR\ Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD\ Xung đọc bộ nhớ dữ liệu ngoài
4 : Nghiên cứu tổng thể về vi điều khiển :
Nhìn tổng thể chúng ta có thể tìn hiểu về vi điều khiển trong 3 mảng vấn
đề chính là: Các bộ định thời Timer, Port nối tiếp và Ngắt.
4.1: Hoạt động định thời :
Các thanh ghi:
Timer 0 và Timer 1 : Thanh ghi chế độ định thời (TMOD)
Thanh ghi điều khiển Timer ( TCON)
7
Các thanh ghi chứa giá trị của các bộ định thời.
Timer 2 : Thanh ghi T2CON.
Thanh ghi T2MOD

Thanh ghi TH2 và TL2,RCAP2H và RCAP2L
Các chế độ hoạt động của Timer:
Timer 0 và Timer 1: Chế độ 0 : Timer 13 bit.
Chế độ 1: Timer 16 bit.
Chế độ 2 : 8 bit tự động nạp lại.
Chế độ 3 : Tách Timer
Timer 2 : Chế độ thu nhận (Captuer) : 16bit tự nạp lại
Chế độ tự nạp lại (Auto-Reload) : 16bit thu nhận
Chế độ cung cấp tốc độ Baud cho cổng nối tiếp.
4.2: Cổng nối tiếp:
Các thanh ghi cổng nối tiếp: Thanh ghi điều khiển cổng nối tiếp (SCON),
thanh ghi đệm truyền nhận ở cổng nối tiếp (SBUF).
Các chế độ hoạt động: Chế độ 0 và chế độ 1, chế độ 2.
Ứng dụng truyền nhận qua cổng nối tiếp và truyền thông đa xử lý.
4.3: Ngắt và xử lý ngắt:
Thanh ghi cho phép ngắt IE ( Interrupt Enable).
Thanh ghi ưu tiên ngắt IP.
Các vector ngắt và số hiệu ngắt.
Ngắt Cờ Địa chỉ vector Số hiệu
Reset hệ thống RST 0000H
Bên ngoài 0 IE0 0003H 0
Timer 0 TF0 000BH 1
Bên ngoài 1 IE1 0013H 2
Timer 1 TF1 001BH 3
Port nối tiếp TI hoặc RI 0023H 4
Timer 2 TX2 hoặc EXF2 002BH 5
89S52 có 6 nguồn ngắt: Ngăt ngoài INT0\
Ngắt ngoài INT1\.
Ngắt do bộ Timer 0.
Ngắt do bộ Timer 1.

Ngắt do bộ Timer 2.
Ngắt do Port nối tiêp.
Các ngắt ngoài sảy ra khi có mức thấp hoặc sườn xuống trên chân INT0
hoặc INT1 của vi điều khiển. Đây là chức năng chuyển đổi của các bit
Port 3 (P3.2 và P3.3).
8
Ngắt cổng nối tiếp xảy ra khi cờ phát (TI) hoặc cờ ngắt thu (RI) được đặt
lên mức1. Ngắt phát xảy ra khi một ký tự đã nhận xong và đang đợi trong
SBUF để được đọc.
Các ngắt cổng nối tiếp khác với các ngắt Timer. Cờ gây ra ngắt cổng nối
tiếp không bị xáo bằng phấn cứng khi CPU chuyển tới ngắt, do có hai
nguồn ngắt cổng nối tiếp TI và RI. Nguồn ngắt phải được xác định trong
ISR và cờ tạo ngắt sẽ được xoá bằng phần mềm. Các ngắt Timer cờ ngắt
được xoá bằng phần cứng khi CPU hướng tới ISR.
II : Giới thiệu về LM358 :
1 : Cấu tạo của LM358 :
Hình 5 : Cấu tạo và hình dạng thực tế của LM358
9
Cấu trúc mạch điện thực tế của LM358 :
Hình 6 : Cấu tạo mạch điện LM358
2 : Hoạt động của LM358 :
IC LM358 thực hiện nhiệm vụ so sánh tín hiệu vào để đưa ra tín hiệu
chuẩn, nguồn cấp cho IC là : 3V-32V. Mỗi khi có sự thay đổi về điện áp
tại chân 3 tín hiệu đầu vào của LM358 thì nó thực hiện so sánh điện áp
với điện áp chuẩn chân 8 để tạo ra sự biến đổi tín hiệu đẩu ra tại chân 1.
III : Bộ cảm biến hồng ngoại:
1 : Cấu tạo : Gồm có phần phát và phần thu.
Phần phát gồm 1 con LED hồng ngoại.
Phần thu gồm 1 con Transistor.


Hình 7: Cấu tạo của LM358
10
2: Hoạt động:
Để cảm nhận mỗi lần sản phẩm đi qua thì cảm bíên hồng ngoại của phấn
phát phát ra ánh sáng hồng ngoại và phần thu hấp thụ ánh sáng hồng
ngoại vì ánh sáng hồng ngoại có đặc điểm ít bị nhiễu so với các loại ánh
sáng khác. Hai bộ phận phát và thu hoạt động cùng tần số. Khi có sản
phẩm đi qua giữa phần phát và phần thu ánh sáng hồng ngoại bị che bộ
phận thu sẽ hoạt động với tấn số khác so với tần số phát như thế tạo ra
một xung tác động tới bộ phận xử lý. Vậy bộ phận phát và thu phải có
nguồn tạo dao động.
11
PHẦN HAI
NỘI DUNG THIẾT KẾ SẢN PHẨM
1: Sơ đồ nguyên lý mạch đếm sản phẩm hiện thị LCD:
Mạch gồm IC 89S52, IC LM358, IC 7805, LCD(1602), bộ cảm biến hồng
ngoại, thạch anh 12MHz, biến trở 20k, nút nhấn, điện trở(220R,10k,1k),
tụ (33pF,10uF,100uF,104), đèn LED báo.
Hình 8: Sơ đồ nguyên lý mạch đếm sản phẩm
2: Nguyên lý hoạt động của mạch:
Ở chế độ bình thường thì chân INT0( chân 12 của 89S52) luôn ở mức
cao. Khi có một sản phẩm đi qua bộ cảm biến hồng ngoại, sản phẩm che
không cho ánh sáng hống ngoại từ bên phát tới bên thu lên sảy ra sự
chênh lệch về điện áp tạo nên sự chênh lệch về tần số giữa bên phát và
bên thu lên không có tín hiệu ra ở chân 3 của IC LM358. Khi đó IC
LM358 sẽ thực hiện so sánh tín hiệu này với tín hiệu nguồn cấp tại chân 2
của LM358 qua biến trở VR2, khi đó đầu ra tai chân 1 của LM358 là mức
thấp đưa tới chân INT0 (chân 12) tại đây sẽ sảy ra hiện tượng ngắt và khi
đó biến đếm được tăng lên 1 và trên LCD sẽ hiển thị kết quả đếm.
12

C 1
3 0 p F
L C D L M O 1 6 0 2
L C D
L M O 1 6 0 2
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
V S S
V D D
V E E
R S
R W
E
D 0
D 1
D 2

D 3
D 4
D 5
D 6
D 7
A
K
8 9 S 5 2
8 0 5 1
2 9
3 0
4 0
2 0
3 1
1 9
1 8
9
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
1
2
3
4
5

6
7
8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
P S E N
A L E
V C C
G N D
E A
X 1
X 2
R S T
P 0 . 0 / A D 0
P 0 . 1 / A D 1
P 0 . 2 / A D 2

P 0 . 3 / A D 3
P 0 . 4 / A D 4
P 0 . 5 / A D 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
P 1 . 0
P 1 . 1
P 1 . 2
P 1 . 3
P 1 . 4
P 1 . 5
P 1 . 6
P 1 . 7
P 2 . 0 / A 8
P 2 . 1 / A 9
P 2 . 2 / A 1 0
P 2 . 3 / A 1 1
P 2 . 4 / A 1 2
P 2 . 5 / A 1 3
P 2 . 6 / A 1 4
P 2 . 7 / A 1 5
P 3 . 0 / R X D
P 3 . 1 / T X D
P 3 . 2 / I N T 0
P 3 . 3 / I N T 1
P 3 . 4 / T 0
P 3 . 5 / T 1
P 3 . 6 / W R
P 3 . 7 / R D
C 2

3 0 p F
V C C
9 V
1
2
Y 1
1 2 M H z
R 3
1 0 k
V R 1
2 0 k
C 3
1 0 u F
O N A P7 8 H T 2
1 3
2
V I N V O U T
G N D
C 4
1 0 0 u F
-
+
K D _ T T A
L M 3 5 8
3
2
1
84
R 4 4 7 0
I S O 1

T H U _ P H A T
12
43
D 2
L E D
C 5
1 0 4
R 1 1 0 k
R E S E T
V R 2
2 0 K
R 2
2 2 0
3: Thuật toán chương trình:

13
4:Phần mềm:
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
sbit RS_LCD = P1^0;
sbit RW_LCD = P1^1;
sbit E_LCD = P1^2;
unsigned char dong[] = {0x00 , 0x80 , 0xc0};
unsigned long d=0;
void delay_short(){ // Tao tre ngan
unsigned int i;
for(i=0;i<=3;i++);
}
void delay(void) // Phuc vu ngat Timer0;

{
TMOD = 0x01; //Timer 0 che do 1
TH0 = -1000/256; // Chu ky xung 2000us
TH0 = -1000%256;
TR0 = 1;
while (!TF0);
TR0 = 0;
TF0 = 0;
}
void ktra_coban(){
unsigned char x;
P2 = 0xff; //11111111: P2 muc cao LCD dang
hoat dong;
RS_LCD = 0; // Chon thanh ghi lenh
RW_LCD = 1; // Doc tu LCD
do {
E_LCD = 1; // Cho phep
delay_short();
E_LCD = 0; // Cam
x=P2;
x=x&0x80; //1000000: Xoa 7 bit thap cua P2;
}
while(x!=0x80);
}
void ghi_lenh(unsigned char command){
ktra_coban();
14
delay();
P2 = command;
RS_LCD = 0; //Chon thanh ghi lenh

RW_LCD = 0; //write to LCD
E_LCD = 1;
delay_short();
E_LCD = 0;
}
void ghi_kytu(unsigned char kytu){
ktra_coban();
delay();
P2 = kytu;
RS_LCD = 1; // Chon thanh ghi du lieu
RW_LCD = 0; // Ghi vao LCD
E_LCD =1;
delay_short();
E_LCD = 0;
}
void ghi_nhanh ( unsigned char kytu){
delay_short();
P2 = kytu;
RS_LCD = 1; // Chon thanh ghi lenh
RW_LCD = 0; // Ghi vao LCD
E_LCD = 1;
delay_short();
E_LCD = 0;
}
void ghi_chuoi(char *str){
while(*str){
ghi_kytu(*str);
str++;
}
}

void ghi_nhanh_chuoi(char *str){
while(*str){
ghi_nhanh(*str);
str++;
}
}
void move(unsigned char y,unsigned char x){ //Ham di chuyen con
tro tren man hinh LCD
15
ghi_lenh(dong[y]+x); // y la dong, x
la cot
}
void setting(){ //khoi tao LCD
ghi_lenh(0x01);
ghi_lenh(0x38);
// ghi_lenh(0x0f);
ghi_lenh(0x0e);
// ghi_lenh(0x1c); //Dich con tro, dich chuyen con tro
sang phai
// ghi_lenh(0x0c); //Bat hien thi ,tat con tro
}
void write_number(unsigned long number){ //Ham tao mot day so
dem;
int j;
unsigned char array[10]; //Day 10 phan tu tren mot dong;
for(j=0 ; j<10 ; j++) //Thuc hien tinh tu phai qua;
{
array[j] = number%10; //chia lay du roi thuc hien dua
vao mang
number /= 10; // number = number/10;

}
for(j=9 ; j>=0 ; j ){ //Hien thi tu trai qua;
ghi_nhanh(array[j]+0x30); //00110000 : Hien thi mot
dong Font 5*7;
}
}
void main(){
setting();
IE = 0x00; //00000000 : Khong cho phep ngat;
ghi_lenh(0x01); //00000001 : Xoa man hinh
ghi_lenh(0x80); //10000000 : Thiet lap dia chi DDRAM chua
dl hien thi
ghi_chuoi(" CDDT2-K9");
ghi_lenh(0xc0); //11000000 :Doc co bao ban va dia chi cua
CGRAM or DDRAM
ghi_chuoi(" DH CONG NGHIEP ");
delay();
ghi_lenh(0x01);
ghi_chuoi(" DO AN ");
16
ghi_lenh(0xc0);
ghi_chuoi("DEM SAN PHAM LCD");
delay();
ghi_lenh(0x01);
ghi_chuoi(" SVTH ");
ghi_lenh(0xc0);
ghi_chuoi(" HOAN_HIEU_THIN ");
delay();
ghi_lenh(0x01);
ghi_lenh(0x0c); //00001100 : Tat con tro bat hien thi

ghi_nhanh_chuoi(" SO SAN PHAM LA");
IE = 0x81; //10000001 : Cho phep ngat ngoai Timer0;
IT0 = 1; //Uu tien ngat tu ngoai Timer0;
while(1){
move(2,3); // Di chuyen den vi tri 3 dong 2;
write_number(d-1);
}
}
void sp() interrupt 0 //Ngat ngoai Timer0
{
d++;
}
5: Thuyết trình phần mềm:
Khi có sản phẩm đi qua bộ cảm biến hồng ngoại khi đó chân ngắt INT0
của IC 89S52 chuyển mức cao xuống mức thấp tức là sảy ra hiện tượng
ngắt cho chân INT0. Chương trình sẽ thực hiện lệnh ngắt :
Void ngat() interrupt 0 (Ngắt ngoài Timer0) cho quá trính đếm sản phẩm.
17
PHẦN BA
MẠCH DEMO, KẾT LUẬN ƯU NHƯỢC ĐIỂM CỦA SẢN
PHẨM
1: Mạch demo:
2: Ưu điểm:
Cho phép tăng năng suất lao động.
Đảm bảo độ chính sác.
Cho phép đếm với tần số cao.
Khi phần phát và thu xa nhau ta co thể ứng dụng vào thực tế để đếm
những sản phẩm lớn.
Tổn hao công suất bé, do đó mach có thể dung pin, biến áp…
Giá thành rẻ.

3: Nhược điểm:
Do sử dụng cảm biến hồng ngoại nên nếu có 2 sản phẩm đi qua cùng lúc
thì sẽ dẫn đến đếm nhầm sản phẩm.
18
Hai con thu phát làm việc với tần số giống nhau nên nhiều khi không ổn
định.
Tầm nhìn của hồng ngoại yêu cầu độ chính xác.
4: Khắc phục nhược điểm:
Nhược điểm lớn nhất của mạch là những linh kiện thụ động và bộ cảm
biến hồng ngoại vậy nên khi lắp mạch ta cần phải chọn các linh kiện tốt
có tính ổn định cao.
5: Ứng dụng thực tế:
Mạch được ứng dụng trong các hệ thống cửa tự động, trong các khách
sạn, công ty…
Dùng để đếm sản phẩm thu được trong các dây truyền nhà máy như: Các
siêu thị… Và còn nhiều ứng dụng khác nữa.
19
PHẦN BỐN
TÀI LIỆU THAM KHẢO
1:Cấu trúc và lập trình họ vi điều khiển 8051
Nguyễn Tăng Cường- Phan Quốc Thắng.
2: Vi điều khiển với lập trình C
Ngô Diên Tập
3:Giáo trình vi điêu khiển
Khoa điện tử
4: Họ vi điều khiển 8051
Tống Văn On
5:diendandientu.com
6:dientuvietnam.net
20

×