4.18 Ejemplo 16
Utilizar el teclado 4x4
Un teclado representa un conjunto de botones de presión conectados de tal manera que formen 'filas' y 'columnas', así reduciendo el número de los pines de E/S necasarios para su conexión. En este ejemplo utilizaremos un teclado con 16 botones de presión organizados en cuatro filas y columnas. La librería Keypad 4x4 contiene todas las funciones necesarias para leer este teclado así como para inicializar el puerto al que está conectado. Para demostrar el funcionamiento del teclado 4x4, el mensaje será visualizado en un LCD.

'Cabecera******************************************************
program example_16 ' Nombre de programa
dim kp, curX, curY as byte
dim keypadPORT as byte at PORTD ' Esta variable debe estar definida en todos los proyectos por
' medio de la librería Keypad. Así se define el puerto utilizado para conectar el teclado
dim LCD_RS as sbit at RB4_bit ' Conexiones del módulo Lcd
LCD_EN as sbit at RB5_bit
LCD_D4 as sbit at RB0_bit
LCD_D5 as sbit at RB1_bit
LCD_D6 as sbit at RB2_bit
LCD_D7 as sbit at RB3_bit
LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D4_Direction as sbit at TRISB0_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D7_Direction as sbit at TRISB3_bit ' Final de conexiones del módulo LCD
main: ' Inicio de programa
curX=1 ' Memorizar de la posición del cursor en el visualizador LCD 2x16
curY=1
ANSEL = 0 ' Configurar pines analógicos como digitales ed E/S
ANSELH = 0
TRISB = 0
PORTB = 0xFF
Keypad_Init() ' Inicializar el teclado en el puerto PORTC
Lcd_Init() ' Inicializar el LCD en el puerto PORTB,
Lcd_Cmd(_LCD_CLEAR) ' Borrar el visualizador
while true ' Esperar que alguna tecla se presione y suelte
kp = 0
while kp = 0
kp = Keypad_Key_Click()
Delay_ms(10)
wend
select case kp ' Preparar el valor comoo salida
case 1 kp = "1"
case 2 kp = "2"
case 3 kp = "3"
case 4 kp = "A"
case 5 kp = "4"
case 6 kp = "5"
case 7 kp = "6"
case 8 kp = "B"
case 9 kp = "7"
case 10 kp = "8"
case 11 kp = "9"
case 12 kp = "C"
case 13 kp = "*"
case 14 kp = "0"
case 15 kp = "#"
case 16 kp = "D"
end select
if (curY > 16) then ' Cambiar de posición del cursor
if (curX = 1) then
Lcd_Cmd(_LCD_SECOND_ROW)
curX = 2
curY = 1
else
Lcd_Cmd(_LCD_FIRST_ROW)
curX = 1
curY = 1
end if
end if
Lcd_Chr_CP(kp) ' Visualizar en el LCD
Inc(curY)
wend
end. ' Final de programa
Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes librerías en la ventana Library Manager antes de compilar el programa.