Thứ Tư, 23 tháng 3, 2016

BÀI 39 : GIAO TIẾP VỚI KEYPAD 4X4 PIC16F877A CCS

I. Keypad 4x4.
Keypad là một "thiết bị nhập" chứa các nút nhấn cho phép người dùng nhập các chữ số, chữ cái hoặc ký hiệu vào bộ điều khiển. Keypad không chứa tất cả bảng mã ASCII như keyboard và vì thế keypad thường được tìm thấy trong các thiết bị chuyên dụng. Các nút nhấn trên các máy tính điện tử cầm tay là một ví dụ về keypad. Số lượng nút nhấn của một keypad thay đổi phụ thuộc vào yêu cầu ứng dụng. Trong bài này tôi giới thiệu cách điều khiển của một loại keypad đơn giản, keypad 4x4.
Gọi là keypad 4x4 vì keypad này có 16 nút nhấn được bố trí dạng ma trận 4 hàng và 4 cột. Cách bố trí ma trận hàng và cột là cách chung mà các keypad sử dụng. Cũng giống như các ma trận LED, các nút nhấn cùng hàng và cùng cột được nối với nhau, vì thế với keypad 4x4 sẽ có tổng cộng 8 ngõ ra (4 hàng và 4 cột). Mô hình Keypad 4x4 được thể hiện trong hình 1.
keypad 4x4
Hình ở trên là hình mô phỏng trên phần mềm protues mình chụp lại để các bạn hình dung nó như thế nào thôi ! Còn thực chất thì nó được cấu tạo như sau :
keypad 4x4
Có rất nhiều cách khác nhau để làm bài này các bạn thích làm theo cánh bào thì làm. Như trong hình trên thì chúng ta sẽ thấy các chân C1 - C4 sẽ nối với mức 0 từ chân Vi Điều Khiển, và các chân từ R1- R4 sẽ được nối với trở và nối vào mức 1 của Vi Điều khiển ! Và chúng ta sẽ quét theo hàng và cột giống như 1 mảng vậy !
- Đây là ảnh mô phỏng protues.
keypad 4x4 lcd pic16f877a
- Đây là code chương trình.
#include <main.h>
#include <uart.c>
#include <key_4x4.c>
#include <var.h>
#include <lcd_4bit.c>
void main()
{  
   unsigned int8 key;
   key_4x4_init();
   UART_config();
   printf("KEY 4X4 DEMO \n");
   LCD_Init();
   while(TRUE)
   {
      key=get_key_4x4();
      if(key)
      {
         printf("http://xcvn.blogspot.com \n");
         printf("Phim Vua An: %c \n",key);
         LCD_PutCmd(0x82);
         LCD_PutChar("Cover By Lam");         
         LCD_PutCmd(0xC0);
         printf(LCD_PutChar,"Phim Vua An: %c",key);
         while(key)key=get_key_4x4();
      }
      delay_ms(10);
   }
}                
- Link download project Click here


EmoticonEmoticon