1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu và thi công bộ kit thí nghiệm vi điều khiển

123 10 0

Đ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

Thông tin cơ bản

Tiêu đề Nghiên Cứu Và Thi Công Bộ Kit Thí Nghiệm Vi Điều Khiển
Tác giả Nguyễn Duy Khánh, Lê Văn Mạnh
Người hướng dẫn ThS. Nguyễn Văn Hiệp
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Điện Tử - Viễn Thông
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 123
Dung lượng 9,1 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (15)
    • 1.1. GIỚI THIỆU (15)
    • 1.2. TÍNH CẤP THIẾT CỦA ĐỀ TÀI (15)
    • 1.3. MỤC TIÊU NGHIÊN CỨU (16)
    • 1.4. NGHIỆM VỤ NGHIÊN CỨU (16)
    • 1.5. GIỚI HẠN ĐỀ TÀI (17)
    • 1.6. PHƯƠNG PHÁP NGHIÊN CỨU (17)
    • 1.7. ĐỐI TƯỢNG NGHIÊN CỨU (17)
    • 1.8. BỐ CỤC QUYỂN BÁO CÁO (17)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (19)
    • 2.1. CÁC BỘ KIT VI ĐIỀU KHIỂN (19)
    • 2.2. GIỚI THIỆU VỀ PHẦN CỨNG (22)
      • 2.2.1. Vi điều khiển PIC18F6722 (22)
      • 2.2.2. Nút nhấn đơn (23)
      • 2.2.3. Led đơn (23)
      • 2.2.4. Led 7 đoạn (24)
      • 2.2.5. Led 7 đoạn quét (24)
      • 2.2.6. Khối led ma trận (24)
      • 2.2.7. Khối LCD 16x2: [8] (24)
      • 2.2.8. Màn hình OLED (25)
      • 2.2.9. Động cơ DC (25)
      • 2.2.10. Động cơ bước (26)
      • 2.2.11. Cảm biến nhiệt độ LM35 (26)
      • 2.2.12. Cảm biến nhiệt độ DS18B20 (26)
      • 2.2.13. Khối chuông cảnh báo (27)
      • 2.2.14. Cảm thời gian thực RTC DS1307: [8] (0)
      • 2.2.15. Khối cảm biến siêu âm SRF05 (27)
      • 2.2.16. Cảm biến H42B6 (28)
  • CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG KIT THÍ NGHIỆM (18)
    • 3.1. GIỚI THIỆU (29)
      • 3.1.1. Yêu cầu của hệ thống (29)
      • 3.1.2. Sơ đồ khối và chức năng mỗi khối (30)
      • 3.1.3. Sơ đồ nguyên lý toàn mạch (31)
    • 3.2. THIẾT KẾ HỆ THỐNG PHẦN CỨNG (33)
      • 3.2.1. Khối xử lý trung tâm (33)
      • 3.2.2. Khối nút nhấn đơn (33)
      • 3.2.3. Khối ma trận phím (0)
      • 3.2.4. Khối led đơn (35)
      • 3.2.5. Khối LED 7 đoạn (36)
      • 3.2.6. Khối LED 7 đoạn quét (37)
      • 3.2.7. Khối hiển thị LCD (39)
      • 3.2.8. Khối hiển thị OLED (39)
      • 3.2.9. Khối cảm biến nhiệt độ DS18B20 (40)
      • 3.2.10. Khối cảm biến nhiệt độ LM35 (40)
      • 3.2.11. Khối thời gian thực RTC DS1307 (0)
      • 3.2.12. Khối cảm biến siêu âm SRF05 (41)
      • 3.2.13. Khối chuông cảnh báo (42)
      • 3.2.14. Khối động cơ DC (43)
      • 3.2.15. Khối động cơ DC bước (43)
      • 3.2.16. Khối LED MATRIX (44)
      • 3.2.17. Khối cảm biến khe (44)
      • 3.2.18. Khối nguồn (45)
  • CHƯƠNG 4: THI CÔNG HỆ THỐNG KIT THÍ NGHIỆM VI ĐIỀU KHIỂN (18)
    • 4.1. GIỚI THIỆU (49)
    • 4.2. THI CÔNG HỆ THỐNG (49)
      • 4.2.1. Mạch in PCB (49)
      • 4.2.2. Thi công bo mạch (50)
      • 4.2.3. Lắp ráp và kiểm tra (50)
    • 4.3. THI CÔNG MÔ HÌNH HỆ THỐNG (51)
  • CHƯƠNG 5: KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ (52)
    • 5.1. GIỚI THIỆU (52)
    • 5.2. KẾT QUẢ MÔ HÌNH PHẦN CỨNG HỆ THỐNG (52)
    • 5.3. TÀI LIỆU HƯỚNG DẪN SỬ DỤNG BÔ KIT (54)
      • 5.3.1. Hướng dẫn kết nối (54)
        • 5.3.1.1. Hướng dẫn dùng phần mềm lập trình (0)
        • 5.3.1.2. Khởi tạo chương trình biên soạn (55)
        • 5.3.1.3. Hướng dẫn nạp chương trình vào Kit (57)
      • 5.3.2. Kết quả chạy thử chương trình (58)
    • 5.4. NHẬN XÉT MÔ HÌNH (61)
    • 5.5. ĐÁNH GIÁ MÔ HÌNH (61)
    • 5.6. CHI PHÍ CHO ĐỀ TÀI (62)
    • 5.7. HƯỚNG DẪN SỬ DỤNG CÁC MODULE (63)
      • 5.7.1. Các thư viện hỗ trợ [11] (63)
      • 5.7.2. Module LED đơn (90)
      • 5.7.3. Module LED 7 đoạn (92)
      • 5.7.4. Module LED 7 đoạn quét (94)
      • 5.7.5. Module LED MATRIX (95)
      • 5.7.6. Module LCD, OLED (98)
      • 5.7.7. Module cảm biến LM35 và chuông cảnh báo (102)
      • 5.7.8. Module thời gian thực DS1307 (0)
      • 5.7.9. Module thời cảm biến nhiệt độ DS18B20 (110)
      • 5.7.10. Cảm biến siêu âm (112)
      • 5.7.11. Cảm biến khe (115)
      • 5.7.12. Module động cơ DC, động cơ bước (116)
  • CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (121)
    • 6.1. KẾT LUẬN (121)
    • 6.2. HƯỚNG PHÁT TRIỂN (121)
  • TÀI LIỆU THAM KHẢO (122)

Nội dung

TỔNG QUAN

GIỚI THIỆU

Ngày nay, ngành kỹ thuật điện tử đóng vai trò thiết yếu trong cuộc sống con người, với sự phát triển đa dạng của các hệ thống điện tử Những hệ thống này ngày càng thay thế nhiều công việc hàng ngày, từ những nhiệm vụ đơn giản đến những công việc phức tạp.

Sự gia tăng đáng kể của các module cảm biến đang đặt ra thách thức cho lĩnh vực nông nghiệp Việt Nam trong việc nâng cao chất lượng sản phẩm và thúc đẩy quá trình tự động hóa, hiện đại hóa.

Lập trình hệ thống nhúng, IoT và tự động hóa đang ngày càng trở nên quan trọng trong các lĩnh vực công nghệ hiện đại Những ngành nghề này đều dựa trên nền tảng lập trình vi điều khiển, vì vậy việc nắm vững kỹ năng lập trình trên vi điều khiển là rất cần thiết Điều này không chỉ giúp phát triển kiến thức mà còn tạo điều kiện thuận lợi để dễ dàng thích ứng với các vi điều khiển mới mà không gặp khó khăn.

TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Kit thí nghiệm vi điều khiển đa dạng về loại và phiên bản, phù hợp với nhiều nền tảng như 8051, Arduino, Raspberry Pi, PIC, STM32 và nhiều nền tảng khác Mỗi bộ kit có những đặc điểm riêng, nhưng nhìn chung được phân loại thành các mô hình khác nhau.

Bộ Kit thí nghiệm dùng Testboard kết nối [1] của tác giả Phạm Quang Trí

Bộ kit thí nghiệm này được thiết kế đơn giản với ít module kết nối và các kết nối sẵn có, cho phép mở rộng chức năng dễ dàng bằng cách cắm thêm thiết bị ngoại vi vào testboard qua dây bus Mặc dù kit có khả năng mở rộng, việc thực hiện không cần thiết phải làm ngay lập tức Tuy nhiên, nhược điểm là quá trình kết nối tốn thời gian và yêu cầu người dùng có kiến thức kỹ thuật cùng kỹ năng lắp ráp để kết nối các linh kiện chính xác.

Bộ kit thí nghiệm sử dụng dây bus kết nối được trang bị nhiều module sẵn có và một mạch nạp riêng, cho phép người dùng dễ dàng thay thế module hỏng bằng cách tháo socket Việc nối dây được thực hiện trực tiếp trên board với các linh kiện cơ bản đã có sẵn Tuy nhiên, nhược điểm của bộ kit này là phức tạp hơn trong kết nối, vì việc sử dụng dây bus yêu cầu quá trình kết nối và cài đặt phức tạp hơn so với test board, và cần phải kết nối dây bus một cách chính xác để đảm bảo hoạt động đúng.

Bộ kit thí nghiệm được trang bị nhiều module và IC giải mã, nhưng việc lựa chọn và cấu hình các module trở nên phức tạp Sự phong phú về cảm biến trong bộ kit có thể khiến sinh viên gặp khó khăn trong việc thực hiện thí nghiệm hoặc đồ án, dẫn đến việc không khai thác hết tiềm năng của bộ kit.

Nhằm đáp ứng nhu cầu của sinh viên, đặc biệt là sinh viên khoa Điện - Điện tử trong môn Vi xử lý và sinh viên ngoài ngành Điện tử - Viễn thông, cần cải thiện chương trình học với nhiều thiết bị thực hành hơn Việc này sẽ giúp sinh viên dễ dàng hiểu và làm quen với phần cứng kết nối, khắc phục những khó khăn hiện tại trong quá trình học tập.

Nhóm em chọn đề tài “Nghiên cứu và thi công bộ Kit thí nghiệm vi điều khiển” nhằm giúp sinh viên tiếp cận phần cứng một cách dễ dàng Kit này cho phép tìm hiểu cách vi điều khiển giao tiếp trực tiếp với các IC và module cảm biến, mang lại trải nghiệm học tập trực quan và dễ hiểu Việc này sẽ tạo nền tảng vững chắc cho sinh viên trong việc lập trình các vi điều khiển khác sau này.

MỤC TIÊU NGHIÊN CỨU

Hệ thống thiết kế và thi công sử dụng vi điều khiển PIC làm khối xử lý trung tâm, cho phép giao tiếp trực tiếp với các module và cảm biến khác mà không cần nhiều IC chốt dịch Điều này tạo điều kiện cho sinh viên thực tập nắm vững lý thuyết và áp dụng vào thực tế một cách hiệu quả.

NGHIỆM VỤ NGHIÊN CỨU

Đề tài được thực hiện gồm có những nội dung chính sau:

- Nội dung 1: Tìm hiểu và nghiên cứu các tài liệu liên quan để thu thập thông tin và tóm tắt các hướng đề tài

- Nội dung 2: Thiết kế sơ đồ khối và sơ đồ nguyên lý cho hệ thống

- Nội dung 3: Thực hiện tính toán, thiết kế và kết nối vi điều khiển trung tâm với các module cảm biến và các khối hiển thị

- Nội dung 4: Mô phỏng, kiểm tra, đánh giá và hiệu chỉnh hệ thống để đảm bảo hoạt động ổn định và chính xác

- Nội dung 5: Thiết kế và vẽ mạch PCB, sắp xếp các linh kiện trên mạch

- Nội dung 6: Tiến hành in mạch, hàn linh kiện, chạy thử, kiểm tra và chỉnh sửa mạch

Báo cáo cần bao gồm mô tả chi tiết về hệ thống, các bước thiết kế và thực hiện, kết quả đạt được, nhận xét về quá trình thực hiện, cùng với tài liệu hướng dẫn sử dụng để người đọc có thể hiểu rõ hơn về dự án.

- Nội dung 8: Bảo vệ luận văn.

GIỚI HẠN ĐỀ TÀI

- Chỉ làm một số module cơ bản đã học trong môn lý thuyết “Vi xử lý” như LM35, DS18B20, LCD, LED 7 đoạn

Khi nạp mã vào vi điều khiển để điều khiển việc truyền và nhận tín hiệu từ nhiều cảm biến, có thể xảy ra tình trạng nhiễu Điều này dẫn đến việc các khối hoạt động không hoàn toàn trơn tru và đôi khi vẫn chạy chương trình cũ.

Thiết kế đóng hộp hiện tại chưa sử dụng vật liệu chất lượng cao, dẫn đến việc giảm độ chắc chắn và thẩm mỹ Ngoài ra, vị trí của một số cảm biến chưa được tối ưu, và phần gia nhiệt cho cảm biến nhiệt độ vẫn chưa được thiết kế hợp lý.

- Chưa có phần cầu chì để ngắt dòng điện nếu có sự cố xảy ra.

PHƯƠNG PHÁP NGHIÊN CỨU

Để xây dựng mô hình hiệu quả, trước tiên cần nắm vững cách hoạt động của các cảm biến Sau đó, tiến hành tính toán, thiết kế và thực hiện mô hình với khối trung tâm kết nối các module và cảm biến hiện có trên thị trường Việc tính toán các thông số của cảm biến và thực hiện mô phỏng thử là cần thiết để đảm bảo độ chính xác của mô hình.

Tiến hành thiết kế và sắp xếp linh kiện, vẽ mạch PCB toàn hệ thống cùng mạch mở rộng chân cho PIC Sau đó, in mạch, hàn linh kiện và đóng gói mô hình Đồng thời, cần soạn thảo tài liệu hướng dẫn sử dụng chi tiết để người dùng dễ dàng tham khảo.

Cuối cùng, tiến hành chạy thử mô hình và ghi nhận kết quả để đánh giá hiệu suất Qua quá trình này, có thể đưa ra nhận xét và cải thiện mô hình nhằm tối ưu hóa nó, đáp ứng tốt hơn các yêu cầu và mục tiêu đã đề ra.

ĐỐI TƯỢNG NGHIÊN CỨU

Đối tượng nghiên cứu là vi điều khiển PIC18F6722, cùng với phương pháp kết nối vi điều khiển này với các module cảm biến, thiết bị ngoại vi và các khối hiển thị cơ bản như LED 7 đoạn và LCD.

Phạm vi nguyên cứu: mô hình thiết kế nhỏ gọn, hạn chế về số cảm biến được dùng trong thiết kế.

BỐ CỤC QUYỂN BÁO CÁO

Nội dung của đề tài được trình bày trong 9 chương như sau:

Trình bày tình hình nghiên cứu, sự cấp thiết của đề tài, mục tiêu, nội dung nghiên cứu, giới hạn và bố cục của đề tài

Chương 2: Cơ sở lý thuyết

Giới thiệu ngắn gọn về vi điều khiển, các Kit thí nghiệm vi điều khiển và các module cảm biến cần thiết cho đề tài

Chương 3: Tính toán và thiết kế

Dựa trên lý thuyết từ Chương 2, bài viết trình bày sơ đồ khối và thiết kế nguyên lý toàn mạch, đồng thời thiết kế từng khối để hoàn thiện hệ thống.

Chương 4: Thi công hệ thống

Quá trình thi công phần cứng bao gồm các bước quan trọng như hàn linh kiện và hoàn thiện mô hình Để đạt được sản phẩm hoàn chỉnh, cần thực hiện từng bước một cách cẩn thận, từ việc chuẩn bị linh kiện đến kiểm tra chất lượng sau khi hàn Sự chú ý đến chi tiết trong từng giai đoạn sẽ đảm bảo rằng sản phẩm cuối cùng đạt tiêu chuẩn và hoạt động hiệu quả.

Chương 5: Kết quả, nhận xét và đánh giá

Trình bày chương trình mẫu, hình ảnh khi chạy thử chương trình và đưa ra ý kiến, đánh giá chung về mô hình đã thi công

Chương 6: Kết luận và hướng phát triển Đưa ra kết luận sau thời gian thử nghiệm và hướng phát triển của đề tài.

CƠ SỞ LÝ THUYẾT

CÁC BỘ KIT VI ĐIỀU KHIỂN

2.1.1 Kit thí nghiệm vi điều khiển 8051

Bộ kit thí nghiệm này có thiết kế nhỏ gọn và đơn giản, với ít module kết nối và các kết nối sẵn có Nó cho phép người dùng dễ dàng mở rộng chức năng bằng cách cắm thêm thiết bị ngoại vi vào testboard Với giá thành hợp lý và khả năng thay thế dễ dàng, bộ kit này là lựa chọn lý tưởng cho những người mới bắt đầu muốn học về phần cứng và thực hiện các kết nối.

Hình 2 1 Kit thí nghiệm 8051 dùng Testboard kết nối

Bộ Kit vi điều khiển 8051 mang lại nhiều lợi ích cho người học, bao gồm môi trường lý tưởng để thực hành và phát triển ứng dụng điện tử Với các linh kiện ngoại vi cơ bản như đèn LED, nút nhấn, bộ chuyển đổi ADC và DAC, người dùng có thể mở rộng khả năng của bộ Kit để xây dựng các dự án phức tạp hơn Việc sử dụng dây bus cho phép tùy chỉnh kết nối linh hoạt giữa các linh kiện trên test board, khuyến khích sự sáng tạo và khả năng kết nối thêm các cảm biến khác, từ đó phát triển nhiều ý tưởng độc đáo.

Sử dụng dây bus và test board rời có nhược điểm như phức tạp và tốn thời gian lắp ráp, đòi hỏi người dùng có kiến thức kỹ thuật để kết nối linh kiện chính xác Quá trình này có thể khó khăn hơn so với kit gắn sẵn Ngoài ra, việc sử dụng các thiết bị này yêu cầu không gian và tài nguyên vật lý, làm cho kit thí nghiệm trở nên cồng kềnh và khó di chuyển, đồng thời cần nguồn cung cấp điện và giao diện phù hợp Cuối cùng, rủi ro kết nối không chính xác có thể xảy ra, dẫn đến sai sót trong thử nghiệm, vì vậy người dùng cần kiểm tra kỹ lưỡng để đảm bảo tính chính xác và đáng tin cậy của kit thí nghiệm.

2.1.2 Kit thí nghiệm vi điều khiển PIC16F887 Đây là một bộ kit thí nghiệm này được trang bị nhiều module sẵn có Nếu có module hỏng, người dùng có thể dễ dàng thay thế bằng cách ra và gắn linh kiện khác vào Việc nối dây được thực hiện trực tiếp trên board và các linh kiện cơ bản đã có sẵn [2]

Hình 2 2 Kit thí nghiệm vi điều khiển PIC dùng dây bus

Dây bus mang lại nhiều ưu điểm nổi bật, bao gồm tính linh hoạt và khả năng mở rộng trong việc kết nối linh kiện và cảm biến Việc thêm hoặc thay đổi các module trở nên dễ dàng hơn khi chỉ cần kết nối chúng qua dây bus Hơn nữa, dây bus còn giúp tăng khả năng tái sử dụng linh kiện và module, cho phép sử dụng chung cho nhiều dự án khác nhau, từ đó tiết kiệm thời gian và chi phí.

Sử dụng dây bus để kết nối có một số nhược điểm đáng chú ý Đầu tiên, quy trình kết nối và cài đặt trở nên phức tạp hơn so với việc sử dụng test board, vì bạn cần phải kết nối chính xác từng chân của linh kiện và cảm biến Thứ hai, việc kết nối trực tiếp các module trên Kit có thể dẫn đến tình trạng che khuất linh kiện, ảnh hưởng đến khả năng đọc dữ liệu Cuối cùng, sau một thời gian sử dụng, mối hàn giữa các chân có thể bị lỏng, gây khó khăn trong việc phát hiện và sửa lỗi trong quá trình thực hành.

2.1.3 Kit thí nghiệm vi điều khiển PIC18F5440

Bộ kit thí nghiệm này tích hợp nhiều module cùng với các kết nối đã được cài đặt sẵn, giúp loại bỏ nhu cầu sử dụng dây bus Kết nối giữa các module được thực hiện thông qua các IC giải mã và điều khiển, mang lại sự tiện lợi cho người dùng.

Hình 2 3 Kit thực tập vi điều khiển PIC18F4550

Mạch in PCB mang lại nhiều ưu điểm nổi bật, bao gồm độ tin cậy cao nhờ vào việc cố định các kết nối, giúp tránh các vấn đề về kết nối không chắc chắn Thiết kế mạch in PCB cũng tối ưu hóa không gian, cho phép sắp xếp các module một cách chặt chẽ, giảm thiểu diện tích và tạo ra hệ thống gọn gàng Hơn nữa, mạch in PCB hỗ trợ tích hợp nhiều linh kiện và chức năng khác nhau, mang lại sự linh hoạt và khả năng mở rộng cho hệ thống, với cấu trúc dễ quản lý và thuận tiện.

Nhược điểm của việc sử dụng mạch in PCB cố định bao gồm khó khăn trong việc thay đổi và cấu hình, khi các module và chân vi điều khiển đã được liên kết sẵn, điều này có thể dẫn đến việc phải thiết kế lại PCB nếu cần thay đổi chức năng Hơn nữa, việc thiết kế PCB cho các module cụ thể có thể giới hạn khả năng mở rộng và tích hợp linh kiện mới Sự phức tạp trong việc lựa chọn và cấu hình các module và cảm biến trong bộ kit có thể khiến sinh viên gặp khó khăn trong việc thực hiện thí nghiệm, dẫn đến việc không khai thác hết tiềm năng của kit Sự đa dạng cảm biến cũng có thể tạo ra sự trùng lặp thông tin, gây khó khăn trong việc hiểu rõ một vấn đề cụ thể Cuối cùng, nguyên lý điều khiển tương tự giữa các module như LCD và GLCD có thể làm cho sinh viên cảm thấy nhàm chán, vì họ chỉ lặp lại những gì đã biết mà không học thêm kiến thức mới.

TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG KIT THÍ NGHIỆM

GIỚI THIỆU

Để hệ thống hoạt động hiệu quả, cần tính toán và lựa chọn linh kiện hợp lý, đồng thời thiết kế sơ đồ khối và sơ đồ nguyên lý một cách chính xác.

Mô hình được thiết kế với các động cơ và thiết bị đầu ra nhỏ gọn, nhưng vẫn đảm bảo đáp ứng các yêu cầu thực tế một cách hiệu quả.

Nội dung thiết kế được trình bày bao gồm:

- Thiết kế sơ đồ khối hệ thống

- Sơ đồ nguyên lý toàn mạch

- Tính toán và thiết kế từng khối

3.1.1 Yêu cầu của hệ thống:

Qua việc nghiên cứu và phân tích các bộ kit thí nghiệm hiện có trên thị trường, chúng ta có thể xác định ưu điểm và khuyết điểm của từng loại Từ đó, việc lựa chọn bộ kit phù hợp nhất cho từng đối tượng sẽ trở nên dễ dàng hơn.

Yêu cầu chung của đề tài là thiết kế bộ Kit giúp sinh viên có khả năng áp dụng kiến thức vi điều khiển đã học, từ lý thuyết đến thực hành, và tạo cơ hội cho sinh viên tiến hành nghiên cứu độc lập.

Bộ Kit cần được thiết kế đơn giản, nhẹ và dễ sửa chữa, giúp sinh viên dễ dàng tiếp cận Việc hạn chế số lượng tầng lớp IC kết nối và không sử dụng dây bus sẽ giảm nguy cơ hư hỏng, tạo cảm giác gần gũi hơn cho người dùng.

Mạch sau khi thi công có các chức năng sau:

- Nhận được tín hiệu từ phím đơn và phím ma trận Điều khiển được các module:

- LED đơn, LED 7 đoạn, LED 7 đoạn quét, LED Matrix

- Module cảm biến nhiệt độ LM35, DS18B20, module thời gian thực DS1307, cảm biến siêu âm SRF05, cảm biến khe

- Động cơ DC, Động cơ bước

- Hiển thị được nội dung lên LCD, OLED

3.1.2 Sơ đồ khối và chức năng mỗi khối:

Sơ đồ khối hệ thống:

Hình 3 1 Sơ đồ khối của hệ thống

Khối xử lý trung tâm đóng vai trò quan trọng trong việc đọc dữ liệu từ các cảm biến và nút nhấn Nó cũng chịu trách nhiệm hiển thị thông tin lên các module LED hoặc màn hình LCD, OLED tùy theo nhu cầu của người dùng.

- Khối nguồn: Cung cấp nguồn cho toàn bộ hệ thống

- Khối nút nhấn: Khi được nhấn gửi dữ liệu về khối xử lý trung tâm để xử lý tín hiệu từ nút nhấn đơn và bàn phím ma trận

- Khối cảm biến nhiệt độ LM35, DS18B20: Đọc dữ liệu từ cảm biến đo nhiệt độ gửi về khối xử lý trung tâm xử lý

- Khối thời gian thực: Cập nhật thời gian hiện tại, gửi đến khối xử lý trung tâm để hiển thị

- Khối cảm biến siêu âm SRF05: Đọc dữ liệu từ cảm biến đo khoảng cách gửi về khối xử lý trung tâm để xử lý

- Khối động cơ DC, động cơ bước: Nhận dữ liệu từ khối xử lý trung tâm để hiển điều chỉnh tốc độ động cơ

- Khối cảm biến khe: Đọc giá trị từ cảm biến khe, gửi về khối xử lý trung tâm để xử lý đếm xung

- Khối LED đơn: Nhận tín hiệu từ khối xử lý trung tâm để bật/tắt hoặc điều chỉnh trạng thái của LED

- Khối LED 7 đoạn: Nhận dữ liệu từ khối xử lý trung tâm để điều khiển hiển thị các ký tự trên LED 7 đoạn

- Khối LED quét: Nhận tín hiệu từ khối xử lý trung tâm để điều khiển và đồng bộ việc quét các LED

- Khối LED MATRIX: Nhận dữ liệu từ khối xử lý trung tâm để điều khiển hiển thị trên ma trận LED

- Khối hiển thị LCD, OLED: Nhận dữ liệu từ khối xử lý trung tâm để điều khiển và hiển thị thông tin trên màn hình LCD, OLED

3.1.3 Sơ đồ nguyên lý toàn mạch:

Hình 3 2 Sơ đồ nguyên lý toàn mạch

THI CÔNG HỆ THỐNG KIT THÍ NGHIỆM VI ĐIỀU KHIỂN

GIỚI THIỆU

Trong chương này, nhóm đã triển khai mạch theo quy trình chi tiết đã xác định, bao gồm thiết kế layout, hàn linh kiện, lắp ráp và xây dựng mô hình Sau khi kiểm tra mạch, nhóm viết chương trình điều khiển và thiết kế chương trình mẫu cho phần cứng Cuối cùng, nhóm nạp chương trình vào hệ thống, kiểm tra tính ổn định và thực hiện các điều chỉnh cần thiết.

THI CÔNG HỆ THỐNG

Nhóm sử dụng phần mềm Eagle, một công cụ thiết kế mạch in PCB mạnh mẽ và đáng tin cậy được phát triển bởi Autodesk Eagle cung cấp giao diện dễ sử dụng cùng với nhiều tính năng đa dạng, giúp người dùng vẽ mạch nguyên lý và tạo ra các mô hình PCB chất lượng cao.

Do chân của vi điều khiển PIC18F6722 quá nhỏ, việc hàn trở nên khó khăn Vì vậy, nhóm đã quyết định thiết kế một mạch in mở rộng để kết nối với tất cả các module.

Dựa trên sơ đồ nguyên lý, nhóm sẽ thiết kế hai bảng mạch: bảng mạch chính của hệ thống như hình 4.1 và mạch mở rộng chân cho PIC như hình 4.2.

Hình 4 1 Hình ảnh 3D toàn mạch

Hình 4 2 Mạch mở rộng chân cho PIC18F6722

Kết quả sau khi gửi bản thiết kế cho nhà máy sản xuất in mạch như sau:

Hình 4 3 Hình ảnh sau khi thi công toàn mạch

Hình 4 4 Hình ảnh sau khi thi công mạch mở rộng chân cho PIC

4.2.3 Lắp ráp và kiểm tra:

Quá trình lắp ráp và kiểm tra mạch bao gồm các bước sau:

− Bước 1: Xác định vị trí từng module và hàn lên mạch in

Bước 2: Hàn PIC vào mạch mở rộng chân và kết nối tất cả các module, IC lên board mạch chính Sau đó, tiến hành hàn hai mạch này lại với nhau theo vị trí hình 4.6.

− Bước 3: Kiểm tra mối hàn và sửa nếu có lỗi

Kết quả thu được như hình sau:

Hình 4 5 Hình ảnh KIT thí nghiệm sau khi hàn linh kiện

THI CÔNG MÔ HÌNH HỆ THỐNG

Sau khi hàn các linh kiện và kiểm tra mạch, nhóm tiến hành thi công mô hình bên ngoài cho hệ thống Mô hình sẽ được thiết kế dưới dạng hình hộp, với board mạch chính gắn phía trước, cùng vị trí cho mạch nạp PICKIT2 và Adapter nguồn Vật liệu sử dụng là bìa fomex, với các thông số kích thước được chỉ rõ trong hình 4.8.

Hình 4 6 Bìa fomex Hình 4 7 Thiết kế mô hình bên ngoài cho hệ thống

KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ

GIỚI THIỆU

Trong chương này, nhóm sẽ trình bày kết quả nghiên cứu và thi công Kit thí nghiệm vi điều khiển, bao gồm các chi tiết về mô hình đã thực hiện, quy trình thi công và kiểm tra Đồng thời, nhóm cũng sẽ tiến hành phân tích và đánh giá các kết quả đạt được.

KẾT QUẢ MÔ HÌNH PHẦN CỨNG HỆ THỐNG

Hình ảnh mô hình hoàn thiện cho thấy phần mặt trước với board mạch được gắn chắc chắn vào hộp bìa fomex nhờ các dụng cụ như keo và ốc vít.

Hình 5 1 Mặt trước mô hình

Mô hình bao gồm hai khối động cơ DC và động cơ bước được hàn ở phía sau board mạch chính nhằm tiết kiệm diện tích Mạch nạp PICKIT2 được dán cố định bằng băng keo đen ở bên trái, trong khi bên phải là vị trí đặt Adapter để cung cấp nguồn cho toàn bộ hệ thống Tất cả các thành phần được bố trí như hình 5.2 và 5.3 dưới đây.

Mô hình được thiết kế với hai khe ở bên trái, trong đó khe trên phục vụ kết nối mạch nạp PICKIT2 với hệ thống, và khe dưới là vị trí để cắm dây nạp vào máy tính nhằm tải code cho vi điều khiển, như minh họa trong hình 5.3.

Hình 5 3 Bên trái mô hình

Vì chỉ có khối động cơ DC và động cơ bước sử dụng nguồn 12V, trong khi các khối khác sử dụng nguồn 5V, nhóm đã khoét 2 khe bên phải mô hình để đặt Adapter Khe đầu tiên dành cho đầu ra của Adapter kết nối với mạch nguồn hạ áp, trong khi khe còn lại cho phích cắm của Adapter kết nối với ổ điện nguồn 220V bên ngoài Chi tiết bố trí được thể hiện trong hình 5.4.

Hình 5 4 Bên phải mô hình

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG BÔ KIT

Trong tài liệu này, chúng tôi sẽ cung cấp hướng dẫn sử dụng cho hệ thống Kit thí nghiệm vi điều khiển Mục tiêu của tài liệu là giúp người dùng hiểu rõ các chức năng và ứng dụng của hệ thống thông qua các hướng dẫn chi tiết và bài tập mẫu.

Các bài tập mẫu được thiết kế để phù hợp với các khối chức năng của hệ thống Kit, bao gồm nút nhấn, ma trận phím, đèn LED đơn, đèn LED 7 đoạn, hiển thị LCD, màn hình OLED, cảm biến nhiệt độ, thời gian thực RTC, cảm biến siêu âm, chuông cảnh báo, động cơ DC và động cơ bước.

Mỗi bài viết sẽ cung cấp mô tả chi tiết về yêu cầu, sơ đồ kết nối và mã nguồn lập trình đi kèm Người dùng sẽ được hướng dẫn thực hiện từng bước để hoàn thành các bài tập và trải nghiệm các tính năng của hệ thống.

Nhóm mong muốn rằng tài liệu hướng dẫn sử dụng này sẽ trang bị cho người dùng kiến thức vững chắc về vi điều khiển và ứng dụng thực tiễn của chúng Bên cạnh đó, tài liệu cũng mở ra những cơ hội phát triển tiềm năng nhằm nâng cao và mở rộng chức năng của hệ thống Kit thí nghiệm vi điều khiển.

Bước 1: Cấp nguồn cho bộ Kit, sử dụng Adapter 12V – 5A để cấp Lúc này các module sẽ hoạt động

Bước 2: Cắm jack của mạch nạp PICKIT2 ở phía bên trái mô hình với máy tính để có thể nạp code xuống vi điều khiển

5.3.1.1 Hướng dẫn dùng phần mềm lập trình:

Sau khi hoàn thành hai bước trước, để lập trình điều khiển cho vi xử lý, có nhiều phần mềm khác nhau có thể sử dụng Trong đề tài này, nhóm đã chọn phần mềm CCS.

Nếu máy tính của bạn chưa cài đặt CCS, hãy tiến hành cài đặt chương trình CCS theo hướng dẫn của phần mềm để hoàn tất quá trình cài đặt.

Sau khi hoàn tất cài đặt, biểu tượng CCS sẽ xuất hiện trên màn hình desktop như hình minh họa dưới đây

Hình 5 5 Biểu tượng phần mềm CCS

5.3.1.2 Khởi tạo chương trình biên soạn:

Bước 3: Nháy đúp chuột vào biểu tượng để chạy phần mềm

Hình 5 6 Giao diện phần mềm CCS

Bước 4: Lần lượng chọn “File” – “New” – “Source File” để tạo chương trình soạn thảo mới

Hình 5 7 Hướng dẫn tạo Source mới Lúc này người dùng cần chọn nơi để lưu File

*Lưu ý: cần đặt tên nơi lưu File này không dấu để tránh bị lỗi

Hình 5 8 Hướng dẫn lưu File

Bước 5: Bắt đầu soạn thảo chương trình

Hình 5 9 Hướng dẫn soạn thảo chương trình

Sau khi đã soạn thảo tiến hành lưu File bằng tổ hợp “Ctrl + S” và ấn vào

“Compile” để tiến hành biên dịch code

Hình 5 10 Hướng dẫn biên dịch chương trình Sau khi biên dịch code thì màn hình sẽ hiển thị thông báo kết quả

Hình 5 11 Hình ảnh sau khi biên dịch

Vì lập trình đúng nên phần mềm thông báo “0 Errors, ” và hiển thị số % RAM và ROM chúng tà đã dùng cho đoạn mã code ở trên

5.3.1.3 Hướng dẫn nạp chương trình vào Kit:

Sau khi tiến hành biên dịch thành công ở các bước trên, chúng ta sẽ nhận được một File Hex để để có thể nạp vào vi điều khiển

Bước 6: Mở chương trình "PICKIT2" trên máy tính và cài đặt nạp chương trình cho Kit sử dụng mạch "PICKIT2" Kết nối bộ thực hành vi điều khiển với máy tính qua cáp USB và khởi động chương trình PICKIT2 Khi kết nối thành công, màn hình sẽ hiển thị thông tin về loại CPU đang sử dụng cùng thông báo kết nối đã thành công.

Bước 7: Mở file hex để nạp chương trình bằng cách chọn thiết bị cần nạp và nhấp vào nút số 3 Một cửa sổ mới sẽ xuất hiện, bạn cần chọn đường dẫn tới file hex đã biên soạn Sau khi chọn file, nhấn "Open" để phần mềm tự động thực hiện quá trình nạp, điều khiển chương trình, như làm cho đèn LED nhấp nháy hoặc tắt.

Hình 5 13 Hình ảnh sau khi nạp chương trình cho PIC thành công

5.3.2 Kết quả chạy thử chương trình: Ở mục này, sẽ tiến hành nạp thử một số chương trình điều khiển các module thường dùng để kiểm tra mạch có hoạt động đúng như mong muốn hay không Kết quả chạy thử được biểu diễn chi tiết ở các hình dưới đây Đầu tiên là module 8 LED 7 đoạn quét, bài này nhóm cho hiển thị MSSV lên khối led quét để kiểm tra độ sáng và quá trình quét có lỗi hay không

Hình 5 14 Kết quả chạy thử chương trình hiển thị MSSV

Khi nạp Kit, chúng ta thấy 8 LED 7 đoạn hoạt động tuần tự từ trái sang phải để hiển thị MSSV, ví dụ như “19161136” Các LED này hoạt động đúng yêu cầu, ánh sáng rõ ràng và không bị mờ.

Bài kiểm tra khối động cơ DC sử dụng tín hiệu điều khiển từ nút nhấn đơn để tăng hoặc giảm tốc độ, đồng thời hiển thị tốc độ điều khiển trên màn hình LCD.

Hình 5 15 Kết quả chạy thử chương trình điều khiển động cơ

Khi nạp vào Kit, nút nhấn phản hồi ngay lập tức khi tăng hoặc giảm, với cơ chế chống dội Động cơ DC hoạt động với tốc độ chính xác theo điều khiển, và giá trị được hiển thị trên màn hình LCD ngay lập tức.

Bài thứ ba là kiểm tra khối bàn phím ma trận, và các khối hiển thị đồng thời như 4 LED 7 đoạn, màn hình LCD và màn hình OLED

Hình 5 16 Kết quả chạy thử chương trình điều khiển động cơ

Sau khi nạp chương trình, các phím có giá trị dưới 10 sẽ hiển thị bên trái của Led 7 đoạn, LCD và dưới màn hình OLED, trong khi các giá trị trên 10 sẽ xuất hiện ở phía còn lại Khi nhấn bất kỳ nút nào, giá trị sẽ phản hồi nhanh chóng, có tính năng chống dội và hiển thị ngay lập tức trên các khối hiển thị.

Module tiếp theo là Led matrix, với chương trình đầu tiên tạo chuỗi ký tự hình mặt cười Chương trình thứ hai hiển thị chuỗi ký tự từ 0 đến 9, sử dụng chuỗi này để đếm từ 0 đến 60 Cuối cùng, cả hai chương trình sẽ được hiển thị trên LED matrix.

Hình 5 17 Kết quả chạy thử chương trình đếm trên LED MATRIX

Khi nạp chương trình quan sát kết quả, LED matrix hoạt động hiệu quả, hiển thị chính xác ký tự mặt cười và đếm đúng theo lập trình Đèn sáng rõ ràng, không gặp hiện tượng chập chờn.

NHẬN XÉT MÔ HÌNH

Kit có kích thước 31cm chiều dài, 30cm chiều cao và 23cm chiều rộng, giúp sản phẩm nhỏ gọn và thẩm mỹ Kích thước này cho phép Kit dễ dàng đặt trên bàn thí nghiệm, mang lại sự gọn gàng và tiện lợi cho không gian làm việc.

PICKIT2 mang đến tính dễ sử dụng vượt trội, chỉ cần cắm jack vào máy tính là có thể nạp code cho Kit mà không cần dây cáp khác Quá trình thao tác đơn giản, không gặp trục trặc và không xảy ra lỗi khi nạp chương trình vào Kit.

Bộ kit được thiết kế để sử dụng nguồn điện từ Adapter, cho phép cắm trực tiếp vào nguồn 220V, mang lại sự tiện lợi tối đa Trong trường hợp gặp sự cố, việc thay thế linh kiện cũng trở nên đơn giản và dễ dàng.

Do hạn chế về thời gian và ngân sách, bộ Kit chưa được đóng gói bằng các chất liệu cao cấp như gỗ và kim loại, dẫn đến độ thẩm mỹ chưa đạt yêu cầu.

Một số chân cắm như: chân mạch nạp PICKIT2 và jack cắm nguồn của Adapter cũng như các cảm biến nhiệt độ chưa được đặt ở vị trí tối ưu.

ĐÁNH GIÁ MÔ HÌNH

Bên cạnh các module đã được kiểm tra trong mục “5.4.2 Kết quả chạy thử chương trình”, bộ Kit còn bao gồm các module cảm biến khác như SRF05 và DS1307 Dưới đây là bảng thống kê số lần nạp code vào hệ thống và số lần hệ thống hoạt động thành công.

Bảng 5 1 Bảng số liệu thực hiện quá trình nạp code cho mô hình

STT Quá trình nạp code Số lần thực hiện

Dựa vào bảng số liệu, các thiết bị như LED, màn hình LCD, OLED, cảm biến và nút nhấn hoạt động chính xác, nhưng tín hiệu có thể bị nhiễu trong quá trình điều khiển Nguyên nhân của những lần nạp không thành công là do module vẫn hiển thị nội dung đã nạp trước đó khi nạp chương trình mới Điều này xảy ra do bộ nhớ và quá trình khởi động ban đầu, vì một số vi điều khiển yêu cầu khởi động lại để áp dụng các thay đổi sau khi nạp chương trình mới.

Có thể khắc phục lỗi đó bằng cách ấn nút RESET 1 số lần để đảm bảo hệ thống hoạt động đúng chương trình mới được nạp.

CHI PHÍ CHO ĐỀ TÀI

5.6.1 Chi phí thực hiện mô hình

Bảng 5 2 Chi phí các linh kiện trong mô hình

STT Tên linh kiện Số lượng Giá tiền (VNĐ)

7 Module cảm biến LM35, Buzzer 20 20

8 Module thời gian thực DS1307 20 19

24 SRF05 (cảm biến siêu âm) 01 28.000

Ngoài những chi phí mua linh kiện được liệt kê ở trên thì mô hình còn có những chi phí khác như sau:

STT Tên linh kiện Số lượng Giá tiền (VNĐ)

4 Đóng bìa, in báo cáo 02 200.000

Tổng kết lại tổng chi phí để thực hiện đề tài là:

HƯỚNG DẪN SỬ DỤNG CÁC MODULE

5.7.1 Các thư viện hỗ trợ [11]

Ngoài việc tạo file lập trình, việc khai báo chân vi điều khiển kết nối với các thiết bị ngoại vi như cảm biến, LED và màn hình là rất quan trọng Để tiết kiệm thời gian lập trình, nhóm đã phát triển những thư viện sẵn có, giúp sinh viên dễ dàng sử dụng mà không quá phức tạp so với lý thuyết đã học trong môn "Vi xử lý".

Thư viện “TV_18F6722.c” Đầu tiên là các hàm khai báo các kiểu truyền thông, chân kết nối, thạch anh với vi điều khiển

#use rs232(baud00, xmit=pin_c1, rcv=pin_c2)

#use I2C(MASTER,FAST,sda=PIN_C4, scl=PIN_C3, force_sw, stream =

#DEFINE ENABLE PIN_F4 // LED_MATRIX

Hàm hiển thị với LED 7 đoạn, LED 7 đoạn quét [12]

UNSIGNED CHAR LED_7DQ[8]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};

{0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};

CONST UNSIGNED CHAR MA7DOAN[16]=

{0XC0,0XF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0x88, 0x83, 0xC6,

Hàm tạo mã các số từ 0 đến 9 trên LED MATRIX

// LED MATRIX const unsigned int8 MASO[10][8] =

Hàm đóng mở BUZZER và hàm “xuat1byte”

} void xuat1byte (unsigned int8 data)

{ if((data & i) ==0) output_low(pin_d4); else output_high(pin_d4); output_low(pin_d6);output_high(pin_d6);

Hàm chống dội nút nhấn [1]

//CHONG DOI NUT NHAN int1 inputcd(int16 pin)

{ delay_ms(100); if(input(pin)==0)

Hàm chống dội cảm biến khe [1]

//CHONG DOI CAM BIEN KHE int1 inputcd_cbk(int16 p)

Hàm hiển thị LED đơn

//LED DON void xuat_8led_don(int8 b1,int8 b0)

{ xuat1byte(b1);xuat1byte(b0); output_high(pin_d5);output_low(pin_d5);

} void xuat_16led_don(int16 dwl)

{ xuat1byte(dwl>>8);xuat1byte(dwl); output_high(pin_d5);output_low(pin_d5);

//LED 7 DOAN void xuat_4led_7doan_4so(int8 b3,int8 b2,int8 b1,int8 b0)

{ xuat1byte(b0);xuat1byte(b1); xuat1byte(b2);xuat1byte(b3); output_high(PIN_D7); output_low(PIN_D7);

} void xuat_4led_7doan_giaima_xoa_so0(unsigned int16 tam)

{ unsigned int8 ngan,tram,chuc,dv; ngan = ma7doan[tam/1000%10]; tram = ma7doan[tam/100%10]; chuc = ma7doan[tam/10%10]; dv = ma7doan[tam/1%10]; if(ngan==0xc0)

{ ngan = 0xff; // tat led if(tram==0xc0)

{ tram = 0xff; if(chuc==0xc0) chuc = 0xff;

} xuat_4led_7doan_4so(ngan,tram,chuc,dv);}

Hàm xuất 8 LED 7 đoạn quét

//LED QUET void xuat_8ledquet_2byte(int8 quet, int8 dulieu)

{ int8 dulieu1; dulieu1 = ~ quet; xuat1byte(dulieu1); xuat1byte(dulieu); output_high(pin_g0);output_low(pin_g0);// st_cp

} void hien_thi_8led_7doan_quet_all()

{ xuat_8ledquet_2byte(TTLEDQUET[n], LED_7DQ[n]);

DELAY_mS(1); xuat_8ledquet_2byte(0xff,0xff);

//SET UP PORT void set_up_port()

To configure the microcontroller for optimal performance, set the TRIS registers for ports A, B, C, D, E, F, and G accordingly, ensuring that ports A and B are set as inputs while ports C, D, E, F, and G are configured as outputs Initialize the output state by setting pin C0 low and displaying data on a 4-digit 7-segment display with all segments illuminated Additionally, activate a single 16-LED output and illuminate an 8-LED array with two bytes of data Finally, ensure that pins F4, C1, and C2 are set low to enable the matrix LED display functionality.

Tiếp theo là các thư viện hỗ trợ cho LCD và màn hình OLED giao tiếp I2C: Thư viện “TV_LCD_I2C.c” [13]

#DEFINE PCF_ADDRES_WRITE 0x4E //dia chi pcf8574 (pcf8574A 7E) or 4e

#DEFINE LCD_BACKLIGHT 0x08 // bat den nen

#DEFINE CLEAR_DISPLAY 0X01 // CLEAR TOAN BO MAN HINH

#DEFINE ENTRY_MODE 0X06 //CHO PHEP XUAT NHAP DU LIEU

#DEFINE ADDR_LINE2 0XC0 void LCD_I2C_COMMAND(char MDK)

{ int MS_BIT_E, LS_BIT_E, MS_DATA, LS_DATA;

MS_DATA = MDK & 0xF0; // lay 4 bit cao

LS_DATA = MDK & 0x0F; // lay 4 bit thap

MS_BIT_E = MS_DATA | 0x04; // tao xung clock cap vao chan E

I2C_WRITE(MS_BIT_E); // LUC NAY SE XUAT CAR MS_DATA VA 3 GIA TRI E=1,RW=0,RS=0

I2C_WRITE(MS_DATA); // CHI XUAT MS_DATA, E=0,RW=0,RS=0

} void LCD_I2C_DATA(char MHT)

{ int MS_BIT_E, LS_BIT_E, MS_DATA, LS_DATA;

MS_DATA++; // luu cho rs o muc 1

I2C_WRITE(MS_BIT_E); // LUC NAY SE XUAT CAR MS_DATA VA 3 GIA TRI E=1,RW=0,RS=1

I2C_WRITE(LS_DATA); i2c_write(LCD_BACKLIGHT);

VOID LCD_GOTO_XY(SIGNED INT8 X, SIGNED INT8 Y)

CONST UNSIGNED INT8 LCD_VITRI[]={0x80,0xC0,0x94,0xD4}; lcd_i2c_command(LCD_VITRI[X]+Y); delay_us(440);

//#define OLED_RST PIN_XX //define un pin para resetear la pantalla

#if !defined SSD1306_128_32 && !defined SSD1306_96_16 && !defined

#define OLED_DISPLAYALLON_RESUME 0xA4

#define OLED_SET_VERTICAL_SCROLL_AREA 0xA3

#define OLED_RIGHT_HORIZONTAL_SCROLL 0x26

#define OLED_LEFT_HORIZONTAL_SCROLL 0x27

#define OLED_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29

#define OLED_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A

The OLED library provides a range of functions for initializing and controlling OLED displays, including OLED_Begin for setup and OLED_Display for rendering data Users can manipulate pixels with functions like OLED_DrawPixel and OLED_ClearDisplay to change or clear the screen Scrolling features are available through commands such as OLED_StartScrollRight and OLED_StopScroll Various shapes can be drawn, including lines with OLED_DrawLine, rectangles with OLED_DrawRect, and circles using OLED_DrawCircle, with options for filled shapes and color settings The library also includes functions for drawing characters, allowing for versatile graphic displays.

The OLED_DrawText function allows you to place a character on the display at specified coordinates, while the OLED_TextSize function enables you to change the text size To print text, use the OLED_Print function, and for custom characters, the OLED_PutCustomC function is available The OLED_SetTextWrap function controls text wrapping, and the OLED_InvertDisplay function allows you to invert the screen colors Lastly, the OLED_ROMBMP function lets you place an image on the display by specifying its coordinates and dimensions.

}; static uint8_t OLED_buffer[OLED_LCDHEIGHT * (OLED_LCDWIDTH / 8)];

//! i2c_transfer(OLED_stream,OLED_I2C_ADDRESS, buffer, 2);

//!} void OLED_command(uint8_t c) { uint8_t control = 0x00; // Co = 0, D/C = 0

} uint8_t vccstate = OLED_SWITCHCAPVCC; uint8_t i2caddr = OLED_I2C_ADDRESS; void OLED_Begin()

#ifdef OLED_RST output_low(OLED_RST); output_drive(OLED_RST); delay_ms(10); output_high(OLED_RST);

OLED_command(OLED_DISPLAYOFF); // 0xAE

OLED_command(OLED_SETDISPLAYCLOCKDIV); // 0xD5

OLED_command(0x80); // the suggested ratio 0x80

OLED_command(OLED_SETMULTIPLEX); // 0xA8

OLED_command(OLED_SETDISPLAYOFFSET); // 0xD3

OLED_command(0x0); // no offset OLED_command(OLED_SETSTARTLINE | 0x0); // line #0

OLED_command(OLED_CHARGEPUMP); // 0x8D if (vccstate == OLED_EXTERNALVCC)

OLED_command(0x00); // 0x0 act like ks0108

OLED_command(OLED_SETCOMPINS); // 0xDA

OLED_command(OLED_SETCOMPINS); // 0xDA

OLED_command(OLED_SETCONTRAST); // 0x81 if (vccstate == OLED_EXTERNALVCC)

OLED_command(OLED_SETCOMPINS); // 0xDA

OLED_command(OLED_SETCONTRAST); // 0x81 if (vccstate == OLED_EXTERNALVCC)

OLED_command(OLED_SETPRECHARGE); // 0xd9 if (vccstate == OLED_EXTERNALVCC)

OLED_command(OLED_SETVCOMDETECT); // 0xDB

OLED_command(OLED_DISPLAYALLON_RESUME); // 0xA4

OLED_command(OLED_NORMALDISPLAY); // 0xA6

OLED_command(OLED_DEACTIVATE_SCROLL);

OLED_command(OLED_DISPLAYON);// turn on oled panel

// set cursor to (0, 0) x_pos = 0; y_pos = 0;

// set text size to 1 text_size = 1;

} void OLED_DrawPixel(uint8_t x, uint8_t y, boolean color = TRUE)

{ if ((x >= OLED_LCDWIDTH) || (y >= OLED_LCDHEIGHT)) return; if (color)

OLED_buffer[x + (uint16_t)(y / 8) * OLED_LCDWIDTH] |= (1 y1) {

} if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing a = b = x0; if(x1 < a) a = x1; else if(x1 > b) b = x1; if(x2 < a) a = x2; else if(x2 > b) b = x2;

} int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, dx12 = x2 - x1, dy12 = y2 - y1; int32_t sa = 0, sb = 0;

To process the upper part of a triangle, determine the scanline crossings for segments 0-1 and 0-2 If the y-coordinates y1 and y2 are equal, indicating a flat-bottomed triangle, include the scanline at y1 and skip the second loop to prevent a division by zero error Conversely, if y1 does not equal y2, skip the y1 scanline and manage it in the second loop, which also circumvents a division by zero error if y0 equals y1, indicating a flat-topped triangle Set the variable 'last' to y1 if y1 equals y2; otherwise, set it to y1 minus one Iterate through the y-values from y0 to 'last', calculating the x-coordinates a and b based on the slope adjustments sa and sb, which are incremented by dx01 and dx02, respectively.

// For lower part of triangle, find scanline crossings for segments // 0-2 and 1-2 This loop is skipped if y1=y2 sa = dx12 * (y - y1); sb = dx02 * (y - y0); for(;y = OLED_LCDWIDTH) || (y >= OLED_LCDHEIGHT)) return; x_pos = x; y_pos = y;

// set text size void OLED_TextSize(uint8_t t_size)

{ if(t_size < 1) t_size = 1; text_size = t_size;

\a Set cursor position to upper left (0, 0)

\n Go to start of current line

{ boolean _color; uint8_t i, j, line; if (c == ' ' && x_pos == 0 && wrap) return; if(c == '\a') { x_pos = y_pos = 0; return;

} if( (c == '\b') && (x_pos >= text_size * 6) ) { x_pos -= text_size * 6; return;

} if(c == '\n') { y_pos += text_size * 8; if((y_pos + text_size * 7) > OLED_LCDHEIGHT) y_pos = 0; return;

} if((c < ' ') || (c > '~')) c = '?'; for(i = 0;i < 5;i++ ) { if(c < 'S') line = font[(c - ' ') * 5 + i]; else line = font2[(c - 'S') * 5 + i]; for(j = 0;j < 7;j++, line >>= 1) { if(line & 0x01)

_color = FALSE; if(text_size == 1) OLED_DrawPixel(x_pos + i, y_pos + j, _color); else OLED_FillRect(x_pos + (i * text_size), y_pos +

(j * text_size), text_size, text_size, _color);

The code snippet demonstrates how to draw a filled rectangle on an OLED display, adjusting the x position based on the text size It ensures that the rectangle does not exceed the display width, resetting the position if necessary, and incorporates a wrapping feature to manage text overflow effectively.

{ y_pos += text_size * 8; if((y_pos + text_size * 7) > OLED_LCDHEIGHT) y_pos = 0;

#define sda pin_rc4 typedef struct

{ unsigned int8 second; unsigned int8 minute; unsigned int8 hour; unsigned int8 day_of_week; unsigned int8 date; unsigned int8 month; unsigned int8 year;

}ds13b07; ds13b07 ds1307; void ds1307_read_time()

I2C_WRITE(0xd1); // 1101 0001 = 0xd1 doc ds1307.second = I2C_READ(1); ds1307.minute = I2C_READ(1); ds1307.hour = I2C_READ(1); ds1307.day_of_week = I2C_READ(1); ds1307.date = I2C_READ(1); ds1307.month = I2C_READ(1); ds1307.year = I2C_READ(0);

} void ds1307_set_time(ds13b07 t)

INT1 DS18B20_START()//tra ve kieu du lieu 1 bit true or false

OUTPUT_LOW(DS18B20_PIN);// dua chan cam bien xuong muc thap

OUTPUT_DRIVE(DS18B20_PIN);//cau hinh chan ds18b20 la ngo ra

OUTPUT_FLOAT(DS18B20_PIN);//cau hinh chan ds18b20 l󠰸go vao

IF (!INPUT(DS18B20_PIN))// kiem tra chan ds18b20 co phai la muc 0 hay khong

VOID DS18B20_WRITE_BIT(INT1 VALUE)// ham ds18b20 ghi du lieu 1 bit

OUTPUT_LOW(DS18B20_PIN);// dua chan cam bien xuong muc thap

OUTPUT_DRIVE(DS18B20_PIN);// cau hinh chan lam ngo ra

OUTPUT_BIT(DS18B20_PIN, VALUE);// xuat gia tri ra cam bien

OUTPUT_FLOAT(DS18B20_PIN);// cau hinh chan ds18b20 lam ngo vao

VOID DS18B20_WRITE_BYTE(INT8 VALUE)// ham ghi gia tri 1 byte( 8 bit or 1 bit 8 lan)

DS18B20_WRITE_BIT(BIT_TEST(VALUE,I));

INT1 DS18B20_READ_BIT(VOID)// doc gia tri 1 bit

VALUE = INPUT(DS18B20_PIN);// doc gia tri chan ds18b20

INT1 DS18B20_READ_BYTE(VOID)// doc gia tri 1 byte(8 bit)

SHIFT_RIGHT(&VALUE, 1, DS18B20_READ_BIT());// doc 1 bit xong day ve ben tay phai? 8 lan de co 1 byte

INT1 DS18B20_READ(INT16 *RAW_TEMP_VALUE)// doc gia tri nhiet do

DS18B20_WRITE_BYTE(0XCC);//lenh skip ROM

DS18B20_WRITE_BYTE(0X44);//bat dau giao tiep

IF (!DS18B20_START())//kiem tra xem co cam bien hay khong

DS18B20_WRITE_BYTE(0XCC);// lenh skip ROM

DS18B20_WRITE_BYTE(0XBE);// yeu cau gui du lieu ve PIC

*RAW_TEMP_VALUE = DS18B20_READ_BYTE();// doc duoc byte thap

*RAW_TEMP_VALUE |=(INT16)(DS18B20_READ_BYTE())

Ngày đăng: 08/12/2023, 15:31

TÀI LIỆU CÙNG NGƯỜI DÙNG

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

TÀI LIỆU LIÊN QUAN

w