Yêu cầu thực hiện: Thiết kế mạch đế m số lượng sản phẩm trong công
nghiệp .
Bao gồm:
Đầu đếm sản phẩ m tương ứng với 1 băng truyền sản phẩm
Bộ hiển thị bao gồm 5led 7 thanh để hiện thị số lượng sản phẩm
từ 0 đến 99999.
Mạch sử dụng 1 vi điều khiển
Một bàn phím để nhập số lượng sản phẩ m ban đầu hoặc thực
hiện các chức năng khách hàng yêu cầu.
19 trang |
Chia sẻ: lvbuiluyen | Lượt xem: 2927 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Đề tài Thiết kế mạch đếm số lượng sản phẩm trong công nghiệp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MẠCH ĐẾM SẢN PHẨM.
SV Thực Hiện:
Phạm Minh Hiếu
Nguyễn Trọng Hùng
Lê Tuấn Cảnh
Nguyễn Hoàng Hà
Uông Đình Dương
Nguyễn Thị Xuân Thủy
Yêu cầu thực hiện: Thiết kế mạch đếm số lượng sản phẩm trong công
nghiệp .
Bao gồm:
Đầu đếm sản phẩm tương ứng với 1 băng truyền sản phẩm
Bộ hiển thị bao gồm 5led 7 thanh để hiện thị số lượng sản phẩm
từ 0 đến 99999.
Mạch sử dụng 1 vi điều khiển
Một bàn phím để nhập số lượng sản phẩm ban đầu hoặc thực
hiện các chức năng khách hàng yêu cầu.
Sơ đồ khối của mạch.
+
Các phần tử thực hiện mạch.
Đầu vào:
Nguồn
Vi điều khiển
Khối quét động
Khối giải mã
Khối hiển thị( 5led7 thanh)
Bàn phím
Sensor
Đầu Vào Điều Khiển Đầu Ra
cấu trúc chung
+Bàn phìm : nhập dữ liệu vào cho bộ đếm số lượng sản phẩm
thực hiện các chức năng người tiêu dùng yêu cầu:
Vd: reset hệ thống khi đang hoạt động mà xảy ra sự cố, đang
đếm tiến chuyển sang đếm lùi...
Nguyên lý hoạt động
Hình vẽ trên trình bày 1 bàn phím 16 phím được thiết kế nối với 1
Post
+sensor: kiểm tra khi sản phẩm đI qua và gửi tín hiệu đến VĐK để xử
lí
Sơ đồ mạch sensor:
ĐIỀU KHIỂN.
+Vi điều khiển: Nhận dạng tín hiệu vào từ bàn phím và sensor để xử
lí. Gửi tín hiệu ra khối quét động và khối giảI mã để điều khiển hoạt động
của hệ thống và hiển thị led.
Sơ đồ khối của vi điều khiển:
CPU RAM ROM
I/O Timer Cổng COM nối tiếp
Tín hiệu vào VĐK.
A/D
VĐK
D/A
sens
Inp
ut
outp
ut
Thiết bị
ra
Với nhiệm vụ đặt ra ta dùng VĐK AT89c52 của họ 8051 là phù hợp.
Sơ đồ nguyên lý của VĐK:
+Khối quét động: đếm liên tục để quét lần lượt các led theo yêu cầu
của VĐK nhằm sử dụng ít nhất số chân vi điều khiển.
Linh kiện gồm có: bộ đếm xuôI hay đếm ngược dung IC74LS193.
Bộ giảI mã địa chỉ dùng IC74LS154
Với hai linh kiện được dùng như trên thì số led
tối đa có thể quét là 16 led 7 thanh.
GiảI thích sơ đồ mạch:
- Các chân quét1 và quét 2 được nối với chân của VĐK.
- Các chân CA1.1 đến CA1.5 là các chân được nối với chân Enable của
các led 7 thanh.
- Khi hoạt động các chân quét được cấp các xung liên tục theo 1 chu kì
nhất định để các chân ra lần lượt được set lên mức tích cực.
+Khối giảI mã: chuyển từ tín hiệu nhị phân (VĐK) sang tín hiệu mã
BCD để hiện thị led 7 thanh.
Bộ chốt: là flip_flop được ghép nối thích hợp để có khả năng nhận dữ
liệu và lưu lại trong IC, khi nào có tín hiệu cho phép gửi từ VĐK thì xuất ra.
Ta dùng IC họ 74xxxx.
Bộ giảI mã BCD 7 thanh dùng IC 74LS47
HIỆN THỊ.
Hiển thị số sản phẩm đếm, hiện thị dữ liệu người dùng nhập vào.
SƠ ĐỒ KHỐI TOÀN MẠCH:
a) Khối sensor.
Sơ đồ nguyên lý khối sensor
Sơ đồ mạch in khối sensor
b) Khối bàn phím
Sơ đồ nguyên lý khối bàn phím
Sơ đồ mạch in khối bàn phím
II.8.2. Khối xử lý và hiển thị:
a) Khối Vi điều khiển
b) Khối quét động:
c)Khối giải mã và hiển thị:
d) Khối nguồn:
e) Sơ đồ mạch in của các khối VĐK, khối giải mã, khối hiển thị và nguồn
LẬP TRÌNH CHO VI ĐIỀU KHIỂN:
//bat dau chuong trinh
//**************************
//phan khai bao bien:
#include
#include
/*phan dinh nghia cac hang so*/
#define s1 P1_0
#define quet P2_6
#define chot P2_7
#define cosp 0
#define kosp 1
#define on 1
#define off 0
int xoa=15;lanbam=0;phim=0;hang=0;cot=0;
unsigned char d1,d2,d3,d4,a1,a2,a3,a4,a5;
int i=0;//bien giai quyet viec dang kiem tra san pham
//phan khai bao ham:
void khoi_tao(void);
void scan_key (void);
void quet_key (void);
void special_key (void);
void hien_phim (void);
void hien_thi (void);
void KT_sensor (void);
void KT_sensor_lui (void);
void nap_du_lieu (void);
void nap_du_lieu_lui (void);
void delays (unsigned char n);
void delayms (unsigned char n);
// phan tao cac ham
void khoi_tao (void)
{
P1=255; //bao hieu chuong trinh hoat dong
//khoi tao cac bien
a5=xoa;
a4=0;
a3=0;
a2=0;
a1=0;
//**********
d4=xoa;
d3=xoa;
d2=xoa;
d1=0;
//**********
//chot=off;
quet=off;
// quet=off; quet=on; quet=off; //mo khoa den1
// quet=off; quet=on; quet=off; //mo khoa den1
// quet=off; quet=on; quet=off; //mo khoa den1
}
void scan_key (void)
{ P3=255; //quet hang
P3_4=0;
P3_5=0;
P3_6=0;
P3_7=0;
// delays(2);
phim=P3;
if (phim==15) {goto end_scan_key;}
switch(phim)
{
case 14 :hang=0;break; // 14D = 0000 1110B
case 13 :hang=4;break; // 13D = 0000 1101B
case 11 :hang=8;break; // 11D = 0000 1011B
case 7 :hang=12;break; // 07D = 0000 0111B
}//end quet hang
P3=255; //quet cot
P3_0=P3_1=P3_2=P3_3=0;
phim=P3;
if (phim==240) {goto end_scan_key;}
switch(phim)
{
case 224 :cot=0;break; //224D = 1110 0000B
case 208 :cot=1;break; //208D = 1101 0000B
case 176 :cot=2;break; //176D = 1011 0000B
case 112 :cot=3;break; //112D = 0111 0000B
}//end quet cot
phim=hang+cot;
end_scan_key:
delayms(1);
}
void quet_key (void)
{lanbam=0;
while (1)
{P3=255; //quet hang
P3_4=0;
P3_5=0;
P3_6=0;
P3_7=0;
// delays(2);
phim=P3;
if (phim==15) {goto end_scan;}
switch(phim)
{
case 14 :hang=0;break;
case 13 :hang=4;break;
case 11 :hang=8;break;
case 7 :hang=12;break;
}//end quet hang
P3=255; //quet cot
P3_0=P3_1=P3_2=P3_3=0;
phim=P3;
if (phim==240) {goto end_scan;}
switch(phim)
{
case 224 :cot=0;break;
case 208 :cot=1;break;
case 176 :cot=2;break;
case 112 :cot=3;break;
}//end quet cot
phim=hang+cot;
if (phim==10) {d1=d2=d3=d4=0;goto end_quet;}
if (phim==11) {a1=0;a2=xoa;a3=xoa;a4=xoa;goto end_scan;}
if (phim==12) {goto end_scan;}
if (phim==13) {goto end_scan;}
if (phim==14) {goto end_scan;}
if (phim==15) {goto end_scan;}
lanbam=lanbam+1;
delayms(50);
switch(lanbam)
{
case 1 :a1=phim;break;
case 2 :a2=a1;a1=phim;break;
case 3 :a3=a2;a2=a1;a1=phim;break;
case 4 :a4=a3;a3=a2;a2=a1;a1=phim;break;
case 5 :a4=a3;a3=a2;a2=a1;a1=phim;lanbam=4;break;
}
//kiem tra loai cac so 0 o dau;
if ((a4==0)||(a4==xoa))
{
a4=xoa;
if ((a3==0)||(a3==xoa))
{
a3=xoa;
if ((a2==0)||(a2==xoa))
{
a2=xoa;
if (a1==xoa) {a1=0;}
}
}
}
end_scan:
hien_phim();
}//end while(1)
end_quet:
// phim=15;
delays(2);
}//end quet_key
void hien_phim (void)
{
//d1=a1;
P0=a1;//nap so vao den 1
quet=off; quet=on; quet=off; //mo khoa den1
chot=off; chot=on; chot=off; //mo chot so den1
delayms(2);
//**********
//d2=a2;
P0=a2;//nap so vao den 2
quet=off; quet=on; quet=off; //mo khoa den2
chot=off; chot=on; chot=off; //mo chot so den2
delayms(2);
//**********
//d3=a3;
P0=a3;//nap so vao den 3
quet=off; quet=on; quet=off; //mo khoa den3
chot=off; chot=on; chot=off; //mo chot so den3
delayms(2);
//**********
//d4=a4;
P0=a4;//nap so vao den 4
quet=off; quet=on; quet=off; //mo khoa den4
chot=off; chot=on; chot=off; //mo chot so den4
delayms(2);
quet=off; quet=on; quet=off; //quet them 1 lan cho tat toan bo
delayms(2);
//**********
}//end hien_phim;
void hien_thi (void)
{
//d1=a1;
P0=d1;//nap so vao den 1
quet=off; quet=on; quet=off; //mo khoa den1
chot=off; chot=on; chot=off; //mo chot so den1
delayms(2);
//**********
//d2=a2;
P0=d2;//nap so vao den 2
quet=off; quet=on; quet=off; //mo khoa den2
chot=off; chot=on; chot=off; //mo chot so den2
delayms(2);
//**********
//d3=a3;
P0=d3;//nap so vao den 3
quet=off; quet=on; quet=off; //mo khoa den3
chot=off; chot=on; chot=off; //mo chot so den3
delayms(2);
//**********
//d4=a4;
P0=d4;//nap so vao den 4
quet=off; quet=on; quet=off; //mo khoa den4
chot=off; chot=on; chot=off; //mo chot so den4
delayms(2);
quet=off; quet=on; quet=off; //quet them 1 lan cho tat toan bo
delayms(2);
//**********
}//end hien_thi;
void KT_sensor (void)
{
if ((s1==kosp)||(i==0))
{ if (s1==cosp) { d1=d1+1;
i=1;
nap_du_lieu();
}
else { i=0;
}
}
}
void KT_sensor_lui (void)
{
if ((s1==kosp)||(i==0))
{ if (s1==cosp) { d1=d1-1;
i=1;
nap_du_lieu_lui();
}
else { i=0;
}
}
}
void nap_du_lieu (void)
{
if (d1==10) //kiem tra den1 tron 10 thi tang den2
{d1=0;
if (d2==xoa) {d2=1;}
else {d2=d2+1;}
if (d2==10) //kiem tra den2 tron 10 thi tang den3
{d2=0;
if (d3==xoa) {d3=1;}
else {d3=d3+1;}
if (d3==10) //kiem tra den3 tron 10 thi
tang den4
{d3=0;
if (d4==xoa) {d4=1;}
else {d4=d4+1;}
if (d4==10) //kiem tra
den4 tron 10 thi nhay ve ...1
{
d1=1;
d2=xoa;
d3=xoa;
d4=xoa;
}
}
}
}
if ((d1==a1)&&(d2==a2)&&(d3==a3)&&(d4==a4))
{d1=0;d2=xoa;d3=xoa;d4=xoa;}
}//end nap_du_lieu
void nap_du_lieu_lui (void)
{
if ((d1==0)&&(d2==xoa)) {while (1) {hien_thi();
scan_key();
if (phim==11)
{d1=a1;d2=a2;d3=a3;d4=a4;break;}
}
} //kiem tra den1 0 va
den2=xoa thi dung lai
else {
if (d1==255)
{d1=9;
d2=d2-1;
if ((d2==0)&&(d3==xoa)) {d2=xoa;}
else {
if (d2==255)
{d2=9;
d3=d3-1;
if ((d3==0)&&(d4==xoa))
{d3=xoa;}
else {
if (d3==255)
{d3=9;
d4=d4-1;
if (d4==0)
{d4=xoa;}
}
}//end else d3=0
}
}//end else d2=0
}//end if d1=255
}//end else d1=0
}//end nap_du_lieu
void delays (unsigned char m)//10->4//
{
unsigned char i,j,k,n;//vi su dung thach anh 12Mhz nen 1chu ki
lenh=12/12=1us
for (i=1;i<m;i++){
for(j=1;j<66;j++){
for(k=1;k<60;k++){
for(n=1;n<35;n++){}
}
}
}
}
void delayms (unsigned char n)
{
unsigned char i,j,k;
for(k=1;k<n;k++){
for(i=1;i<=25;i++){
for(j=1;j<=40;j++){}
}
}
}
/*void special_key (void)
{
if (phim==1) {}
}*/
//chuong trinh chinh
void main(void)
{
khoi_tao();
begin:
d4=xoa;
d3=xoa;
d2=xoa;
d1=0;
quet_key();
P1_1=!P1_1;//bao quet phim xong
while (1) // chon chuong trinh
{
hien_thi();
scan_key();
if (phim==12) {delayms(100);phim=240;goto hanh_trinh2;} //dem tien tu 0
-> so dat.
if (phim==13) {delayms(100);phim=240;goto hanh_trinh3;} //dem tu so dat
-> 0.
}
//*******************************
//*******************************
while (1)
{
hanh_trinh2:P1_1=!P1_1;//bao chuong trinh hoat dong
d4=xoa;
d3=xoa;
d2=xoa;
d1=0;
while (1)
{
hien_thi();
KT_sensor();
scan_key();
//kiem tra special key
if (phim==10) {delayms(150);goto begin;} //nhap lai va chay lai tu
dau
if (phim==11) { d1=0; //dem lai tu dau
d2=xoa;
d3=xoa;
d4=xoa;
delayms(150);
phim=15;
}
if (phim==12) { phim=15; //dung dem de chuyen
ca,nhap them hoac bot so
delayms(150);
while (1) { hien_thi();
scan_key();
if (phim==13)
{d1=d1+1;nap_du_lieu(); //tang them 1
phim=15;delayms(150);}
if (phim==14)
{d1=d1-1;nap_du_lieu_lui(); //bot di 1
phim=15;delayms(150);}
if (phim==12)
{phim=15;delayms(150);break;} //chay tiep
}
}
//end special key
}//end while
}//end hanh_trinh2
//*******************************
while (1)
{
hanh_trinh3:P1_1=!P1_1;//bao chuong trinh hoat dong
d1=a1;
d2=a2;
d3=a3;
d4=a4;
while (1)
{
hien_thi();
KT_sensor_lui();
scan_key();
//kiem tra special key
if (phim==10) {delayms(150);goto begin;} //nhap lai va chay lai tu
dau
if (phim==11) { d1=a1; //dem lai tu dau
d2=a2;
d3=a3;
d4=a4;
delayms(150);
phim=15;
}
if (phim==12) { phim=15; //dung dem de chuyen
ca,nhap them hoac bot so
delayms(150);
while (1) { hien_thi();
scan_key();
if (phim==13)
{d1=d1+1;nap_du_lieu(); //tang them 1
phim=15;delayms(150);}
if (phim==14)
{d1=d1-1;nap_du_lieu_lui(); //bot di 1
phim=15;delayms(150);}
if (phim==12)
{phim=15;delayms(150);break;} //chay tiep
}
}
//end special key
}//end while
}//end hanh_trinh2
//*******************************
}//end main().