Đồ án Thiết kế mạch đếm số lượng sản phẩm trong công nghiệp
          
        
            
               
            
 
            
                
                    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.
                
              
                                            
                                
            
 
            
                 20 trang
20 trang | 
Chia sẻ: lvcdongnoi | Lượt xem: 3266 | Lượt tải: 0 
              
            Bạn đang xem nội dung tài liệu Đồ án 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
Đồ án 
Thiết kế mạch đếm số lượng 
sản phẩm trong công nghiệp . 
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. 
 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 
Đầu vào: 
+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(). 
            Các file đính kèm theo tài liệu này:
 baocaovxuly_6102.pdf baocaovxuly_6102.pdf