Đề tài 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.

pdf19 trang | Chia sẻ: lvbuiluyen | Lượt xem: 2938 | Lượt tải: 2download
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().