Việc có nhiều nút nhấn cũng như tiết kiệm được chân vi điều khiển là một bài toán đặt ra đối với 1 bài tập vi điều khiển lớn. Việc ghép nối giao tiếp với bàn phím với vi xử lý được ghép nối thành 1 ma trận hay gọi là ma trận phím! Một ma trận n hàng và m cột có thể ghép với nhau tối đa m*n phím chức năng. Hôm nay tôi post bài này lên cho các pác tham khảo cách quét ma trận phím đầu vào.



1) Cấu tạo của 1 ma trận phím 4x4



Nói đến ma trận là ai cũng tưởng tưởng đến hàng và cột. Và các pác cũng bít khi đó nó sẽ có lợi như thế nào khi ghép kiểu ma trận này! Cấu tạo nó được như hình vẽ dưới:



Ma trận phím 4x4 Cau%20tao%20ma%20tran%20phim





Phím bấm được nối thành ma trận 4 hàng x 4cột, các hàng và cột được nối với các chân cổng vào ra của vi điều khiển Psoc. Khi một phím được bấm, nó sẽ nối một hàng và một cột tương ứng.Như vậy ta sẽ có 16 nút nhấn mà chỉ mất có 8 chân vi điều khiển còn muốn tiếp kiệm hơn nữa là các pác dùng còn giải mã 3 >> 8 (74138) hay dùng 74ls154.(Cái này cũng không cần bit đâu vì bài của mình đâu lớn như thế) nên nối trực tiếp vào chân vi điều khiển cho nó nhanh. Khi nút 0 được nhấn thì nó nối giữa cột 1 hàng 1. CÒn nút 1 được nhấn thì cột 2 và hàng 1 được nối hay nút 2 được nhấn thì nối giữa cột 3 và hàng 1... cứ như vậy đến nút thứ 15!



2) Nguyên lý quét



Ma trận phím 4x4 Ma%20tran%20phim%20lcd%20mach%20nguyen%20ly



Thuật toán quét phím được sử dụng là lần lượt tìm hàng và tìm cột (hoặc ngược lại) Khi tìm hàng, các hàng sẽ được đặt làm đầu vào,các cột được đặt làm đầu ra mức thấp. Sau đó kiểm tra các hàng xem có hàng nào ở mức thấp hay không (có phím nào bấm gây ra nối với cột hay không)? Sau khi xác định được hàng sẽ đặt các cột làm đầu vào, hàng vừa tìm được làm đầu ra mức thấp. Việc kiểm tra được tiến hành với các cột. Sau khi xác định được hàng và cột sẽ suy ra phím được bấm.

Nói thế này cũng khó hiểu nhỉ nhưng mà chỉ cần hiểu sơ qua thuật toán quét LED như thế này:

+ Đầu tiên cho các hàng ở mức 1 và các cột ở mức 0

+ Kiểm tra xem nào hàng nào đựoc nhấn (khi nút được nhấn) tức là đựoc nhận tín hiệu từ các cột

+ Nếu mà có 1 hàng bất kỳ đựoc nhấn sau đó ta lại chuyển giá trị 0 vào hàng đựoc nhấn và giá trị 1 vào các cột. Khi đó cột lại nhận nhiệm vụ làm tín hiệu vào. Nếu mà 1 trong các cột đựoc nhấn (Khi nút được nhấn) trong các trường hợp này thì cho ra các giá trị tương ứng.

+ Việc kiểm tra các hàng khác là tương tự như trên!Ở đây không đề cập đến việc nhiễu phím nút nhấn nên bỏ qua.



Cũng khó hiểu. Thôi đến đoạn chương trình sẽ hiểu sâu hơn!



3) Mạch nguyên lý







3) Chương trình:



Theo : hoiquandientu.com