Bài viết này sẽ cho các bạn biết cách kết nối một bàn phím 16 phím với vi điều khiển 8051. Đây là 1 kiến thức rất cần thiết trong khi thiết kế các dự án hệ thống nhúng yêu cầu nhập ký tự hoặc số.
Giao tiếp giữa bàn phím 16 phím với vi điều khiển 8051
Bài viết này sẽ cho các bạn biết cách kết nối một bàn phím 16 phím với vi điều khiển 8051. Đây là 1 kiến thức rất cần thiết trong khi thiết kế các dự án hệ thống nhúng yêu cầu nhập ký tự hoặc số. Ví dụ, các dự án như khóa bằng mã kỹ thuật số, máy tính, v.v. Trước khi đi đến cách thức giao tiếp một cách chi tiết, hãy cùng có một cái nhìn đầu tiên về bàn phím 16 phím.
Bàn phím 16 phím (Hex)
Bàn phím 16 phím về cơ bản là một bộ gồm 16 nút nhấn được sắp xếp theo dạng ma trận 4x4. Bàn phím hex thường có các phím biểu thị các số từ 0 đến 9 và các ký tự từ A đến F. Đây là sơ đồ đơn giản của bàn phím 16 phím:
Bàn phím hex có 8 đường là R1, R2, R3, R4, C1, C2, C3 và C4. R1 đến R4 đại diện cho bốn hàng và C1 đến C4 đại diện cho bốn cột. Chương trình xác định phím nào được nhấn bằng phương pháp được gọi là quét cột. Trong phương pháp này, một hàng cụ thể được giữ ở mức thấp (các hàng khác được giữ ở mức cao) và các cột được kiểm tra ở mức thấp. Nếu một cột cụ thể được tìm thấy ở mức thấp thì điều đó có nghĩa là phím được kết nối giữa cột đó và hàng tương ứng (hàng được giữ ở mức thấp) được nhấn. Ví dụ: nếu hàng R1 ban đầu được giữ ở mức thấp và cột C1 được tìm thấy ở mức thấp trong quá trình quét, điều đó có nghĩa là phím 1 được nhấn.
Giao tiếp giữa bàn phím 16 phím với vi điều khiển 8051
Sơ đồ mạch dưới đây thể hiện sự kết nối giữa bàn phím hex với 8051. Giống như các dự án 8051 trước đó, lần này chúng ta sử dụng vi điều khiển AT89S51. Mạch sẽ hiển thị ký tự / số được nhấn trên LED bảy đoạn. Mạch rất đơn giản và nó chỉ sử dụng hai cổng của vi điều khiển, một cho bàn phím 16 phím và một cho LED bảy đoạn.
Bàn phím 16 phím được kết nối với cổng 1 và LED bảy đoạn được kết nối với cổng 0 của vi điều khiển. Các điện trở từ R1 đến R8 giới hạn dòng điện qua các đoạn tương ứng của LED bảy đoạn. Tụ điện C1, C2 và thạch anh X1 tạo mạch xung đồng hồ (clock) cho vi điều khiển. Tụ điện C3, điện trở R9 và nút nhấn S1 dùng để thiết lập lại (reset) cho vi điều khiển.
Chương trình (Code)
Link tải:
https://drive.google.com/file/d/1NRw-BcZfFa50XvNuG9920Vgtz3scCMec/view?usp=sharing
Giải thích chương trình
Đầu tiên, chương trình khởi tạo cổng 0 dưới dạng cổng xuất (output) bằng cách ghi tất cả 0 vào nó và cổng 1 làm cổng nhập (input) bằng cách ghi tất cả 1. Sau đó, chương trình làm cho hàng 1 xuống mức thấp bằng cách xóa P1.0 và quét từng cột một cho mức thấp bằng cách sử dụng lệnh JB. Nếu cột C1 được tìm thấy ở mức thấp, điều đó có nghĩa là 1 phím được nhấn và bộ tích lũy được tải bằng 0 và chương trình con HIỂN THỊ (DISPLAY) được gọi. Chương trình con hiển thị thêm nội dung trong A với địa chỉ bắt đầu của LUT được lưu trong DPTR và tải A với dữ liệu mà các địa chỉ kết quả chỉ ra(sử dụng lệnh MOVC A,@A+DPTR). Dữ liệu hiện tại trong A sẽ là như là 1 ổ đĩa chữ số cho phím bấm hiện tại và mẫu này được đưa đến Cổng 0 để hiển thị. Bằng cách này, chương trình sẽ quét từng phím một và đưa nó lên màn hình nếu thấy nó được nhấn.
Ghi chú:
· Nguồn điện DC phải được điều chỉnh và lọc.
· Quét cột không phải là phương pháp duy nhất để xác định phím bấm. Bạn cũng có thể sử dụng quét hàng. Trong hàng quét, một cột cụ thể được giữ ở mức thấp (các cột khác được giữ ở mức cao) và các hàng được kiểm tra ở mức thấp bằng cách sử dụng một lệnh rẽ nhánh phù hợp. Nếu một hàng cụ thể được quan sát ở mức thấp thì điều đó có nghĩa là phím được kết nối giữa hàng đó và cột tương ứng (cột được giữ ở mức thấp) được nhấn. Ví dụ: nếu cột C1 ban đầu được giữ ở mức thấp và hàng R1 được quan sát ở mức thấp trong quá trình quét, điều đó có nghĩa là phím 1 được nhấn.
· Bạn có thể sử dụng nhiều loại bàn phím 16 phím khác nhau.
· Màn hình được sử dụng là LED bảy đoạn catốt chung (ELK5613A). Bạn cũng có thể sử dụng nhiều loại led 7 đoạn catốt chung khác nhau.
Video
Dưới đây là 1 đoạn video ngắn về sự hoạt động của mạch: Tại đây
Hotline: 0979 466 469