8051 Tưới cây tự động dùng vi điều khiển 8051 (ánh sáng, nhiệt độ, độ ẩm). Mô phỏng Proteus + code C.Giao tiêp cảm biếm với 8051: LCD 16x2, cảm biến DHT11, Cảm biến ánh sáng LDR sensorHệ thống tưới cây tự đông dùng vi điều khiển vi xử lý 8051
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÀI TẬP DÀI NHÓM I HỌC PHẦN: VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN Giảng viên: Tống Thị Lý Ngày 27 tháng 11 năm 2021 Trường ĐHCN Hà Nội NHÓM MỤC LỤC MỤC LỤC .1 PHẦN KHẢO SÁT YÊU CẦU CÔNG NGHỆ .2 PHẦN XÂY DỰNG SƠ ĐỒ KHỐI CỦA HỆ THỐNG 2.1 Sơ đồ khối hệ thống: 2.1.1 Khối nguồn 2.1.2 Khối xử lý trung tâm: Vi điều khiển 8051 2.1.3 Khối ADC 2.1.4 Khối hiển thị LCD .8 2.1.5 Khổi cảm biến 2.1.6 Khối chấp hành 10 PHẦN TÍNH CHỌN THIẾT BỊ CHO TỪNG KHỐI 10 3.1 Khối nguồn 11 3.2 Khối vi xử lý 8051 13 3.3 Khối ADC 17 3.4 Khối hiển thị .19 3.5 Khối cảm biến 22 3.6 Khối chấp hành 23 PHẦN VẼ SƠ ĐỒ GHÉP NỐI NGOẠI VI CHO VI ĐIỀU KHIỂN .27 4.1 Sơ đồ ghép nối ngoại vi với vi điều khiển 8051 .27 PHẦN THIẾT LẬP CẤU TRÚC CHƯƠNG TRÌNH TRÊN C .31 5.1 Khai báo thư viện 31 5.2 Định nghĩa biến 31 5.3 Khai báo hàm 32 5.4 Chương trình 32 5.5 Chương trình 36 PHẦN XÂY DỰNG LƯU ĐỒ CHO TỪNG HÀM VÀ CODE 40 PHẦN MÔ PHỎNG TRÊN PROTEUS VÀ KEIL C 44 VXL đo lường điều khiển Trường ĐHCN Hà Nội PHẦN NHĨM KHẢO SÁT U CẦU CƠNG NGHỆ u cầu: Thiết kế điều khiển tưới tự động cho khoảng 20 chậu hoa có kích thước ảnh nhà thời gian chủ nhà vắng nhà công tác khoảng 40 ngày Lưu ý cần: ánh sáng nhu cầu nước theo độ ẩm nhiệt độ mơi trường gồm khơng khí phịng đất chậu Cơ sở thực tiễn đề tài Ngày với phát triển ngành khoa học kỹ thuật, kỹ thuật điện tử mà kỹ thuật số đóng vai trị quan trọng lĩnh vực khoa học – kỹ thuật, quản lý, cơng nghiệp tự động hóa, cung cấp thơng tin,… phải nắm bắt vận dụng cách có hiệu quả, nhằm góp phần vào phát triển khoa học – kỹ thuật nói chung phát triển kỹ thuật điện tử nói riêng Trong đời sống xã hội ngày phát triển, xuất phát nhu cầu thực tế, chúng em nghiên cứu hoàn thành mạch đo nhiệt độ, độ ẩm đất, cường độ ánh sáng với độ xác cao, phù hợp cho hệ thống nông nghiệp tự động Mục đích nghiên cứu đề tài - Đo nhiệt độ: dải đo 0-50 độ C - Đo độ ẩm: dải đo 20-90% VXL đo lường điều khiển Trường ĐHCN Hà Nội NHÓM - Đo cường độ ánh sáng: dải đo 0-1000 LUX - Vi điều khiển: họ vi điều khiển nhà 8051 - Sử dụng LCD để hiển thị trực tiếp kết đo trạng thái làm việc thiết bị Ta xét điều kiện mơi trường sau: Nhiệt độ thích hợp Tset=30 độ C, độ ẩm thích hợp Hset=70%, ánh sáng thích hợp AS>600 lux (600 giá trị cường độ ánh sáng hiển thị cảm biến) Độ ẩm: H>70: bật hệ thống hút ẩm ( thơng gió) H30: bật quạt làm mát T600: Tắt hệ thống chiếu sáng AS600 (Lux): ánh sáng ổn định Khi độ rọi AS=600 lux thif tat he thong den chieu sang P3_0=1; LCD_Clear(); LCD_Gotoxy(0,0); LCD_Puts("Anh sang on dinh"); LCD_Gotoxy(0,1); LCD_Puts("Chieu sang: OFF"); delay_ms(2000); LCD_Clear(); } else { // nguoc lai thi bat he thong den chieu sang P3_0=0; LCD_Clear(); LCD_Gotoxy(0,0); LCD_Puts("Thieu anh sang"); LCD_Gotoxy(0,1); LCD_Puts("Chieu sang: ON"); delay_ms(2000); VXL đo lường điều khiển 35 Trường ĐHCN Hà Nội NHÓM LCD_Clear(); } } } delay_ms(2000); } } 5.5.Chương trình /* - cac ham tao tre */ /* ham tao tre us */ void delay_us(unsigned int t){ unsigned int i; for(i=0;i FFE2 TL0 = 0xE2; TR0 = 1; while(!TF0); TR0 = 0; TF0 = 0; } /* - chuong tring giao tiep LCD 16*2 bit -*/ /* ham gui xung kich hoat LCD */ void LCD_Enable(void){ LCD_EN=1; delay_us(3); LCD_EN=0; delay_us(50); } VXL đo lường điều khiển 36 Trường ĐHCN Hà Nội NHÓM /* ham gui bit du lieu LCD */ void LCD_Send4Bit(unsigned char Data){ LCD_D4=Data & 0x01; LCD_D5=(Data>>1)&1; LCD_D6=(Data>>2)&1; LCD_D7=(Data>>3)&1; } /* ham gui tap lenh du lieu LCD */ void LCD_SendCommand(unsigned char Command){ LCD_Send4Bit(Command>>4); // gui bit DL cao va dich chung sang LCD_Enable(); LCD_Send4Bit(Command); // gui bit DL thap LCD_Enable(); } /* ham xoa man hinh LCD */ void LCD_Clear(){ LCD_SendCommand(0x01); // 0x01: xoa toan bo noi dung tren man hinh delay_us(10); } /* ham khoi tao LCD */ void LCD_Init(){ LCD_Send4Bit(0x00); // bat LCD delay_ms(20); LCD_RS=0; LCD_RW=0; LCD_Send4Bit(0x03); // function setting LCD_Enable(); // gui xung kich hoat delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); // di chuyen tro ve dau man hinh LCD_Enable(); LCD_SendCommand(0x28); //su dung giao tiep 4bit, hien thi dong, kich thuoc font 5x7 LCD_SendCommand(0x0c); // bat hien thi va bat tro LCD_SendCommand(0x06); // tu dong di chuyen tro den vi tri ke tiep LCD_SendCommand(0x01); //xoa toan bo noi dung dang hien thi tren man hinh } /* ham setting vi tri */ LCD_Gotoxy(unsigned char x, unsigned char y){ // x: la cot, y: la hang unsigned char address; if(!y)address=(0x80+x); else address=(0xc0+x); VXL đo lường điều khiển 37 Trường ĐHCN Hà Nội NHÓM delay_us(1000); LCD_SendCommand(address); delay_us(50); } /* ham gui ki tu len LCD */ void LCD_PutChar(unsigned char Data){ LCD_RS=1; // keo chan RS len muc cao => LCD hoat dong o che ghi LCD_SendCommand(Data); // gui man hinh chuoi Data LCD_RS=0; // keo chan RS ve muc thap } /* ham gui chuoi du lieu len LCD */ void LCD_Puts(char *s){ while(*s){ LCD_PutChar(*s); s++; } } /* - chuong trinh giao tiep DHT11 */ /* ham gui xung den cam bien DHT11 */ void Request() // 8051 gui xung khoi dong hoac yeu cau toi DHT11 { DHT11 = 0; // dat chan du lieu cua DHT11 o muc thap delay_ms(20); // delay 20ms (thoi gian toi thieu la 18ms) DHT11 = 1; // dat chan du lieu cua DHT11 o muc cao } /* ham phan hoi tu DHT11 */ void Response(){ while(DHT11==1); // cho chan P2_1 len muc cao while(DHT11==0); //cho chan P2_1 xuong muc thap while(DHT11==1); //cho chan P2_1 len muc cao } /* ham nhan du lieu */ int Receive_data(){ int q,c=0; for (q=0; q