Danh mục

Ma trận phím 4*4 hiện thị LCD

Số trang: 8      Loại file: pdf      Dung lượng: 290.96 KB      Lượt xem: 11      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

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
Nội dung trích xuất từ tài liệu:
Ma trận phím 4*4 hiện thị LCD Ma trận phím 4*4 hiện thị LCDNguồn:biendt.bizViệ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àitoá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ànphí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ộtma 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ômnay 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 4x4Nó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: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ớicá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ốimộ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ó 8châ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út0 đượ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étThuậ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ượclạ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 ramứ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étLED 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ậntí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ợpnà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 đếnviệ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:[CODE]/*----------------------------------------------------------------------------==========MA TRAN PHIM 4X4 HIEN THILCD=======================Viet boi: biendt - biendt.biendt@gmail.comDung P2 de noi vao chan cac ma tran phim+ Tu P2_0 den P2_3 duoc noi vao hang+ Tu P2_4 den P2_7 duoc noi vao cot+ Tat ca P2 duoc dat o che do StrongDung LCD 16*2 hien thi gia tri ban phim duoc noi vao cong P0----------------------------------------------------------------------------*/#include // part specific constants and macros#include PSoCAPI.h // PSoC API definitions for all User Modulesunsigned char sttphim;//====================Dinh nghia cac gia tri nutnhan=========================#define hang1 (PRT2DR&0x01)#define hang2 (PRT2DR&0x02)#define hang3 (PRT2DR&0x04)#define hang4 (PRT2DR&0x08)#define cot1 (PRT2DR&0x10)#define cot2 (PRT2DR&0x20)#define cot3 (PRT2DR&0x40)#define cot4 (PRT2DR&0x80)//================================Ham hien thi 2 so trenLCD====================void lcd2digit(unsigned int Data){LCD_1_WriteData(0+Data/10);Data=Data%10;LCD_1_WriteData(0+Data);}// ==============================Ham quet ma tranphim==========================void quetphim(){PRT2DR=PRT2DR|0x01; //Cho cac hang muc 1PRT2DR=PRT2DR|0x02;PRT2DR=PRT2DR|0x04;PRT2DR=PRT2DR|0x08;PRT2DR=PRT2DR&0xef; // Cho cac cot muc 0PRT2DR=PRT2DR&0xdf;PRT2DR=PRT2DR&0xbf;PRT2DR=PRT2DR&0x7f;if((!hang1)|(!hang2)|(!hang3)|(!hang4)) // kiem tra hang dc nhan{if(hang1==0) // neu hang 1{PRT2DR=PRT2DR|0x10; // cho cac cot muc 1PRT2DR=PRT2DR|0x20;PRT2DR=PRT2DR|0x40;PRT2DR=PRT2DR|0x80;PRT2DR=PRT2DR&0xfe; // chuyen hang1 ve muc 0if(!cot1) sttphim=0;if(!cot2) sttphim=1;if(!cot3) sttphim=2;if(!cot4) sttphim=3;}if(hang2==0){PRT2DR=PRT2DR|0x10;PRT2DR=PRT2DR|0x20;PRT2DR=PRT2DR|0x40;PRT2DR=PRT2DR|0x80;PRT2DR=PRT2DR&0xfd; // chuyen hang2 ve muc 0if(!cot1) sttphim=4;if(!cot2) sttphim=5;if(!cot3) sttphim=6;if(!cot4) sttphim=7;}if(hang3==0){PRT2DR=PRT2DR|0x10;PRT2DR=PRT2DR|0x20;PRT2DR=PRT2DR|0x40;PRT2DR=PRT2DR|0x80;PRT2DR=PRT2DR&0xfb; // chuyen hang3 ve muc 0if(!cot1) sttphim=8;if(!cot2) sttphim=9;if(!cot3) sttphim=10;if(!cot4) sttphim=11;}if(hang4==0){PRT2DR=PRT2DR|0x10;PRT2DR=PRT2DR|0x20;PRT2DR=PRT2DR|0x40;PRT2DR=PRT2DR|0x80;PRT2DR=PRT2DR&0xf7; // chuyen hang4 ve muc 0if(!cot1) sttphim=12;if(!cot2) sttphim=13;i ...

Tài liệu được xem nhiều: