Bàn phím là thiết bị đầu vào được sử dụng rộng rãi được sử dụng trong các dự án điện tử và nhúng khác nhau. Chúng được sử dụng để lấy dữ liệu đầu vào dưới dạng số lượng và ô trống, và đưa chúng vào hệ thống để xử lý thêm. Trong hướng dẫn này, chúng ta sẽ giao diện bàn phím ma trận 4x4 với bộ vi điều khiển 8051.
Bàn phím ma trận 4X4
Trước khi giao tiếp bàn phím với vi điều khiển, trước tiên chúng ta cần hiểu cách thức hoạt động của nó. Bàn phím ma trận bao gồm một tập hợp các nút Đẩy, được kết nối với nhau. Giống như trong trường hợp của chúng tôi, chúng tôi đang sử dụng bàn phím ma trận 4X4, trong đó có 4 nút nhấn ở mỗi hàng trong số bốn hàng. Và các thiết bị đầu cuối của các nút nhấn được kết nối theo sơ đồ. Trong hàng đầu tiên, một đầu cuối của tất cả 4 nút nhấn được kết nối với nhau và một đầu cuối khác của 4 nút nhấn đại diện cho mỗi cột trong số 4 cột, tương tự với mỗi hàng. Vì vậy, chúng tôi nhận được 8 thiết bị đầu cuối để kết nối với một bộ vi điều khiển.
Bàn phím giao tiếp với vi điều khiển 8051 (AT89S52)
Đầu tiên, chúng ta cần giao diện một mô-đun LCD để hiển thị dữ liệu sẽ được cấp thông qua KEYPAD, vì vậy vui lòng xem qua bài viết “Giao diện LCD với Vi điều khiển 8051” trước khi giao tiếp KEYPAD.
Như trong sơ đồ mạch trên, để giao diện Bàn phím, chúng ta cần kết nối 8 đầu cuối của bàn phím với bất kỳ cổng nào (8 chân) của vi điều khiển. Giống như chúng ta đã kết nối các thiết bị đầu cuối của bàn phím với Cổng 1 của 8051. Bất cứ khi nào nhấn bất kỳ nút nào, chúng ta cần xác định vị trí của nút đó, nghĩa là ROW tương ứng không có COLUMN. Khi chúng tôi có được vị trí của nút, chúng tôi có thể in ký tự cho phù hợp.
Bây giờ câu hỏi đặt ra là làm thế nào để lấy được vị trí của nút đã nhấn? Tôi sẽ giải thích điều này trong các bước dưới đây và cũng muốn bạn xem mã:
1. Đầu tiên, chúng ta đã tạo tất cả các Hàng ở mức Logic 0 và tất cả các cột ở mức Logic 1.
2. Bất cứ khi nào chúng ta nhấn một nút, cột và hàng tương ứng với nút đó sẽ bị rút ngắn và làm cho cột tương ứng ở mức logic 0. Bởi vì cột đó được kết nối (rút ngắn) với hàng, ở mức Logic 0. Vì vậy, chúng ta nhận được cột số. Xem hàm main ().
3. Bây giờ chúng ta cần tìm Row no., Vì vậy chúng ta đã tạo bốn hàm tương ứng với mỗi cột. Giống như nếu bất kỳ nút nào của cột một được nhấn, chúng tôi gọi hàm row_finder1 (), để tìm hàng không.
4. Trong hàm row_finder1 (), chúng tôi đã đảo ngược các mức logic, có nghĩa là bây giờ tất cả các Hàng là 1 và các cột là 0. Bây giờ Hàng của nút được nhấn phải là 0 vì nó đã được kết nối (bị rút ngắn) với cột có nút được nhấn và tất cả các cột đều ở mức logic 0. Vì vậy, chúng tôi đã quét tất cả các hàng cho 0.
5. Vì vậy, bất cứ khi nào chúng ta tìm thấy Hàng ở mức logic 0, có nghĩa là hàng của nút được nhấn. Vì vậy, bây giờ chúng ta có cột không (có ở bước 2) và hàng không., Và chúng ta có thể in không. của nút đó bằng cách sử dụng hàm lcd_data.
Quy trình tương tự được thực hiện cho mỗi lần nhấn nút và chúng tôi đang sử dụng while (1), để liên tục kiểm tra xem nút có được nhấn hay không.