Đồ án tốt nghiệp: Thiết kế và thi công bộ thí nghiệm vi xử lý giao tiếp KIT INTEL GALILEO

82 33 0
Đồ án tốt nghiệp: Thiết kế và thi công bộ thí nghiệm vi xử lý giao tiếp KIT INTEL GALILEO

Đ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

Đề tài nghiên cứu gồm các mục tiêu: Thiết kế và thi công được bộ thí nghiệm vi xử lý hoàn chỉnh với những chức năng cơ bản như: bàn phím, led đơn, led 7 đoạn, LCD… hoặc những ứng dụng cao hơn: giao tiếp máy tính, điều khiển động cơ. Xây dựng các bài tập thí nghiệm giao tiếp đơn giản với led đơn, led 7 đoạn, nút nhấn, bàn phím ma trận, LCD, chuyển đổi ADC…

TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o Tp HCM, ngày 05 tháng 10 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: Phạm Quang Minh Hồ Văn Trọng CNKT Điện tử - Truyền thơng Đại học quy 2014 MSSV: 14141195 MSSV: 14141338 Mã ngành: 141 Mã hệ: Lớp: 14141DT1 I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG BỘ THÍ NGHIỆM VI XỬ LÝ GIAO TIẾP KIT INTEL GALILEO II NHIỆM VỤ Các số liệu ban đầu: - - Thiết kế thi công thí nghiệm vi xử lý hồn chỉnh với chức như: bàn phím, led đơn, led đoạn, LCD… ứng dụng cao hơn: giao tiếp máy tính, điều khiển động Xây dựng tập thí nghiệm giao tiếp đơn giản với led đơn, led đoạn, nút nhấn, switch, bàn phím ma trận, LCD, chuyển đổi ADC Nội dung thực hiện: - Tìm hiểu kit Intel Galileo, phần mềm Arduino, mạch giao tiếp ngoại vi với vi điều khiển Thiết kế phần cứng thí nghiệm (thiết kế mạch nguyên lý, mạch in, thi công) Xây dựng thực hành bản, viết chương trình thực thi kiểm tra kết thí nghiệm Thu thập kết Kiểm tra tính ổn định hệ thống Viết báo cáo luận văn Báo cáo đề tài tốt nghiệp III NGÀY GIAO NHIỆM VỤ: 01/10/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 05/01/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Ngô Bá Việt CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH i TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 05 tháng 10 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Phạm Quang Minh Lớp: 14141DT1A MSSV: 14141195 Họ tên sinh viên 2: Hồ Văn Trọng Lớp: 14141DT1A MSSV: 14141338 Tên đề tài: THIẾT KẾ VÀ THI CƠNG BỘ THÍ NGHIỆM VI XỬ LÝ SỬ DỤNG KIT INTEL GALILEO Tuần/ngày Nội dung - (01-06/10) - Gặp GVHD để phổ biến quy định: thực chọn đề tài, tên đề tài, thời gian làm việc Duyệt đề tài - Viết đề cương cho đề tài - Tìm hiểu tổng quan kit Intel Galileo (08-13/10) Tìm hiểu cách thức lập trình biên dịch (15-20/10) - Thiết kế sơ đồ khối, giải thích chức khối (22-27/10) (29/1003/11) - Xác nhận GVHD kit Intel Galileo Tính toán lựa chọn linh kiện cho khối Thiết kế sơ đồ nguyên lý giải thích hoạt động mạch - Thiết kế thi công khối nhỏ mạch - Lập trình phần mềm Arduino (05-10/11) (12-17/11) Mơ phỏng, chạy chương trình khối thi cơng Lập trình phần mềm Arduino Mơ phỏng, chạy chương trình khối thi cơng ii (19-24/11) (26/1101/12) Lập trình phần mềm Arduino Mơ phỏng, chạy chương trình khối thi cơng - Thiết kế thi cơng mơ hình tổng hợp khối - Mơ phỏng, chạy chương trình tổng hợp khối 10 (03-08/12) - Thiết kế thi công mơ hình tổng hợp khối 11 (10-15/12) Kiểm tra, hồn thiện mơ hình, chạy thử sửa lỗi 12 (17-22/12) Viết báo cáo 13 (24-29/12) Viết báo cáo 14 (31/1205/01) - 15 (06-18/01) Mơ phỏng, chạy chương trình tổng hợp khối Hoàn thiện, chỉnh sửa báo cáo gửi cho GVHD để xem xét góp ý lần cuối trước in báo cáo Nộp báo cáo làm Slide báo cáo GV HƯỚNG DẪN (Ký ghi rõ họ tên) iii LỜI CAM ĐOAN Đề tài tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Phạm Quang Minh Hồ Văn Trọng iv LỜI CẢM ƠN Để hoàn thành đề tài nghiên cứu này, lời cho phép gửi lời cảm ơn chân thành đến toàn thể quý thầy cô Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM nói chung thầy Khoa Điện – Điện Tử nói riêng, người tận tình dạy dỗ, trang bị cho kiến thức tảng kiến thức chuyên ngành quan trọng, giúp nhóm chúng tơi có sở lý thuyết vững vàng tạo điều kiện giúp đỡ tốt cho chúng tơi q trình học tập nghiên cứu Đặc biệt, xin chân thành cảm ơn ThS Ngơ Bá Việt tận tình giúp đỡ, đưa định hướng nghiên cứu hướng giải số vấn đề để chúng tơi thực tốt đề tài Mặc dù cố gắng hết sức, song điều kiện thời gian kinh nghiệm thực tế chúng tơi ít, đề tài khơng thể tránh khỏi thiếu sót Vì vậy, chúng tơi mong nhận đóng góp ý kiến quý thầy, cô giáo Xin chân thành cảm ơn! TP.HCM, ngày 05 tháng 01 năm 2019 Sinh viên thực Phạm Quang Minh Hồ Văn Trọng v MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP .i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ii LỜI CAM ĐOAN iv LỜI CẢM ƠN v MỤC LỤC vi LIỆT KÊ HÌNH ẢNH viii LIỆT KÊ BẢNG .xi DANH SÁCH CÁC TỪ VIẾT TẮT xii TÓM TẮT xiii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU .1 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC Chương 2.1 CƠ SỞ LÝ THUYẾT KHÁI QUÁT VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN 2.1.1 Vi xử lý vi điều khiển 2.1.2 Hệ thống điều khiển tích hợp (SoC) 2.2 TRUYỀN DỮ LIỆU CHUẨN I2C .5 2.3 TRUYỀN DỮ LIỆU CHUẨN SPI 2.4 TRUYỀN DỮ LIỆU CHUẨN 1-WIRE .9 2.5 PHẦN MỀM ARDUINO 10 2.6 GIỚI THIỆU PHẦN CỨNG 11 2.6.1 Bộ xử lý trung tâm - Intel Galileo Gen 11 2.6.2 Thiết bị đầu vào 14 2.6.3 Thiết bị đầu 16 2.6.4 Thiết bị thời gian thực DS1307 26 Chương TÍNH TỐN VÀ THIẾT KẾ 28 3.1 GIỚI THIỆU 28 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 28 vi 3.3 3.2.1 Thiết kế sơ đồ khối hệ thống 28 3.2.2 Tính tốn thiết kế mạch 29 SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH 38 Chương THI CÔNG HỆ THỐNG 39 4.1 GIỚI THIỆU 39 4.2 THI CÔNG HỆ THỐNG 39 4.3 4.4 4.5 4.2.1 Thi công bo mạch hệ thống 39 4.2.2 Lắp ráp kiểm tra 42 ĐÓNG GÓI VÀ THI CƠNG MƠ HÌNH 44 4.3.1 Đóng gói, thiết kế mơ hình 44 4.3.2 Thi cơng mơ hình 44 LẬP TRÌNH HỆ THỐNG 46 4.4.1 Lưu đồ giải thuật 46 4.4.2 Phần mềm lập trình cho Intel Galileo Gen 48 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 51 Chương 5.1 5.2 KẾT QUẢ 55 5.1.1 Kết nghiên cứu 55 5.1.2 Kết thi công 55 NHẬN XÉT – ĐÁNH GIÁ 56 Chương 6.1 6.2 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ 55 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 57 KẾT LUẬN 57 6.1.1 Ưu điểm 57 6.1.2 Khuyết điểm 57 HƯỚNG PHÁT TRIỂN ĐỀ TÀI 58 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC 60 vii LIỆT KÊ HÌNH ẢNH Hình Trang Hình 2.1: Mơ hình truyền liệu chuẩn I2C Hình 2.2: Quá trình thiết bị chủ ghi liệu vào thiết bị tớ Hình 2.3: Quá trình thiết bị chủ đọc liệu vào thiết bị tớ Hình 2.4: Mơ hình truyền liệu chuẩn SPI Hình 2.5: Mơ hình truyền liệu chuẩn 1-Wire .9 Hình 2.6: Dạng sóng q trình truyền nhận liệu chuẩn 1-Wire 10 Hình 2.7: Biểu tượng phần mềm Arduino 10 Hình 2.8: Giao diện phần mềm Arduino 11 Hình 2.9: Mặt kit Intel Galileo Gen 12 Hình 2.10: Mặt kit Intel Galileo Gen 12 Hình 2.11: Sơ đồ nguyên lý chip xử lý trung tâm kit 13 Hình 2.12: Sơ đồ bố trí chân I/O kit Intel Galileo Gen 13 Hình 2.13: Ma trận phím 4x4 ngồi thực tế 14 Hình 2.14: Cảm biến LM35 thực tế 15 Hình 2.15: Led đoạn đơi ngồi thực tế 16 Hình 2.16: LCD 16x2 ngồi thực tế 16 Hình 2.17: Sơ đồ chân LCD 16x2 17 Hình 2.18: Led ma trận 8x8 ngồi thực tế 18 Hình 2.19: Sơ đồ chân led ma trận 8x8 19 Hình 2.20: IC 74HC595 ngồi thực tế 19 Hình 2.21: Sơ đồ chân IC 74HC595 20 Hình 2.22: Cấu trúc bên IC 74HC595 21 Hình 2.23: IC 74HC138 ngồi thực tế 22 Hình 2.24: Sơ đồ chân IC 74HC138 22 Hình 2.25: IC L298 ngồi thực tế 25 Hình 2.26: Sơ đồ chân IC L298 25 Hình 2.27: IC DS1307 thực tế 26 Hình 2.28: Sơ đồ chân IC DS1307 26 Hình 2.29: Địa ghi IC DS1307 27 viii Hình 3.1: Sơ đồ khối hệ thống 28 Hình 3.2: Sơ đồ nguyên lý khối xử lý trung tâm 29 Hình 3.3: Sơ đồ nguyên lý khối nút nhấn đơn 31 Hình 3.4: Sơ đồ nguyên lý khối ma trận phím 4x4 32 Hình 3.5: Sơ đồ nguyên lý khối led đơn 33 Hình 3.6: Sơ đồ nguyên lý khối led đoạn 33 Hình 3.7: Transistor A1015 ngồi thực tế 34 Hình 3.8: Sơ đồ nguyên lý khối LCD 16x2 35 Hình 3.9: Sơ đồ nguyên lý khối led ma trận 8x8 35 Hình 3.10: Sơ đồ nguyên lý khối cảm biến nhiệt độ 36 Hình 3.11: Sơ đồ nguyên lý khối thời gian thực 36 Hình 3.12: Sơ đồ nguyên lý khối động 36 Hình 3.13: Sơ đồ nguyên lý khối nguồn 37 Hình 3.14: Adapter 12V – 2A 37 Hình 3.15: Sơ đồ nguyên lý khối switch giao tiếp 38 Hình 4.1: Mạch in PCB lớp 39 Hình 4.2: Mạch in PCB lớp 40 Hình 4.3: Sơ đồ bố trí linh kiện 40 Hình 4.4: Board thí nghiệm mặt 43 Hình 4.5: Board thí nghiệm mặt 43 Hình 4.6: Mơ hình tổng thể 44 Hình 4.7: Mơ hình nhìn từ xuống 45 Hình 4.8: Mặt trước mơ hình 45 Hình 4.9: Mặt hơng mơ hình 45 Hình 4.10: Lưu đồ hoạt động tồn hệ thống 46 Hình 4.11: Lưu đồ điều khiển nút nhấn, ma trận phím 47 Hình 4.12: Lưu đồ hiển thị 47 Hình 4.13: Trang chủ Arduino 49 Hình 4.14: Biểu tượng phần mềm Arduino 49 Hình 4.15: Giao diện phần mềm Arduino 49 ix Hình 4.16: Giao diện chức mục Tools 50 Hình 4.17: Hộp thoại Boards Manager 50 Hình 4.18: Giao diện phần mềm tiến hành chọn kit Intel Galileo Gen 51 Hình 4.19: Bộ xử lý trung tâm board thí nghiệm kết nối 51 Hình 4.20: Vị trí nút BTN_NGUON board thí nghiệm 52 Hình 4.21: Kết nối cáp Micro USB xử lý trung tâm với máy tính 52 Hình 4.22: Giao diện phầm mềm tiến hành chọn kit giao tiếp 53 Hình 4.23: Giao diện phần mềm chọn cổng COM giao tiếp 53 Hình 4.24: Báo hiệu giao tiếp thành cơng với kit góc bên phải 53 Hình 4.25: Biểu tượng cơng cụ biên dịch chương trình 53 Hình 4.26: Báo hiệu biên dịch chương trình hồn tất khơng có lỗi 54 Hình 4.27: Biểu tượng cơng cụ nạp chương trình 54 Hình 4.28: Báo hiệu nạp chương trình thành cơng 54 Hình 4.29: Board thí nghiệm sau nạp chương trình 54 Hình 5.1: Mơ hình thí nghiệm 55 Hình 5.2: Bộ xử lý trung tâm 56 x CHƯƠNG KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ Chương KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ 5.1 KẾT QUẢ 5.1.1 Kết nghiên cứu Trong trình nghiên cứu thực đề tài gần tháng, đạt kết sau:  Tìm hiểu nghiên cứu tổng quan cấu tạo, chức kit Intel Galileo Gen  Thiết kế thi cơng hồn thiện thí nghiệm, tổng hợp nhiều khối board mạch  Biết cách sử dụng phần mềm thiết kế mạch Altium Designer với phần mềm lập trình cho kit Intel Galileo Gen  Xây dựng tập thí nghiệm đơn giản hoạt động mong muốn board mạch 5.1.2 Kết thi công Qua trình thiết kế phần cứng, chọn lựa linh kiện lên ý tưởng hồn thiện mơ hình, kết mà thực được: Hình 5.1: Mơ hình thí nghiệm BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55 CHƯƠNG KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ Hình 5.2: Bộ xử lý trung tâm NHẬN XÉT – ĐÁNH GIÁ 5.2 Sau thời gian nghiên cứu, thi cơng đồ án tốt nghiệp nhóm với đề tài “Thiết kế thi cơng thí nghiệm vi xử lý giao tiếp kit Intel Galileo” hồn thiện Nhìn chung, mơ hình hoạt động ổn định, làm việc liên tục, đạt 90% yêu cầu đề ban đầu Người dùng thao tác đơn giản, dễ sử dụng Hệ thống đảm bảo an toàn cho người dùng Hệ thống sử dụng nguồn cấp nhỏ nên an toàn cho người sử dụng trước nguy điện giật Thời gian đáp ứng từ nhấn nút nhấn trực tiếp nhanh Thời gian đáp ứng nạp chương trình mạch hoạt động tùy thuộc máy tính người sử dụng Tuy nhiên, hạn chế kiến thức thời gian thực hiện, nguồn tài liệu tham khảo chủ yếu thông qua Internet số giáo trình tham khảo nên đề tài khơng tránh khỏi sai sót số hạn chế: - Hạn chế lớn chưa có nguồn điện dự trữ để cung cấp cho hệ thống hoạt động bị nguồn - Vì điều kiện kinh phí thời gian có hạn, nên nhóm thực mơ hình mang tính tương đối BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN KẾT LUẬN 6.1 Với mục tiêu đề ra, đề tài giải hoàn thành mục tiêu đặt ban đầu như: - Tìm hiểu tổng quan: cấu tạo phần cứng, chức chân dòng kit Intel Galileo mang tính ứng dụng cao - Thiết kế thi cơng thí nghiệm vi xử lý hoàn chỉnh với chức như: bàn phím, led đơn, led đoạn, LCD… ứng dụng cao hơn: giao tiếp máy tính, điều khiển động - Xây dựng tập thí nghiệm giao tiếp đơn giản với led đơn, led đoạn, nút nhấn, bàn phím ma trận, LCD, chuyển đổi ADC… - Mơ hình hệ thống dễ sử dụng, tiện lợi, đáp ứng nhu cầu cần thiết sử dụng thiết bị người dùng - Phần mềm miễn phí, có sẵn Internet 6.1.1 Ưu điểm - Phần cứng thiết kế nhỏ gọn, đơn giản, dễ sử dụng, mơ hình trang trí đẹp, trực quan - Cách thức điều khiển giao tiếp với mơ hình đơn giản với người lập trình - Chi phí hệ thống mức trung bình đáp ứng gần đầy đủ yêu cầu đặt 6.1.2 Khuyết điểm Dù chúng tơi cố gắng hồn thành đề tài cách tốt nhiên hệ thống vài khuyết điểm sau: - Các khối hiển thị chưa đạt hiệu suất hiển thị tối đa, khối led matrix 8x8 nhấp nháy liên tục khó quan sát, chưa thể kết hợp khối khác - Khối LCD 16x2 khối led đoạn hiển thị lúc hiệu suất hiển thị kém, led đoạn nhấp nháy liên tục sử dụng độc lập tương đối ổn định - Nạp chương trình vào kit Intel Galileo Gen xảy nhiều lỗi BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - Kiến thức, thời gian kinh phí hạn chế nên mơ hình khơng tối ưu 100% HƯỚNG PHÁT TRIỂN ĐỀ TÀI 6.2 Với mong muốn đưa đến cho người sử dụng thí nghiệm hồn thiện để ứng dụng thực tiễn hơn, xin đưa số ý kiến phát triển cho đề tài sau: - Ngoài phần mềm Arduino IDE sử dụng đề tài lập trình thêm phần mềm lập trình cho kit Intel Galileo Gen Linux Mac OS X - Mở rộng thêm nhiều port để tăng số thiết bị ngoại vi nhằm tăng tính ứng dụng cho thí nghiệm - Trong đề tài này, sử dụng phần mềm Arduino IDE để lập trình kit Intel Galileo Gen 2, ngồi kit mà đề tài sử dụng dùng kit Arduino UNO R3 để lập trình thay tương ứng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO [1] Nguyễn Đình Phú, “Giáo trình vi điều khiển PIC 16F887”, Xuất ĐH SPKT TP.HCM, năm 2014 [2] Phạm Văn Khích, “Thiết kế thí nghiệm PIC 18F2455/2550/5555/4550”, NCKH cấp trường, trường ĐHSPKT, TP.HCM, tháng 10 năm 2008 [3] Nguyễn Văn Bình, “Thiết kế nhà thơng minh dùng vi điều khiển PIC 16F887”, Đồ án tốt nghiệp, trường ĐHSPKT, TP.HCM, năm 2014 [4] Trần Anh Đề, Trần Sơn Lành, “Hệ thống điểm danh vân tay ứng dụng vi điều khiển ARM”, Đồ án tốt nghiệp, trường ĐHSPKT, TP.HCM, tháng năm 2016 [5] Huỳnh Công Thành, Nguyễn Trung Vinh, “Ứng dụng kit Raspberry nhận dạng mặt người”, Đồ án tốt nghiệp, trường ĐHSPKT, TP.HCM, tháng năm 2016 [6] Đỗ Tiến Anh, Lâm Thanh Sang, “Thiết kế hệ thống điều khiển giám sát thiết bị qua webserver sử dụng kit Intel Edison”, Đồ án tốt nghiệp, trường ĐHSPKT, TP.HCM, tháng 07 năm 2018 [7] Nguyễn Đình Phú, “Giáo trình thực hành vi điều khiển PIC”, Xuất ĐH SPKT TP.HCM, tháng 08 năm 2016 [8] Trần Thu Hà (chủ biên), Trương Thị Bích Ngà, Nguyễn Thị Lưỡng, Bùi Thị Tuyết Đan, Phù Thị Ngọc Hiếu, Dương Thị Cẩm Tú, “Giáo trình Điện tử bản”, NXB Đại học Quốc gia TP.HCM, 2014 [9] Lê Hiếu, “Vi điều khiển, Vi xử lý ?”, thegioiic.com/forums/vi-dieukhien-vi-xu-ly-la-gi, 19 tháng 03 năm 2012 [10] MSP430, “Giới thiệu giao thức SPI”, electronicctu.net/Thread-Chuangiao-tiep-SPI.html, 26 tháng năm 2012 [11] Ý tưởng nhanh, “Chuẩn giao tiếp 1-Wire”, ytuongnhanh.vn/chi-tiet/chuangiao-tiep-1-wire-156.html, năm 2017 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59 PHỤ LỤC PHỤ LỤC Các tập thí nghiệm giao tiếp đơn giản kết thu Bài 1: Đo hiển thị nhiệt độ bên trái hàng LCD Hàng hiển thị chữ “NHIET DO PHONG:”.Có nút nhấn với chức sau: BTN1: nhấn lần nhiệt độ hiển thị bên phải hàng LCD, nhấn lần nhiệt độ hiển thị bên trái hàng LCD lặp lại BTN2: Nhấn lần sáng led bên phải, nhấn lần sáng led bên trái, nhấn lần led sáng xen kẽ , nhấn lần led tắt lặp lại BTN3: Nhấn lần động hoạt động, nhấn lần động ngừng lặp lại BTN4: Thay đổi cấp tốc độ động (2 cấp) Code chương trình: //DIEU KHIEN LED DON int SHCP_LEDDON = 0; int STCP_LEDDON = 8; int G_3M =6; int DS_LEDDON = 1; //DIEU KHIEN NUT NHAN DON const int nutnhan4 = A3; const int nutnhan3 = A2; const int nutnhan2 = 2; const int nutnhan1 = 3; //DIEU KHIEN DONG CO int input1 = 5;//PWM int input2 = 4; int E_L298 = A1; //DIEU KHIEN LCD VA CAM BIEN NHIET DO #include #include LiquidCrystal lcd(7); int cambien = A0; void setup() { //KHOI TAO DONG CO pinMode(input1,OUTPUT); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 PHỤ LỤC pinMode(input2,OUTPUT); pinMode(E_L298,OUTPUT); digitalWrite(E_L298,LOW); digitalWrite(input1,LOW); digitalWrite(input2,LOW); digitalWrite(E_L298,HIGH); //KHOI TAO LCD VA CAM BIEN NHIET DO analogReadResolution(12); Wire.begin(); lcd.initSPI(7); pinMode(G_3M,OUTPUT); digitalWrite(G_3M,LOW); lcd.begin(16, 2); lcd.clear(); lcd.print(" NHIET DO PHONG:"); //KHOI TAO LED DON pinMode(DS_LEDDON,OUTPUT); pinMode(STCP_LEDDON,OUTPUT); pinMode(SHCP_LEDDON,OUTPUT); pinMode(G_3M,OUTPUT); digitalWrite(G_3M,LOW); xuat_8led(0x00); //KHOI TAO NUT NHAN DON pinMode(nutnhan4,INPUT); pinMode(nutnhan1,INPUT); pinMode(nutnhan2,INPUT); pinMode(nutnhan3,INPUT); digitalWrite(nutnhan4,HIGH); digitalWrite(nutnhan1,HIGH); digitalWrite(nutnhan2,HIGH); digitalWrite(nutnhan3,HIGH); delay(100);} //KIEM TRA VA CHONG DOI NUT NHAN DON int ktnutnhan(int chan){ if(!digitalRead(chan)){ delay(20); if(!digitalRead(chan)){ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 PHỤ LỤC while(!digitalRead(chan)); return 0;}} return 1;} //XUAT DU LIEU LED DON void xuat_byte( byte bytexuat) {shiftOut(DS_LEDDON, SHCP_LEDDON, MSBFIRST, bytexuat); } void xuat_8led( byte y0) { xuat_byte(y0); digitalWrite(STCP_LEDDON,LOW); digitalWrite(STCP_LEDDON,HIGH);} //XUAT DU LIEU DONG CO void dongco_quaythuan(){ digitalWrite(input1,HIGH); digitalWrite(input2,LOW);} void dongco_quaynghich(){ digitalWrite(input1,LOW); digitalWrite(input2,HIGH);} void dongco_dungquay(){ digitalWrite(input1,LOW); digitalWrite(input2,LOW);} void dongco_thaydoi_tocdo(int speed) { speed = constrain(speed, 0, 255); analogWrite(input1, speed); digitalWrite(input2, LOW);} int tt1=0,tt2=0,tt3=0,tt4=0; void loop() { //DOC GIA TRI CAM BIEN NHIET DO int giatri = analogRead(cambien); float nhietdo = giatri * ((5.0*100/4096)); //KIEM TRA TRANG THAI NUT NHAN DON int buttonStatus1 = ktnutnhan(nutnhan1); int buttonStatus2 = ktnutnhan(nutnhan2); int buttonStatus3 = ktnutnhan(nutnhan3); int buttonStatus4 = ktnutnhan(nutnhan4); //TANG CAP TOC DO DONG CO if (buttonStatus4 == LOW) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62 PHỤ LỤC tt4=tt4+30; if(tt4>50){tt4=0;}} //TAT/MO DONG CO if (buttonStatus3 == LOW) {tt3=tt3+1;if(tt3>1) {tt3=0;}} if(tt3==0){dongco_dungquay();tt4=0;} if(tt3==1){dongco_thaydoi_tocdo(20+tt4);} //HIEN THI LED if (buttonStatus2 == LOW) { tt2=tt2+1; if(tt2>3) {tt2=0;}} if(tt2==0){xuat_8led(0x00);} if(tt2==1){xuat_8led(0x0f);} if(tt2==2){xuat_8led(0xf0);} if(tt2==3){xuat_8led(0xaa);} //HIEN THI NHIET DO RA LCD if (buttonStatus1 == LOW) { tt1=tt1+1; if(tt1>1) {tt1=0;}} if(tt1==0){ lcd.setCursor(0, 1); lcd.print(nhietdo,2); lcd.write(223); lcd.print("C"); lcd.setCursor(7, 1); lcd.print(" "); } else { lcd.setCursor(8, 1); lcd.print(nhietdo,2); lcd.write(223); lcd.print("C"); lcd.setCursor(0, 1); lcd.print(" "); }} BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63 PHỤ LỤC Quan sát kết thí nghiệm: Kết thu thí nghiệm nhấn BTN1 lần hình Kết thu thí nghiệm nhấn BTN1 lần hình Kết thu thí nghiệm nhấn BTN2 lần hình BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64 PHỤ LỤC Kết thu thí nghiệm nhấn BTN2 lần hình Kết thu thí nghiệm nhấn BTN2 lần hình Bài 2: Đồng hồ thời gian thực hiển thị led đoạn Code chương trình: #include const int DS_7DOAN = 10; const int STCP_7DOAN = 9; const int SHCP_7DOAN = 12; const int G_3M = 6; int ma7doan[10]= {0XC0,0XF9,0xA4,0XB0,0X99,0X92,0X82,0XF8, 0X80,0X90}; int thutuled[6]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf}; int led7[6]={0xff,0xff,0xff,0xff,0xff,0xff}; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65 PHỤ LỤC // int giay, phut, gio, thu, ngay, thang, nam; int bcd2dec(byte num) { return ((num/16 * 10) + (num % 16)); } int dec2bcd(byte num) { return ((num/10 * 16) + (num % 10)); } void nap_thoi_gian_ds1307(byte hr,byte min,byte sec,byte wd,byte d,byte mth,byte yr){ Wire.beginTransmission(0x68); Wire.write(byte(0x00)); // đặt lại pointer Wire.write(dec2bcd(sec)); Wire.write(dec2bcd(min)); Wire.write(dec2bcd(hr)); Wire.write(dec2bcd(wd)); // day of week: Sunday = 1, Saturday = Wire.write(dec2bcd(d)); Wire.write(dec2bcd(mth)); Wire.write(dec2bcd(yr)); Wire.endTransmission(); } void doc_thoi_gian_ds1307() { Wire.beginTransmission(0x68); Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(0x68, 7); giay = bcd2dec(Wire.read() & 0x7f); phut = bcd2dec(Wire.read() ); gio = bcd2dec(Wire.read() & 0x3f); // chế độ 24h thu = bcd2dec(Wire.read() ); = bcd2dec(Wire.read() ); thang = bcd2dec(Wire.read() ); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66 PHỤ LỤC nam = bcd2dec(Wire.read() ); nam += 2000;} // void setup() { Wire.begin(); pinMode(DS_7DOAN,OUTPUT); pinMode(STCP_7DOAN,OUTPUT); pinMode(SHCP_7DOAN,OUTPUT); pinMode(G_3M,OUTPUT); digitalWrite(G_3M, LOW); delay(100); //nap_thoi_gian_ds1307(16,21,00,3,18,12,18); } void xuat_1byte(unsigned int bytexuat) { shiftOut(DS_7DOAN, SHCP_7DOAN, MSBFIRST, bytexuat); } void xuat_led_7doan_quet_1( int y1,int y0) { xuat_1byte(y1); xuat_1byte(y0); digitalWrite(STCP_7DOAN,LOW); digitalWrite(STCP_7DOAN,HIGH); } void xuat_led_7doan_quet_tat() { xuat_led_7doan_quet_1( 0xff,0xff); } void xuat_led_7doan_quet_2( int y1,int y0) { xuat_1byte(thutuled[y1]); xuat_1byte(y0); digitalWrite(STCP_7DOAN,LOW); digitalWrite(STCP_7DOAN,HIGH); } void xuat_led_quet_tatca(){ for(int i =0;i

Ngày đăng: 25/06/2020, 23:36

Từ khóa liên quan

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

Tài liệu liên quan