Professional Documents
Culture Documents
ĐỀ TÀI:
TP.HCM, 11/2020
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
Trong công nghiệp, các hệ thống tự động nhằm giảm thiểu sức lao động, tăng hiệu
suất và độ chính xác đang được áp dụng ngày càng nhiều. Chúng đang dần trở nên phổ
biến không chỉ trong các xí nghiệp công ty lớn mà kể cả các vùng nông thôn.
Vì vậy, với những kiến thức tự tìm tòi cũng như đã học được của ngành điện tử
viễn thông em xin chọn đề tài “Hệ thống phân loại và đếm sản phẩm theo chiều cao”.
Do kiến thức còn hạn hẹp nên quá trình thực hiện đề tài không thể tránh khỏi những thiếu
sót. Kính mong sự chỉ dẫn và góp ý của quý thầy cô và các bạn .
Đồ Án Điện Tử - Viễn Thông 1 GVHD: Ths. Nguyễn Quang Vinh
CHƯƠNG 1: LÝ THUYẾT
1. Vi điều khiển PIC16F887:
PIC16F887 là vi điều khiển thuộc họ PIC16F được sản xuất bởi hãn MICROCHIP với
tập lệnh gồm 35 lệnh có độ dài 14bit. Đây là chip được sử dụng khá phổ biến hiện nay tại
Việt Nam cũng như trên thế giới với đầy đủ các chức năng của một vi điều khiển nói
chung và phù hợp với các ứng dụng cơ bản. Trong đồ án này, PIC16F887 sẽ được dùng
để xử lý và điều khiển cho toàn bộ hệ thống.
Có 3 kiểu định địa chỉ trực tiếp, gián tiếp và tức thời.
Sơ đồ chân của vi điều khiển PIC16F887 loại 40 chân được trình bày ở hình 1.4.
Vi điều khiển PIC16F887 loại 40 chân, trong đó các chân đều tích hợp nhiều chức
năng, chức năng của từng chân được khảo sát theo port.
Chức năng các chân phân chia theo nhóm chức năng:
* Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các
chân DBx. Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD
thông qua các chân DBx.
Khởi tạo
S
S
S
Đ
Điều khiển Nhấn nút cần gạt Tăng biến đếm Điều khiển cần
Đ Cảm biến THẤP Đ Hiển thị AUTO
cần gạt CAO CAO THẤP gạt THẤP
S
S
Điều khiển Nhấn nút cần gạt Nhấn nút Reset Reset tất cả biến
Đ Đ
cần gạt THẤP THẤP giá trị đếm đếm
void HienThi(){
lcd_command(0x84);
lcd_data("RAT CAO:");
lcd_data(RATCAO/10+0x30);
lcd_data(RATCAO%10+0x30);
lcd_command(0xC0);
lcd_data("CAO=");
lcd_data(CAO/10+0x30);
lcd_data(CAO%10+0x30);
lcd_command(0xC8);
lcd_data("THAP=");
lcd_data(THAP/10+0x30);
lcd_data(THAP%10+0x30);
}
void Dem_Cao(){
if(input(SS_CAO)==0){
CAO++;
for(i=0;i<15;i++){
output_high(SERVO1);
delay_us(1500);
output_low(SERVO1);
delay_us(18500);
}
for(i=0;i<15;i++){
output_high(SERVO1);
delay_us(500);
output_low(SERVO1);
delay_us(19500);
}
HienThi();
}
}
void Dem_Thap(){
if(input(SS_THAP)==0){
THAP++;
for(i=0;i<15;i++){
output_high(SERVO2);
delay_us(1500);
output_low(SERVO2);
delay_us(18500);
}
for(i=0;i<15;i++){
output_high(SERVO2);
delay_us(500);
output_low(SERVO2);
delay_us(19500);
}
HienThi();
}
}
void main(){
set_tris_e(0x00);
set_tris_d(0x0C);
set_tris_c(0xF0);
set_tris_b(0xC6);
set_tris_a(0x00);
output_low(pin_b0);
lcd_init();
RATCAO=0;
CAO=0;
THAP=0;
INV1=1;
INV2=1;
MOTOR=1;
F=1;
while(true){
MENU:
while(true){
if(F==1){
lcd_command(0x01);
lcd_command(0x84);
lcd_data("WORK MODE");
lcd_command(0xC0);
lcd_data("1.AUTO");
lcd_command(0xCA);
lcd_data("2.HAND");
F=0;
}
mp=KeyPress();
if(mp!=20){
if(mp==3){
F=1;
goto AUTO_MODE;
}
if(mp==5){
F=1;
goto HAND_MODE;
}
}
}
AUTO_MODE:
while(true){
if(F==1){
lcd_command(0x01);
HienThi();
F=0;
}
mp=KeyPress();
if(input(SS_RATCAO)==0){
RATCAO++;
while(input(SS_THAP)==1);
HienThi();
Delay_ms(200);
}
Dem_Cao();
Dem_Thap();
if(mp!=20){
if(mp==4){
RATCAO=CAO=THAP=0;
F=1;
}
if(mp==1){
F=1;
goto MENU;
}
}
}
HAND_MODE:
while(true){
if(F==1){
lcd_command(0x01);
lcd_command(0x84);
lcd_data("HAND MODE");
F=0;
}
mp=KeyPress();
if(mp!=20){
if(mp==1){
F=1;
goto MENU;
}
if(mp==4){
if(INV1==1){
for(i=0;i<15;i++){
output_high(SERVO1);
delay_us(1500);
output_low(SERVO1);
delay_us(18500);
}
}
if(INV1==0){
for(i=0;i<15;i++){
output_high(SERVO1);
delay_us(500);
output_low(SERVO1);
delay_us(19500);
}
}
INV1=~INV1;
}
if(mp==6){
if(INV2==1){
for(i=0;i<15;i++){
output_high(SERVO2);
delay_us(1500);
output_low(SERVO2);
delay_us(18500);
}
}
if(INV2==0){
for(i=0;i<15;i++){
output_high(SERVO2);
delay_us(500);
output_low(SERVO2);
delay_us(19500);
}
}
INV2=~INV2;
}
}
}
}
}
TÀI LIỆU THAM KHẢO
1. Giáo trình vi xử lý vi điều khiển PIC16f887 - Nguyễn Đình Phú.
2. Datasheet LCD HD44780.
3. Các Website:
www.alldatasheets.com
www.youtube.com
www.google.com