You are on page 1of 5

Practica 5 Teclado Matricial y LCD con Miconcontrolador PIC18F4550

CENTRO BACHILLERATO TECNOLGICO INDUSTRIAL


Y DE SERVICIOS NO.189
REPORTE DE PRACTICA 4
EQUIPO N5:
MARTINEZ GARDUO ORLANDO
CARDENAS ANGELES GABRIELA
GALLEGOS PEREZ LIZETH
ESPINOZA SANCHEZ MARINA LIZETH
5Q
ING.JESUS DAVILA G.
PROGRAMACION DE MICROCONTROLADOR EN SISTEMAS DE USO
COMERCIAL
H., MATAMOROS, TAM.
MATERIAL
-16 push buttons
-1 display de cristal liquido
-1 PIC18F4550
-2 capacitores de 22pf
-1 cristal de cuarzo de 8MHZ
-4 resistencias de 10k
-1 resistencia de 4.7k

HERRAMIENTAS
-Protoboard
-Cable USB
-Computadora

OBJETIVO
Armar una practica utilizando la librera keypad la cual soporta un teclado
de 4 filas y 4 columnas. El cdigo regresado por la funcin esta en el rango de 1 a
16 dependiendo de la tecla. En este ejemplo, el cdigo regresado es convertido
a cdigo ASCII [0..9,A..F] y desplegado en el LCD. Ademas un contador despliega
en la segunda lnea del LCD, el numero de teclas presionadas. Esto mediante un
programa previamente subido al microcontrolador.
DESARROLLO
DIAGRAMA A REALIZAR:

Como podemos ver en el diagrama de la practica, primero conectamos la


terminales 11 y 32 del micro-chip a corriente y la 12 y 32 a tierra. En las terminales
13 y 14 conectamos el cristal de cuarzo el cual funciona como oscilador en estas
terminales tambin conectamos los capacitores de 22 pf. En el pin 1 conectamos
una resistencia de 4.7k las terminales 33 a la 38 hacia el display de cristal
liquido(LCD) y los pines 18,19,20,21,27,28,29 y 30 hacia el teclado. Los pines
1,5,7,8,9,10 del display los conectamos a tierra y la terminal 2 a corriente o
positivo. Conectamos las cuatro resistencias de 10k del teclado hacia tierra.

Una vez armada la practica subimos el siguiente programa al


PIC18F4550 para que este funcionara.

PROGRAMA

unsigned short kp, cnt, oldstate = 0;


char txt[6];

// Puerto donde esta conectado el Teclado


char keypadPort at PORTD;
//
// conexiones del LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit
sbit
sbit
sbit
sbit
sbit
//

LCD_RS_Direction
LCD_EN_Direction
LCD_D4_Direction
LCD_D5_Direction
LCD_D6_Direction
LCD_D7_Direction

at
at
at
at
at
at

TRISB4_bit;
TRISB5_bit;
TRISB0_bit;
TRISB1_bit;
TRISB2_bit;
TRISB3_bit;

void main() {
cnt = 0;
// Reset counter
Keypad_Init();
//
Initialize
Keypad
ANSEL = 0;
// Configure AN pins as digital I/O
ANSELH = 0;
Lcd_Init();
// Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
// Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);
// Cursor off
Lcd_Out(1, 1, "1");
Lcd_Out(1, 1, "Key :");
// Write message text on LCD
Lcd_Out(2, 1, "Times:");
do {
kp = 0;

// Reset key code variable

// Wait for key to be pressed and released


do
// kp = Keypad_Key_Press();
// kp variable
kp = Keypad_Key_Click();
// kp variable
while (!kp);

// Prepare value for output, transform key to it's ASCII


value
switch (kp) {
//case 10: kp = 42; break; // '*'
// descomentar
para teclado 4x3
//case 11: kp = 48; break; // '0'
//case 12: kp = 35; break; // '#'
//default: kp += 48;
case

1: kp = 49; break; // 1 // descomentar teclado

4x4
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case

2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

50;
51;
65;
52;
53;
54;
66;
55;
56;
57;
67;
42;
48;
35;
68;

break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

2
3
A
4
5
6
B
7
8
9
C
*
0
#
D

}
if (kp != oldstate) {
previous
cnt = 1;
oldstate = kp;
}
else {
previous
cnt++;
}
Lcd_Chr(1, 10, kp);

// Pressed key differs from

//

Pressed

key

is

same

as

// Print key ASCII value on

LCD
if (cnt == 255) {
overflow
cnt = 0;
Lcd_Out(2, 10, "
");

//

If

counter

varialble

}
WordToStr(cnt, txt);
string
Lcd_Out(2, 10, txt);
LCD
} while (1);
}

// Transform counter value to


// Display counter value on

IMAGENES DE LA PRACTICA

CONCLUSIN
Esta practica fue un poco complicada tuvimos varias complicaciones por
la manera en que la armamos. Pero al final logramos que funcionara de
manera correcta. Al presionar una tecla esta apareca en el display.

You might also like