Bài giảng môn Thực hành vi xử lý và vi điều khiển

pdf 133 trang phuongnguyen 3320
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Thực hành vi xử lý và vi điều khiển", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_mon_thuc_hanh_vi_xu_ly_va_vi_dieu_khien.pdf

Nội dung text: Bài giảng môn Thực hành vi xử lý và vi điều khiển

  1. TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG BÀI GIẢNG MÔN: THỰC HÀNH VI XỬ LÝ VÀ VI ĐIỀU KHIỂN Thái Nguyên, tháng 2 năm 2012
  2. MỤC LỤC PHẦN I MÔ TẢ HỆ THỐNG Giới thiệu Đặc tính I. Tổng quan hệ thống II. Module LMD01 III. Module LMD02 IV. Module LMD03 V. Module LMD04 VI. Module LMD05 VII. Module LMD06 VIII. Module LMD07 IX. Module LMD09 – Module điều khiển chính PHẦN II THỰC HÀNH BÀI I: KHẢO SÁT MA TRẬN LED 8x8 MỘT MÀU VÀ QUÉT HÀNG BÀI 2: KHẢO SÁT MA TRẬN LED 8x8 MỘT MÀU VÀ QUÉT CỘT BÀI 3: KHẢO SÁT MA TRẬN LED 8x8 2 MÀU XANH ĐỎ VÀ PHƯƠNG PHÁP QUÉT HÀNG BÀI 4: KHẢO SÁT MA TRẬN LED 8x8 2 MÀU XANH ĐỎ VÀ PHƯƠNG PHÁP QUÉT CỘT BÀI 5: KHẢO SÁT MODULE HIỂN THỊ 16x32 ĐIỂM MỘT MÀU BÀI 6: KHẢO SÁT MODULE HIỂN THỊ 16x32 ĐIỂM HAI MÀU BÀI 7: KHẢO SÁT HOẶT ĐỘNG CỦA BẢNG TIN ĐIỆN TỬ 1
  3. Đề cương kế hoạch thực hành với KIT LMD (màn hình ma trận Led) Sinh viên và giáo viên hướng dẫn thực hành dựa trên đề cương này để chuẩn bị bài thực hành theo Tài liệu mô tả và hướng dẫn thực hành LMD. Sinh viên cần chuẩn bị bài thực hành bằng cách đọc trước phần mô tả và hướng dẫn thực hành cho các module này, tự tìm hiểu trước các vi mạch. Buổi 1: Làm quen với màn hình ma trận Led và khảo sát Module LMD01, LMD02, LMD09 Sinh viên sẽ: Tìm hiểu một màn hình ma trận led đơn sắc cơ sở 8x8 - Cấu tạo ma trận Led (đơn sắc) - Biểu diễn một kí tự trên một ma trận cơ sở 8x8 - Cách hiển thị một điểm sáng trên ma trận led - Cách hiển thị một kí tự/ hình ảnh trên ma trận led (2 phương pháp: quét hàng/cột) Yêu cầu: sinh viên phải hiểu được cách hiển thị một kí tự trên một ma trận cơ sở 8x8 và có thể tạo ta bộ dữ liệu hiển thị cho 1 kí tự bất kì. Tìm hiểu các thành phần cơ bản cấu tạo lên một mạch điện ma trận led cụ thể (Khảo sát trực tiếp Module LMD01, LMD 02 và LMD09) - Các vi mạch dùng để đệm/chốt dữ liệu, vi mạch dùng để quét tuần tự (thanh ghi dịch), - Các vi điều khiển có thể dùng để điều khiển hiển thị ma trận led, vi điều kiển dùng trong Module đang khảo sát LMD09 - Nguyên lý hoạt động hiển thị của mạch LMD01 và LMD02 Kiểm tra các linh kiện và xem các module hoạt động hiển thị với chương trình lập trình sẵn. Yêu cầu: sinh viên nắm được cấu tạo của mạch, nguyên lý hoạt động hiển thị của 2 Module này. Buổi 2: Khảo sát Module LMD03, LMD04 Tương tự như khi khảo sát với module LMD01 và LMD02, chỉ khác là ma trận led ở hai module này là ma trận led hai mầu xanh-đỏ. 2
  4. Buổi 3: Khảo sát module LMD05, LMD06, LMD07 - Nắm được cách phối ghép các ma trận đơn sắc (đa sắc) cơ sở 8x8 thành một màn hình ma trận led đơn sắc (đa sắc) lớn hơn, phương pháp để hiển thị kí tự và chuỗi kí tự, hiệu ứng dịch chữ. - Khảo sát một bảng quang báo thực tế và chạy thử chương trình điều khiển trên máy tính.(LMD07). Đưa ra kết luận về cách thức hoạt động của bảng quang báo và chương trình điều khiển. Giáo viên hướng dẫn có thể đưa ra một số câu hỏi, yêu cầu cho sinh viên sau buổi thực hành. Có các bài tập nâng cao cho sinh viên khá giỏi có nhu cầu tìm hiểu sâu hơn./. 3
  5. PHẦN I: MÔ TẢ HỆ THỐNG Giới thiệu LMD TS là hệ thống mô hình đào tạo phục vụ khảo sát, nghiên cứu, thực hành thiết kế bảng thông tin điện tử sử dụng công nghệ ma trận đèn LED (Light Emitting Diode – Đi ôt phát quang). Hệ thống giúp sinh viên tiếp cận với công nghệ hiển thị bằng bảng ma trận đèn LED từ cơ bản đến nâng cao, từ đó sinh viên có thể hiểu, thiết kế được hệ thống bảng. Hệ thống được thiết kế theo tư duy logic kỹ thuật liền mạch từ đầu trí cuối dựa theo cách nhìn của sinh viên, cộng với sự sắp xếp, phân chia bài bản theo các vấn đề chuyên môn chi tiết rõ ràng. Đặc tính Làm quen với các linh kiện chức năng Thiết kế dàn trải Các điểm kiểm tra (test point) Sơ đồ nguyên lí rõ ràng Phân cấp từ cơ bản đến nâng cao Phân chia thành nhiều module Khảo sát phương pháp quét hàng, quét cột Hiển thị một màu đỏ và tổ hợp 2 màu xanh đỏ Sau đây là mô tả chi tiết về sản phẩm. Mục I sẽ giới thiệu tổng quan toàn bộ hệ thống, liệt kê các thành phần và các tuy chọn trong hệ thống , các mục từ II đếm IX sẽ giới mô tả chi tiết từng module. 4
  6. I. Tổng quan hệ thống Hệ thống được chia thành 9 module theo bài thực hành, một khung giá chính bằng kim loại để đỡ các module. Khi sử dụng module nào thì cài module đó trên lên ray của khung giá kim loại. Bảng dưới đây là danh sách các module và chức năng của chúng Tên Mô tả LMD01 Ma trận LED đơn sắc 8x8, quét theo hàng, khối quét hàng, đệm hàng, chốt hàng, đệm cathode, đệm anode, các chốt cấp nguồn kiểm thử tín hiệu LMD02 Ma trận LED đơn sắc 8x8, quét theo cột, khối quét cột, đệm cột, chốt cột, đệm cathode, đệm anode, đầu nối tín hiệu điều điều khiển và dữ liệu, các chốt cấp nguồn kiểm thử tín hiệu LMD03 Ma trận LED hai màu xanh/đỏ 8x8, quét theo hàng, khối quét hàng, đệm chốt hàng, đệm anode, đầu nối tín hiệu điều điều khiển và dữ liệu, các chốt cấp nguồn kiểm thử tín hiệu LMD04 Ma trận LED hai màu xanh/đỏ 8x8, quét theo cột, khối quét cột, đệm chốt cột, đệm cathode, đầu nối tín hiệu điều điều khiển và dữ liệu, các chốt cấp nguồn kiểm thử tín hiệu LMD05 Module hiển thị màu đỏ, 16x32 pixel, quét theo hàng, khối kích dòng, đệm chốt dữ liệu, đầu vào/đầu ra tín hiệu điều khiển và dữ liệu, các chốt cấp nguồn kiểm thử tín hiệu LMD06 Module hiển thị hai màu xanh/đỏ 16x32 pixel, quét theo hàng, khối kích dòng, đệm chốt dữ liệu, đầu vào/đầu ra tín hiệu điều khiển và dữ liệu, các chốt cấp nguồn và kiểm thử tín hiệu LMD07 Bảng tin điện tử 16x96 pixel, outdoor, đơn sắc, giao tiếp RS232, nguồn 220VAC LMD09 Board điều khiển chung, MCU AT89S52, 16Kbyte Ram, RS232, LMD port, KeyBoard, nạp ISP và cấp nguồn cho thí nghiệm Khung Giá đỡ bằng kim loại 5
  7. II. Module LMD01 LMD01 là ma trận LED đơn sắc 8x8, quét theo hàng, khối quét hàng, đệm hàng, chốt hàng, đệm cathode, đệm anode, các chốt cấp nguồn kiểm thử tín hiệu Ảnh 1 LMD01 – Quét theo hàng LMD01 chứa các loại, linh kiện cơ bản, và lí thuyết cơ bản để điều khiển bảng LED. LMD01 đưa ra một ma trận led 8x8 điểm, đơn sắc (đỏ) và các linh kiện để điều khiển một LMD theo phương pháp đầu tiên – Quét theo hàng. LMD01 gồm các thành phần sau: Ma trận LED 8x8 pixel, đơn sắc (đỏ) Khối đệm Kathode – ULN2803 Khối đệm Anode – 74LS574 Khối đệm dữ liệu hàng – 74LS164 Khối chốt dữ liệu hàng – 74LS573 Khối quét hàng – 74LS164 Module có chốt cắm nguồn 5V, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung. Ảnh 1 là module LMD01. 6
  8. Các thành phần được bố trí dàn trải, có sơ đồ nguyên lí rõ ràng, các đường tín hiệu có các chốt để đo thử. Sơ đồ nguyên lí Ảnh 2 Sơ đồ nguyên lí LMD01 7
  9. Mach in Ảnh 3 Bảng mạch in LMD01 8
  10. III. Module LMD02 Ảnh 4 LMD02 – Quét theo cột LMD02 đưa ra một ma trận LED 8x8 điểm, đơn sắc (đỏ) và các linh kiện để điều khiển một LMD theo phương pháp Quét theo cột. Các thành phần được bố trí dàn trải, có sơ đồ nguyên lí rõ ràng, các đường tín hiệu có các chốt để đo thử. LMD02 gồm các thành phần sau: Ma trận LED 8x8 pixel, đơn sắc (đỏ) Khối đệm Kathode – ULN2803 Khối đệm Anode – 74LS574 Khối đệm dữ liệu cột – 74LS164 Khối chốt dữ liệu cột – 74LS573 Khối quét cột – 74LS164 Module có chốt cắm nguồn 5V để, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung. Ảnh 4 là module LMD02. Sơ đồ nguyên lí 9
  11. Ảnh 5 Sơ đồ nguyên lí LMD02 10
  12. Mach in Ảnh 6 Bảng mạch in LMD02 IV. Module LMD03 11
  13. Ảnh 7 LMD03 – LMD 8x8 pixel, 2 màu xanh/đỏ, Quét theo hàng LMD03 đưa ra một ma trận LED 8x8 điểm, hai màu xanh/đỏ và các linh kiện để điều khiển một LMD theo phương pháp Quét theo hàng. Các thành phần được bố trí dàn trải, có sơ đồ nguyên lí rõ ràng, các đường tín hiệu có các chốt để đo thử. LMD03 gồm các thành phần sau: Ma trận LED 8x8 pixel, 2 màu xanh/đỏ Khối đệm chốt dữ liệu màu xanh – 74LS595 Khối đệm chốt dữ liệu màu đỏ – 74LS595 Khối đệm Anode – 74LS574 Khối quét hàng – 74LS164 Module có chốt cắm nguồn 5V, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung. Ảnh 7 là module LMD03. Sơ đồ nguyên lí 12
  14. Ảnh 8 Sơ đồ nguyên lí LMD03 13
  15. Mach in Ảnh 9 Bảng mạch in LMD03 V. Module LMD04 14
  16. Ảnh 10 LMD04 – LMD 8x8 pixel, 2 màu xanh/đỏ, Quét theo cột LMD04 đưa ra một ma trận LED 8x8 điểm, hai màu xanh/đỏ và các linh kiện để điều khiển một LMD theo phương pháp Quét theo cột. Các thành phần được bố trí dàn trải, có sơ đồ nguyên lí rõ ràng, các đường tín hiệu có các chốt để đo thử. LMD04 gồm các thành phần sau: Ma trận LED 8x8 pixel, 2 màu xanh/đỏ Khối đệm màu xanh – ULN2803 Khối đệm màu đỏ – ULN2803 Khối quét cột – 74LS164 Khối đệm chốt dữ liệu cột – 74LS595 Module có chốt cắm nguồn 5V, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung. Ảnh 10 là module LMD04. Sơ đồ nguyên lí 15
  17. Ảnh 11 Sơ đồ nguyên lí LMD04 16
  18. Mach in Ảnh 12 Bảng mạch in LMD04 17
  19. VI. Module LMD05 Ảnh 13 LMD05 – Module hiển thị 16x32 pixel đơn sắc (đỏ) LMD05 là một module hiển thị 16x32 pixel, đơn sắc màu đỏ trên đó có đệm kích dòng Anode, đệm Kathode, đệm chốt dữ liệu theo hàng. Các thành phần được bố trí dàn trải, có sơ đồ nguyên lí rõ ràng, các đường tín hiệu có các chốt để đo thử. LMD05 gồm các thành phần sau: Ma trận LED 16x32 pixel, 1 màu đỏ Khối đệm dữ liệu hàng – 4 IC 74LS574 Khối chốt dữ liệu hàng – 4 IC 74LS574 Khối đệm Anode – 4 IC ULN2803 Jack tín hiệu vào, jack tín hiệu ra Module có chốt cắm nguồn 5V, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung. Ảnh 13 là module LMD05. Sơ đồ nguyên lí 18
  20. Ảnh 14 Sơ đồ nguyên lí LMD05 19
  21. Mach in Ảnh 15 Bảng mạch in LMD05 20
  22. VII. Module LMD06 Ảnh 16 LMD06 – Module hiển thị 16x32 pixel hai màu (xanh/đỏ) LMD06 là một module hiển thị 16x32 pixel hai màu xanh và đỏ, trên đó có các khối đệm kích dòng Anode, đệm Kathode, đệm chốt dữ liệu theo hàng. Các thành phần được bố trí dàn trải, có sơ đồ nguyên lí rõ ràng, các đường tín hiệu có các chốt để đo thử. LMD06 gồm các thành phần sau: Ma trận LED 16x32 pixel, 2 màu xanh/đỏ Khối đệm chốt dữ liệu hàng – 16 IC 74LS574 Khối đệm Anode – 4 IC ULN2803 Jack tín hiệu vào, jack tín hiệu ra Module có chốt cắm nguồn 5V, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung. Ảnh 16 là module LMD06. Sơ đồ nguyên lí 21
  23. Ảnh 17 Sơ đồ nguyên lí LMD06 22
  24. Mạch in Ảnh 18 Bảng mạch in LMD06 23
  25. VIII. Module LMD07 Ảnh 19 LMD07 – Bảng tin điện tử 16x96 pixel đơn sắc (xanh/đỏ) LMD07 là một bảng thông tin điện tử hoàn chỉnh 16x96 pixel một màu đỏ, với các tham số kỹ thuật như sau: Led outdoor 16x96 pixel màu đỏ MCU AT89S52, 8k flash ROM 16 Kbyte Ram giao diện truyền thông RS232 Sử dụng nguồn 220VAC IX. Module LMD09 – Module điều khiển chính LMD09 là hệ vi điều khiển chứa các các thành phần để phục vụ cho các bài thực hành các phương pháp điều khiển LMD bằng chương trinh điều khiển Các thành phần có trên module: - MCU PIC AT89S52 - 16K RAM - Giao diện RS232 - Bàn phím 8 - Giao diện ISP - Cổng điều khiển LMD - Sơ đồ nguyên lí 24
  26. Sơ đồ mạch in 26
  27. PHẦN II: THỰC HÀNH BÀI I: KHẢO SÁT MA TRẬN LED 8x8 MỘT MÀU VÀ QUÉT HÀNG I. MỤC ĐÍCH Tìm hiểu cấu trúc của ma trận led, kiểm tra độ sáng của từng đèn led, tìm hiểu phương pháp điều khiển quét hàng, và một số linh kiện điều khiển II. THIẾT BỊ SỬ DỤNG Module LMD01, LMD09, dây nguồn, dây cáp tín hiệu Nguyên lí làm việc - Khối quét hàng làm nhiệm vụ tạo ra tín hiệu quét cho 8 chân đầu ra từ H1 đến H8. Các chân đầu ra sẽ lần lượt và luân phiên có tín hiệu mức cao, tại một thời điểm chỉ có một chân có tín hiệu mức cao, các chân còn lại mang tín hiệu 27
  28. mức thấp hết, sau một khoảng thời gian quy định sẽ chuyển sang chân tiếp theo, cứ như thế từ chân đầu tiên cho đến hết chân cuối cùng sau đó lại quay lại chân đầu tiên. Thời gian tồn tại trạng thái mức cao của mỗi chân đầu ra là bằng nhau nhưng có thể thay đổi được, tổng thời gian để quét hết một vòng 8 chân đầu ra cũng thay đổi được, do vậy phải quyết định được thời điểm bắt đầu chuyển trạng thái của một chân bất kỳ. Khôi quét hàng có một đầu vào tín hiệu đồng bộ SYN và một đầu vào xung nhịp. Đầu vào xung nhịp để quyết định thời điểm chuyển đổi trạng thái của đầu ra, còn đầu vào tín hiệu đồng bộ để xác định thời điểm bắt đầu một vòng quét. Tại thời điểm trước khi bắt đầu một vòng quét mới tín hiệu SYN băng một, ngay sau đó là một xung dương đưa vào làm cho đầu ra H1 chuyển trạng thái từ 0 sang 1, sau đó một khoảng thời gian bắt đầu chuyển trạng thái cho chân đầu ra tiếp theo (H2) tín hiệu SYN = 0, và liền đó là một xung dương được đưa vào đầu vào xung nhịp, tín hiệu SYN chỉ bằng 1 khi bắt đầu một vòng quét mới còn lại toàn bộ thời gian quét luôn = 0. - Khối đệm hàng làm nhiệm vụ chứa dữ liệu của một hàng để sẵng sàng cho việc hiển thị một hàng, dữ liệu được đưa vào kiểu nối tiếp và dịch chuyển trên các chân đầu ra b1 đến b8. Dữ liệu b8 được đưa vào đầu tiên, b1 dịch đến sau, dịch đến khi dữ liệu của b1 được đưa vào thì dữ liệu b8 dịch đến chân b8 và dữ liệu của b1 có trên chân b1. Khối này có một chân đầu vào xung nhịp sử dụng cho việc đọc dữ liệu vào. - Khối chốt hàng làm nhiệm vụ chốt dữ liệu của một hàng. Trước khi hiển thị một hàng dữ liệu phải sẵn hàng ở các đầu vào D của khối chốt hàng, một xung dương được đưa vào để đẩy dữ liệu từ các chân đầu vào D tới các chân đầu ra Q và giữ nguyên ở đó để cho một hàng được hiển thị trong khoảng thời gian xác định trước hiển thị một hàng tiếp theo. - Khối đệm Kathode làm nhiệm vụ tạo điện áp âm hút dòng cho kathode của đèn led, các đầu ra của khối sẽ nối đến các cathode của đèn led. Các đầu vào được nối với dữ liệu điều khiển đèn led. - Khối đệm Anode làm nhiệm vụ cấp nguồn dương cho nhóm các led và các đầu ra Q nối đến các chân A của đèn led. - Khối ma trận đèn led là một ma trân 8x8 đèn led các chân A của một hàng led được nối chung tạo nên 8 chân A chung, các chân K của một cột được nối chung và tạo nên 8 chân K chung. 28
  29. Để hiển thị toàn bộ ma trận led các hàng sẽ lần lượt được luân phiên hiển thị từ hàng đầu tiên cho đến hàng cuối cùng rồi lặp lại. Tại một thời điểm chỉ có một hàng được hiển thị. Trước thời điểm bắt đầu hiển thị hàng đầu tiên dữ liệu của hàng đầu tiên được đưa vào bộ đệm hàng theo cách nối tiếp từ b8 vào trước rồi đến b1, xung nhịp được cấp từ bên ngoài vào để đọc mỗi bít dữ liệu tuân tự, khi đã đủ hết dữ liệu rồi thì xung nhịp không được phép làm việc nữa. Tiếp theo là hiển thị dữ liệu của hàng đầu tiên, khi hiển thị tín hiệu SYN được đưa vào = 1, sau đó sẽ có một xung dương OUTCLK, xung dương OUTCLK sẽ đồng thời làm hai việc: 1 là đưa toàn bộ dữ liệu của hàng đầu tiên mà đang tồn tại ở đầu vào bộ chốt hàng đến đầu ra bộ chốt hàng và 2 đặt đầu ra H1 của khối quét hàng lên mức cao để hiển thị hàng đầu tiên. Vậy là dữ liệu của hàng đầu tiên đã được chuyển đến bộ đệm Kathode, H1 cũng đã được chuyển lên mức cao đưa vào bộ đệm Anode, quá trình bắt đầu hiển thị hàng đầu tiên đã hoàn tất, việc còn lại là của hai bộ đệm. Bộ đệm Kathode sẽ khuyếch đại đảo các bit dữ liệu và điều khiển việc hút dòng cho 8 Kathode chung, bộ đệm Anode sẽ cấp nguồn dương cho một hàng. Trạng thái này được duy trì một khoảng thời gian xác định để các led của hàng đầu tiên được hiển thị trong một khoảng thời gian xác định. Khi hết thời gian cho việc hiển thị hàng đầu tiên thì việc hiển thị hàng thứ hai sẽ phải bắt đầu. Việc bắt đầu cho hiển thị hàng thứ 2 cũng giống như hàng thứ nhất chỉ có điểm duy nhất khác biệt là tín hiệu SYN đặt vào phải bằng 0 còn lại thì mọi thủ tục không có gì thay đổi. Do vậy khi có xung OUTCLK thì H1 sẽ ở mức thấp và mức cao trước đó của nó sẽ được dịch sang H2 làm cho A2 được cấp nguồn và hàng thứ hai sáng. Hàng thứ hai cũng sẽ được hiển thị trong một khoảng thời gian xác định và kết thúc Quá trình được diễn ra lặp lại tương tự đối với các hàng sau cho đến hết hàng 8. 29
  30. Kết thúc thời gian hiển thị hàng 8 là hết một chu trình quét toàn bộ LMD, một chu trình quét mới sẽ lại bắt đầu. Quá trình cứ lặp đi lặp lại như thế trong suốt thời gian hoạt động của LMD. III. THỰC HÀNH 1. Kiểm tra LMD - Đảm bảo ma trận led HY2088BS đã được gắn lên đế MATRIX1 - Không cấp nguồn cho bảng LMD01 - Dùng đồng hồ vạn năng cơ học, để thang đo 1Ohm - Đưa que đỏ vào một chân K1 (dùng kẹp hoặc cầm tay) - Quẹt đầu que đen của đồng hồ qua các chốt từ A1 đến A8, khi quẹt quan sát lmd sẽ thấy các đèn cột 1 sáng đều lần lượt từ hàng 1 đến hàng 8 là tốt, chứng tỏ không LED nào hỏng và mạch nối đúng cấu hình chân - Lần lượt làm như thế với các chân từ K2 đến K8, để kiểm tra các cột còn lại của toàn bộ lmd. Sau khi kiểm tra nếu không thấy led nào hỏng là tốt. 2. Kiểm tra khối đệm cathode ULN2803 - LMD đã được kiểm tra và gắn lên đế MATRIX1 - IC ULN2803 đã gắn lên đế của khối DEMK - Không cắm IC trên các khối ĐỆMA1, và ĐEMK1 - Không cấp nguồn 5V cho bảng, chỉ đấu dây cho chốt GND - Nối dây từ nguồn +5V với một đầu điện trở 100 Ohm, đầu kia của điện trở nối với một chân A bất kỳ. - Dùng một dây 5V khác quẹt qua các chốt từ b1 đến b8, khi quẹt thấy các led của hàng tương ứng với chân A lần lượt sáng đều là ULN2803 tốt. 3. Kiểm tra bộ đệm cực dương - Giữ nguyên các linh kiện như phần trên - Kiểm tra đế của khối QUETHANG không có gì, nếu có thì bỏ ra - IC 74573(4) đã gắn lên đế của khối DEMA - Cấp nguồn 5V và GND cho bảng. - Dùng một dây nguồn 5V chấm vào chốt b bất kỳ giữa khối CHỐT HÀNG và khối ĐỆMK - Dùng một dây nguồn 5V khác quẹt qua các chốt từ H1 đến H8, khi quẹt quan sát thấy các LED của cột tương ứng với b sáng đều là tốt. Cả hai khối ĐỆMA VÀ ĐỆMK đều tốt. 4. Kiểm tra khối chốt hàng - Giữ nguyên các linh kiện như phần trên. - Kiểm tra đế ic của khối ĐỆM HÀNG không có gì, nếu có thì bỏ ra - Gắn IC 74573(4) lên đế của khối CHOTHANG - Đưa tín hiệu 0 hoặc 1 vào đầu vào bất kỳ từ D1 đến D8 của khối CHỐT HÀNG, dùng thanh kim loại hoặc nguồn 0V hoặc 5V quét vào chốt OUTCLK, dùng đồng hồ đo điện áp của các đầu ra từ Q tương ứng với đầu vào D sau mỗi lần quẹt. 30
  31. - Làm lại như trên vài lần với các tín hiệu vào là 0 , 1 ta sẽ thấy đầu vào D được đưa đến đầu ra Q và sau mỗi lần có xung, trạng thái đầu ra sẽ được giữ nguyên nếu không có một xung quẹt lên chốt OUTCLK mặc dù đầu vào có thay đổi trạng thái 0/1. 5. Kiểm tra khối đệm hàng - Gắn IC 74xx164 lên đế của khối DEMHANG và QUETHANG Chú ý: tất cả các IC phải cắm đúng chiều - Nối chốt nguồn 5V và GND cho bảng (chưa bật nguồn) - Khối điều khiển LMD09 đã có sẵn chương trình lmd01 trên chíp 89s52 - Nối cáp tín hiệu 4 chân từ bảng lmd09 tới lmd01 - Bật nguồn cho cả hai khối. - nếu không có gì sai trên LMD sẽ hiển thị hình ảnh/ kí tự lập trình sẵn. - dùng máy hiện sóng quan sát tín hiệu tại các chốt DATA, INCLK, OUTCLK, B, H, A, K để thấy rõ quá trình làm việc của khối QUÉT HÀNG, ĐỆM HÀNG và toàn bộ hệ thống - Phân tích giản đồ xung của 4 chân tín hiệu 6. Sử dụng khối lmd09 lập trình điều khiển thay đổi nội dung hiển thị chữ 31
  32. BÀI 2: KHẢO SÁT MA TRẬN LED 8x8 MỘT MÀU VÀ QUÉT CỘT I. MỤC ĐÍCH Khảo sát phương pháp điều khiển quét cột, và một số linh kiện điều khiển. II. THIẾT BỊ SỬ DỤNG Module LMD02, LMD09, dây nguồn, dây cáp tín hiệu Nguyên lí làm việc - Khối quét cột làm nhiệm vụ tạo ra tín hiệu quét cho 8 chân đầu ra từ C1 đến C8. Các chân đầu ra sẽ lần lượt và luân phiên có tín hiệu mức cao, tại một thời điểm chỉ có một chân có tín hiệu mức cao, các chân còn lại mang tín hiệu mức thấp hết, sau một khoảng thời gian xác định sẽ chuyển sang chân tiếp theo, cứ như thế từ chân đầu tiên cho đến hết chân cuối cùng sau đó lại quay lại chân đầu tiên. Thời gian tồn tại trạng thái mức cao của mỗi chân đầu ra là bằng nhau nhưng có thể thay đổi được, tổng thời gian để quét hết một vòng 8 chân đầu ra cũng thay đổi được, do vậy phải quyết định được thời điểm bắt đầu chuyển trạng thái của một chân bất kỳ. Khối quét cột có một đầu vào tín hiệu đồng bộ SYN và 32
  33. một đầu vào xung nhịp. Đầu vào xung nhịp để quyết định thời điểm chuyển đổi trạng thái của đầu ra, còn đầu vào tín hiệu đồng bộ để xác định thời điểm bắt đầu một vòng quét. Tại thời điểm trước khi bắt đầu một vòng quét mới tín hiệu SYN bằng một, ngay sau đó là một xung dương đưa vào làm cho đầu ra H1 chuyển trạng thái từ 0 sang 1, sau đó một khoảng thời gian bắt đầu chuyển trạng thái cho chân đầu ra tiếp theo (H2) tín hiệu SYN = 0, và liền đó là một xung dương được đưa vào đầu vào xung nhịp, tín hiệu SYN chỉ bằng 1 khi bắt đầu một vòng quét mới còn lại toàn bộ thời gian quét luôn = 0. - Khối đệm cột làm nhiệm vụ chứa dữ liệu của một cột để sẵng sàng cho việc hiển thị một cột, dữ liệu được đưa vào kiểu nối tiếp và dịch chuyển trên các chân đầu ra b1 đến b8. Dữ liệu của b8 được đưa vào đầu tiên, dịch dần từ b1 đến b8, cho đến khi dữ liệu của b1 được đưa vào thì dữ liệu b8 dịch đến chân b8 và dữ liệu của b1 có trên chân b1. Một chân đầu vào xung nhịp INCLK cần cho việc đọc dữ liệu vào. - Khối chốt cột làm nhiệm vụ chốt dữ liệu của một cột. Trước khi hiển thị một cột dữ liệu phải sẵn hàng ở các đầu vào D của khối chốt cột, một xung dương được đưa vào để đẩy dữ liệu từ các chân đầu vào D tới các chân đầu ra Q và giữ nguyên ở đó để cho một cột được hiển thị trong khoảng thời gian xác định trước hiển thị một hàng tiếp theo. - Khối đệm Kathode làm nhiệm vụ tạo điện áp âm hút dòng cho nhóm kathode của các đèn led, các đầu ra của khối sẽ nối đến các cathode của đèn led. Các đầu vào được nối với dữ liệu điều khiển đèn led. - Khối đệm Anode làm nhiệm vụ cấp nguồn dương cho các led, nên các đầu ra Q nối đến các chân A của đèn led - Khối ma trận đèn led là một ma trân 8x8 đèn led các chân A của một hàng led được nối chung tạo nên 8 chân A chung, các chân K của một cột được nối chung và tạo nên 8 chân K chung 33
  34. Để hiển thị toàn bộ ma trận led các cột sẽ lần lượt được luân phiên hiển thị từ cột đầu tiên cho đến cột cuối cùng rồi lặp lại. Tại một thời điểm chỉ có một cột được hiển thị. Trước thời điểm bắt đầu hiển thị cột đầu tiên dữ liệu của cột đầu tiên được đưa vào bộ đệm cột theo cách nối tiếp từ b8 vào trước rồi đến b1, xung nhịp được cấp từ bên ngoài vào để đọc mỗi bít dữ liệu tuần tự, khi đã đủ hết dữ liệu rồi thì xung nhịp không được phép làm việc nữa. Tiếp theo là hiển thị dữ liệu của hàng đầu tiên, khi hiển thị tín hiệu SYN=1 được đưa vào, sau đó sẽ có một xung dương OUTCLK, xung dương OUTCLK sẽ đồng thời làm hai việc: 1 là đưa toàn bộ dữ liệu của cột đầu tiên mà đang tồn tại ở đầu vào bộ chốt cột đến đầu ra bộ chốt cột; và 2 là dịch tín hiệu SYN=1 đến đầu ra C1 của khối quét cột để hiển thị cột đầu tiên. Vậy là dữ liệu của cột đầu tiên đã được chuyển đến bộ đệm Anode, C1 cũng đã được chuyển lên mức cao đưa vào bộ đệm Kathode, quá trình bắt đầu hiển thị hàng đầu tiên đã hoàn tất, việc còn lại là của hai bộ đệm. Bộ đệm Anode sẽ khuyếch đại các bit dữ liệu và điều khiển việc cấp nguồn dương cho 8 Anode , bộ đệm Kathode sẽ khuyếch đại đảo tín hiệu tích cực cột để hút dòng cho một cột. Trạng thái này được duy trì một khoảng thời gian xác định để các led của cột đầu tiên được hiển thị trong một khoảng thời gian xác định. Khi hết thời gian cho việc hiển thị cột đầu tiên thì việc hiển thị cột thứ hai sẽ phải bắt đầu. Việc bắt đầu cho hiển thị cột thứ 2 cũng giống như cột thứ nhất chỉ có điểm duy nhất khác biệt là tín hiệu SYN đặt vào phải bằng 0 còn lại thì mọi thủ tục không có gì thay đổi. Do vậy khi có xung OUTCLK thì C1 sẽ ở mức thấp và mức cao trước đó của nó sẽ được dịch sang C2 làm cho K2 được nối đất và cột thứ hai sáng. Cột thứ hai cũng sẽ được hiển thị trong một khoảng thời gian xác định và kết thúc Quá trình được diễn ra lặp lại tương tự đối với các cột sau cho đến hết cột 8. Kết thúc thời gian hiển thị cột 8 là hết một chu trình quét toàn bộ LMD, một chu trình quét mới sẽ lại bắt đầu. Quá trình cứ lặp đi lặp lại như thế trong suốt thời gian hoạt động của LMD. III. THỰC HÀNH 1. Kiểm tra LMD - Gắn lmd HY2088BS lên đế MATRIX1 - Không cấp nguồn cho bảng - Đưa điện áp 0V vào một chân K1 (dùng kẹp hoặc cầm tay) - Nối dây từ nguồn 5V nối tiếp với một đầu điện trở 100 Ohm (dùng kẹp hoặc cầm bằng tay) - Quẹt đầu còn lại của điện trở qua các chốt từ A1 đến A8, khi quẹt quan sát lmd sẽ thấy các đèn cột 1 sáng đều lần lượt từ hàng 1 đến hàng 8 là tốt, chứng tỏ không LED nào hỏng và mạch nối đúng cấu hình chân 34
  35. - Lần lượt làm như thế với các chân từ K2 đến K8, để kiểm tra các cột còn lại của toàn bộ lmd. Cũng có thể kiểm tra theo từng hàng bằng cách cho điện áp dương vào chân A và quẹt đầu 0V qua các chân K1 đến K8. Sau khi kiểm tra nếu không thấy led nào hỏng là tốt 2. Kiểm tra khối đệm cathode ULN2803 - LMD đã được kiểm tra và gắn lên đế MATRIX1 - IC ULN2803 đã gắn lên đế của khối DEMK - Không cắm IC trên các khối DEMA2, và DEMK2 - Không cấp nguồn 5V cho bảng, chỉ đấu dây cho chốt GND - Nối dây từ nguồn +5V với một đầu điện trở 100 Ohm, đầu kia nối với một chân A bất kỳ. - Dùng một dây 5V khác quẹt qua các chốt từ b1 đến b8, khi quẹt thấy các led của hàng tương ứng với chân A lần lượt sáng đều là ULN2803 tốt. 3. Kiểm tra bộ đệm cực dương - Giữ nguyên các linh kiện như phần trên - Kiểm tra đế của khối CHOTCOT không có gì - IC 74573(4) đã gắn lên đế của khối DEMA - Cấp nguồn 5V và GND cho bảng. - Dùng một dây nguồn 5V chấm vào chốt C bất kỳ giữa khối QUETCOT và khối ĐỆMK - Dùng một dây nguồn 5V khác quẹt qua các chốt từ b1 đến b8, khi quẹt quan sát thấy các LED của cột tương ứng với C đều sáng là tốt. Cả hai khối ĐỆMA VÀ ĐỆMK đều tốt. 4. Kiểm tra khối chốt cột - Giữ nguyên các linh kiện như phần trên. - Kiểm tra đế ic của khối ĐỆMCỘT không có gì, nếu có thì bỏ ra - Gắn IC 74573(4) lên đế của khối CHOTCỘT - Đưa tín 0 hoặc 1 vào đầu vào bất kỳ từ D1 đến D8 của khối CHỐTCOT, dùng thanh kim kim loại hoặc nguồn 0V hoặc 5V quét vào chốt OUTCLK, dùng đồng hồ đo điện áp của các đầu ra từ Q tương ứng với đầu vào D sau mỗi lần quẹt. - Làm lại như trên vài lần với các tín hiệu vào là 0 , 1 ta sẽ thấy đầu vào D được đưa đến đầu ra Q và sau mỗi lần có xung, trạng thái đầu ra sẽ được giữ nguyên nếu không có một xung quẹt lên chốt OUTCLK mặc dù đầu vào có thay đổi trạng thái 0/1. 5. Kiểm tra khối đệm cột - Gắn IC 164 lên đế của khối DEMCỘT và QUETCỘT Chú ý: tất cả các IC phải cắm đúng chiều - Nối chốt nguồn 5V và GND cho bảng (chưa bật nguồn) - Khối điều khiển LMD09 đã có sẵn chương trình lmd02 trên chíp 89s52 - Nối cáp tín hiệu 4 chân từ bảng lmd09 tới lmd02 - Bật nguồn cho cả hai khối. - nếu không có gì sai trên LMD sẽ hiển thị chữ Z 35
  36. - dùng máy hiện sóng quan sát tín hiệu tại các chốt DATA, INCLK, OUTCLK, B, C, A, K để thấy rõ quá trình làm việc của khối QUÉTCỘTT, ĐỆMCỘT và toàn bộ hệ thống - Phân tích giản đồ xung của 4 chân tín hiệu 6. Sử dụng khối lmd09 lập trình điều khiển thay đổi nội dung hiển thị chữ 36
  37. BÀI 3: KHẢO SÁT MA TRẬN LED 8x8 2 MÀU XANH ĐỎ VÀ PHƯƠNG PHÁP QUÉT HÀNG I. MỤC ĐÍCH Khảo sát cấu trúc của ma trận led 8x8 2 màu xanh đỏ, kiểm tra độ sáng của từng đèn led, tìm hiểu phương pháp điều khiển quét hàng cho 2 màu, và một số linh kiện điều khiển II. THIẾT BỊ SỬ DỤNG Module LMD03, LMD09, dây nguồn, dây cáp tín hiệu Nguyên lí làm việc - Khối quét hàng làm nhiệm vụ tạo ra tín hiệu quét cho 8 chân đầu ra từ H1 đến H8. Các chân đầu ra sẽ lần lượt và luân phiên có tín hiệu mức cao, tại một thời điểm chỉ có một chân có tín hiệu mức cao, các chân còn lại mang tín hiệu mức thấp hết, sau một khoảng thời gian quy định sẽ chuyển sang chân tiếp theo, cứ như thế từ chân đầu tiên cho đến hết chân cuối cùng sau đó lại quay lại chân đầu tiên. Thời gian tồn tại trạng thái mức cao của mỗi chân đầu ra là bằng nhau nhưng có thể thay đổi được, tổng thời gian để quét hết một vòng 8 chân đầu ra 37
  38. cũng thay đổi được, do vậy phải quyết định được thời điểm bắt đầu chuyển trạng thái của một chân bất kỳ. Khôi quét hàng có một đầu vào tín hiệu đồng bộ SYN và một đầu vào xung nhịp. Đầu vào xung nhịp để quyết định thời điểm chuyển đổi trạng thái của đầu ra, còn đầu vào tín hiệu đồng bộ để xác định thời điểm bắt đầu một vòng quét. Tại thời điểm trước khi bắt đầu một vòng quét mới tín hiệu SYN băng một, ngay sau đó là một xung dương đưa vào làm cho đầu ra H1 chuyển trạng thái từ 0 sang 1, sau đó một khoảng thời gian bắt đầu chuyển trạng thái cho chân đầu ra tiếp theo (H2) tín hiệu SYN = 0, và liền đó là một xung dương được đưa vào đầu vào xung nhịp, tín hiệu SYN chỉ bằng khi bắt đầu một vòng quét mới còn lại toàn bộ thời gian quét luôn = 0. - Khối DEMCHOTG (và DEMCHOTR) làm nhiệm vụ chứa dữ liệu G và R của một hàng và chốt dữ liệu tại đầu ra để hiển thị một hàng, dữ liệu được đưa vào kiểu nối tiếp và xuất ra song song. Dữ liệu của R8 được đưa vào đầu tiên, dữ liệu G1 được đưa vào cuối. Khi 16 bit dữ liệu đã được đưa vào 2 bộ ĐỆMCHÔT, một xung dương OUTCLK được đưa vào để đẩy dữ liệu tới các chân đầu ra và giữ nguyên ở đó để cho một hàng được hiển thị trong khoảng thời gian xác định trước khi hiển thị một hàng tiếp theo. Một khối này làm cả 3 việc tương đương 3 khối: ĐỆMHANG, CHÔTHÀNG, ĐỆMK trong lmd01. ĐỆMCHOTG phục vụ cho màu xanh, ĐỆMCHOTR phục vụ màu đỏ. - Khối đệm Anode làm nhiệm vụ cấp nguồn dương cho nhóm các led, các đầu ra Q nối đến các chân A của đèn led - Khối ma trận đèn led là một ma trân 8x8 điểm, mỗi điểm gồm 2 đèn led nối chung, Anode các chân A của một hàng led được nối chung tạo nên 8 chân A chung, các chân Cathode của màu xanh của một cột được nối chung và tạo nên 8 chân G chung, các chân Cathode của màu đỏ của một cột được nối chung và tạo nên 8 chân R chung 38
  39. Một hàng được hiển thị bao gồm một hàng xanh và một hàng đỏ kết hợp Để hiển thị toàn bộ ma trận led các hàng sẽ lần lượt được luân phiên hiển thị từ hàng đầu tiên cho đến hàng cuối cùng rồi lặp lại. Tại một thời điểm chỉ có một hàng được hiển thị. Trước thời điểm bắt đầu hiển thị hàng đầu tiên, dữ liệu của hàng đầu tiên được đưa vào bộ đệm chốt theo cách nối tiếp từ R8 vào trước rồi đến G1, xung nhịp INCLK được cấp từ bên ngoài vào để đọc mỗi bít dữ liệu tuân tự, khi đã đủ hết dữ liệu rồi thì xung nhịp không được phép làm việc nữa. Tiếp theo là hiển thị dữ liệu của hàng đầu tiên, trước khi hiển thị tín hiệu SYN=1 được đưa vào, sau đó sẽ có một xung dương OUTCLK, xung dương OUTCLK sẽ đồng thời làm hai việc: 1 là đưa toàn bộ dữ liệu của hàng đầu tiên mà đang tồn tại ở trong bộ ĐỆMCHÔT ra các chân R và G của led matrix, và 2 là đặt đầu ra H1 của khối quét hàng lên mức cao để hiển thị hàng đầu tiên. Vậy là dữ liệu của hàng đầu tiên đã đầu tiên đã đến các chân Kathode (R và G), H1 cũng đã được chuyển lên mức cao để đưa vào bộ đệm Anode, quá trình bắt đầu hiển thị hàng đầu tiên đã hoàn tất, việc còn lại là của bộ đệm Anode. Các bít 0 sẽ điều khiển cho Kathode nối với nó sáng, bít 1 sẽ làm cho kathode tắt, bộ đệm Anode sẽ cấp nguồn dương cho một hang. Trạng thái này được duy trì một khoảng thời gian xác định để các led của hàng đầu tiên được hiển thị trong một khoảng thời gian xác định. Khi hết thời gian cho việc hiển thị hàng đầu tiên thì việc hiển thị hàng thứ hai sẽ phải bắt đầu. Việc bắt đầu cho hiển thị hàng thứ 2 cũng giống như hàng thứ nhất chỉ có điểm duy nhất khác biệt là tín hiệu SYN đặt vào phải bằng 0 còn lại thì mọi thủ 39
  40. tục không có gì thay đổi. Do vậy khi có xung OUTCLK thì H1 sẽ ở mức thấp và mức cao trước đó của nó sẽ được dịch sang H2 làm cho A2 được cấp nguồn và hàng thứ hai sáng. Hàng thứ hai cũng sẽ được hiển thị trong một khoảng thời gian xác định và kết thúc Quá trình được diễn ra lặp lại tương tự đối với các hàng sau cho đến hết hàng 8. Kết thúc thời gian hiển thị hàng 8 là hết một chu trình quét toàn bộ LMD, một chu trình quét mới sẽ lại bắt đầu. Quá trình cứ lặp đi lặp lại như thế trong suốt thời gian hoạt động của LMD. III. THỰC HÀNH 1. Kiểm tra LMD - LMD 2088DHG đã được gắn lên đế MATRIX1 - Không cấp nguồn cho bảng - Đưa điện áp 5V vào một chân A1 (dùng kẹp hoặc cầm tay) - Nối dây từ nguồn 0V nối tiếp với một đầu điện trở 100 Ohm (dùng kẹp hoặc cầm bằng tay) - Quẹt đầu còn lại của điện trở qua các chốt từ G1 đến R8, khi quẹt quan sát lmd sẽ thấy các đèn hàng 1 sáng đều lần lượt từ R1 đến G8 là tốt, chứng tỏ không LED nào hỏng và mạch nối đúng cấu hình chân - Lần lượt làm như thế với các chân từ A2 đến A8, để kiểm tra các cột còn lại của toàn bộ lmd 2. Kiểm tra bộ đệm cực dương - Giữ nguyên các linh kiện như phần trên - Kiểm tra đế của khối QUETHANG, ĐỆMCHỐT không có gì - Không cắm IC trên các khối DEMCHOTR và DEMCHOTG - IC 74573(4) đã gắn lên đế của khối DEMA - Cấp nguồn 5V và GND cho bảng. - Dùng một dây nguồn 0V chấm vào chốt R hoặc G bất kỳ - Dùng một dây nguồn 5V khác quẹt qua các chốt từ H1 đến H8, khi quẹt quan sát thấy các LED của cột tương ứng với R hoặc G sáng đều là Khối ĐỆMA tốt. 3. Kiểm tra khối ĐỆMCHÔT - Giữ nguyên các linh kiện như phần trên. - Gắn IC 74595 lên đế của khối DEMCHOtTR và DEMCHOTG, - Gắn IC 74164 lên đế của khối QUETHANG Chú ý: tất cả các IC phải cắm đúng chiều - Nối chốt nguồn 5V và GND cho bảng (chưa bật nguồn) - Khối điều khiển LMD09 đã có sẵn chương trình lmd03 trên chíp 89s52 - Nối cáp tín hiệu 4 chân từ bảng lmd09 tới lmd03 - Bật nguồn cho cả hai khối. - Nếu không có gì sai trên LMD sẽ hiển thị chữ như lập trình sẵn 40
  41. - Dùng máy hiện sóng quan sát tín hiệu tại các chốt DATA, INCLK, OUTCLK, SYN, R, G, H, A để thấy rõ quá trình làm việc của khối QUÉT HÀNG, ĐỆM HÀNG và toàn bộ hệ thống - Phân tích giản đồ xung của 4 chân tín hiệu DATA, INCLK, OUTCLK, SYN 4. Sử dụng khối lmd09 lập trình điều khiển thay đổi nội dung hiển thị chữ 41
  42. BÀI 4: KHẢO SÁT MA TRẬN LED 8x8 2 MÀU XANH ĐỎ VÀ PHƯƠNG PHÁP QUÉT CỘT I. MỤC ĐÍCH Khảo phương pháp điều khiển quét hàng cho 2 màu, và một số linh kiện điều khiển II. THIẾT BỊ SỬ DỤNG Module LMD04, LMD09, dây nguồn, dây cáp tín hiệu Nguyên lí làm việc 42
  43. - Khối quét cột (QUETR, QUETG) làm nhiệm vụ tạo ra tín hiệu quét cho 16 chân đầu ra từ C1 đến C16. Các chân đầu ra sẽ lần lượt và luân phiên có tín hiệu mức cao, tại một thời điểm chỉ có một chân có tín hiệu mức cao, các chân còn lại mang tín hiệu mức thấp hết, sau một khoảng thời gian quy định sẽ chuyển sang chân tiếp theo, cứ như thế từ chân đầu tiên cho đến hết chân cuối cùng sau đó lại quay lại chân đầu tiên. Thời gian tồn tại trạng thái mức cao của mỗi chân đầu ra là bằng nhau nhưng có thể thay đổi được, tổng thời gian để quét hết một vòng 16 chân đầu ra cũng thay đổi được, do vậy phải quyết định được thời điểm bắt đầu chuyển trạng thái của một chân bất kỳ. Khôi quét hàng có một đầu vào tín hiệu đồng bộ SYN và một đầu vào xung nhịp OUTCLK. Đầu vào xung nhịp để quyết định thời điểm chuyển đổi trạng thái của đầu ra, còn đầu vào tín hiệu đồng bộ để xác định thời điểm bắt đầu một vòng quét. Tại thời điểm trước khi bắt đầu một vòng quét mới tín hiệu SYN băng một, ngay sau đó là một xung dương đưa vào làm cho đầu ra C1 chuyển trạng thái từ 0 sang 1, sau đó một khoảng thời gian bắt đầu chuyển trạng thái cho chân đầu ra tiếp theo (C2) tín hiệu SYN = 0, và liền đó là một xung dương được đưa vào đầu vào xung nhịp, tín hiệu SYN chỉ bằng khi bắt đầu một vòng quét mới còn lại toàn bộ thời gian quét luôn = 0. - Khối DEMCHOTA làm nhiệm vụ chứa dữ liệu của một cột và chốt dữ liệu tại đầu ra để hiển thị một cột, dữ liệu được đưa vào kiểu nối tiếp và xuất ra song song. Dữ liệu của A1 được đưa vào đầu tiên, dữ liệu A8 được đưa vào cuối. Khi 8 bit dữ liệu đã được đưa vào bộ ĐỆMCHÔTA, một xung dương OUTCLK được đưa vào để đẩy dữ liệu tới các chân đầu ra và giữ nguyên ở đó để cho một cột được hiển thị trong khoảng thời gian xác định trước khi hiển thị một hàng tiếp theo. Một khối này làm cả 3 việc tương đương 3 khối: ĐỆMCỘT, CHÔTCỘT, ĐỆMA trong lmd02. - Khối DEMR và DEMG làm nhiệm vụ khuyếch đại đảo cấp nguồn âm để hút dòng từ các Cathode chung của lmd. - Khối ma trận đèn led là một ma trân 8x8 điểm, mỗi điểm gồm 2 đèn led nối chung Anode các chân A của một hàng led được nối chung tạo nên 8 chân A chung, các chân Cathode của màu xanh của một cột được nối chung và tạo nên 8 chân G chung, các chân Cathode của màu đỏ của một cột được nối chung và tạo nên 8 chân R chung 43
  44. Để hiển thị toàn bộ ma trận led 16 cột sẽ lần lượt được luân phiên hiển thị từ cột C1 đến C16 tương ứng là G1 đến R8 rồi lặp lại. Tại một thời điểm chỉ có một cột được hiển thị. Trước thời điểm bắt đầu hiển thị cột đầu tiên, dữ liệu của cột đầu tiên được đưa vào bộ đệm chốt theo cách nối tiếp từ A1 vào trước rồi đến A8, xung nhịp INCLK được cấp từ bên ngoài vào để đọc mỗi bít dữ liệu tuần tự, khi đã đủ hết dữ liệu rồi thì xung nhịp không được phép làm việc nữa. Tiếp theo là hiển thị dữ liệu của cột đầu tiên, trước khi hiển thị tín hiệu SYN=1 được đưa vào, sau đó sẽ có một xung dương OUTCLK, xung dương OUTCLK sẽ đồng thời làm hai việc: 1 là đưa toàn bộ dữ liệu của cột đầu tiên mà đang tồn tại ở trong bộ ĐỆMCHÔT ra các chân A của led matrix, và 2 là đặt đầu ra C1 của khối quét cột lên mức cao để hiển thị cột đầu tiên. Vậy là dữ liệu của cột đầu tiên đã đầu tiên đã đến các chân A, C1 cũng đã được chuyển lên mức cao để đưa vào bộ đệm Kathode, quá trình bắt đầu hiển thị hàng đầu tiên đã hoàn tất, việc còn lại là của bộ đệm Cathode. Các bít 1 sẽ điều khiển cho Anode nối với nó sáng, bít 0 sẽ làm cho Anode tắt, bộ đệm Cathode sẽ hút dòng cho một cột. Trạng thái này được duy trì một khoảng thời gian xác định để các led của cột đầu tiên được hiển thị trong một khoảng thời gian xác định. Khi hết thời gian cho việc hiển thị cột đầu tiên thì việc hiển thị hàng thứ hai sẽ phải bắt đầu. Việc bắt đầu cho hiển thị cột thứ 2 cũng giống như cột thứ nhất chỉ có điểm duy nhất khác biệt là tín hiệu SYN đặt vào phải bằng 0 còn lại thì mọi thủ tục không có gì thay đổi. Do vậy khi có xung OUTCLK thì C1 sẽ ở mức thấp và mức cao trước đó của nó sẽ được dịch sang C2 làm cho K2 được nối đất và cột 44
  45. thứ hai sáng. Cột thứ hai cũng sẽ được hiển thị trong một khoảng thời gian xác định và kết thúc Quá trình được diễn ra lặp lại tương tự đối với các cột sau cho đến hết cột16. Các cột từ 1 đến 8 là các cột cho màu xanh, các cột từ 9 đến 16 là các cột cho màu đỏ, do vậy trong phương pháp này 8 cột màu xanh được hiển thị trước sau đó đến 8 cột màu đỏ. Kết thúc thời gian hiển thị cột 16 là hết một chu trình quét toàn bộ LMD, một chu trình quét mới sẽ lại bắt đầu. Quá trình cứ lặp đi lặp lại như thế, 8 cột màu xanh và 8 cột màu đỏ luân phiên nhau trong suốt thời gian hoạt động của LMD. III. THỰC HÀNH a. Kiểm tra LMD - LMD 2088DHG đã được gắn lên đế MATRIX1 - Không cấp nguồn cho bảng - Đưa điện áp 5V vào một chân A1 (dùng kẹp hoặc cầm tay) - Nối dây từ nguồn 0V nối tiếp với một đầu điện trở 100 Ohm (dùng kẹp hoặc cầm bằng tay) - Quẹt đầu còn lại của điện trở qua các chốt từ G1 đến R8, khi quẹt quan sát lmd sẽ thấy các đèn hàng 1 sáng đều lần lượt từ R1 đến G8 là tốt, chứng tỏ không LED nào hỏng và mạch nối đúng cấu hình chân - Lần lượt làm như thế với các chân từ A2 đến A8, để kiểm tra các cột còn lại của toàn bộ lmd b. Kiểm tra bộ đệm cực âm DEMG, DEMR - Giữ nguyên các linh kiện như phần trên - Kiểm tra đế của khối QUETG, QUETR, ĐỆMCHỐT không có gì - IC 2803 đã gắn lên đế của khối DEMG, DEMR - Cấp nguồn 5V và GND cho bảng. - Dùng một dây nguồn 5V chấm vào chốt A - Dùng một dây nguồn 5V khác quẹt qua các chốt từ G1 đến R8, khi quẹt quan sát thấy các LED của hàng tương ứng với A sáng đều là Khối ĐỆMG, DEMR tốt. c. Kiểm tra khối ĐỆMCHÔT - Giữ nguyên các linh kiện như phần trên. - Gắn IC 74595 lên đế của khối DEMCHOT - Gắn IC 74164 lên đế của khối QUETG, QUETR Chú ý: tất cả các IC phải cắm đúng chiều - Nối chốt nguồn 5V và GND cho bảng (chưa bật nguồn) - Khối điều khiển LMD09 đã có sẵn chương trình lmd04 trên chíp 89s52 - Nối cáp tín hiệu 4 chân từ bảng lmd09 tới lmd04 - Bật nguồn cho cả hai khối. - nếu không có gì sai trên LMD sẽ hiển thị chữ X với màu chữ và nền thay đổi 45
  46. - dùng máy hiện sóng quan sát tín hiệu tại các chốt DATA, INCLK, OUTCLK, SYN, R, G, H, A để thấy rõ quá trình làm việc của khối QUÉT HÀNG, ĐỆM HÀNG và toàn bộ hệ thống - Phân tích giản đồ xung của 4 chân tín hiệu DATA, INCLK, OUTCLK, SYN d. Sử dụng khối lmd09 lập trình điều khiển thay đổi nội dung hiển thị chữ 46
  47. BÀI 5: KHẢO SÁT MODULE HIỂN THỊ 16x32 ĐIỂM MỘT MÀU I. MỤC ĐÍCH Tìm hiểu thiết kế của module hiển thị 16x32 điểm, và phương pháp điều khiển. II. THIẾT BỊ SỬ DỤNG Module LMD05, LMD09, dây nguồn, dây cáp tín hiệu Nguyên lí làm việc LMD05 là mô hình của một module hiển thị, dùng để ghép nối nhiều module này với nhau để có một kích thước hiển thị lớn hơn. - Khối đệm hàng: làm nhiệm vụ tiếp nhận dữ liệu của một hàng. Khối đệm hàng gồm các IC U17, U18, U19, U20. Mỗi IC là bộ 8 DFF độc lập với nhau nhưng dùng chung đầu vào CLK, mỗi IC có 8 đầu vào D và 8 đầu ra Q. Bốn IC được mắc liên tiếp với nhau, 8 đầu ra của IC U17 nối với 8 đầu vào của U18, tương tự U19, U20 như hình vẽ. Đầu vào của khối đệm hàng là đầu vào của U17. Dữ liệu sẽ được đưa vào khối đệm hàng từng byte một (8 bit đồng thời) đi kèm với một xung INCLK. Khi dữ liệu đã có ở đầu vào DFF, một xung dương INCLK sẽ làm cho dữ liệu chuyển đến đầu ra và lưu ở đó, đầu ra đó lại được nối đến đầu vào của DFF tiếp theo đồng thời nối đến đầu ra của toàn khối đệm hàng. Khối đệm hàng có 8 đầu vào nối tiếp, 32 đầu ra dịch chuyển, và 8 đầu ra liên tiếp dành cho việc ghép nối với module tiếp theo. Dữ liệu được đưa vào 8 đầu vào xen kẽ với tín hiệu INCLK để đọc vào, và dịch chuyển trên 32 đầu ra. Hoạt động của khối tương tự như thanh ghi dịch. 8 bit dữ liệu đặt vào đầu vào, 1 xung dương inclk sẽ dịch 8 bit đó đến 8 đầu ra và nối đến bộ 8 đầu vào tiếp theo, sau 4 lần dịch thì ta đọc được 4 byte và có mặt trên 32 đầu ra. - Khối CHỐT HÀNG làm nhiệm vụ chốt dữ liệu của một hàng ở đầu vào đến đầu ra và giữ chúng ở đầu ra trong thời gian hàng đó hiển thị. - Khối ma trận đèn led là một ma đèn led 16 hàng, 32 cột bao gồm U1, U2, U3, U4, U5, U6, U7 và U8, mỗi một khối là một ma trận 8x8. Một hàng có 16 led, 16 kathode của một hang được nối chung với nhau thành một chân K chung. Một hàng có 32 led, và chia làm hai nửa, 16 cathode của mỗi nửa nối với nhau tạo nên một chân K chung. - Khối đệm Cathode: làm nhiệm vụ khuyếch đại đảo tín hiệu quét hàng để hút dòng cho cathode của các hàng. Đầu ra khối này được nối đến Cathode chung của các hàng (K). Khối này sử dụng 4 IC 2803 gồm U9, U10, U11 và U12, mỗi ic có 8 cổng ra, mỗi cổng ra nối đến một chân K, một chân K là nối chung của 16 cathode của một nửa hàng. U9, U10 dành cho nửa trái từ K1 đến K16, U11 và 12 cho nửa phải từ K17 đến K32. Toàn bộ khối này co 32 cổng ra chia cho cho nửa là 16 cho bên phải, 16 cho bên trai, tương ứng với 16 hàng cua ma trận led. Khối này có 16 đầu vào, tương ứng 16 hàng. Mỗi đầu vào nhận tín hiệu điều khiển của một hàng, để điều khiển hai đầu ra cho hai nửa của một hàng đó. Khối 47
  48. này đơn giản chỉ là khuyếch đại đảo 16 tín hiệu điều khiển nối đất cho hàng và tách hàng thành hai nửa để đủ công suất điều 48
  49. khiển. 49
  50. Các đầu vào: - 16 tín hiệu đầu vào điều khiển hàng tương ứng với 16 hàng của ma trận led - 8 đầu vào dữ liêu - INCLK, tín hiệu xung nhịp cho dữ liệu vào - OUTCLK, tín hiệu xung nhịp cho dữ liệu ra Các đầu ra: - 16 tín đầu ra điều khiển hàng tương ứng với 16 hàng của module tiếp theo - 8 đầu ra dữ liệu, để nối đến 8 đầu vào dữ liệu của module tiếp theo - INCLK, dùng cho module tiếp theo - OUTCLK, dùng cho module tiếp theo Các đầu ra của module này sẽ nối đến đầu vào của module tiếp theo khi ghép nối nhiều module khác nhau Để hiển thị toàn bộ ma trận led, 16 hàng sẽ lần lượt được luân phiên hiển thị từ hàng1 đến hàng 16 tương ứng là từ K1và K2_1 đến K16 và K2_16 rồi lặp lại. Tại một thời điểm chỉ có một hàng được hiển thị. Trước thời điểm bắt đầu hiển thị hàng đầu tiên, dữ liệu của hàng đầu tiên được đưa vào bộ đệm hàng theo trình tự 8 bit một như sau: (D25 D32), (D17 D24), (D9 D16), (D1 D8), với Dn là cho bit dữ liệu cho cột n. Dữ liệu của điểm nào phải được dịch đến đúng vị trí của điểm ấy trước khi chúng được chốt đến các chân A tương ứng. Khi có nhiều module được ghép nối với nhau thì có thể xem tương đương hoàn toàn với một module lớn với số điểm của một hàng dài hơn, và trình tự dịch dịch chuyển dữ liệu vẫn tương tự như trên, nghĩa là dữ liệu của byte cuối hàng sẽ đưa vào trước và dữ liệu byte đầu hàng đưa vào sau cùng. Xung nhịp INCLK được cấp từ bên ngoài vào để đọc mỗi byte dữ liệu đồng thời, khi đã đủ hết dữ liệu rồi thì xung nhịp không được phép làm việc nữa. Để hiển thị dữ liệu của hàng đầu tiên, sẽ phải có một xung dương OUTCLK để chốt toàn bộ dữ liệu của hàng đầu tiên mà đang tồn tại ở đầu vào bộ CHOTHANG ra các chân A của led matrix, và tín hiệu H1của đầu vào bộ đệm cathode ở mức cao để hiển thị cột đầu tiên, các đầu vào khác ở mức thấp, để bộ đệm cathode nối đất cho cathode của hàng đầu tiên. Khối đệm cathode sẽ khuyếch đại đảo tín hiệu H1=1 và làm cho đầu ra K1 nối đất, để hàng 1 được hiển thị, các hàng còn lại ở trạng thái trở kháng cao nên không sáng. Trạng thái này được duy trì một khoảng thời gian xác định để các led của hàng đầu tiên được hiển thị trong một khoảng thời gian xác định. Khi hết thời gian cho việc hiển thị hàng đầu tiên đầu tiên thì việc hiển thị hàng thứ hai sẽ phải bắt đầu. 50
  51. Việc bắt đầu cho hiển thị hàng thứ 2 hoàn toàn giống như hàng thứ nhất, khi ấy H1 trở về mức thấp, H2 sẽ chuyển lên mức cao, còn lại ở các đầu vào còn lại ở mức thấp hết. Hàng thứ hai cũng sẽ được hiển thị trong một khoảng thời gian xác định và kết thúc Quá trình được diễn ra lặp lại tương tự đối với các hàng sau cho đến hết hàng16. Kết thúc thời gian hiển thị hàng 16 là hết một chu trình quét toàn bộ LMD, một chu trình quét mới sẽ lại bắt đầu. III. THỰC HÀNH a. Kiểm tra LMD - 8 LMD 2088BS đã được gắn lên đế MATRIX1 - Không cấp nguồn cho bảng - Đưa điện áp 0V vào chân K1 (dùng kẹp hoặc cầm tay) - Nối dây từ nguồn 5V nối tiếp với một đầu điện trở 100 Ohm (dùng kẹp hoặc cầm bằng tay) - Quẹt đầu còn lại của điện trở qua các chốt từ A1 đến A32, khi quẹt quan sát lmd sẽ thấy các đèn hàng 1 sáng đều lần lượt từ A1 đến A32 là tốt, chứng tỏ không LED nào hỏng và mạch nối đúng cấu hình chân - Lần lượt làm như thế với các chân từ K2 đến K16, để kiểm tra các hàng còn lại của toàn bộ lmd b. Kiểm tra bộ đệm cực âm ULN2803 - Giữ nguyên các linh kiện như phần trên - IC ULN2803 đã gắn trên các khối U9, U10, U11, U12 - Nối đất cho bảng, không cấp nguồn. - Dùng một dây nguồn 5V chấm vào chốt A1 - Dùng một dây nguồn 5V khác quẹt qua các chốt từ H1 đến H16, khi quẹt quan sát thấy các LED của cột tương ứng với A1 sáng đều là U9, U10 tốt - Làm lại như trên với A32 để kiểm tra U11, U12. c. Khảo sát hoạt động của module - Tất cả các IC được gắn trên module Chú ý: tất cả các IC phải cắm đúng chiều - Nối chốt nguồn 5V và GND cho bảng (chưa bật nguồn) - Khối điều khiển LMD09 đã có sẵn chương trình lmd05 trên chíp 89s52 - Nối cáp tín hiệu 26 chân từ bảng lmd09 tới lmd05 - Bật nguồn cho cả hai khối. - nếu không có gì sai trên LMD sẽ hiển thị chữ như đã lập trình sẵn - dùng máy hiện sóng quan sát tín hiệu tại các chốt DATA, CLKIN, CLKOUT, D, A, H, K để thấy rõ trình tự của các tín hiệu điều khiển và dữ liệu d. Sử dụng khối lmd09 lập trình điều khiển thay đổi nội dung hiển thị chữ 51
  52. BÀI 6: KHẢO SÁT MODULE HIỂN THỊ 16x32 ĐIỂM HAI MÀU I. MỤC ĐÍCH Tìm hiểu thiết kế của module hiển thị 16x32 điểm hai màu, và phương pháp điều khiển. II. THIẾT BỊ SỬ DỤNG Module LMD06, LMD09, dây nguồn, dây cáp tín hiệu Nguyên lí làm việc LMD06 là mô hình của một module hiển thị, dùng để ghép nối nhiều module này với nhau để có một kích thước hiển thị lớn hơn. - Khối đệm hàng: làm nhiệm vụ tiếp nhận dữ liệu của một hàng, bao gồm 1 byte cho màu xanh xen kẽ một byte cho màu đỏ. Khối đệm hàng gồm các IC U21, U22, U23, U24, U25, U26, U27, U28. Mỗi IC là bộ 8 DFF độc lập với nhau nhưng dùng chung đầu vào CLK, mỗi IC có 8 đầu vào D và 8 đầu ra Q. Bốn IC được mắc liên tiếp với nhau, 8 đầu ra của IC U21 nối với 8 đầu vào của U22, tương tự đến U27, U280 như hình vẽ. Đầu vào của khối đệm hàng là đầu vào của U21. Dữ liệu sẽ được đưa vào khối đệm hàng từng byte một (8 bit đồng thời) đi kèm với một xung CLKIN. Khi dữ liệu đã có ở đầu vào DFF, một xung dương CLKIN sẽ làm cho dữ liệu chuyển đến đầu ra và lưu ở đó, đầu ra đó lại được nối đến đầu vào của DFF tiếp theo đồng thời nối đến đầu ra của toàn khối đệm hàng. Khối đệm hàng có 8 đầu vào nối tiếp, 64 đầu ra dịch chuyển, và 8 đầu ra liên tiếp dành cho việc ghép nối với module tiếp theo. Dữ liệu được đưa vào 8 đầu vào nối tiếp nhau 1 byte cho màu xanh và một byte cho màu đỏ, tín hiệu INCLK để đọc vào mỗi byte dữ liệu, và dịch chuyển trên 64 đầu ra. Hoạt động của khối tương tự như thanh ghi dịch. 8 bit dữ liệu đặt vào đầu vào, 1 xung dương CLKIN sẽ dịch 8 bit đó đến 8 đầu ra và nối đến bộ 8 đầu vào tiếp theo, sau 8 lần dịch thì ta đọc được 8 byte và có mặt trên 642 đầu ra. - Khối CHỐT HÀNG làm nhiệm vụ chốt dữ liệu của một hàng ở đầu vào đến đầu ra và giữ chúng ở đầu ra trong thời gian hàng đó hiển thị, bao gồm các IC U13, U14, U15, U16, U17, U18, U19, U20. - Khối ma trận đèn led là một ma đèn led 16x32 điểm, mỗi điểm có 1 đèn màu xanh và một đèn màu đỏ, bao gồm IC U1, U2, U3, U4, U5, U6, U7 và U8, (xem trên sơ đồ nguyên lí và sơ đồ mạch in) mỗi một khối U là một ma trận 8x8 điểm 2 màu 2088DHG. Một cột có 16 led, 16 anode của một cột được nối chung với nhau thành một chân A chung. Một hàng có 32 led, và chia làm hai nửa, 16 cathode của mỗi nửa nối với nhau tạo nên một chân K chung. - 52
  53. - Khối đệm Cathode: làm nhiệm vụ khuyếch đại đảo tín hiệu quét hàng để hút dòng cho cathode của các hàng. Đầu ra khối này được nối đến Cathode chung của các hàng (K). Khối này sử dụng 4 IC 2803 gồm U9, U10, U11 và U12, mỗi ic có 8 cổng ra, mỗi cổng ra nối đến một chân K, một chân K là nối chung của 16 cathode của một nửa hàng. U9, U10 dành cho nửa trái từ K1 đến K16, U11 và 12 cho nửa phải từ K17 đến K32. Toàn bộ khối này co 32 cổng ra chia cho cho nửa là 16 cho bên phải, 16 cho bên trai, tương ứng với 16 hàng cua ma trận led. Khối này có 16 đầu vào, tương ứng 16 hàng. Mỗi đầu vào nhận tín hiệu điều khiển của một hàng, để điều khiển hai đầu ra cho hai nửa của một hàng đó. Khối này đơn giản chỉ là khuyếch đại đảo 16 tín hiệu điều khiển nối đất cho hàng và tách hàng thành hai nửa để đủ công suất điều khiển. 53
  54. Các đầu vào: - 16 tín đầu vào điều khiển hàng tương ứng với 16 hàng của ma trận led - 8 đầu vào dữ liêu - INCLK, tín hiệu xung nhịp cho dữ liệu vào - OUTCLK, tín hiệu xung nhịp cho dữ liệu ra Các đầu ra: - 16 tín đầu ra điều khiển hàng tương ứng với 16 hàng của module tiếp theo - 8 đầu ra dữ liệu, để nối đến 8 đầu vào dữ liệu của module tiếp theo - INCLK, dùng cho module tiếp theo - OUTCLK, dùng cho module tiếp theo Các đầu ra của module này sẽ nối đến đầu vào của module tiếp theo khi ghép nối nhiều module khác nhau Để hiển thị toàn bộ ma trận led, 16 hàng sẽ lần lượt được luân phiên hiển thị từ hàng1 đến hàng 16 tương ứng là từ K1và K2_1 đến K16 và K2_16 rồi lặp lại. Tại một thời điểm chỉ có một hàng được hiển thị. Trước thời điểm bắt đầu hiển thị hàng đầu tiên, dữ liệu của hàng đầu tiên được đưa vào bộ đệm hàng theo trình tự 8 bit một như sau: (D25 D32), (D17 D24), (D9 D16), (D1 D8), với Dn là cho bit dữ liệu cho cột n. Dữ liệu của điểm nào phải được dịch đến đúng vị trí của điểm ấy trước khi chúng được chốt đến các chân A tương ứng. Khi có nhiều module được ghép nối với nhau thì có thể xem tương đương hoàn toàn với một module lớn với số điểm của một hàng dài hơn, và trình tự dịch dịch chuyển dữ liệu vẫn tương tự như trên, nghĩa là dữ liệu của byte cuối hàng sẽ đưa vào trước và dữ liệu byte đầu hàng đưa vào sau cùng. Xung nhịp INCLK được cấp từ bên ngoài vào để đọc mỗi byte dữ liệu đồng thời, khi đã đủ hết dữ liệu rồi thì xung nhịp không được phép làm việc nữa. Để hiển thị dữ liệu của hàng đầu tiên, sẽ phải có một xung dương OUTCLK để chốt toàn bộ dữ liệu của hàng đầu tiên mà đang tồn tại ở đầu vào bộ CHOTHANG ra các chân A của led matrix, và tín hiệu H1của đầu vào bộ đệm cathode ở mức cao để hiển thị cột đầu tiên, các đầu vào khác ở mức thấp, để bộ đệm cathode nối đất cho cathode của hàng đầu tiên. Khối đệm cathode sẽ khuyếch đại đảo tín hiệu H1=1 và làm cho đầu ra K1 nối đất, để hàng 1 được hiển thị, các hàng còn lại ở trạng thái trở kháng cao nên không sáng. Trạng thái này được duy trì một khoảng thời gian xác định để các led của hàng đầu tiên được hiển thị trong một khoảng thời gian xác định. Khi hết thời gian cho việc hiển thị hàng đầu tiên đầu tiên thì việc hiển thị hàng thứ hai sẽ phải bắt đầu. 54
  55. Việc bắt đầu cho hiển thị hàng thứ 2 hoàn toàn giống như hàng thứ nhất, khi ấy H1 trở về mức thấp, H2 sẽ chuyển lên mức cao, còn lại ở các đầu vào còn lại ở mức thấp hết. Hàng thứ hai cũng sẽ được hiển thị trong một khoảng thời gian xác định và kết thúc Quá trình được diễn ra lặp lại tương tự đối với các hàng sau cho đến hết hàng16. Kết thúc thời gian hiển thị hàng 16 là hết một chu trình quét toàn bộ LMD, một chu trình quét mới sẽ lại bắt đầu. III. THỰC HÀNH a. Kiểm tra LMD - 8 LMD 2088BS đã được gắn lên đế MATRIX1 - Không cấp nguồn cho bảng - Đưa điện áp 0V vào chân K1 (dùng kẹp hoặc cầm tay) - Nối dây từ nguồn 5V nối tiếp với một đầu điện trở 100 Ohm (dùng kẹp hoặc cầm bằng tay) - Quẹt đầu còn lại của điện trở qua các chốt từ A1 đến A32, khi quẹt quan sát lmd sẽ thấy các đèn hàng 1 sáng đều lần lượt từ A1 đến A32 là tốt, chứng tỏ không LED nào hỏng và mạch nối đúng cấu hình chân - Lần lượt làm như thế với các chân từ K2 đến K16, để kiểm tra các hàng còn lại của toàn bộ lmd b. Kiểm tra bộ đệm cực âm ULN2803 - Giữ nguyên các linh kiện như phần trên - IC ULN2803 đã gắn trên các khối U9, U10, U11, U12 - Nối đất cho bảng, không cấp nguồn. - Dùng một dây nguồn 5V chấm vào chốt A1 - Dùng một dây nguồn 5V khác quẹt qua các chốt từ H1 đến H16, khi quẹt quan sát thấy các LED của cột tương ứng với A1 sáng đều là U9, U10 tốt - Làm lại như trên với A32 để kiểm tra U11, U12. c. Khảo sát hoạt động của module - Tất cả các IC được gắn trên module Chú ý: tất cả các IC phải cắm đúng chiều - Nối chốt nguồn 5V và GND cho bảng (chưa bật nguồn) - Khối điều khiển LMD09 đã có sẵn chương trình lmd05 trên chíp 89s52 - Nối cáp tín hiệu 26 chân từ bảng lmd09 tới lmd05 - Bật nguồn cho cả hai khối. - nếu không có gì sai trên LMD sẽ hiển thị chữ hình mũi tên - dùng máy hiện sóng quan sát tín hiệu tại các chốt DATA, CLKIN, CLKOUT, D, A, H, K để thấy rõ trình tự của các tín hiệu điều khiển và dữ liệu d. Sử dụng khối lmd09 lập trình điều khiển thay đổi nội dung hiển thị chữ 55
  56. BÀI 7: KHẢO SÁT HOẶT ĐỘNG CỦA BẢNG TIN ĐIỆN TỬ I. MỤC ĐÍCH Làm quen với bảng tin điện tử vừa, làm quen với phần mềm điều khiển bảng tin điện tử từ máy tính. Thực hành cập nhật nội dung, thay đổi font chữ cho bản tin điện tử bằng phần mềm trên máy tính. II. THIẾT BỊ SỬ DỤNG Module LMD07 (bảng tin điện tử), máy tính có cài phần mềm LMD Controller III. THỰC HÀNH 1. Bật bảng tin điện tử Ngay khi vừa cắm nguồn bảng tin sẽ hiển thị nội dung đã lưu từ trước đó với hiệu ứng cuộn ngang. Nội hiển thị này được lưu từ trước đó trong Flash ROM của bộ điều khiển (do lần sử dụng trước đó người dùng đã dùng lệnh Save), khi mới cấp nguồn chương trình sẽ Load nội dung này lên theo trình tự làm việc của phần mềm và thực hiện hiệu ứng cuộn ngang (Roll). 2. Khởi động phần mềm điều khiển Sau khi kích đúp vào file LMDControl.exe bạn sẽ thấy giao diện chương trình như sau: Từ trên xuống dưới giao diện sử dụng của phần mềm gồm những thành phần sau: - Cửa sổ Preview: là của sổ màu đen để xem bản tin hiển trước khi cho hiển thị trên bảng điện tử 57
  57. - Khung Display Option gồm có: Nút lệnh Font dùng để chọn font chữ, và ô Message là ô nhập nội dung bản tin hiển thị. Nut lênh Font sẽ cho phép chọn Font, Size, Style của bản tin sẽ hiển thị trên bảng tin điện tử - Ô Dimension Inf: là ô thông báo kết quả kích thước của bản tin dự đinh hiển thị, kích thước được tính bằng số điểm ảnh của chiều cao và rộng - Khung Preview gồm: Nut lênh Capture là lệnh thực hiện chuyển đoạn văn bản thành bức ảnh với các điểm ảnh đơn giản (chỉ có màu đỏ và màu đen). Nut lệnh Preview là lênh xem trước bản tin trên máy trước khi cho hiển thị trên bảng tin điện tử. Ô Top Cutting để cắt đi phần trên của bức ảnh bằng số dòng điểm ảnh hiện tại của ô. Ô Bottom Cutting để cắt đi phần dưới của bức ảnh theo số dòng điểm ảnh hiện tại của ô. Ô Threshold dùng để đặt ngưỡng cho chuyển đổi một điểm ảnh nhiều mức thành một điểm ảnh đơn giản (0 hoặc 1). - Nút lệnh Bit2Byte: mảng bít các điểm ảnh đơn giản thành mảng byte, thực chất là ghép 8 bit thành một byte để truyền đi qua công COM máy tính theo từng byte - Nut lênh Out Array: là lệnh Truyền Mảng các Byte xuống bảng tin điện tử, lệnh này truyền mảng byte là kết quả chuyển đổi và mã hóa bản tin với định dạng yêu cầu trước đó xuống bảng tin điện tử và yêu cầu bảng tin điện tử hiển thị cố định nội dung của bản tin này (không thực hiện hiệu ứng gì) - Nút lệnh Roll - Stop dừng hiệu ứng - Save lưu trạng thái hiện tại vào ROM - Load nạp lại nội dung đã lưu 3. Thay đổi nội dung, lưu nội dung cho bảng tin Để thay đổi nội dung làm như sau: - Sau khi khởi động động phần mềm, ô message có nội dung là “Hello! LMD” kích chuột vào ô message gõ nội dung cần hiển thị (không được bỏ qua, bắt buộc phải gõ gì đó dù một dấu cách rồi lại xóa đi) - Kích vào Capture, Preview, cửa sổ Preview sẽ hiển thị như hình dưới với thông tin về kích thước ảnh 58
  58. - Nối dây truyền thông RS232 của bảng tin điện tử với cổng COM của máy tinh - Kích Bit2Byte, Out Array, Bảng điện tử sẽ hiển thị nội dung như Preview - Kích Roll, để thực hiện hiệu ứng cuộn ngang - Kích Stop để thực hiện dừng hiệu ứng - Kích Save để lưu trạng thái hiện tại của bảng vào ROM (trạng thái này sẽ được giữ lại trong ROM ngay cả khi mất điện) - Kích Load để lấy lại trạng thái đã ghi vào ROM trước đó Để thay đổi Font làm như sau: - Kích vào Font sẽ xuất hiện cửa sổ như hình dưới đây: 59
  59. - Chọn Font, Font style, Size để thay đôi font, kiểu cách, và cơ chữ như mong muốn, sau đó chọn OK - Kích Capture, Preview, xem lại kết quả chỉnh sửa và thông báo về kích thước trong ô Dimension Inf - Để hiển thị kết quả mới chọn Bit2byte, Out Array - Nếu sau khi capture thông báo kích thước ảnh lớn hơn kích thước bảng tin hiện có thì nội dung hiển thị sẽ bị mất đi phần trên của bức ảnh xem trong Preview - Dùng các điều chỉnh Top cutting, và Bottom Cutting để cắt đinh phần trên và dưới của bức ảnh - kích Capture để xem thông báo về kích thước ảnh sau mỗi lần chỉnh sửa, lưu ý kích thước thật của bảng hiện có là cao 16 điểm và có thể hiển thị bản tin rộng 256 điểm, một kích thước ảnh rộng hơn sẽ hiển thị bị mất đi phần trên và phần bên phải. - kich Preview để xem qua Chú ý sau mỗi lần chỉnh sửa nội dung phải kích vào Capture để có nội dung mới, chọn Preview để xem lại nội dung mới, chọn Bit2Byte và Out Array để truyền bản tin ra bảng điện tử Phụ Lục 60
  60. Mã nguồn chương trình Bài 1: /* Chuong trinh mau lmd1 NTL – viet tren Keil C */ #include sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich sbit DuLieu = 0x97; sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang void main (void){ char data X[8] = {0xC0,0xD2,0xDA,0xD6,0xD2,0xC0,0xFC,0xFC};// Chữ L và n char TrungGian; int i,j; P1 = 0; while (1){ DongBo = 1; for (i = 0; i <= 7; i++ ) { TrungGian = X[i]; for (j=0; j<=7; j++) { DuLieu = TrungGian%2; //phat bit LSB TrungGian = TrungGian/2; //dich phai clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich clkIN = 0; } clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo DongBo = 0; //tat xung dong bo o cac hang sau } } } Bài 2: 61
  61. /*chuong trinh thu nghiem lmd2 dung hai ngat ngoai de dieu khien thay doi du lieu trong mang hien thi. khi co ngat o chan 12 hien thi chu A khi co ngat o chan 13 hien thi chu Z mang char dc khai bao o ngoai Viet tren Keil C NTL */ #include sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich sbit DuLieu = 0x97; sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang sbit Ngat = 0xAF; //EA sbit Ngatchan12 = 0xA8; //EX0 sbit Ngatchan13 = 0xAA; //EX1 char data X[8] = {0x41,0x63,0x36,0x1c,0x1c,0x36,0x63,0x41}; //du lieu hien thi /* */ #pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac // ham duoc goi tu dich vu ngat static void XuLiNgatChan12 (void) { //chuyen du lieu thanh chu A X[0] = 0x10; //nap du lieu chu A cho bang X X[1] = 0x38; X[2] = 0x6c; X[3] = 0xc6; X[4] = 0xfe; X[5] = 0xc6; X[6] = 0xc6; X[7] = 0xc6; } static void XuLiNgatChan13 (void) { //chuyen du lieu thanh chu Z X[0] = 0x7f; //nap du lieu chu Z cho bang X X[1] = 0x7f; X[2] = 0x06; X[3] = 0x0c; X[4] = 0x18; X[5] = 0x30; X[6] = 0x7f; X[7] = 0x7f; 62
  62. } #pragma AREGS /* */ void ngatchan12 (void) interrupt 0 using 1{ XuLiNgatChan12 (); //hien thi chi A } void ngatchan13 (void) interrupt 2 using 1{ XuLiNgatChan13 (); //hien thi chi Z } /* */ void main (void){ char TrungGian; int i,j; Ngat = 1; //cho phep ngat toan cuc Ngatchan12 = 1;//cho phep ngat chan 12 Ngatchan13 = 1;//cho phep ngat chan 13 P1 = 0; while (1){ DongBo = 1; for (i = 7; i >= 0; i ) { TrungGian = X[i]; for (j=0; j<=7; j++){ DuLieu = TrungGian%2; //phat bit LSB TrungGian = TrungGian/2; //dich phai clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich clkIN = 0; } clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo DongBo = 0; //tat xung dong bo o cac hang sau } } } Bài 3: /*chuong trinh thu nghiem lmd3 hien thi chu A 63
  63. NTL */ #include //cac chan tin hieu dieu khien sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich sbit DuLieu = 0x97; sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang //cac bit cho phep ngat sbit Ngat = 0xAF; //EA sbit Ngatchan12 = 0xA8; //EX0 sbit Ngatchan13 = 0xAA; //EX1 sbit NgatDinhthoi0 = 0xA9; // bang du lieu khoi tao //day la bang du lieu toan cuc char data X[24] = { 0xFF,0xEF,0xD7, 0xBB,0x83,0xBB, 0xBB,0xFF,0xFF, 0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF }; int hang,cot; bit msb,lsb; void main (void){ char TrungGian; int i,j; hang = 0; cot = 2; P1 = 0; while (1) { DongBo = 1; for (i = 0; i <= 23; i++ ) { TrungGian = X[i]; for (j=0; j<=7; j++) { DuLieu = TrungGian%2; //phat bit LSB TrungGian = TrungGian/2; //dich phai clkIN = 1; //tao mot xung vuong kich vao dem ghi dich clkIN = 0; } clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo 64
  64. DongBo = 0; //tat xung dong bo o cac hang sau } } } Bài 4: /*chuong trinh thu nghiem lmd4 */ #include //cac chan tin hieu dieu khien sbit clkIN = 0xB3; sbit DuLieu = 0x97; sbit clkOUT = 0xB4; sbit DongBo = 0xB5; //cac bit cho phep ngat // bang du lieu khoi tao //day la bang du lieu toan cuc char data X[64] = { 0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00, 0x80,0x01,0x00,0x00, 0xc0,0x01,0x00,0x00, 0xe0,0x01,0x00,0x00, 0xb0,0xff,0xff,0x3f, 0x98,0xff,0xff,0x3f, 0x0c,0x00,0x00,0x30, 0x0c,0x00,0x00,0x30, 0x98,0xff,0xff,0x3f, 0xb0,0xff,0xff,0x3f, 0xe0,0x01,0x00,0x00, 0xc0,0x01,0x00,0x00, 0x80,0x01,0x00,0x00, 0x00,0x01,0x00,0x00, 0x00,0x00,0x00,0x00 }; /* */ /*sau day la chuong trinh chinh 1. NHIEM VU: - khai bao, khoi tao khoi tao mang hien thi khoi tao cac biet dieu khien chi so mang de phuc vu xuat mang khoi tao tin hieu dieu khien - dieu khien xuat mang theo vong lap vo han 2. GIAI THUAT 3. Danh sach cac bien, du lieu tac dong - du lieu toan cuc + mang du lieu hien thi: X + Cac chan tin hieu dieu khien port1: Dulieu chan dieu khien xung dich vao bo dem: clkIN chan dieu khien xung dich ra bo dem: clkOUT 65
  65. chan tao xung dong bo hang dau tien: DongBo - Du lieu cuc bo Bien trung gian xac dinh tri so mang: chiso bien dung de dem so byte trong 1 hang, dung cho viec phat 1 hang: k bien dung de dem so hang trong anh, dung cho viec phat 1 hang: i */ void main (void){ int i,k,chiso; while (1){ DongBo = 1; for (i = 0; i //cac chan tin hieu dieu khien sfr DuLieu = 0x90; //chan 1,2,3,4,5,6,7,8 cong P1 cua 8951 duong dl song song noi den dau vao bo dem ghi dich 66
  66. sbit clkIN = 0xA0; //chan 21 8951 tao xung dich vao bo dem ghi dich sbit clkOUT = 0xA1; //chan 22 8951 tao xung xuat ra dong thoi cua bo dem sbit DongBo = 0xA2; //chan 23 8951 tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang //cac thanh ghi va bit chuc nang dac biet sfr CheDoDinhThoi = 0x89; sfr ByteThapDinhThoi0 = 0x8A; sfr ByteCaoDinhThoi0 = 0x8C; sbit BatDinhThoi0 = 0x8C; //cac bit cho phep ngat sbit Ngat = 0xAF; //EA sbit NgatDinhthoi0 = 0xA9; //DINH NGHIA CAC THAM SO KICH THUOC BANG, THOI GIAN QUET #define BeRong 4 //so byte cua mot hang #define ChieuCao 16 //so hang #define SoByteMang 64 //so byte cua mang hien thi X #define SoLanNgat 5 //so lan say ra ngat dinh thoi #define SoDemDinhThoi 256 //so xung nhip dinh thoi can dem // bang du lieu khoi tao // 16 11 1985 char data X[SoByteMang] = { 0x00,0x00,0x00,0x00, 0x00,0x00,0x06,0x00, 0x00,0x00,0x49,0x00, 0xFF,0xFF,0x49,0xFF, 0x40,0x40,0x49,0x40, 0x20,0x20,0x25,0x20, 0x00,0x00,0x1E,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x8c,0x6E,0x7C,0x00, 0x92,0x91,0xA2,0x00, 0xA1,0x91,0x91,0xFF, 0xA1,0x91,0x91,0x40, 0xA1,0x91,0x91,0x20, 0x72,0x6E,0x62,0x00, 0x00,0x00,0x00,0x00 }; /* */ int ChiSo,n;//chi so mang va bien n de dem so lan say ra ngat /* */ #pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac // ham duoc goi tu dich vu ngat /* */ static void XuLiNgatDinhThoi0 (void) //xuat ra mot hang thu x /*day la chuong chinh con phuc vu ngat dinh thoi 0 nhiem vu cua chuong trinh con nay la: - dem so lan say ra ngat dinh thoi qua bien n - khi n < 100 thi tang len 1 ket thuc - khi n = 100 thi xuat ra hang ket thuc viec xuat ra mot hang dua vao bien ChiSo. bien ChiSo ban dau dc main gan la 0, la chi so cua byte dau hang 67
  67. + kietm tra neu la hang dau tien (n==0) thi DongBo=0, nguoc lai =1 + su dung vong lap voi so vong la so byte cua hang moi chu trinh lap se xuat ra mot byte, va clkIN, tang ChiSo + ket thuc vong lap thi xuat ra mot xung chot clkOUT, va chi so da tro den hang tiep theo + kiem tra neu xuat het mang (chiso=SoByteMang) thi gan lai chiso=0 */ { int k; //bien dem so byte trong mot hang if (n==SoLanNgat) //neu ngat SoLanNgat lan thi { n=0; //dem lai tu 0 voi lan sau if (ChiSo==0) {DongBo = 1;}//DongBo=1 o hang dau tien else {DongBo = 0;}// =0 cac hang sau for (k=1; k (SoByteMang-1)) {ChiSo=0;} } else //neu n < 100 thi { n++;//tiep tuc dem so lan ngat } } #pragma AREGS /* */ void NgatDinhThoi0 (void) interrupt 1 using 1 { XuLiNgatDinhThoi0 (); //dich 1 cot tu trai qua phai } /* */ /*sau day la chuong trinh chinh 1. NHIEM VU: + khoi tao cac gia tri bien: khoi tao bien dieu khien chi so mang ChiSo de phuc vu xuat mang khoi tao bien dem n de tinh toc do ngat + thiet lap cac che do ngat va dinh thoi cho phep ngat toan cuc cho phep ngat dinh thoi 2. GIAI THUAT 3. Danh sach cac bien, du lieu tac dong Bit cho phep ngat toan cuc: Ngat Bit cho phep ngat dinh thoi 0: Ngatdinhthoi0 Bien trung gian xac dinh tri so mang: chiso Bien dem so lan say ra ngat: n Gia tri thanh ghi dinh thoi */ void main (void){ //khoi tao ChiSo = 0; //khoi tao chi so cua mang 68
  68. n = 0; //khoi tao bien dem so lan ngat //thiet lamp che do cho dinh thoi CheDoDinhThoi = (CheDoDinhThoi & 0xf0) | 0x02; // thiet lap che do tu dong lap lai 8 bit cho T0 ByteCaoDinhThoi0 = 256 - SoDemDinhThoi; // nap lai cho TL0 de dem SoDemDinhThoi xung nhip he thong ByteThapDinhThoi0 = ByteCaoDinhThoi0; //khoi dong he thong Ngat = 1; //cho phep ngat toan cuc NgatDinhthoi0 = 1;//cho phep ngat dinh thoi 0 BatDinhThoi0 = 1; // khoi dong dinh thoi 0 //doi while (1); } Bài 6: /*chuong trinh thu nghiem lmd6 "CHAY TOT !!!" dieu khien mach quet led co so do phan cung nhu dieu khien quet led bang ngat dinh thoi tao hieu ung dich chuyen ngang moi khi say ra ngat dinh thoi 0 chuong trinh se xuat ra mot hang dua vao bien ChiSo va chot giu. cu the viec do la - xuat ra lien tuc cac byte cua hang do xe ke xung clkIN - sau khi xuat het cac byte thi xuat ra mot xung clkOUT ChiSo la bien toan cuc dc khoi tao do chuong trinh chinh neu ChiSo bang 0, tuc la hang dau tien dc xuat, khi ay xuat ra DongBo = 1 neu ChiSo khac 0 thi xuat ra mot ra DongBo = 0 sau khi xuat het so byte kiem tra neu ChiSo = 63 thi dua tro ve 0 cong P1 xuat ra song song DuLieu mang char dc khai bao o ngoai */ #include //cac chan tin hieu dieu khien sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich sfr DuLieu = 0x90; sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang //cac thanh ghi va bit chuc nang dac biet sfr CheDoDinhThoi = 0x89; sfr ByteThapDinhThoi0 = 0x8A; 69
  69. sfr ByteCaoDinhThoi0 = 0x8C; sbit BatDinhThoi0 = 0x8C; //cac bit cho phep ngat sbit Ngat = 0xAF; sbit NgatDinhthoi0 = 0xA9; //DINH NGHIA CAC THAM SO KICH THUOC BANG, THOI GIAN QUET #define BeRong 4 //so byte cua mot hang #define ChieuCao 16 //so hang #define SoByteMang 64 //BeRong * ChieuCao = so byte cua mang hien thi X #define NgatDu 5 //so lan say ra ngat dinh thoi #define SoDemDinhThoi 256 //so xung nhip dinh thoi can dem // bang du lieu khoi tao char code KhoiTao[SoByteMang] ={0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00, 0x80,0x01,0x00,0x00, 0xc0,0x01,0x00,0x00, 0xe0,0x01,0x00,0x00, 0xb0,0xff,0xff,0x3f, 0x98,0xff,0xff,0x3f, 0x0c,0x00,0x00,0x30, 0x0c,0x00,0x00,0x30, 0x98,0xff,0xff,0x3f, 0xb0,0xff,0xff,0x3f, 0xe0,0x01,0x00,0x00, 0xc0,0x01,0x00,0x00, 0x80,0x01,0x00,0x00, 0x00,0x01,0x00,0x00, 0x00,0x00,0x00,0x00 }; char idata X[SoByteMang]; char bdata ThanhGhiTrungGian; //day la thanh ghi trung gian truy cap bit sbit BitThapNhat= ThanhGhiTrungGian ^ 0; sbit BitCaoNhat = ThanhGhiTrungGian ^ 7; bit BitRa;//bit chua bit di ra tu bit dau hang bit BitVao;//bit chua bit di Vao cuoi hang /* */ int ChiSo,DemSoLanNgatT0;//chi so mang va bien n de dem so lan say ra ngat int SoDongDaXuat; /* */ #pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac // ham duoc goi tu dich vu ngat /* */ static void XuLiNgatDinhThoi0 (void) //xuat ra mot hang thu x /*day la chuong chinh con phuc vu ngat dinh thoi 0 nhiem vu cua chuong trinh con nay la: - dem so lan say ra ngat dinh thoi qua bien n 70
  70. - khi n (SoByteMang-1)) {ChiSo=0;} } } #pragma AREGS /* */ void NgatDinhThoi0 (void) interrupt 1 using 1 { XuLiNgatDinhThoi0 (); //dich 1 cot tu trai qua phai } /* */ void Quay1DiemCho1Hang (int SoHang)//so hang bat dau tu 1 den 16 /*day la thu tuc dich chuyen mot hang thu tuc nay se lam cho mot hang quay di mot cot theo giai thuat sau: - ve dau hang - chep bit dau hang - thuc hien vong lap quay cac byte tu cuoi hang den dau hang co kem theo bit dau hang + chep byte vao ThanhGhiTrungGian + dich trai (*2) + BitVao->BitThapNhat + BitRa ->BitVao + nhay den byte tiep theo thuc hien tiep chu trinh */ { int SoByte; ThanhGhiTrungGian = X[SoHang*BeRong - 1]; //chep Byte dau hang vao ThanhGhiTrungGian 71
  71. BitVao = BitCaoNhat; //chep bit dau hang vao BitTrungGian for (SoByte=0; SoByte<BeRong; SoByte++)//thuc hien vong lap quay cac byte tu cuoi { //hang den dau hang co kem theo bit dau hang ThanhGhiTrungGian = X[(SoHang-1)*BeRong + SoByte];//chep byte dang tro BitRa = BitCaoNhat; //chep bit Cao nhat truoc khi dich ThanhGhiTrungGian *=2; //dich trai if (BitVao) {ThanhGhiTrungGian++;} BitVao = BitRa; X[(SoHang-1)*BeRong + SoByte] = ThanhGhiTrungGian; } } /* */ /*sau day la chuong trinh chinh 1. NHIEM VU: + khoi tao cac gia tri bien: khoi tao bien dieu khien chi so mang ChiSo de phuc vu xuat mang khoi tao bien dem n de tinh toc do ngat + thiet lap cac che do ngat va dinh thoi cho phep ngat toan cuc cho phep ngat dinh thoi 2. GIAI THUAT 3. Danh sach cac bien, du lieu tac dong Bit cho phep ngat toan cuc: Ngat Bit cho phep ngat dinh thoi 0: Ngatdinhthoi0 Bien trung gian xac dinh tri so mang: chiso Bien dem so lan say ra ngat: n Gia tri thanh ghi dinh thoi */ void main (void) { int Hang;//bien mang mang chi so hang //khoi tao SoDongDaXuat=0; ThanhGhiTrungGian = 0; ChiSo = 0; //khoi tao chi so cua mang DemSoLanNgatT0 = 0; //khoi tao bien dem so lan ngat for (Hang=0; Hang<=SoByteMang; Hang++)//nap du lieu khoi tao {X[Hang] = KhoiTao[Hang];} //thiet lamp che do cho dinh thoi CheDoDinhThoi = (CheDoDinhThoi & 0xf0) | 0x02; // thiet lap che do tu dong lap lai 8 bit cho T0 ByteCaoDinhThoi0 = 256 - SoDemDinhThoi; // nap lai cho TL0 de dem SoDemDinhThoi xung nhip he thong ByteThapDinhThoi0 = ByteCaoDinhThoi0; //khoi dong he thong Ngat = 1; //cho phep ngat toan cuc NgatDinhthoi0 = 1;//cho phep ngat dinh thoi 0 BatDinhThoi0 = 1; // khoi dong dinh thoi 0 //vong lap thuc hien hieu ung dich chuyen while (1) { if (SoDongDaXuat==48) //neu da dc 48 dong 72
  72. { SoDongDaXuat=0; //xoa for ( Hang=1; Hang<=16; Hang++) //dich ca hinh di 1 cot {Quay1DiemCho1Hang(Hang);} }; }; } 73
  73. MỤC LỤC PHẦN I: MÔ TẢ THIẾT BỊ 74 I. GIỚI THIỆU HỆ THỐNG 75 II. MÔ TẢ CÁC THÀNH PHẦN CỦA HỆ THỐNG 77 DIP SWITCH (DIPSW) 77 JUMPERs 77 MCU SOCKETs 79 POWER SUPPLY 82 ON-BOARD PROGRAMMER 83 REAL TIME CLOCK (RTC) DS1307 84 RS-232 COMMUNICATION 85 USB COMMUNICATION 86 PS/2 COMMUNICATION 87 DS1820 DIGITAL THERMOMETER 88 A-D CONVERTER INPUT 89 DIRECT PORT ACCESS 90 PHẦN II: THỰC HÀNH 91 BÀI THỰC HÀNH SỐ 1: SỬ DỤNG PHẦN MỀM WINPIC800 TRUY CẬP CỔNG VÀO RA SỐ VÀ ĐIỀU KHIỂN LED 7 DOẠN 91 I. MỤC ĐÍCH 91 II. CHUẨN BỊ 91 III. THỰC HÀNH 91 BÀI THỰC HÀNH SỐ 2: BIẾN ĐỔI ADC, ĐO ĐIỆN ÁP, NHIỆT ĐỘ HIỂN THỊ TRÊN LED VÀ TRUYỀN THÔNG QUA RS232 99 I. MỤC ĐÍCH 99 II. CHUẨN BỊ 99 III. THỰC HÀNH 99 BÀI THỰC HÀNH SỐ 3: ĐỌC PHÍM BẤM, ĐIỀU KHIỂN RELAY VÀ ĐỌC THỜI GIAN THỰC DS1307 HIỂN THỊ TRÊN LEB 7 ĐOẠN 103 I. MỤC ĐÍCH 103 II. CHUẨN BỊ 103 III. THỰC HÀNH 103 PHỤ LỤC: MỘT SỐ MÃ NGUỒN MẪU 32 PHẦN I: MÔ TẢ THIẾT BỊ 74
  74. I. GIỚI THIỆU HỆ THỐNG HẾ THỐNG ĐÀO TẠO PIC (PIC.TS) là board mạch đầy đủ các công cụ cho việc học tập và nghiên cứu vi điều khiển PIC của Microchip. Sinh viên dễ dàng thực hành, kiểm tra và đánh giá khả năng của vi điều khiển PIC. PIC.TS cho phép PIC giao tiếp với một số lượng lớn các thiết bị ngoại vi và mạch ngoài. Với PIC.TS, sinh viên không còn lo lắng về phần cứng mà chỉ cần tập trung vào việc phát triển phần mềm. Trên PIC.TS, mỗi thành phần được in thẳng trên board mạch rất rõ ràng đánh dấu sự mô tả kết nối đến các thiết bị cùng một vài ghi chú hữu ích. Hình 1.1 - PIC.TS 75
  75. Hình 1.2 - Sơ đồ nguyên lí PIC.TS 76
  76. II. MÔ TẢ CÁC THÀNH PHẦN CỦA HỆ THỐNG 1. DIP SWITCH (DIPSW) PIC.TS có đặc tính là kết nối với nhiều thiết vị ngoại vi. Để kết nối những thiết bị này trước khi lập trình, cần phải kiểm tra và thiết đặt của các jumper và DIPSW. DIPSW là linh kiện tập hợp nhiều switch có 2 vị trí ON và OFF dùng để nối hoặc ngắt giữa 2 chân với nhau. PIC.TS có 2 DIPSW. DIPSW1 cho phép kết nối giữa các port của PIC (PORTA và PORTE) với điện trở pull-up/down bên ngoài. Các điện trở pull-up/down phải được tách rời ra khi các chân của các port này dùng làm ngõ vào Analog vì làm ảnh hưởng đến mức điện áp đầu vào. Khi các chân của PORTA và PORTE sử dụng như digital inputs/outputs thì những điện trở pull-up/down lại thích hợp và được cho phép. Sáu switches đầu của DIPSW2 cho phép kết nối tới PortA để điều khiển 6 LED 7 đoạn (7-Segment display). Nếu không cần 7-seg Display trong bài tập thì các SW này cần phải OFF. Hai switches đầu của SW2 cho phép kết nối DS1307 đến chân RC4 và RC3 của PIC. Khi không có nhu cầu sử dụng DS1307 thì nên đưa các SW này về vị trí OFF. Hình 1.3 - Dip switch 77
  77. 2. JUMPERs Jumpers cũng giống như switches, có thể ngắt hoặc nối hai điểm với nhau. Bên trong vỏ bọc nhựa của jumper là một lá kim loại dùng để tiếp xúc. Nó sẽ nối (dẫn điện) nếu jumper này được gắn vào hai pin đang bị ngắt. Ví dụ: Hai biến trở trong mạch ADC được ngắt rời với RA2 và RA3. Để nối chúng với nhau cần sử dụng jumper. Hình 1.4 - Jumper như một Switch Các jumper cũng thường được sử dụng để lựa chọn giữa hai kết nối. Như minh họa trong hình dưới, điểm giữa được nối với bên phải hoặc bên trái tuỳ thuộc vào vị trí của jumper. Hình 1.5 – Lựa chọn kết nối với jumper 78
  78. 2. MCU SOCKETs PIC.TS được thiết kế sử dụng cho các loại vi điều khiển PIC 16F và 18F. Người sử dụng có thể dùng các PIC khác nhau thích hợp cho công việc của mình có các kiểu chân phù hợp với socket DIP40, DIP28, DIP18. Hình 1.6 - MCU socket Chú ý: Tất cả các sockets trên được nối song song với nhau, vì vậy trong cùng một thời điểm bạn chỉ có thể sử dụng được một vi điều khiển PIC mà thôi. Chân MCU được sử dụng để nối đến nhiêu thiết bị ngoại vi như được minh hoạ trong Hình 1.8. Do đó tất cả các port đều kết nối trực tiếp đến những đầu nối 5x2. Những đầu nối như vậy cho phép mở rộng kết nối đến các thiết bị ngoại vi bên ngoài hoặc hữu ích cho việc kết nối với các đầu dò digital logic. Tất cả các ports đều được nối đến điện trở pull-ip/down và được đánh số ghi chú rất chi tiết để dễ dàng cho việc kiểm tra và đo thử. Một vài chân được kết nối tới các thiết bị ngoại vi khác như DS1820 temperature sensor, RS-232 communication, 7-segment displays, LCD. 79
  79. Hình 1.8 - Sự kết nối hệ thống PIC.TS có một nút bấm sử dụng cho mục đích RESET, sơ đồ mạch RESET được nhìn thấy trong hình dưới. Hình 1.9 – Sơ đồ mạch reset 80
  80. 3. POWER SUPPLY Để hệ thống làm việc cần phải cấp nguồn. PIC.TS có thể hoạch động bằng nguồn ngoài hoặc được cung cấp qua cable USB. Trong trường hợp cấp nguồn qua USB, hệ thống phải được nối với PC bằng cable USB và công tắc nguồn phải được gạt về phía USB. Lưu ý là việc cấp nguồn qua USB chỉ sử dụng khi chạy thử chương trình. Khi nạp chương trình cho chip bạn phải sử dụng nguồn ngoài. Khi sử dụng nguồn ngoài, PIC.TS sẽ tạo ra điện áp +5V cấp cho hệ thống và điện áp +13V dùng làm điện áp lập trình chip. Power supply connector Power supply swiches Hình 1.10 – Lựa chọn nguồn cung cấp 82
  81. 4. ON-BOARD PROGRAMMER Không cần sử dụng bất kỳ mạch nạp nào khác, PIC.TS có riêng một mạch nạp on- board rất tiện lợi và dễ sử dụng. Bạn chỉ cần cắm cáp kết nối đến PC qua cổng LPT. Mch np cho PIC trên PIC.TS Cáp kt ni Hình 1.11 –Mạch nạp Đây là mạch nạp giao tiếp qua cổng máy in sử dụng phần mềm WinPIC800 có độ ổn định cao, tốc độ nhanh, hỗ trợ rất nhiều PIC. 83
  82. 5. REAL TIME CLOCK (RTC) DS1307 PIC.TS sử dụng đồng hồ thời gian thực DS1307 giao tiếp chuẩn I2C với vi điều khiển PIC. Hai chân SCL và SDA nối với RC3 và RC4 qua SW2. Pin CMOS dùng nuôi DS1307 khi ngắt nguồn. RTC DS1307 Pin Cmos Hình 1.12 – Sơ đồ kết nối DS1307 84
  83. 6. RS-232 COMMUNICATION Truyền thông RS-232 cho phép truyền dữ liệu điểm tới điểm. RS232 thường được dùng trong các ứng dụng giao tiếp truyền thông giữa giữa vi điều khiển và máy tính. Mức điện áp giữa vi điều khiển và máy tính không thích hợp nhau. Do vậy bộ đệm Max-232 được sử dụng. Để sử dụng linh hoạt hơn, trên PIC.TS vi điều khiển được nối tới Max232 qua cặp jumper JP_TX và JP_TD. Jumper JP_RX được sử dụng để nối tới đường Rx tới RC7, RB2 hoặc RB1. Jumper JP_TX được sử dụng để nối tới đường Tx tới RC6, RB5 hoặc RB2. Chú ý: JP5 và JP6 không được nối cùng lúc đến RB2. RS-232 communiction Hình 1.13 - Kết nối PIC với máy tính 85
  84. 7. USB COMMUNICATION PIC.TS có một cổng USB. Nó được sử dụng cho những loại vi điều khiển PIC đặc biệt có hỗ trợ giao tiếo USB như 18F2450, 18F2550, 18F4550 ngoài khả năng giao tiếp USB nó còn là bộ phận cấp nguồn 5V cho chế độ chạy thử (không sử dụng được nguồn USB ở chế độ nạp). Để kết nối giữa vi điều khiển và socket USB cần phải nối cả 3 jumpers JP17, JP18 và JP19 lên phía trên. Kết quả là vi điều khiển có RC3, RC4 và RC5 được tách ra khỏi các phần tử khác trên board và nối với socket USB. USB communication connector Hình 1.14 – Sơ đồ kết nối truyền thông USB 86
  85. 8. PS/2 COMMUNICATION Đầu nối PS/2 cho phép kết nối trực tiếp giữa PIC.TS với những thiết bị có sử dụng giao tiếp PS/2 như PC, bàn phím hoặc chuột. Ví dụ: vi điều khiển được nối với bàn phím để đọc những phím được nhấn hoặc kết nối với PC để hoạt động như một bàn phím. Đường DATA cà CLK được sử dụng cho việc truyền dữ liệu. Trong trường hợp này chúng được nối tới những pin tương ứng RC1 và RC0 của vi điều khiển. Hình 1.15 – Sơ đồ kết nối PS/2 với vi điều khiển 87
  86. 9. DS1820 DIGITAL THERMOMETER DS1820 là IC cảm biến nhiệt độ dạng số rất tốt cho việc đo nhiệt độ môi trường với dải nhiệt độ đo rộng -55OC đến 125OC với độ chính xác +/- 0.5OC. Nó phải được đặt chính xác trong socket 3 chân và đúng chiều với hình vẽ in trên PIC.TS. Nếu không DS1820 có thể bị hỏng. Chân data của DS1820 có thể nối tới pin RA5 hoặc RE2 của vi điều khiển PIC bởi jumper JP14. Hình 1.16 – Sơ đồ kết nối DS18b20 với vi điều khiển 88
  87. 10. A-D CONVERTER INPUT Board phát triển Kit phát triển Vi điều khiển PIC có 2 biến trở để làm việc với Analog to Digital converter – ADC. Biến trở P1 thì hoạt động khi Jumper JP 15 được chọn gắn vào cho tín hiệu analog đến chân RA2 của Microcontroller. Biến trở P2 thì hoạt động khi jumper JP16 được chọn gắn vào cho tín hiệu analog đến chân RA3 của microcontroller. Cả 2 đầu ra analog của biến trở trong phạm vi 0V đến 5V. Hình 1.17 - ADC Converter input Để đo tín hiệu tương tự các jumper pull-up/down của PORTA cần phải được loại bỏ. Các chân của PORTA không kết nối tới bất cứ các thành phần thiết bị nào khác. Ứng dụng chuyển đổi tương tự - số khác nhau, vi điều khiển nhận tín hiệu tương tự từ chân đầu vào và chuyển nó thành tín hiệu số. Về cơ bản, bạn có thể đo bất kỳ tín hiệu tương tự nào trong phạm vi 0 ÷ 5V Hình 1.18 – Sơ đồ kết nối khi đo ADC 89
  88. 11. DIRECT PORT ACCESS Tất cả các pin vào/ra của microcontroller có thể được truy cập trực tiếp qua các đầu nối đặt bên mép phải của PIC.TS cho mỗi PORTA, PORTB, PORTC, PORTD và PORTE. Đây là socket 10-pin (5x2) cung cấp VDD, GND và 8 pin port kết nối với bên ngoài bằng cáp kết nối. Những đầu nối này sử dụng cho việc mở rộng hệ thống với những board mở rộng hệ thống bên ngoài và cần bảo đảm những thiết bị ngoại vi trên board phải được tách ra bằng việc đặt các jumper thích hợp khi thiết bị ngoại vi bên ngoài cũng dùng chân đó. Những đầu nối cũng có thể sử dụng để gắn đầu dò logic hoặc các thiết bị đo thử khác. Hình 1.19 - Sơ đồ kết nối PORTB 90
  89. PHẦN II: THỰC HÀNH Bài thực hành số 1 SỬ DỤNG PHẦN MỀM WINPIC800 TRUY CẬP CỔNG VÀO RA SỐ VÀ ĐIỀU KHIỂN LED 7 DOẠN I. MỤC ĐÍCH - Làm quen với phần mềm WinPIC800, biết cách sử dụng phần mềm và mạch nạp có sẵn trên PIC.TS để nạp chương trình cho PIC. - Tìm hiểu các cổng vào ra của vi điều khiển PIC16f877A. - Viết chương trình điều khiển các cổng vào ra, thực hiện giải mã và hiển thị các số từ 0 ÷ 9 trên leb 7 thanh. II. CHUẨN BỊ - Máy tính có cài chương trình WinPIC800, trình dịch CCS, HT-PIC. - PIC.TS và các module, vi điều khiển PIC16F877A, đồng hồ đo, cáp nguồn, cáp kết nối. - Lý thuyết về lập trình C, lập trình C cho PIC trên CCS, HT-PIC - Giải mã và hiển thị với led 7 thanh. III. THỰC HÀNH 1. Nạp chương trình cho PIC bằng phần mềm WinPIC Trên PIC.TS được thiết kế sẵn một mạch nạp do đó sẽ không cần bất kỳ mạch nạp nào từ bên ngoài. Mặt khác với mạch nạp sẵn có này bạn không cần phải tháo chip nhiều lần tránh các phiền phức và hư hỏng vật lý. Phần mền WinPIC800 đi cùng không cần cài đặt có thể sử dụng ngay rất tiện lợi. Nhấn dúp vào biểu tượng WinPIC800 trên desktop hoặc file WinPIC800.exe trong thư mục WinPIC800. Cửa sổ chương trình WinPIC800 hiện lên: Hình 2.1 – Giao diện WinPIC800 91
  90. Nhấn vào menu Settings ->Hardware để chọn cấu hình sử dụng WinPIC800 cho PIC.TS như sau: Hình 2.2 – Cầu hình cho WinPIC800 Lưu ý: - Nếu không hiện lên bảng như hình trên thì nhấp chuột vào ô tròn số 1 - Nhấp vào ô tròn số 2 để bật các chức năng chọn cấu hình Cài đặt cấu hình cho WinPIC800 chính xác như hình sau: Hình 2.3 – Cấu hình WinPIC800 để sử dụng cho PIC.TS 92
  91. Nhấn vào nút Apply edits để xác nhận cài đặt. Kết nối với PIC.TS: - Chuyển chuyển mạch nguồn sang chế độ nguồn từ kit (lên trên). - Bật Công tắc nguồn – Đèn Power sáng. - Nối cable programmer vào cổng LPTx của PC và bo mạch. Kiểm tra kết nối: Sau khi kết nối phần cứng, chạy phần mềm WinPIC800. Nhấn vào Icon Detect device (trong vòng tròn hình dưới) màn hình hiện lên như hình sau: Hình 2.4 – Quá trình kiểm tra kết nối và loại pic sử dụng Nhấn chọn ô “Close this window .” Để lần sau bảng detect tự động. Nhấn nút accept để đóng cửa sổ. Lưu ý: Khi nhân nút detect device WinPIC800 sẽ tự động chọn device mà nó detect được. Điều này này giúp bạn khỏi tốn công chọn device. Kích vào menu chọn File -> Open sau đó chọn đường dẫn dến file .hex. Ví dụ: D:\PIC\port test.hex chọn OK. Sau đó vào menu chọn thực đơn Device -> Program All. Kết quả: Chíp sẽ được nạp chương trình điều khiển. 93
  92. Hình 2.5 – Đang nạp chương trình cho vi điều khiển Chú ý: Sau khi nạp chương trình thành công phải tháo cáp nạp để tránh gây ảnh hưởng tới hoạt động của hệ thống. 2. Truy cập cổng vào ra số Nhiệm vụ: Tìm hiểu vi điều khiển 16F877A và lập trình điều khiển các cổng vào ra số. A0 A1 A2 A3 A4 A5 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 D16 D17 D18 D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31 R32 JP1 JP2 JP3 JP4 JP5 A0 A1 B0 B1 C0 C1 D0 D1 E0 E1 1 2 1 2 1 2 1 2 1 2 A2 A3 B2 B3 C2 C3 D2 D3 E2 3 4 3 4 3 4 3 4 3 4 A4 A5 B4 B5 C4 C5 D4 D5 5 6 5 6 5 6 5 6 5 6 B6 B7 C6 C7 D6 D7 7 8 7 8 7 8 7 8 7 8 9 10 9 10 9 10 9 10 9 10 VCC VCC VCC VCC VCC 94
  93. Hình 2.6 – Sơ đồ nguyên lý module PIC.TS01 Nguyên lý hoạt động: Các đèn led trên PIC.TS01 sẽ được nối trực tiếp chân anot đến cổng của vi điều khiển PIC trên PIC.TS đồng thời nối tiếp một điện trở 100ohm rồi đưa xuống đất. Các cổng của PIC có thể cấp dòng trực tiếp cho led mà không cần đệm hay khuếch đại. Mỗi cổng vào ra số được nối với một đèn led. Khi một cổng được xuất giá trị là “1” thì led sáng ngược lại nếu xuất giá trị “0” led tắt. Chú ý: ở đây giả định là PIC đang được cấu hình là một cổng ra số. Các bước tiến hành: - Nối các cổng PA, PB, PC, PD và PE của PIC.TS tương ứng với các JP1, JP2, JP3, JP4 và JP5 của module PIC.TS01. - Viết chương trình điều kiển các đèn led tắt sáng theo yêu cầu. - Biên dịch và nạp chương trình lên vi điều khiển PIC - Sửa lại chương trình để có được chu chình led sáng theo ý muốn. Có thể chạy thử chương trình mẫu: PORT_TEST.C có sẵn ở thư mục /sample/ PORT_TEST/ để tham khảo hoặc kiểm tra các module có chạy tốt hay không trước khi viết một chương trình cho riêng mình. 3. Điều khiển led 7 đoạn Nhiệm vụ: Tìm hiểu led 7 đoạn, PIC16F877A trong điều khiển và giải mã hiển thị các số. Viết được chương trình giải mã hiển thị các số theo yêu cầu trên led 7 đoạn. A0 A1 A2 A3 A4 A5 B4 B5 B6 B7 R0 R1 R2 R3 R4 R5 R10 R11 R12 R13 D0 D1 D2 D3 D4 D5 D10 D11 D12 D13 JP1 JP2 JP3 JP4 JP5 A0 A1 B0 B1 C0 C1 D0 D1 E0 E1 1 2 1 2 1 2 1 2 1 2 A2 A3 B2 B3 C2 C3 D2 D3 E2 3 4 3 4 3 4 3 4 3 4 A4 A5 B4 B5 C4 C5 D4 D5 5 6 5 6 5 6 5 6 5 6 B6 B7 C6 C7 D6 D7 7 8 7 8 7 8 7 8 7 8 9 10 9 10 9 10 9 10 9 10 VCC VCC VCC VCC VCC VCC E0 E1 E2 R30 R31 R32 DIGIT2 DIGIT1 C0 R14 7 3 D0 R22 7 3 a A a A C1 R15 6 8 D1 R23 6 8 b A b A C2 R16 4 D2 R24 4 c c C3 R17 2 D3 R25 2 d d C4 R18 1 D4 R26 1 e e C5 R19 9 D5 R27 9 D30 D31 D32 f f C6 R20 10 D6 R28 10 g g C7R21 5 D7 R29 5 DP DP B3 B2 B1 B0 F1 F2 F3 F4 VCC JP 1 2 3 Hình 2.7 – Sơ đồ nguyên lý PIC.TS03 95
  94. Nguyên lý hoạt động: Trong PIC.TS03 sử dụng các led catot chung. Anot của mỗi thanh led của led 7 đoạn được nối đến cổng vi điều khiển PIC thông qua điện trở 100ohm nhằm hạn dòng. Catot của mỗi led 7 đoạn được nôi xuống đất. Khi cổng đó xuất giá trị là “1” thì thành led sáng và ngược lại xuất “0” thì tắt. Chữ số bên phải nối với cổng PC, chữ số bên trái nối với cổng PD. Các thanh a, b, c, d, e, f, g của mỗi chữ số tương ứng nối với các bit b0, b1, b2, b3, b4, b5, b6 của mỗi cổng. Các bước tiến hành: - Nối các PORT PC và PD PIC.TS tương ứng với JP3 và JP4 trên module PIC.TS03. - Viết chương trình điều kiển led 7 đoạn để hiển thị chữ số theo yêu cầu. - Biên dịch và nạp chương trình cho vi điều khiển PIC. - Sửa lại chương trình để có được sự hiển thị theo yêu cầu. Có thể chạy thử chương trình mẫu: 7SegCount00To99.c có sẵn ỏ thư mục /sample/7SEGS_LED/ để tham khảo hoặc kiểm tra module có chạy tốt hay không trước khi viết một chương trình theo ý muốn. 4. Điều khiển đèn giao thông Nhiệm vụ: Tìm hiểu PIC16F877A trong việc vào ra số và giải mã điều khiển led 7 đoạn. Viết chương trình điều khiển đèn giao thông. A0 A1 A2 A3 A4 A5 B4 B5 B6 B7 R0 R1 R2 R3 R4 R5 R10 R11 R12 R13 D0 D1 D2 D3 D4 D5 D10 D11 D12 D13 JP1 JP2 JP3 JP4 JP5 A0 A1 B0 B1 C0 C1 D0 D1 E0 E1 1 2 1 2 1 2 1 2 1 2 A2 A3 B2 B3 C2 C3 D2 D3 E2 3 4 3 4 3 4 3 4 3 4 A4 A5 B4 B5 C4 C5 D4 D5 5 6 5 6 5 6 5 6 5 6 B6 B7 C6 C7 D6 D7 7 8 7 8 7 8 7 8 7 8 9 10 9 10 9 10 9 10 9 10 VCC VCC VCC VCC VCC VCC E0 E1 E2 R30 R31 R32 DIGIT2 DIGIT1 C0 R14 7 3 D0 R22 7 3 a A a A C1 R15 6 8 D1 R23 6 8 b A b A C2 R16 4 D2 R24 4 c c C3 R17 2 D3 R25 2 d d C4 R18 1 D4 R26 1 e e C5 R19 9 D5 R27 9 D30 D31 D32 f f C6 R20 10 D6 R28 10 g g C7R21 5 D7 R29 5 DP DP B3 B2 B1 B0 F1 F2 F3 F4 VCC JP 1 2 3 Hình 2.8 – Sơ đồ nguyên lý PIC.TS03 96
  95. Nguyên lý hoạt động: Trong PIC.TS03 sử dụng các led catot chung. Anot của mỗi thanh led của led 7 đoạn được nối đến cổng vi điều khiển PIC thông qua điện trở 100ohm nhằm hạn dòng. Catot của mỗi led 7 đoạn được nôi xuống đất. Khi cổng đó xuất giá trị là “1” thì thành led sáng và ngược lại xuất “0” thì tắt. Chữ số bên phải nối với cổng PC, chữ số bên trái nối với cổng PD. Các thanh a, b, c, d, e, f, g của mỗi chữ số tương ứng nối với các bit b0, b1, b2, b3, b4, b5, b6 của mỗi cổng. Các đèn led xanh, đỏ và vàng cũng được nối đến các cổng của vi điều khiển PIC thông qua trở 100ohm. Khi vi điều khiển xuất giá trị “1” ra cổng đó thì đèn tương ứng sáng ngược lại nếu xuất giá trị “0” đèn sẽ tắt. Các đèn led và led 7 đoạn được nối với vi điều khiển PIC theo như bảng sau: Bảng 1 LED Tên cổng Gi chú D0 A0 Đỏ D1 A1 Vàng D2 A2 Xanh D3 A3 Xanh D4 B4 Vàng D5 A5 Đỏ D11 B5 Đỏ D12 B6 Vàng D13 B7 Xanh D30 E0 Xanh D31 E1 Vàng D32 E2 Đỏ F1 B0 Nút 1 F2 B1 Nút 2 F3 B2 Nút 3 F43 B3 Nút 4 Cách tiến hành: - Nối các port PA, PB, PC, PD và PE của kit chính PIC.TS tương ứng với các port JP1, JP2, JP3, JP4 và JP5 của module PIC.TS03. 97
  96. - Viết chương trình điều kiển các đèn led xanh, đỏ, vàng tắt sáng theo thời gian yêu cầu đồng thời hiển thị thời gian đếm ngược trên led 7 đoạn cho một chiều được quy định. - Biên dịch và nạp chương trình lên vi điều khiển PIC. - Sửa lại chương trình để có được thời gian lưu thông các luồng theo theo yêu cầu. Có thể thử chương trình mẫu: TRAFFIC_LIGHT.c có sẵn ỏ thư mục /sample/TRAFFIC_LIGHT/ để tham khảo hoặc kiểm tra module có chạy tốt hay không trước khi viết một chương trình theo yêu cầu. Mở rộng, nếu có thể hãy viết chương trình dùng các phím F để thay đổi thời gian lưu thông của các luồng. 98
  97. Bài thực hành số 2 BIẾN ĐỔI ADC, ĐO ĐIỆN ÁP, NHIỆT ĐỘ HIỂN THỊ TRÊN LED VÀ TRUYỀN THÔNG QUA RS232 I. MỤC ĐÍCH Làm quen với bộ biến đổi tương tự số ADC có sẵn trên vi điều khiển PIC16F877A. Tìm hiểu chuẩn 1 dây và truyền thông không đồng bộ UART. Viết chương trình biến đổi ADC, đo điện áp, giao tiếp vơi cảm biến nhiệt độ DS18B20. II. CHUẨN BỊ - Máy tính có cài chương trình WinPIC800, trình dịch CCS, HT-PIC. - PIC.TS và các module, vi điều khiển PIC16F877A, đồng hồ đo, cáp nguồn, cáp kết nối. - Lý thuyết về lập trình C, lập trình C cho PIC trên CCS, HT-PIC - Lý thuyết về chuẩn 1 dây, truyền thông không đồng bộ UART. III. THỰC HÀNH 1. Biến đồi ADC và hiển thị trên led Nhiệm vụ: Tìm hiểu và sử dụng bộ biến đổi ADC của vi điều khiển PIC16F877A VCC JP_ADC1 JP_ADC2 1 2 VR1 VR2 1 2 1 1 RA2 RA3 2 2 3 3 Hình 2.9 – Sơ đồ nguyên lý khối biến trở Nguyên lý hoạt động: Khi vặn biến trở VR1 và VR2 tương ứng điện áp tai RA2 và RA3 sẽ thay đổi. Cấu hình PIC cho phép bộ biến đổi ADC kênh 2 và kênh 3 (RA2 và RA3) hoạt động. Giá trị tương tự tai RA2 và RA3 sẽ được bộ ADC của PIC chuyển sang thành tín hiệu số. Cách tiến hành: - Kiểm tra jumper JP_ADC2 ở trạng thái kết nối, để nối đầu ra biến trở với đầu vào ADC của PIC. VR2 và JP_ADC2 nối đến ngõ vào AN3. - Công tắc DIP_SW1.3, DIP_SW1.4 ở trạng thái OFF để ngắt đầu vào ADC ra khỏi điện trở treo khi làm việc với điện áp tương tự (điện trở treo dùng khi làm việc ở chế độ vào ra tín hiệu số) 99
  98. - Nối port PC (PD) của kit chính PIC.TS với các port JP3 (JP4) của module PIC.TS03 - Viết chương trình đọc giá trị từ bộ chuyển đổi ADC và xuất ra cổng C (D) - Biên dịch và nạp chương trình lên vi điều khiển PIC - Sau khi nạp thành công, khi chương trình đang chạy, vặn biến trở từ min đến max sẽ thấy giá trị của điện áp được chuyển đổi thành tín hiệu số hiển thị trên các led nối với PC (PD) thay đổi theo mỗi vị trí của chiết áp Có thể thử chương trình mẫu: ADC Single_LED.c có sẵn ỏ thư mục /sample/ADC2PORTC/ để tham khảo hoặc kiểm tra module có chạy tốt hay không trước khi viết một chương trình theo yêu cầu. 2. Đo điện áp và truyền thông qua RS232 Nhiệm vụ: Sử dụng bộ ADC trên PIC để đo điện áp từ đầu ra của biến trở sau đó truyền dữ liệu đo được lên máy tính qua RS232. Cách tiên hành: - Kiểm tra jumper JP_ADC1, JP_ADC2 ở trạng thái kết nối, để nối đầu ra chiết áp với đầu vào ADC của PIC - Công tắc DIP_SW1.3, DIP_SW1.4 ở trạng thái OFF để ngắt đầu vào ADC ra khỏi điện trở treo khi làm việc với điện áp tương tự (điện trở treo dùng khi làm việc ở chế độ vào ra tín hiệu số) - Kiểm tra JP_TX và JP_RX ở trạng thái nối chân 5 với chân 6 để nối chân TX và RX của bộ thu phát UART với bộ phát thu MAX232 - Nối cổng truyền thông nối tiếp của PIC.TS với cổng COM của máy tính - Sử dụng trình HyperTermial giao tiếp với tín hiệu trên kênh RS232 Vào Hyper Terminal như hình dưới đây Hình 2.10a - Hyper Terminal Gõ tên là 9600 trong ô Name như hình dưới, rồi chọn OK. 100
  99. Hình 2.10b - Hyper Terminal Chọn COM1 trong ô Connect using như sau: Hình 2.10c - Hyper Terminal Đặt các thuộc tính như hình dưới, rồi chọn OK Hình 2.10d - Hyper Terminal Bấm vào biểu tượng Call để kết nối - Viết chương trình đọc giá trị từ bộ chuyển đổi ADC và truyền dữ liệu đó qua bộ truyền thông nối tiếp 101
  100. - Biên dịch và nạp chương trình lên vi điều khiển PIC - Sau khi nạp thành công, khi chương trình đang chạy, vặn biến trở từ min đến max trên màn hình máy tính sẽ hiển thị các giá trị của điện áp được chuyển đổi thành tín hiệu số thay đổi theo mỗi vị trí của chiết áp. Có thể thử chương trình mẫu: ADC1.c có sẵn ỏ thư mục /sample/ ADC2UART/ để tham khảo, hoặc kiểm tra module có chạy tốt hay không, trước khi viết một chương trình theo yêu cầu. Mở rộng: có thể thay đổi chương trình để chuyển đổi giá trị đầu ra ADC thành giá trị điện áp tương ứng và gửi lên máy tính theo dạng U1 = X.X (V) , U2 = Y.Y (V). Trong đó X.X là điện áp của VR1, Y.Y là điện áp của VR2, nằm trong khoảng 0.0V đến 5.0V. Ví dụ: U1 = 2.5 (V), U2 = 1.8 (V) 3. Đo nhiệt độ và truyền thông qua RS232 Nhiệm vụ: Thực hành với bộ cảm biến nhiệt độ DS18B20 có sẵn trên PIC.TS. Giao tiếp PIC với DS18B20 thông qua giao tiếp 1 dây (one wire interface), truyền dữ liệu không đồng bộ UART có sẵn trên PIC qua chuẩn RS232. Viết chương trình đọc dữ liệu nhiệt độ từ DS18B20 và truyền dữ liệu đó qua UART. Cách tiến hành: - Kiểm tra jumper JP_temp ở trạng thái kết nối chân 1 (bên phải) với chân 2 để nối chân data của DS1820 với RE2 của PIC. - Công tắc DIP_SW1.5 ở trạng thái ON để nối đến điện trở treo (điện trở treo dùng khi làm việc ở chế độ vào ra tín hiệu số). - Kiểm tra JP_TX và JP_RX ở trạng thái nối chân 5 với chân 6, để nối chân TX và RX của bộ thu phát UART với bộ phát thu MAX232. - Nối cổng truyền thông nối tiếp của Kit chính với cổng COM của máy tính. - Sử dụng trình HyperTermial giao tiếp với tín hiệu trên kênh RS232. - Viết chương trình đọc giá trị nhiệt độ từ DS1820 và truyền đi qua bộ truyền thông không đồng bộ. - Biên dịch và nạp chương trình lên vi điều khiển PIC - Sau khi nạp thành công, khi chương trình đang chạy, dùng tay (hoặc một nguồn nhiệt nào đó) trạm vào cảm biến nhiệt DS1820 và quan sát thấy giá trị nhiệt độ hiển thị trên màn hình từ từ tăng lên (Chú ý độ trễ là tương đối lớn, cỡ 1 giây và giá trị hiển thị được có thể sai lệch vài độ). Khi bỏ tay ra nhiệt độ sẽ giảm xuống từ từ. Có thể thử chương trình mẫu có sẵn ỏ thư mục /sample/TEMP2UART/ để tham khảo hoặc kiểm tra module có chạy tốt hay không, trước khi viết một chương trình cho riêng mình. 102