(Đồ án hcmute) điều khiển các thiết bị trong phòng thông qua màn hình cảm ứng và điện thoại

105 3 0
(Đồ án hcmute) điều khiển các thiết bị trong phòng thông qua màn hình cảm ứng và điện thoại

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THƠNG ĐIỀU KHIỂN CÁC THIẾT BỊ TRONG PHỊNG THƠNG QUA MÀN HÌNH CẢM ỨNG VÀ ĐIỆN THOẠI GVHD: NGUYỄN ĐÌNH PHÚ SVTT: TRẦN VIẾT GIÁP SVTH: NGUYỄN VĂN TUẤN ANH SKL 0 Tp Hồ Chí Minh, tháng 2019 an LỜI CAM ĐOAN LỜI CAM ĐOAN Chúng tơi xin cam đoan cơng trình nghiên cứu riêng Các số liệu sử dụng đề tài có nguồn gốc rõ ràng dựa số tài liệu trước Các kết nghiên cứu đề tài chúng tơi tự tìm hiểu, phân tích cách trung thực, khách quan phù hợp với thực tiễn Nếu không nêu trên, chúng tơi xin chịu trách nhiệm hồn tồn đề tài Nhóm thực đề tài Trần Viết Giáp Nguyễn Văn Tuấn Anh BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an i LỜI CẢM ƠN LỜI CẢM ƠN Xin chân thành cảm ơn đến quý thầy cô khoa Điện tử – truyền thông giảng dạy em suốt bốn năm học tạo điều kiện thuận lợi để nhóm em thực đề tài Cảm ơn gia đình, xã hội nguồn động viên to lớn vật chất tinh thần suốt thời gian học hành, để em có tương lai, theo đuổi ước mơ nghiệp Đặc biệt cảm ơn thầy Nguyễn Đình Phú tạo điều kiện, chia sẻ kinh nghiệm quý báu hướng dẫn em cách học tập nghiên cứu để hoàn thành tốt đồ án tốt nghiệp Cuối xin chúc gia đình, bạn bè q thầy, nhiều sức khỏe thành công công việc Xin chân thành cảm ơn! Nhóm thực đề tài Trần Viết Giáp Nguyễn Văn Tuấn Anh BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an ii TÓM TẮT TÓM TẮT  Ngày nay, phát triển mạnh mẽ khoa học kỹ thuật làm cho sống người ngày tốt hơn, tiện nghi Trong phải kể đến IoT – Internet of Thing, theo Wikipedia IoT nghĩa kết nối vạn vật Nó giúp người dễ dàng kiểm sốt dùng sức lực công việc sống Và công việc điều khiển thiết bị điện mảnh đất màu mỡ để thử nghiệm triển khai IoT  Đáp ứng nhu cầu thực tế phòng học thực tập trường đại học em theo học Nhu cầu muốn thiết bị phòng học “thơng minh” điều khiển từ xa thơng qua điện thoại  Do đó, việc đưa IoT vào lĩnh vực điều khiển thiết bị việc làm minh chứng cho tiện dụng lợi ích mạnh mẽ Vì em định chọn đề tài “Điều khiển thiết bị phịng thơng qua hình cảm ứng điện thoại”, sử dụng vi điều khiển trung tâm ARM STM32F407VET6, điều khiển thông qua cảm ứng điện dung, ngồi cịn điều khiển điện thoại qua kết nối Bluetooth  Kết đạt được: - Tạo giao diện điều khiển hình LCD - Gửi lệnh từ ứng dụng xuống vi điều khiển - Giao tiếp với cảm ứng - Điều khiển mức logic chân I/O thông qua cảm ứng - Màn hình LCD đồng chức với ứng dụng - Tạo giao diện ứng dụng tảng Android điện thoại - Mạch chạy ổn định - Sản phẩm thi công gọn gàng, an tồn BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP-Y SINH an iii MỤC LỤC MỤC LỤC LỜI CAM ĐOAN I LỜI CẢM ƠN II TÓM TẮT III MỤC LỤC IV DANH MỤC HÌNH ẢNH VI CHƯƠNG TỔNG QUAN 1.1 1.2 1.3 1.4 1.5 ĐẶT VẤN ĐỀ MỤC TIÊU NỘI DUNG NGHIÊN CỨU GIỚI HẠN BỐ CỤC CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 VI ĐIỀU KHIỂN 2.1.1 Bộ xử lý arm Cortex-m4 2.1.2 Vi điều khiển STM32F407VET6 Kit STM32F407 Discovery 2.1.3 Kit STM32F407 Discovery 19 2.2 MODULE BLUETOOTH HC-05 22 2.2.1 Giới thiệu giao thức UART 22 2.2.2 Giới thiệu giao thức Bluetooth 23 2.2.3 Module bluetooth HC-05 23 2.3 MODULE LCD TFT 26 2.3.1 Giới thiệu giao thức I2C 26 2.3.2 Màn hình LCD TFT 27 2.4 MODULE RELAY SSR 30 2.4.1 Giới thiệu Relay SSR 30 2.4.2 Module SSR FOTEK-40DA 32 CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ 34 3.1 CÁC YÊU CẦU THIẾT KẾ 34 3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 34 3.2.1 Thiết kế sơ đồ khối 34 3.2.2 Thiết kế khối ứng dụng 35 3.2.3 Sử dụng Module Bluetooth 35 3.2.4 Thiết kế khối hình 37 3.2.5 Tính tốn lựa chọn Relay 38 3.2.6 Thiết kế nguồn 40 3.3 SƠ ĐỒ NGUYÊN LÝ CỦA TOÀN MẠCH 42 CHƯƠNG THI CÔNG HỆ THỐNG 43 4.1 THI CÔNG BẢNG MẠCH KẾT NỐI 43 4.1.1 Giới thiệu 43 4.1.2 Vẽ mạch in 44 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an iv MỤC LỤC 4.1.3 Xuất file mạch in pdf tiến hành in 45 4.1.4 Kết sau thi công 46 4.1.5 Chạy thử 48 4.2 THI CÔNG MẠCH RELAY 49 4.2.2 Kết 50 4.3 LẬP TRÌNH HỆ THỐNG 51 4.3.1 Lưu đồ giải thuật 51 4.3.2 Phần mềm lập trình cho vi điều khiển 55 4.3.3 Giới thiệu phần mềm biên dịch hình ảnh sang mã hex 56 4.3.4 Viết chương trình hệ thống 57 4.4 PHẦN MỀM LẬP TRÌNH CHO ĐIỆN THOẠI, MÁY TÍNH, … 58 4.4.1 Giới thiệu 58 4.4.2 Chương trình chạy ứng dụng Android 59 4.4.3 Icon ứng dụng 62 4.3.3 Hướng dẫn sử dụng 63 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 64 CHƯƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 65 5.1 KẾT QUẢ 65 5.1.1 Hiển thị hình lcd 65 5.1.2 Ứng dụng điều khiển điện thoại 66 5.1.3 Bật tắt Relay 66 5.2 NHẬN XÉT 67 5.3 ĐÁNH GIÁ 67 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 68 6.1 6.2 KẾT LUẬN 68 HƯỚNG PHÁT TRIỂN 69 TÀI LIỆU THAM KHẢO 70 PHỤ LỤC 72 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an v DANH MỤC HÌNH ẢNH DANH MỤC HÌNH ẢNH Hình 2.1 So sánh ARM Cortex M3 M4 Hình 2.2 Cấu trúc lõi ARM dòng ARM Cortex M3 & M4 Hình 2.3 Cấu trúc vi điều khiển Cortex M3 & M4 Hình 2.4 Cấu trúc hệ thống STM32F407VET6 10 Hình 2.5 Mạch Reset 12 Hình 2.6 Bộ nguồn xung bên 13 Hình 2.7 Sơ đồ khối timer 16 Hình 2.8 Chế độ Capture/Compare kênh 17 Hình 2.9 Dạng sóng Edge- aligned PWM 18 Hình 2.10 Hình ảnh sơ đồ chân STM32F407 Discovery 20 Hình 2.11 Hình ảnh thực tế Kit STM32F407 Discovery 21 Hình 2.12 Cách kết nối hai thiết bị sử dụng giao thức UART 22 Hình 2.13 Khung truyền liệu giao thức UART 22 Hình 2.14 Mặt module bluetooth HC-05 24 Hình 2.15 Mặt module bluetooth HC-05 24 Hình 2.16 Mô tả phương thức truyền I2C 27 Hình 2.17 Mặt trước hình LCD TFT 28 Hình 2.18 Mặt sau hình LCD TFT 28 Hình 2.19: Relay SSR 31 Hình 2.20: Cấu tạo bên SSR điển hình 31 Hình 2.21 Relay sử dụng SSR 32 Hình 2.22: SSR FOTEK-40DA 32 Hình 2.23: Sơ đồ bên ssr FOTEK-40DA 33 Hình 3.1 Sơ đồ khối hệ thống 34 Hình 3.2: Module Bluetooth HC-05 36 Hình 3.3 Sơ đồ kết nối chân Module Bluetooth Kit STM32F407 Discovery 36 Hình 3.4 Thơng số điện áp nhà sản xuất cho hình LCD 37 Hình 3.5 Sơ đồ nguyên lý kế nối STM32F407 Discovery LCD 38 Hình 3.6 Sơ đồ nguyên lý Relay kết nối tới khối điều khiển 40 Hình 3.7 Hình ảnh nguồn đề xuất 41 Hình 3.8: Sơ đồ ngun lí tồn mạch 42 Hình 4.1 Sơ đồ kích thước STM32F407 Discovery 43 Hình 4.2 Sơ đồ kích thước LCD 44 Hình 4.3 Mạch in hai lớp bảng mạch kết nối 44 Hình 4.4 Mặt mạch in bảng mạch kết nối 45 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an vi DANH MỤC HÌNH ẢNH Hình 4.5 Mặt mạch in bảng mạch kết nối 45 Hình 4.6 Kết bảng mạch in 46 Hình 4.7 Kết bảng mạch in 47 Hình 4.8 Màn hình chưa cấp nguồn 48 Hình 4.9 Kết chạy thử hình 48 Hình 4.10 Kết chạy thử kết nối với Module Bluetooth 49 Hình 4.11 Đấu nối SSR-40DA 49 Hình 4.12 Kết đấu nối bảng mạch SSR 50 Hình 4.13 Lưu đồ chương trình 51 Hình 4.14 Lưu đồ chương trình nhấn Icon điều hịa 52 Hình 4.15 Lưu đồ chương trình nhấn Icon quạt 53 Hình 4.16 Lưu đồ chương trình nhấn Icon đèn 54 Hình 4.17 Giao diện phần mềm viết chương trình 56 Hình 4.18 Icon chương trình biên dịch hình ảnh 56 Hình 4.19 Giao diện chương trình biên dịch hình ảnh 56 Hình 4.24 Icon ứng dụng điều khiển Android 63 Hình 4.25 Giao diện kết nối Bluetooth 63 Hình 4.26 Giao diện ứng dụng Android 64 Hình 5.1 Màn hình LCD 65 Hình 5.2 Ứng dụng điện thoại 66 Hình 5.3 Kết bật tắt Relay 66 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an vii DANH MỤC BẢNG DANH MỤC BẢNG Bảng 2.1 Cấu hình GPIO……………………………………………………………16 Bảng 2.2 Đặc điểm kỹ thuật hình LCD TFT…………………………… 28 Bảng 2.3 Sơ đồ chân hình LCD TFT…………………………………… 29 Bảng 3.1 Thông số SSR FOTEK-40DA………………………………………… 31 Bảng 4.1 Danh sách linh kiện dự kiến……………………….………………… ….45 Bảng 4.3 Số lượng linh kiện dự kiến………………………………………… ……50 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an viii CHƯƠNG TỔNG QUAN Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ  Cùng với phát triển khơng ngừng nghỉ cơng nghiệp hóa đại hóa, việc đưa tiến khoa học kỹ thuật áp dụng vào thực tiễn giúp người dễ dàng kiểm sốt, nâng cao chất lượng cơng việc, cần tốn sức lực so với trước Chúng giúp người tạo cải vật chất nhiều hơn, giảm bớt chi phí sản xuất Khơng thế, chúng cịn giúp người nâng cao chất lượng sống  Đáp ứng nhu cầu thực tế phòng học thực tập trường đại học em theo học Nhu cầu muốn thiết bị phịng học “thơng minh” Và điều khiển từ xa thơng qua điện thoại Do đó, việc đưa IoT vào lĩnh vực điều khiển thiết bị việc làm minh chứng cho tiện dụng lợi ích mạnh mẽ  Hiện việc sử dụng vi xử lý tảng cấu trúc ARM (Advanced RISC Machine) loại cấu trúc vi xử lý 32 bit 64 bit kiểu RISC sử dụng rộng rãi thiết kế nhúng Do có giá thành thấp sức mạnh tính vượt trội Vì nhóm em định chọn đề tài “Điều khiển thiết bị phịng thơng qua hình cảm ứng điện thoại”, sử dụng vi xử lý trung tâm ARM STM32F407VET6, điều khiển thông qua cảm ứng điện dung, ngồi cịn điều khiển điện thoại qua kết nối Bluetooth 1.2 MỤC TIÊU  Hệ thống dùng vi điều khiển STM32F407VET6  Giao tiếp vi điều khiển với hình LCD  Giao tiếp vi điều khiển với cảm ứng  Giao tiếp vi điều khiển với Module Bluetooth HC-05  Viết ứng dụng Android giao tiếp với vi điều khiển  Đồng chức điện thoại hình LCD  Hiển thị thời gian hình LCD  Sau 18h tự động tắt tất thiết bị  Sử dụng Relay SSR (Solid State Relay) thay cho Relay khí truyền thống BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an PHỤ LỤC USART_PutChar('j'); GPIO_ResetBits(IO_Port, LAMP8); } } /*====================================FAN Button==============================*/ /* FAN1_Button */ void FAN1_Button(uint8_t Status) { if (Status == ON) { FAN_DISPLAY(FAN_X1, LF_Y1, ON); USART_PutChar('K'); GPIO_SetBits(IO_Port, FAN1); } else { FAN_DISPLAY(FAN_X1, LF_Y1, OFF); USART_PutChar('k'); GPIO_ResetBits(IO_Port, FAN1); } } /* FAN2_Button */ void FAN2_Button(uint8_t Status) { if (Status == ON) { FAN_DISPLAY(FAN_X1, LF_Y2, ON); USART_PutChar('L'); GPIO_SetBits(IO_Port, FAN2); } else { FAN_DISPLAY(FAN_X1, LF_Y2, OFF); USART_PutChar('l'); GPIO_ResetBits(IO_Port, FAN2); } } /* FAN1_Button */ void FAN3_Button(uint8_t Status) { if (Status == ON) { FAN_DISPLAY(FAN_X1, LF_Y3, ON); USART_PutChar('M'); GPIO_SetBits(IO_Port, FAN3); } else { FAN_DISPLAY(FAN_X1, LF_Y3, OFF); USART_PutChar('m'); GPIO_ResetBits(IO_Port, FAN3); } } /* FAN4_Button */ void FAN4_Button(uint8_t Status) { if (Status == ON) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 81 PHỤ LỤC { FAN_DISPLAY(FAN_X1, LF_Y4, ON); USART_PutChar('N'); GPIO_SetBits(IO_Port, FAN4); } else { FAN_DISPLAY(FAN_X1, LF_Y4, OFF); USART_PutChar('n'); GPIO_ResetBits(IO_Port, FAN4); } } Chương trình 2: “LCD_MAIN_SCREEN” #define ON #define OFF #include "SSD1963.h" //#define ONCOLOR WHITE //#define OFFCOLOR GREEN // /* -AIR Button */ void AIR1_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("AIR 1", x+25, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("AIR 1", x+25, y+13, WHITE, OFFCOLOR ); } } /* -AIR Button */ void AIR2_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("AIR 2", x+25, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("AIR 2", x+25, y+13, WHITE, OFFCOLOR ); } } /* -FAN Button */ void FAN1_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("FAN 1", x+25, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("FAN 1", x+25, y+13, WHITE, OFFCOLOR ); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 82 PHỤ LỤC /* -FAN Button */ void FAN2_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("FAN 2", x+25, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("FAN 2", x+25, y+13, WHITE, OFFCOLOR ); } } /* -FAN Button */ void FAN3_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("FAN 3", x+25, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("FAN 3", x+25, y+13, WHITE, OFFCOLOR ); } } /* -FAN Button */ void FAN4_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("FAN 4", x+25, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("FAN 4", x+25, y+13, WHITE, OFFCOLOR ); } } /* -LAMP Button -*/ void LAMP1_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("LAMP 1", x+15, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("LAMP 1", x+15, y+13, WHITE, OFFCOLOR ); } } /* -LAMP Button -*/ void LAMP2_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("LAMP 2", x+15, y+13, BLACK, ONCOLOR ); } if (Status == OFF) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 83 PHỤ LỤC { LCD_PutText("LAMP 2", x+15, y+13, WHITE, OFFCOLOR ); } } /* -LAMP Button -*/ void LAMP3_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("LAMP 3", x+15, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("LAMP 3", x+15, y+13, WHITE, OFFCOLOR ); } } /* -LAMP Button -*/ void LAMP4_Button (uint16_t x, uint16_t y, int Status) { LCD_ButtonDisplay(x, y, Status); if (Status == ON) { LCD_PutText("LAMP 4", x+15, y+13, BLACK, ONCOLOR ); } if (Status == OFF) { LCD_PutText("LAMP 4", x+15, y+13, WHITE, OFFCOLOR ); } } /* Button define */ #define ON #define OFF #define row1 100 #define row2 160 #define row3 220 /* -Button Function -*/ void A_Button(uint8_t ButtonA) { if (ButtonA == 'A') { AIR1_Button(100, row1, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_0); } if (ButtonA == 'a') { AIR1_Button(100, row1, ON); GPIO_SetBits(GPIOD, GPIO_Pin_0); } } /* -Button Function -*/ void B_Button(uint8_t ButtonB) { if (ButtonB == 'B') { AIR2_Button(241, row1, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_1); } if (ButtonB == 'b') { AIR2_Button(241, row1, ON); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 84 PHỤ LỤC GPIO_SetBits(GPIOD, GPIO_Pin_1); } } /* -Button Function -*/ void C_Button(uint8_t ButtonC) { if (ButtonC == 'C') { FAN1_Button(100, row2, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_2); } if (ButtonC == 'c') { FAN2_Button(100, row2, ON); GPIO_SetBits(GPIOD, GPIO_Pin_2); } } /* -Button Function -*/ void D_Button(uint8_t ButtonD) { if (ButtonD == 'D') { FAN2_Button(241, row2, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_3); } if (ButtonD == 'd') { FAN2_Button(241, row2, ON); GPIO_SetBits(GPIOD, GPIO_Pin_3); } } /* -Button Function -*/ void E_Button(uint8_t ButtonE) { if (ButtonE == 'E') { FAN3_Button(380, row2, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_4); } if (ButtonE == 'e') { FAN3_Button(380, row2, ON); GPIO_SetBits(GPIOD, GPIO_Pin_4); } } /* -Button Function -*/ void F_Button(uint8_t ButtonF) { if (ButtonF == 'F') { FAN4_Button(520, row2, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_5); } if (ButtonF == 'f') { FAN4_Button(520, row2, ON); GPIO_SetBits(GPIOD, GPIO_Pin_5); } } /* -Button Function -*/ void G_Button(uint8_t ButtonG) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 85 PHỤ LỤC { if (ButtonG == 'G') { LAMP1_Button(100, row3, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_6); } if (ButtonG == 'g') { LAMP1_Button(100, row3, ON); GPIO_SetBits(GPIOD, GPIO_Pin_6); } } /* -Button Function -*/ void H_Button(uint8_t ButtonH) { if (ButtonH == 'H') { LAMP2_Button(241, row3, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_7); } if (ButtonH == 'h') { LAMP2_Button(241, row3, ON); GPIO_SetBits(GPIOD, GPIO_Pin_7); } } /* -Button Function - -*/ void I_Button(uint8_t ButtonI) { if (ButtonI == 'I') { LAMP3_Button(380, row3, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_8); } if (ButtonI == 'i') { LAMP3_Button(380, row3, ON); GPIO_SetBits(GPIOD, GPIO_Pin_8); } } /* -Button Function -*/ void J_Button(uint8_t ButtonJ) { if (ButtonJ == 'J') { LAMP4_Button(520, row3, OFF); GPIO_ResetBits(GPIOD, GPIO_Pin_9); } if (ButtonJ == 'j') { LAMP4_Button(520, row3, ON); GPIO_SetBits(GPIOD, GPIO_Pin_9); } } /* Display Button Status When Program Start */ //#include "main.h" //void Display_Start_Button(void) //{ // A_Button(A_Status); // B_Button(B_Status); // C_Button(C_Status); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 86 PHỤ LỤC // // // // // // // //} D_Button(D_Status); E_Button(E_Status); F_Button(F_Status); G_Button(G_Status); G_Button(G_Status); I_Button(I_Status); J_Button(J_Status); Chương trình 3: “LCD_TOUCH” /* -I2C Config */ #include "stm32f4xx_gpio.h" #include "stm32f4xx_i2c.h" #include "stm32f4xx_rcc.h" void I2C_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef I2C_InitStructure; // cap clock cho ngoai vi va I2C RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C3, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); // cau hinh chan SDA va SCL GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_I2C3); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_I2C3); // cau hinh I2C I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; // I2C_InitStructure.I2C_Ack = I2C_Ack_Disable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 100000; I2C_Init(I2C3, &I2C_InitStructure); // cho phep bo I2C hoat dong I2C_Cmd(I2C3, ENABLE); } uint8_t I2C_ReadChar(char Adr) { I2C3->CR1 |= 0x0100; // send START bit while (!(I2C3->SR1 & 0x0001)) {}; // wait for START condition (SB=1) I2C3->DR = 0x70; // slave address -> DR (LSB=1) while (!(I2C3->SR1 & 0x0002)) {}; // wait for ADDRESS sent (ADDR=1) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 87 PHỤ LỤC int Status2 = I2C3->SR2; // read SR2 to clear flag I2C3->DR = Adr; // register in chip -> DR while (!(I2C3->SR1 & 0x0080)) {}; // wait for DR empty (TxE=1) while (!(I2C3->SR1 & 0x0004)) {}; // wait for ByteTransferred (BTF=1) I2C3->CR1 |= 0x0100; // send START bit while (!(I2C3->SR1 & 0x0001)) {}; // wait for START condition (SB=1) I2C3->DR = 0x71; // slave address -> DR (LSB=0) while (!(I2C3->SR1 & 0x0002)) {}; // wait for ADDRESS sent (ADDR=1) int Status4 = I2C3->SR2; // read status to clear flag while (!(I2C3->SR1 & 0x0040)) {}; // wait for ByteReceived (RxNE=1) I2C3->CR1 |= 0x0200; // send STOP bit return ((char)I2C3->DR); // return byte } chương trình check #include "stm32f4xx.h" #define ON #define OFF #include "main.h" extern uint8_t Data_01; extern int Touch_Pos; void Check_1() { switch (Data_01) { case 'A': { A_Status = ON; break; } case 'B': { B_Status = ON; break; } case 'C': { C_Status = ON; break; } case 'D': { D_Status = ON; break; } case 'E': { E_Status = ON; break; } case 'F': { F_Status = ON; break; } case 'G': { G_Status = ON; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 88 PHỤ LỤC break; } case 'H': { H_Status break; } case 'I': { I_Status break; } case 'J': { J_Status break; } case 'K': { K_Status break; } case 'L': { L_Status break; } case 'M': { M_Status break; } case 'N': { N_Status break; } case 'a': { A_Status break; } case 'b': { B_Status break; } case 'c': { C_Status break; } case 'd': { D_Status break; } case 'e': { E_Status break; = ON; = ON; = ON; = ON; = ON; = ON; = ON; = OFF; = OFF; = OFF; = OFF; = OFF; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 89 PHỤ LỤC } case 'f': { F_Status break; } case 'g': { G_Status break; } case 'h': { H_Status break; } case 'i': { I_Status break; } case 'j': { J_Status break; } case 'k': { K_Status break; } case 'l': { L_Status break; } case 'm': { M_Status break; } case 'n': { N_Status break; } } = OFF; = OFF; = OFF; = OFF; = OFF; = OFF; = OFF; = OFF; = OFF; } void Check_0() { AIR1_Button(A_Status); AIR2_Button(B_Status); LAMP1_Button(C_Status); LAMP2_Button(D_Status); LAMP3_Button(E_Status); LAMP4_Button(F_Status); LAMP5_Button(G_Status); LAMP6_Button(H_Status); LAMP7_Button(I_Status); LAMP8_Button(J_Status); FAN1_Button(K_Status); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 90 PHỤ LỤC FAN2_Button(L_Status); FAN3_Button(M_Status); FAN4_Button(N_Status); LCD_NameDisplay(); } void Check_3() { switch (Touch_Pos) { case 1: { if (A_Status { A_Status = } else { A_Status = } break; } case 2: { if (B_Status { B_Status = } else { B_Status = } break; } case 3: { if (C_Status { C_Status = == ON) OFF; ON; == ON) OFF; ON; == ON) OFF; } else { C_Status = ON; } break; } case 4: { if (D_Status { D_Status = } else { D_Status = } break; } case 5: { if (E_Status == ON) OFF; ON; == ON) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 91 PHỤ LỤC { E_Status = OFF; } else { E_Status = ON; } break; } case 6: { if (F_Status { F_Status = } else { F_Status = } break; } case 7: { if (G_Status { G_Status = } else { G_Status = } break; } case 8: { if (H_Status { H_Status = } else { H_Status = } break; } case 9: { if (I_Status { I_Status = } else { I_Status = } break; } case 10: { if (J_Status { == ON) OFF; ON; == ON) OFF; ON; == ON) OFF; ON; == ON) OFF; ON; == ON) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 92 PHỤ LỤC J_Status = OFF; } else { J_Status = ON; } break; } case 11: { if (K_Status { K_Status = } else { K_Status = } break; } case 12: { if (L_Status { L_Status = } else { L_Status = } break; } case 13: { if (M_Status { M_Status = } else { M_Status = } break; } case 14: { if (N_Status { N_Status = } else { N_Status = } break; } == ON) OFF; ON; == ON) OFF; ON; == ON) OFF; ON; == ON) OFF; ON; } } void Check_4() { if(A_Status == ON) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 93 PHỤ LỤC { USART_PutChar(Data_01); //UARTPrintf(Data_01); } } void Check_2() { A_Status = OFF; B_Status = OFF; C_Status = OFF; D_Status = OFF; E_Status = OFF; F_Status = OFF; G_Status = OFF; H_Status = OFF; I_Status = OFF; J_Status = OFF; K_Status = OFF; L_Status = OFF; M_Status = OFF; N_Status = OFF; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 94 S an K L 0

Ngày đăng: 27/12/2023, 02:59

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan