You are on page 1of 7

Quet ma tran phim 3*4 hien thi LCD 7 doan Muốn học tốt được vi điều khiển thì việc

đấu tiên ta nên làm quen những bài tập cơ bản của vi điều khiển. ở đây là quan trọng IO như :LED, nút nhấn, ma trận....Hôm nay tôi giới thiệu đến các bạn 1 thuật toán quét ma trận phím đầu vào. Ở đây là quét ma trận 3x4 với thuật toán quét đơn giản nhưng mà chưa tối ưu. Giá trị của ma trận phím được hiện thị lên LED 7Seg! Chú ý : Đây là bài thực hành nên tôi không đưa các linh kiện như :ULN2803, A1015....mà ghép nối trực tiếp 1 ) Cấu tạo của ma trận phím 3x4

Ma trận phím này được cấu tạo bởi : 3 hàng và 4 cộ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 CY8C29466. 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ó 12 nút nhấn mà chỉ mất có 7 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ó tiện kiểm tra. 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ứ 12! Đối với kết cấu của ma trận này chưa được chống nhiễu phím. Nếu muỗn chống nhiễu thì các bạn thêm con tụ khoảng 104 vào các nút nếu không muốn thì chống nhiễu bằng phần mền cũng được! 2 ) Mạch hiện thị. Ở mạch này ta lại sử dụng cách quét LED 7. Loại LED này mua ngoài chợ chỉ có 5k. Loại này là loại Anot chung. Các chân a,b,c,d,.. được nối với nhau và hai chân điều khiển dùng để điều khiển hiện thị LED.Có nghĩa là muốn cho LED 1 sáng thì ta cấp dòng vào cho chân điều khiển của LED 1 và tương tự như như LED2.Đối với LED này muốn cho LED sáng thì phải cấp vào các chân điều khiển mức 1 và các chân a,b,c,..mức 0 (Mã LED phải tính ở mức 0) Nguyên lý quét LED ở đây tôi đã trình bày ở trong mục quét LED ở trang chủ. Nhưng qua đây

tôi nói qua tại mỗi thời điểm ta chỉ hiện thị được 1 LED nên muốn hiện thị 2 LED mà ta có thể nhìn thấy thì cần phải quét 2 giá trị này liên tục. Do ta quét với tần số nhanh nên mắt ta không cảm nhận được là từng cái sáng 1 (Cái này xem điện ảnh họ làm 24h/s). Mình thì cứ hiểu thế thôi. Quét càng nhanh thì ta sẽ không nhìn thấy các điểm nháy của LED. Tần số quét ko được lớn hơn 24 hình/sec. 3) Sơ đồ nguyên lý:

Ở đây tôi dùng các chân như sau: + Phần hiện thị LED : Tôi dùng P0 được nối với (a,b,c,d...) Hai chân điều khiển được nối với P1_7 và P1_6. Ở đây không dùng ổn dòng nên LED nó hơi tối! + Phần ma trận phím: Các hàng từ Hàng 1 đến Hàng 3 được nối vào từ P2_0 đến P2_2. Còn các cột từ cột 1 đến cột 4 được nối vào P2_4 đến P2_7. + Thêm 1 mạch reset cho mạch: dùng 1 công tắc nối với chân số 19 thông qua 1 điện trở 1k và đầu kia được nối lên VCC. Khi công tắc được đóng thì mạch sẽ tự reset. Còn 1 tụ được nối giữa chân 28 và 14 là để không bị mất nguồn trong khoảng thời gian ngắn 4) Nguyên lý quét Ở đây tôi làm theo phương pháp quét cột còn phương pháp quét theo hàng thì các pác làm tự. + Bước 1 : Đầu tiên ta đưa cột 1 xuống mức 0V. Sau đó ta kiểm tra 3 hàng (hàng 1 , hàng 2, hàng 3) được nối với cột đó.Nếu nút 0 được nhấn tức là cột 1 được nối với hàng 1 khi đó hàng 1 được nhấn tín hiệu từ cột 1 và về mức 0 ==> cho ta giá trị 0. Nếu nút 4 được nhấn tức là cột 1 được nối với hàng 2 khi đó hàng 2 được nhận tín hiệu từ cột 1 và mức 0 ==> Cho ta giá trị 4. Nếu nút

8 được nhấn tức là nối cột 1 với hàng 3 khi đó hàng 3 được nhấn tín hiệu từ cột 1 và về mức 0 ==> cho ta giá trị 8. Vậy trong 1 cột cho ta 3 giá trị khác nhau từ 3 hàng. + Bước 2: Sau khi cho cột 1 bằng 0V sau đó ta cho tiếp cột 2 bằng 0V và tiếp tực kiểm tra các hàng 1 đến hàng 3 xem nào có hàng nào được nhấn không. Nếu nút 1 được nhấn tức là ta lại nối cột 2 với hàng 1, đưa giá trị của hàng 1 về 0V ==> cho giá trị 2. Nếu nút 5 được nhấn là ta lại nối cột 2 với hàng 2 khi đó đưa hàng 2 xuống 0V ==> cho giá trị 5. Nếu nút 9 được nhấn là ta lại nối cột 2 với hàng 3 và đưa hàng 3 xuống 0V ==> Cho ta giá trị 9. Như vậy ở lần này cũng cho ta 3 giá trị là các số 1,5,9 + Bước 3, 4 : Cũng tương tự lần lượt như bước 1 và 2 và cách làm cũng tương tự. Như vậy ta cũng thu được 6 giá trị nữa là : 2,6,10,3,7,11 Như vậy ta đã xong việc quét ma trận phím và thu được các giá trị từ ma trận phím và giá trị này được hiện thị lên LED7 thanh. Ma tran phim 4*4 hien thi LCD 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 bạn 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 bạn 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:

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 bạn 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ó tiện. Đối với những bài toán lớn cần phải tiếp kiệm chân vi xử lý ta mới dùng thếm các IC giải mã hay mã hóa . 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 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. 3) Mạch nguyên lý

Mạch nguyên lý cũng khá đơn giản và dễ lắp dáp.

Dem so nut nhan tu 0 den 9 hien thi tren led 7 doan Trong phần này tôi sẽ giới thiệu với các bạn số cách đếm số nút nhấn hiện thị lên LED 7 seg.Ta dùng 1 nút nhấn để nhận tín hiệu vào chíp. Đây là cách nhận tín hiệu từ bên ngoài vào cho chíp xử lý. Phương pháp này người ta còn gọi là đọc bàn phím nhưng ở đây là chúng ta đọc 1 phím. Nhấn 1 lần thì hiện thị số 1, nhấn tiếp hiện thị số 2 .... cứ thế cho tới đến lần nhấn thì nó lại quay trở về ban đầu. Sau đây là cách làm như sau: 1: Lắp mạch. Cái này mình phải dùng loại LED 7seg thì mới hiện thị được các số lần nhấn được. Hiện nay trên thị trường có 2 loại LED 7 thanh đó là loại chung Anot và chung catot

Cấu tạo của nó gồm 8 con LED đơn được ghép với nhau 1 là chung Anot 2 là chung Catot. có 1 chân cấp nguồn và 8 chân đầu ra hay vào tùy theo Anot chung hay catot chung.Và trên đó nó được chia ra làm 7 thanh tương ứng với A,B,C,D,E,F,G và 1 chân dot. Ở bài này tôi dùng LED 7 thanh có Anot chung! Cái này các bạn có thể ra chợ mua được giá chỉ có 2k đên 3K 1 con thôi! Sơ đồ nguyên lý mạch hiện thị!

Ở đây tôi dùng Port 2 để điều khiển hiện thị ra LED 7 thanh. Và cách mắc này là bơm dòng cho vi điều khiển. Dùng 5 V cấp cho LED 7 và CY8C29466.(Hình vẽ) Các bạn dùng cổng Port 2(Không cứ gì Port này đâu là theo ý tôi) lắp lần lượt từ Port2_0 đến Port2_7 vào các thanh A,B,C,D,E,F,G,Dot. Nhớ là phải lắp đúng thứ tự không có là không hiện thị được .Đầu chung Anot là được nối với 5V thông qua điện trở 330 hay 470 Thêm 1 nút nhấn để đếm số nút nhấn. Nút nhấn này được mắc vào Port1_7 một đầu được nối với chân P1_7 và một đầu được nối với GND. Trong phần mền tôi không dùng phần mền để chống nhiễu cho nó mà ở phần cứng tôi dùng để chống nhiễu cho tụ ở đây tôi dùng thêm 1 con tụ được mắc song song với nút nhấn. Tác dụng của tụ này là: + Khi chưa nhấn nút thì tụ được nạp điện sau khi nhấn nút thì lúc này tụ sẽ phóng điện từ dương sang âm làm cho tín hiệu lâu về 0 hơn (Trễ cứng) + Khi nhấn nút do các tiếp điểm cơ khí nên tín hiệu đó không về không được mà nó còn có 1 số xung điện . Tu điện dùng để giảm nhiễu. Nếu không muốn phần cứng để khử nhiễu mà ta dùng phần mền khử nhiễu cũng được! Thêm 1 mạch reset cho mạch: dùng 1 công tắc nối với chân số 19 thông qua 1 điện trở 1k và đầu kia được nối lên VCC. Khi công tắc được đóng thì mạch sẽ tự reset. Còn 1 tụ được nối giữa chân 28 và 14 là để không bị mất nguồn trong khoảng thời gian ngắn 2 : Nguyên lý hoạt động Psoc có sự hơi khác so với các dòng vi sử lý khác nó ta phải tự thiết lập phần cứng khi đưa ra các tín hiệu ra Port. Đối với bài tập này các bạn phải thiết lập chế độ như sau:

Port2 : Tất cả để ở chế độ Strong Port1_7 " Để ở chế độ Pull up Nguyên lý ở đây là nguyên lý đếm số nút nhấn. Nên thế ta phải cho nó 1 biến đếm để khi ta nhấn thì nó sẽ tăng thêm 1 (Tăng 2 ,3... cũng được) và biến đếm đó phải được lưu trong Ram. Khi biến đếm đó được nhấn 9 lần thì phải trở về 0 do ở đây ta dùng 1 LED 7 nên nó chỉ hiện thị được từ 0-9 thôi. Dùng 1 hàm để hiện thị các giá trị này.