KHOA KỸ THUẬT CƠ SỞ BÁO CÁO BÀI TẬP LỚN Môn học Kỹ thuật Vi xử lý Nhóm 1 – Lớp KT29 KHÁNH HOÀ, NĂM 2022 2 KHOA KỸ THUẬT CƠ SỞ BÁO CÁO BÀI TẬP LỚN Môn học Kỹ thuật Vi xử lý Đề tài Hệ thống tưới cây tự[.]
KHOA KỸ THUẬT CƠ SỞ BÁO CÁO BÀI TẬP LỚN Mơn học: Kỹ thuật Vi xử lý Nhóm – Lớp KT29 KHÁNH HOÀ, NĂM 2022 KHOA KỸ THUẬT CƠ SỞ BÁO CÁO BÀI TẬP LỚN Môn học: Kỹ thuật Vi xử lý Đề tài: Hệ thống tưới tự động GVHD: Đoàn Văn Hoản Học viên thực hiện: Trần Ngọc Sáng Đào Văn Dũng KHÁNH HOÀ, NĂM 2022 MỤC LỤC Trang MỞ ĐẦU .4 NỘI DUNG I CƠ SỞ LÝ THUYẾT Các linh kiện sử dụng Phần mền cho hệ thống nhúng .10 II QUY TRÌNH THIẾT KẾ 11 Phân tích hệ thống 11 Thiết kế hệ thống 11 KẾT LUẬN 28 MỞ ĐẦU Lý chọn đề tài Trong xã hội đại, phát triển ngành ngành điện tử viễn thông yêu cầu thiếu để thúc đẩy kinh tế phát triển góp phần nâng cao đời sống xã hội Ngày nay, giới, điện tử viễn thông không ngừng phát triển với tốc độ cao thâm nhập ngày sâu vào tất lĩnh vực đời sống xã hội Cùng với phát triển vũ bão đó, ngành điện tử viễn thông Việt Nam nỗ lực đường tìm chỗ đứng cho Từ cơng nghệ chế tạo loại vi mạch lập trình phát triển đem đến kĩ thuật điều khiển đại có nhiều ưu điểm so với việc lắp ráp linh kiện rời như: kích thước nhỏ, giá thành hạ, làm việc tin cậy, công suất tiêu thụ nhỏ Ngày nay, lĩnh vực điều khiển ứng dụng nhiều thiết bị, sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày làm cho đời sống ngày đại tiện nghi hơn.… Với mục tiêu nêu xuất phát từ yêu cầu thực tế, trọng tâm đề tài sâu nghiên cứu “Thiết kế hệ thống tưới tự động” Với mong muốn đưa hệ thống vào ứng dụng sống hàng ngày Đề tài nghiên cứu dựa kiến thức môn học Kĩ thuật Vi xử lý, Xung – Số, Mạch điện tử Ngồi ra, nhóm có sử dụng thêm số tài liệu tham khảo để đảm bảo đáp ứng tốt yêu cầu đặt đề tài Báo cáo sản phẩm nghiên cứu nhóm, có cố gắng thành viên nhóm lần đầu làm tập lớn nên tránh khỏi sai sót thực hiện, mong góp ý đồng chí giảng viên đồng chí lớp để nhóm chúng tơi hồn thiện đề tài tốt Chúng xin chân thành cảm ơn! NỘI DUNG Mục tiêu đề tài Mục tiêu tổng quát Các loại vi mạch xử lý nhanh nhiều so với vi mạch trước đặc biệt ghi/xóa liệu cách dễ dàng Vì thế, sử dụng nhiều thiết bị điện tử Với đời IC dòng làm thúc đẩy phát triển module cảm biến như: module cảm biến hồng ngoại… Bên cạnh phát triển khoa học kỹ thuật góp phần nâng cao đời sống người, máy móc hoạt động làm giảm sức người, sức Cũng mà người muốn tìm kiếm điều mẻ, tiện lợi, dễ dàng giám sát kiểm tra Sự lựa chọn cấp thiết hệ thống tưới tự động Mục tiêu cụ thể • Tưới tự động theo mức cài đặt thông số nhiệt độ, độ ẩm từ cảm biến • Cài đặt mức nhiệt độ, độ ẩm để tưới cây, bật quạt gió • Cài đặt thời gian tắt bật máy bơm quạt gió • Tưới theo chế độ hẹn cài đặt • Điều khiển hoạt động tưới thủ cơng • Hiển thị thơng số, trạng thái lên hình LCD • Hệ thống làm việc ổn định • Có khả đưa vào ứng dụng thực tế Giới hạn phạm vi đề tài Đối tượng nghiên cứu • Đối tượng nghiên cứu: hệ thống tưới tiêu gia đình, xử lý trung tâm Pic 16f877A; module cảm biến nhiệt độ LM35, module cảm biến độ ẩm đất; Relay DC điều khiển bật/tắt máy bơm, điều khiển tắt bật quạt gió • Khách thể nghiên cứu: Các gia đình muốn sử dụng hệ thống tưới tiêu thông minh cách dễ dàng tiện lợi Phạm vi nghiên cứu • Phạm vi nghiên cứu: hệ thống tưới tiêu gia đình có, hệ thống tưới đơn vị • Ý nghĩa khoa học: ứng dụng khoa học kỹ thuật vào thực tiễn Nội dung thực • Khảo sát hộ gia đình, đơn vị • Thiết kế sơ đồ ngun lý • Lập trình, cài đặt chức Phương pháp tiếp cận • Phương pháp đọc tài liệu • Phương pháp phân tích mẫu • Phương pháp thực nghiệm • Tiếp thu đóng góp, góp ý từ giáo viên để hoàn thiện hệ thống I CƠ SỞ LÝ THUYẾT 1.Các linh kiện sử dụng a) Vi điều khiển PIC 16F877A Hình 1.1.1: Vi điều khiển PIC 16F877A *Tổng quan PIC 16F877A Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368-byte RAM nhớ liệu EEPROM với dung lượng 256 byte Số PORT I/O với 33 pin I/O *Sơ đồ chân/Sơ đồ khối Hình 1.1.2: Sơ đồ khối PIC 16F877A Hình 1.1.3: Sơ đồ chân PIC 16F877A b) Màn hình LCD 2004 Màn hình LCD16x2 xanh sử dụng driver HD44780, có khả hiển thị dịng với dịng 20 ký tự, hình có độ bền cao, phổ biến dễ sử dụng • Điện áp hoạt động V • Kích thước: 98 x 60 x 13.5 mm • Chữ đen, xanh • Khoảng cách hai chân kết nối 0.1-inch tiện dụng kết nối với Breadboard • Tên chân ghi mặt sau hình LCD hổ trợ việc kết nối, dây điện • Có đèn led nền, dùng biến trở PWM điều chình độ sáng để sử dụng điện • Có thể điều khiển với dây tín hiệu • Giao tiếp với Pic qua chuẩn I2C Hình 1.1.4: Màn hình LCD 2004 c) Relay VDC Hình 1.1.5: Relay VDC Relay hay gọi rơ – le tên gọi theo tiếng Pháp, cơng tắc (khóa K) điện từ vận hành dòng điện tương đối nhỏ bật tắt dịng điện lớn nhiều Bản chất relay nam châm điện (một cuộn dây trở thành nam châm tạm thời dịng điện chạy qua nó) hệ thống tiếp điểm đóng cắt có thiết kế module hóa dễ dàng lắp đặt Bạn nghĩ relay loại đòn bẩy điện vậy, kích dịng điện nhỏ bật “địn bẩy” thiết bị sử dụng dòng điện lớn nhiều Điện áp dòng điện relay chuyển mạch khác so với tín hiệu sử dụng để kích hoạt cấp điện cho relay Nói tóm lại rơ-le hay relay thiết bị thông dụng, gọn nhẹ, giá thành dễ tiếp cận sử dụng rộng rãi đời sống ngày Hình 1.1.6: Sơ đồ chân Relay VDC *Thơng số kỹ thuật: • Điện áp kích hoạt (điện áp cuộn dây): VDC • Dịng kích hoạt (dịng điện danh định): 70mA • Dòng tải AC tối đa: 10A – 250/125 VAC • Dòng tải DC tối đa: 10A – 30/28 VDC • Thời gian hoạt động: 10ms • Chuyển mạch tối đa: 300 lần/phút d) Cảm biến nhiệt độ LM35 Hình 1.1.7: Cảm biến nhiệt LM35 LM35 cảm biến nhiệt độ sử dụng rộng rãi Nó hiển thị giá trị dạng điện áp đầu thay độ C LM35 hiển thị giá trị điện áp cao cặp nhiệt điện khơng cần khuếch đại điện áp đầu Điện áp đầu LM35 tỷ lệ với nhiệt độ C Hệ số thang đo 0,01 V / ° C Một đặc điểm quan trọng lấy 60 micromps từ nguồn có khả tự gia nhiệt thấp Cảm biến nhiệt độ LM35 có nhiều gói khác gói giống transistor kim loại T0-46, gói giống transistor nhựa TO-92, gói dán chân SO-8 *Thơng số kỹ thuật: • Điện áp đầu vào tối thiểu tối đa 35V -2V • Có thể đo nhiệt độ từ -55 ° C đến 150 ° C • Điện áp đầu tỷ lệ thuận (tuyến tính) với nhiệt độ tức có mức tăng 10mV (0,01V) cho lần tăng nhiệt độ ° C • Độ xác ± 0,5 ° C • Dòng cực máng nhỏ 60uA e) Cảm biến độ ẩm đất Hình 1.1.8: Cảm biến độ ẩm đất Cảm biến độ ẩm đất làm từ vật liệu hữu macromolecule, sử dụng bệnh viện, nơi lưu trữ, phòng hội thảo, ngành công nghiệp dệt may, thuốc lá, lĩnh vực dược phẩm, khí tượng học, *Thơng số kỹ thuật: • Điện áp hoạt động: 3.3 – 5V • Phạm vi hoạt động: độ ẩm 20 - 95% • Độ xác ± 1% f) Một số linh kiện khác • Button, Res, Cap, Led, Transito, Moto… Phần mềm cho hệ thống nhúng a) Phần mềm CCS Complier CCS trình biên dịch lập trình ngơn ngữ C cho Vi điều khiển PIC hãng Microchip Chương trình tích hợp trình biên dich riêng viết cho dịng PIC khác là: ‐ PCB cho dòng PIC 12‐bit opcodes ‐ PCM cho dòng PIC 14‐bit opcodes ‐ PCH cho dòng PIC 16 18‐bit Tất trình biên dich đuợc tích hợp lại vào chương trình bao gồm trình soạn thảo biên dịch CCS Giống nhiều trình biên dịch C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh vi điều khiển PIC sử dụng PIC dự án Các chương trình diều khiển thực nhanh chóng đạt hiệu cao thông qua việc sử dụng ngơn ngữ lập trình cấp cao – ngơn ngữ C b Phầm mềm mô Proteus - Phần mềm Proteus cho phép mô hoạt động mạch điện tử bao gồm phần thiết kế mạch viết chương trình điều khiển cho họ vi điều khiển MCS-51, PIC, AVR, … Proteus phần mềm mô mạch điện tử Labcenter Electronics, mô cho hầu hết linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho MCU PIC, 8051, AVR, Motorola - Phần mềm bao gồm chương trình: ISIS (Intelligent Schematic Input System) cho phép mô mạch ARES (Advanced Routing and Editing Software) dùng để vẽ mạch in - Dễ dạng tạo sơ đồ nguyên lý từ đơn giản đến phức tạp - Dễ dàng chỉnh sữa đặc tính linh kiện sơ đồ nguyên lý - Hỗ trợ kiểm tra lỗi thiết kế sơ đồ nguyên lý Có thể xem lưu lại phần báo lỗi xảy - Phần mềm chạy mơ phân tích tính chất mạch điện - Proteus cung cấp cho người sử dụng công cụ biên dịch cho họ vi xử lý MSC51, AVR, HC11, …qua tạo tập tin hex dùng để nạp cho vi xử lý tạp tin dsi dùng để xem chạy kiểm tra bước q trình mơ - Phần mềm cung cấp nhiều mơ hình linh kiện có chức mô phỏng, từ vi điều khiển thông dụng đến linh kiện ngoại vi LED, LCD, Keypad, cổng RS232… cho phép người sử dụng mô từ hệ vi 10 - Chế độ cài đặt nhiệt độ: tăng/giảm ngưỡng nhiệt độ thông qua nút nhấn Button1 Button2 - Chế độ cài đặt độ ẩm: tăng/giảm ngưỡng độ ẩm thông qua nút nhấn Button3 Button4 * Chế độ cài đặt thời gian bật/tắt quạt - Nhấn Button1: Chỉnh tắt quạt - Nhấn Button2: Chỉnh phút tắt quạt - Nhấn Button3: Chỉnh bật quạt - Nhấn Button4: Chỉnh phút bật quạt * Chế độ cài đặt thời gian bật/tắt máy bơm - Nhấn Button1: Chỉnh tắt máy bơm - Nhấn Button2: Chỉnh phút tắt máy bơm - Nhấn Button3: Chỉnh bật máy bơm - Nhấn Button4: Chỉnh phút bật máy bơm * Chế độ hẹn - Nhấn Button1: Chỉnh + Giờ >23 chuyển thứ - Nhấn Button2: Chỉnh phút - Nhấn Button3: Chỉnh ngày - Nhấn Button4: Chỉnh tháng + Tháng >12 chuyển năm c) Lập trình điều khiển hệ thống * Chương trình Code #include #device ADC=10 // #FUSES NOWDT //No Watch Dog Timer #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used // #use delay(crystal=20000000) #define LCD_ENABLE_PIN PIN_E0 #define LCD_RS_PIN PIN_E1 #define LCD_RW_PIN PIN_E2 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 // #include // #define BTMode input(PIN_B0) //Mode #define BTUp input(PIN_B1) //Button1 14 #define BTDown input(PIN_B2) //Button2 #define BTMal input(PIN_B3) //Button3 #define BTMal1 input(PIN_B4) //Button4 #define RELAY PIN_B5 //Bơm #define RELAY1 PIN_B6 //Quạt // int8 Mode; int1 Status1 ; //Trạng thái bơm int1 Status2 ; //Trạng thái quạt unsigned int8 TempLv, HumiLv; //Nhiet Do, Do Am cai dat unsigned int8 TempS, HumiS; //Nhiet Do, Do Am tu cam bien unsigned int8 TQ_hour = 00 , TQ_min=00 ; //Thời gian cài đặt tắt quạt unsigned int8 BQ_hour = 00 , BQ_min=00; //Thời gian cài đặt bật quạt unsigned int8 TB_hour = 00 , TB_min=00; //Thời gian cài đặt tắt bơm unsigned int8 BB_hour = 00 , BB_min=00; //Thời gain cài đặt bật bơm unsigned int16 dem=0; unsigned int8 sec = 0, =0, hour = 0, day = 1; //Thời gian unsigned int8 date = 22, month = 04, year = 22; // void _Ngat(void); // Khai báo chương trình ngắt ngồi #int_ext void _NgatRB(void) { Mode++; lcd_putc('\f'); if (Mode==6) Mode = 0; } // void _KhoiTaoTIMER0(void); //Khai báo chương trình timer0 #int_TIMER0 void _NgatTimer0(void) { dem++; if(dem>=1000) { sec++; dem=0; if(sec>59) { sec=0; min++; if(min>59) { 15 hour++; min=0; if(hour>23) { date++; hour=0; day++;if(day>7){day=1;} if(month==1||month==3||month==5|| month==7||month==8||month==10||month==12) { if(date>31){date=1; month++;if(month>12){month=1;year++;}} } else if(month==4||month==6||month==9||month==11) { if(date>30){date=1; month++;if(month>12){month=1;year++;}} } else { if((year%4)==0) { if(date>29){date=1;month++;if(month>12){month=1;year++;}} } else { if(date>28){date=1;month++;if(month>12){month=1;year++;}} } } } } } } set_timer0(56); } // void _ConRelay(unsigned int8 TempLv, unsigned int8 HumiLv, unsigned int8 TempS, unsigned int8 HumiS); //Chương trình chạy tự động void _TimeQuat(unsigned int8 TQ_hour, unsigned int8 TQ_min, unsigned int8 BQ_hour, unsigned int8 BQ_min); // Chương trình cài thời gian tắt bật quạt void _TimeBom(unsigned int8 TB_hour, unsigned int8 TB_min, unsigned int8 BB_hour, unsigned int8 BB_min); // Chương trình cài thời gian tắt bật bơm void _HienThi(); //Chương trình hiển thị thứ int8 _ReadTemp(unsigned int8 TempS); //Chương trình đọc nhiệt độ int8 _ReadHumi(unsigned int8 HumiS); //Chương trình đọc độ ẩm 16 // -void main() { SET_TRIS_A(0xff); SET_TRIS_D(0x00); SET_TRIS_B(0xff); // -_KhoiTaoTIMER0(); _Ngat(); // -TempLv = read_eeprom(0x02); HumiLv = read_eeprom(0x08); // setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(AN0_AN1_AN2_AN3_AN4_AN5); // lcd_init(); lcd_putc('\f'); lcd_gotoxy(3,1); printf(lcd_putc,"HE THONG TUOI CAY");// Hiển thị ban đầu lcd_gotoxy(8,2); printf(lcd_putc,"TU DONG"); delay_ms(100); lcd_putc('\f'); // while (TRUE) { //Nhiet do, am tu cam bien TempS = _ReadTemp(TempS); HumiS = _ReadHumi(HumiS); switch (Mode) // Các chế độ thay đổi { case 0: // Chế độ tự động { lcd_gotoxy(1,1); printf(lcd_putc," Setup Sensor"); lcd_gotoxy(1,2); printf(lcd_putc,"Temp: "); lcd_gotoxy(21,1); printf(lcd_putc,"Humi: "); lcd_gotoxy(8,2); printf(lcd_putc,"%02d",TempLv);lcd_putc(223); lcd_putc("C "); lcd_gotoxy(28,1); 17 printf(lcd_putc,"%02d", HumiLv); lcd_putc("% "); lcd_gotoxy(15,2); printf(lcd_putc,"%02d", TempS); lcd_putc(223); lcd_putc("C "); lcd_gotoxy(35,1); printf(lcd_putc, "%02d", HumiS); lcd_putc("% "); _ConRelay(TempLv, HumiLv, TempS, HumiS); } break; case 1: // Chế độ thủ công { lcd_gotoxy(1,1); printf(lcd_putc," Nhan nut But3/But4 "); lcd_gotoxy(1,2); printf(lcd_putc, " Bat/tat may bom "); lcd_gotoxy(21,1); printf(lcd_putc, " Bat/tat quat gio "); if(BTMal == 0) { delay_ms(20); while(BTMal == 0); if(Status2 == 1) { Status2 = 0; output_high(RELAY); lcd_gotoxy(21,2); printf(lcd_putc,"May bom bat/"); } else { Status2 = 1; output_low(RELAY); lcd_gotoxy(21,2); printf(lcd_putc,"May bom tat/"); } } if(BTMal1 == 0) { delay_ms(20); while(BTMal1 == 0); if(Status1 == 1) { Status1 = 0; output_high(RELAY1); 18 lcd_gotoxy(33,2); printf(lcd_putc,"Quat bat"); } else { Status1 = 1; output_low(RELAY1); lcd_gotoxy(33,2); printf(lcd_putc,"Quat tat"); } } } break; // -case 2: // Cài đặt nhiệt độ, độ ẩm { if (BTUp == 0) { delay_ms(20); while(BTUp == 0); TempLv = TempLv + 1; if(TempLv >= 100) TempLv = 0; } else if(BTDown == 0) { delay_ms(20); while(BTDown == 0); TempLv = TempLv - 1; if(TempLv = 100) HumiLv = 100; } else if(BTMal1 == 0) { delay_ms(20); while(BTMal1 == 0); HumiLv = HumiLv - 1; if(HumiLv = 23) TQ_hour = 0; } else if(BTDown == 0) { delay_ms(10); while(BTDown == 0); TQ_min = TQ_min+ 1; if(TQ_min >= 59) TQ_min = 0; } else if (BTMal ==0) { delay_ms(10); while(BTMal == 0); BQ_hour = BQ_hour+ 1; if(BQ_hour >= 23) 20 BQ_hour = 0; } else if (BTMal1 ==0) { delay_ms(10); while(BTMal1 == 0); BQ_min= BQ_min+ 1; if(BQ_min >= 59) BQ_min = 0; } lcd_gotoxy(1,1); printf(lcd_putc,"Thoi gian tat quat "); lcd_gotoxy(1,2); printf(lcd_putc,"T: %02d:%02d ", TQ_hour, TQ_min); lcd_gotoxy(21,1); printf(lcd_putc,"Thoi gian bat quat "); lcd_gotoxy(21,2); printf(lcd_putc,"T: %02d:%02d ", BQ_hour, BQ_min); } break; // -case 4: { if(BTUp == 0) { delay_ms(10); while(BTUp ==0); TB_hour = TB_hour + 1; if(TB_hour >= 23) TB_hour = 0; } else if(BTDown == 0) { delay_ms(10); while(BTDown == 0); TB_min = TB_min+ 1; if(TB_min >= 59) TB_min = 0; } else if (BTMal ==0) { delay_ms(10); while(BTMal == 0); BB_hour = BB_hour+ 1; 21 if(BB_hour >= 59) BB_hour = 0; } else if (BTMal1 ==0) { delay_ms(10); while(BTMal1 == 0); BB_min = BB_min+ 1; if(BB_min >= 59) BB_min = 0; } lcd_gotoxy(1,1); printf(lcd_putc,"Thoi gian tat bom "); lcd_gotoxy(1,2); printf(lcd_putc,"T: %02d:%02d ", TB_hour, TB_min); lcd_gotoxy(21,1); printf(lcd_putc,"Thoi gian bat bom "); lcd_gotoxy(21,2); printf(lcd_putc,"T: %02d:%02d ", BB_hour, BB_min); } break; // -case 5: // Chế độ hẹn { lcd_gotoxy(1,1); printf(lcd_putc," CHE DIO HEN GIO "); lcd_gotoxy(1,2); printf(lcd_putc," THOI GIAN HIEN TAI"); lcd_gotoxy(21,1); printf(lcd_putc,"T: "); printf(lcd_putc,"%02d",hour); printf(lcd_putc,":"); printf(lcd_putc,"%02d",min); printf(lcd_putc,":"); printf(lcd_putc,"%02d",sec); printf(lcd_putc," 24h"); lcd_gotoxy(21,2); printf(lcd_putc,"D: "); _HienThi(); printf(lcd_putc," %02d"date); printf(lcd_putc,"/"); printf(lcd_putc,"%02d"month); printf(lcd_putc,"/"); printf(lcd_putc,"%02d"year); _TimeQuat(TQ_hour, TQ_min, BQ_hour, BQ_min) ; 22 _TimeBom(TB_hour, TB_min, BB_hour, BB_min) ; if(BTUp == 0) { delay_ms(10); while(BTUp ==0); hour = hour + 1; if(hour >= 23) { hour = 0; day = day +1; if (day >7) day = 1; } } else if(BTDown == 0) { delay_ms(10); while(BTDown == 0); = min+ 1; if(min >= 59) = 0; } else if (BTMal ==0) { delay_ms(10); while(BTMal == 0); date = date+ 1; if(date>=31) date = 0; } else if (BTMal1 ==0) { delay_ms(10); while(BTMal1 == 0); month= month+ 1; if(month > 12) { month = 0; year = year +1; if (year >30) year = 22; } } } 23 break; } } } void _ConRelay(unsigned int8 TempLv, unsigned int8 HumiLv, unsigned int8 TempS, unsigned int8 HumiS) { if (HumiS=TempLv) { output_high(RELAY); output_high(RELAY1); lcd_gotoxy(21,2); printf(lcd_putc, "May bom bat/Quat bat"); } else if (HumiS=TempLv) { output_low(RELAY); output_high(RELAY1); lcd_gotoxy(21,2); printf(lcd_putc, "May bom tat/Quat bat"); } } void _TimeQuat(unsigned int8 TQ_hour, unsigned int8 TQ_min, unsigned int8 BQ_hour, unsigned int8 BQ_min) { if (hour==TQ_hour&&min==TQ_min) { output_low(RELAY1); } if (hour==BQ_hour&&min==BQ_min) 24 { output_high(RELAY1); } } void _TimeBom(unsigned int8 TB_hour, unsigned int8 TB_min, unsigned int8 BB_hour, unsigned int8 BB_min) { if (hour==TB_hour&&min==TB_min) { output_low(RELAY); } if (hour==BB_hour&&min==BB_min) { output_high(RELAY); } } // -int8 _ReadTemp(unsigned int8 TempS) { set_adc_channel(0); TempS = read_adc()/2.046; return TempS; } // -int8 _ReadHumi(unsigned int8 HumiS) { set_adc_channel(1); HumiS = ((int32)read_adc()*100)/1022; return HumiS; } // -void _KhoiTaoTIMER0(void) { setup_timer_0(T0_INTERNAL|T0_DIV_1|T0_8_BIT); set_timer0(56); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); } // -void _Ngat(void) { enable_interrupts(int_ext); ext_int_edge(H_TO_L); enable_interrupts(global); 25 ...KHOA KỸ THUẬT CƠ SỞ BÁO CÁO BÀI TẬP LỚN Môn học: Kỹ thuật Vi xử lý Đề tài: Hệ thống tưới tự động GVHD: Đoàn Văn Hoản Học... Ngoài ra, nhóm có sử dụng thêm số tài liệu tham khảo để đảm bảo đáp ứng tốt yêu cầu đặt đề tài Báo cáo sản phẩm nghiên cứu nhóm, có cố gắng thành viên nhóm lần đầu làm tập lớn nên tránh khỏi sai... Khai báo chương trình ngắt ngồi #int_ext void _NgatRB(void) { Mode++; lcd_putc('f'); if (Mode==6) Mode = 0; } // void _KhoiTaoTIMER0(void); //Khai báo