Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
713,23 KB
Nội dung
Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO ĐỒNG HỒ SỐ SỬ DỤNG NGẮT TIMER KẾT HỢP HIỂN THỊ NHIỆT ĐỘ VÀ ĐỘ ẨM SỬ DỤNG PIC 16F877A 13/03/2022 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A MỤC LỤC Mục lục……………………………………………………………………………… Hình ảnh sử dụng…………………………………………………………… Lưu đồ thuật toán……………………………………………………………… Sơ đồ mạch điện…………………………………………………………………11 Chương trình CCS………………………………………………………………15 Tài liệu tham khảo………………………………………………………………26 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A HÌNH ẢNH ĐƯỢC SỬ DỤNG Hình Lưu đồ thuật tốn chính……………………………………………………… Hình Lưu đồ thuật tốn chương trình quét led……………………………… Hình Lưu đồ thuật tốn chương trình qt phím………………………………7 Hình Lưu đồ thuật tốn chương trình ngắt timer…………………………… Hình Lưu đồ thuật tốn chương trình hiển thị độ ẩm………………………….9 Hình Lưu đồ thuật tốn chương trình hiển thị nhiệt độ…………………… 10 Hình Sơ đồ mạch nạp PIC 16F877A mạch nguồn…………………………… 11 Hình Thiết kế mạch nạp PIC 16F877A mạch nguồn………………………… 12 Hình Sơ đồ mạch hiển thị……………………………………………………………13 Hình 10 Thiết kế mạch hiển thị……………………………………………………….14 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Lưu đồ thuật toán: Bắt đầu Thiết lập ngõ vào Thiết lập timer tạo độ trễ 100ms Cho phép ngắt hoạt động Thiết lập chân A0 đọc tín hiệu analog Thiết lập LCD bbb = Quét led Quét phím bbb = bbb + Thực hàm ngắt S S Thoát ? bbb = 1000 Đ bbb = Đ Kết thúc Hiển thị độ ẩm Hiển thị nhiệt độ Hình Lưu đồ thuật tốn LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Quét led Khai báo biến hiển thị thời gian S Chinh khác Đ bct = bct = Hiển thị giây S bct chinh = Đ Giây không nhấp nháy Giây nhấp nháy Hiển thị phút S bct = chinh = Đ Phút không nhấp nháy Phút nhấp nháy Hiển thị S bct = chinh = Đ LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Giờ không nhấp nháy Giờ nhấp nháy Kết thúc Hình Lưu đồ thuật tốn chương trình qt led LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Quét phím S Nhấn nút mode Đ Giây nhấp nháy S Nhấn nút tăng Nhấn nút giảm Đ Giây = giây - Giây = giây + Nhấn nút mode Phút nhấp nháy S Nhấn nút tăng Nhấn nút giảm Đ Phút = phút - phút = phút + Nhấn nút mode Giờ nhấp nháy LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A S Nhấn nút tăng Nhấn nút giảm Giờ = - Đ Giờ = + Nhấn nút mode Kết thúc Hình Lưu đồ thuật tốn chương trình qt phím LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Thực hàm ngắt NẠP LẠI THỜI GIAN CHO TIMER1 ĐÚNG 100MS TĂNG ĐẾM LẦN NGẮT ĐỦ 10 LẦN NGẮT Đ ĐẾM LẠI TỪ ĐẦU SỐ LẦN NGẮT TĂNG GIÂY THÊM S S GIÂY > 59 Đ ĐẶT LẠI GIÂY = TĂNG PHÚT THÊM S PHÚT > 59 Đ ĐẶT LẠI PHÚT = TĂNG GIỜ THÊM S GIỜ > 23 Đ Kết thúc ĐẶT LẠI GIỜ = Hình Lưu đồ thuật tốn chương trình ngắt timer LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Hiển thị độ ẩm (đang cập nhập…) Hình Lưu đồ thuật tốn chương trình hiển thị độ ẩm LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Hình Thiết kế mạch nạp PIC 16F877A mạch nguồn 12 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Hình Sơ đồ mạch hiển thị 13 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Hình 10 Thiết kế mạch hiển thị 14 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Chương trình CCS: #include #device adc=10 #fuses HS, PUT, NOWDT, NOPROTECT, BROWNOUT, NOLVP, NODEBUG,NOCPD,NOWRT #use delay(clock=8000000) #define LCD_ENABLE_PIN PIN_D3 #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 #define a7 pin_b0 #define b7 pin_b1 #define c7 pin_b2 #define d7 pin_b3 #define e7 pin_b4 #define f7 pin_b5 #define g7 pin_b6 #define l1 pin_c6 #define l2 pin_c7 #define l3 pin_c2 #define l4 pin_c3 #define l5 pin_c4 #define l6 pin_c5 #define tang pin_e0 #define giam pin_e1 #define mode pin_e2 #include 15 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A #BIT Data_Pin = 0x08.0 #BIT Data_Pin_Direction = 0x88.0 char message1[] = "Temp = 00.0 C"; char message2[] = "Do am: 00.0 %"; short Time_out; unsigned int8 T_byte1, T_byte2, RH_byte1, RH_byte2, CheckSum ; char giatri; unsigned int16 ND1; float t,n = 0; int8 gio,phut,giay; const int8 ma7doan[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; int8 chinh=0; int8 ct=0; int8 ngat=0; int1 bct; void quet_led(); void quet_phim(); int1 np=1; void quet_phim(); void out7s(int8 data); void start_signal() { Data_Pin_Direction = 0; Data_Pin = 0; delay_ms(25); Data_Pin = 1; delay_us(30); Data_Pin_Direction = 1; } short check_response() 16 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A { delay_us(40); if(!Data_Pin){ delay_us(80); if(Data_Pin){ delay_us(50); return 1;} } } unsigned int8 Read_Data() { unsigned int8 i, k, _data = 0; if(Time_out) break; for(i = 0; i < 8; i++){ k = 0; while(!Data_Pin){ k++; if (k > 100) {Time_out = 1; break;} delay_us(1);} delay_us(30); if(!Data_Pin) bit_clear(_data, (7 - i)); else{ bit_set(_data, (7 - i)); while(Data_Pin){ k++; if (k > 100) {Time_out = 1; break;} delay_us(1);} } 17 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A } return _data; } void nhietdo() { for(int i=0;i59) giay=0; break; 22 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A } case 2: { phut++; if (phut>59) phut=0; break; } case 3: { gio++; if (gio>23) gio=0; break; } } } if (!input(giam)) { ct=0; bct=0; np=0; switch (chinh) { case 1: { giay ; if (giay>59) giay=59; break; 23 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A } case 2: { phut ; if (phut>59) phut=59; break; } case 3: { gio ; if (gio>23) gio=23; break; } } } if (!input(mode)) { ct=0; bct=0; np=0; chinh++; if (chinh==4) { chinh=0; } } } else 24 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A { if(input(tang)&&input(giam)&&input(mode)) np=1; } } #int_timer1 void ngat_timer1() { set_timer1(40536); ngat++; if (ngat>9) { ngat=0; giay++; if (giay>59) { giay=0; phut++; if(phut>59) { phut=0; gio++; if(gio>23) { gio=0; } } } } } 25 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Tài liệu tham khảo: [1] https://www.youtube.com/watch?v=0-FH6WDG8ow&list=LL&index=4 [2] https://mualinhkien.vn/lap-trinh-pic-bai-6-hien-thi-nhiet-do-tren-lcd-16x2-dung-cambien-lm35 [3] https://tienich123.wordpress.com/2017/10/21/bai-8-cam-bien-nhiet-do-do-ampic16f877a-ccs/ 26 LT Định ... đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Hình 10 Thiết kế mạch hiển thị 14 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ. .. nhiệt độ Hiển thị giá trị nhiệt độ Kết thúc Hình Lưu đồ thuật tốn chương trình hiển thị nhiệt độ 10 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC. .. nạp PIC 16F877A mạch nguồn 12 LT Định Thiết kế chế tạo đồng hồ số sử dụng ngắt timer kết hợp hiển thị nhiệt độ độ ẩm sử dụng PIC 16F877A Hình Sơ đồ mạch hiển thị 13 LT Định Thiết kế chế tạo đồng