Laboratorio de Microprocesadores I
Docente: Ing. Roger Guachalla Narváez
[email protected]
PRACTICA 06: Teclado matricial 4x4 y Display de Cristal Líquido LCD 1. Objetivos: Usar la librería de Mikrobasic: Keypad Library para realizar la interface entre el PIC16F877A, un teclado matricial de 4 filas por 4 columnas (keypad 4x4) Usar la librería de Mikrobasic: LCD Library para conectar el PIC16F877A con una pantalla de cristal líquido ASCII de 2 filas por 16 columnas (LCD 2x16). Revisar las funciones incorporadas en las librerías: EEPROM y SOUND Revisar la conexión del PIC16F877A a un relay
2. TECLADO MATRICIAL Un teclado (keypad) es un arreglo de pulsadores conectados por filas y columnas.
RUTINAS DE LA LIBRERIA KEYPAD MikroBasic provee una librería para trabajar con un teclado matricial de 4x4. Las rutinas también pueden ser usadas para teclados de 4x1, 4x2 o 4x3.
Keypad_Init: Inicializa el puerto del microcontrolador para trabajar con el teclado Keypad_Key_Press: Función que devuelve el código de tecla del keypad cuando la tecla es presionada. Si no hay tecla presionada, la función devuelve Cero (0).
Keypad_Key_Click: Función que devuelve el código de tecla del keypad cuando la tecla es presionada y liberada. Si no hay tecla presionada, la función devuelve Cero (0).
Códigos de Tecla devueltos por las funciones Keypad_Key_Press y Keypad_Key_Click:
1 2 3 4
5 6 7 8
9 10 11 12
Columnas
13 14 15 16
Filas
3. DISPLAY DE CRISTAL LÍQUIDO LCD MikroBasic PRO for PIC provee la librería LCD Library para trabajar con pantallas de cristal líquido capaces de desplegar caracteres ASCII alfanuméricos. En el modo de conexión de 4-bit, se requieren 6 líneas de conexión entre el microcontrolador y el LCD: 2 líneas de Control (RS: Register Select, EN:Enable) y 4 líneas de Datos (D4,D5,D6,D7) Para especificar la conexión física entre el microcontrolador PIC y el LCD, en el programa se dimensionan (crean) variables que indican los bits de los puertos del PIC correspondientes a cada una de las 6 líneas de conexión del LCD. Estos bits pueden modificarse de acuerdo a las necesidades del diseño. Previo al uso del LCD, se debe inicializar (una sola vez) con la instrucción: LCD_Init() Se pueden enviar mensajes al LCD indicando la fila (1 al 4), columna (1 al 16) y el texto (ASCII entre comillas) con la instrucción: LCD_Out(fila,columna,”Texto”) Si se requiere enviar Variables (byte, integer, float, etc.) al LCD, se deben utilizar funciones de conversión de la librería de conversiones (Conversions Library). Por ejemplo para mostrar un dato tipo byte llamado Temperatura, se debe crear una variable adicional de tipo cadena (string) que contenga el dato en formato ASCII : dim Temperatura as byte dim Temperatura_Txt as string[3] main: Temperatura=24 ‘Asignar un valor a la variable ByteToStr(Temperatura,Temperatura_Txt) ‘Convertir la variable a texto LCD_Out(1,1,Temperatura_Txt) end. También se pueden enviar comandos al LCD para su control con la instrucción LCD_Cmd(Comando_LCD) La siguiente tabla muestra los comandos LCD disponibles:
Comando_LCD _LCD_FIRST_ROW _LCD_SECOND_ROW _LCD_THIRD_ROW _LCD_FOURTH_ROW _LCD_CLEAR _LCD_RETURN_HOME _LCD_CURSOR_OFF _LCD_UNDERLINE_ON _LCD_BLINK_CURSOR_ON _LCD_MOVE_CURSOR_LEFT _LCD_MOVE_CURSOR_RIGHT _LCD_TURN_ON _LCD_TURN_OFF _LCD_SHIFT_LEFT _LCD_SHIFT_RIGHT
Propósito Mover cursor a la primera fila Mover cursor a la segunda fila Mover cursor a la tercera fila Mover cursor a la cuarta fila Limpiar pantalla Retornar el cursor a la fila 1, columna 1 Apagar cursor Activar cursor ‘subrayado’ Activar cursor ‘parpadeante’ Mover cursor a la izquierda Mover cursor a la derecha Encender la pantalla del LCD Apagar la pantalla del LCD Desplazar la pantalla a la izquierda Desplazar la pantalla a la derecha
Pantalla de cristal líquido LCD de 2 filas y 16 columnas Se utiliza para visualizar los diferentes mensajes en una pantalla LCD. Está basado en el microcontrolador HD44780 (fabricado por Hitachi) y puede visualizar mensajes en hasta 4 líneas (filas) con 16 caracteres (columnas) cada una. Puede visualizar todas las letras de alfabeto, letras de alfabeto griego, signos de puntuación, símbolos matemáticos etc. También es posible visualizar símbolos creados por el usuario.
A lo largo de un lado de una placa impresa pequeña del visualizador LCD se encuentran los pines que le permiten estar conectado al microcontrolador. Hay 14 pines en total marcados con números (16 si hay retroiluminación). Su función de los pines se muestra en la tabla que sigue:
FUNCIÓN
NÚMERO
NOMBRE
ESTADO LÓGICO
DESCRIPCIÓN
Tierra
1
Vss
-
0V
Alimentación
2
Vdd
-
+5V
Contraste de caracteres
3
Vee
-
0 a +5V Conectar un potenciómetro con un extremo en +5V, el otro en 0V y el punto medio a Vee
4
RS
0 1
D0 – D7 considerados como comandos D0 – D7 considerados como datos
5
R/W
0 1
Escribir los datos (del microcontrolador al LCD) Leer los datos (del LCD al microcontrolador)
6
E
Transición de 1 a 0
Acceso al visualizador LCD deshabilitado Funcionamiento normal Datos/comandos se están transmitiendo al LCD
7
D0
0/1
Bit 0 LSB
8
D1
0/1
Bit 1
9
D2
0/1
Bit 2
10
D3
0/1
Bit 3
11
D4
0/1
Bit 4
12
D5
0/1
Bit 5
13
D6
0/1
Bit 6
14
D7
0/1
Bit 7 MSB
Control de funcionamiento
Datos / comandos
***
Luz de Retroalimentación ***
15 16
a (Ánodo) k (Cátodo)
Conectar a +5V Conectar a 0V a través de una resistencia de 330 Ohm
No todos los modelos de display LCD cuentan con luz de retroalimentación
4. Librería EEPROM La memoria EEPROM de datos resulta muy importante cuando se requiere almacenar datos que no se deben perder al desconectar la energía del microcontrolador. El PIC16F877 cuenta con una memoria de datos de 256 bytes desde la dirección $00 hasta $FF. Guardar y leer datos resulta muy sencillo usando la librería EEPROM en MikroBasic:
EEPROM_Read(Dirección) Permite leer el contenido de una Dirección de memoria especificada. Ejemplo. Dato=EEPROM_Read(8) 'Se guarda en la variable Dato, el valor leido de 'la memoria EEPROM en la dirección 8
EEPROM_Write(Dirección, Dato) Permite escribir el Dato en una Dirección de memoria especificada. Ejemplo. EEPROM_Write(5,3) 'Escribir el dato 5 en la dirección 3 de la EEPROM
5. Librería Sound A través de esta librería, mikroBasic facilita la generación de sonidos de frecuencias predefinidas y con una duración que podemos especificar fácilmente. Esta librería cuenta con dos únicas rutinas:
Sound_Init(Puerto, Pin) Se indica el Puerto y el Bit donde se conectará el parlante de electreto Ejemplo. Sound_Init(PORTB,2) 'El parlante se conecta en el bit RB.2
Sound_Play(Frecuencia, Duración) Se indica la frecuencia del sonido a reproducir (en Hertz) y el tiempo de duración (en milisegundos) Ejemplo. Sound_Play(659, 250) 'Frecuencia=659Hz, duracion=250mseg
6. Conexión a Relay Para el manejo de cargas de potencia, se requiere conectar un dispositivo conmutador Relay como indica la siguiente figura:
7. Ejemplo A: Reloj Diagrama Esquemático
Componentes Proteus:
Código MikroBasic
8. Ejemplo B: Uso del Keypad y LCD Diagrama Esquemático
Componentes Proteus:
Código MikroBasic
9. Procedimiento Experimental en Laboratorio Usando el lenguaje MikroBasicPro for PIC realizar dos de los siguientes INCISOS. (Los incisos a realizar serán asignados por el Docente o por el Auxiliar)
1ra Firma: a) Temporizador programable: Al inicio mediante el teclado se ingresan los Segundos de temporización (entre 0 a 59) (Este número se almacena en la memoria EEPROM y se visualiza al presionar la tecla con la etiqueta ‘On/C’), posteriormente se despliega en el LCD el tiempo en el formato: SS (Segundos) Al llegar el tiempo a 00 (al cumplirse el tiempo de temporización) se activa un led indicador. b) Conversor de Decimal Numérico a Decimal Literal: Mediante el teclado se ingresa un número decimal entre 0 a 99 (Este número se almacena en la memoria EEPROM y se visualiza al presionar la tecla con la etiqueta ‘On/C’), posteriormente se despliega en el LCD el número ingresado en formato literal (Ejemplo: Si se ingresa ‘43’ entonces se muestra ‘Cuarenta y tres’ en el display) c) Teclado musical: Al presionar las teclas del teclado: ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, se escuchan las notas musicales básicas (DO, RE, MI, FA, SO, LA, SI) en un parlante conectado al bit 0 del puerto RD. Usar la librería Sound. La Duración del sonido está controlado por las siguientes teclas: Etiqueta de Tecla
÷ x + -
Duración en segundos 0.25 0.5 1 2
El nombre de la nota musical y la duración actual se muestran en la pantalla LCD.
2da Firma: a) Conversor Decimal a Binario, Hexadecimal y ASCII: Mediante el teclado se ingresa un número decimal entre 0 a 255, posteriormente se despliega en el LCD el número ingresado en formato Binario, Hexadecimal y en código ASCII (Ejemplo: Si se ingresa ‘65’ entonces se muestra ‘Bin: 01000001 Hex:41 Ascii:A’ en el display. (Si se ingresa el número 170 (Bin:10101010, Hex:AA,) entonce se activa una bombilla a través de un Relay) b) Cerradura electrónica con código programable: Se ingresa un código de apertura del candado de 3 dígitos. Si el código es correcto el LCD debe mostrar el mensaje “ABIERTO” y activar una bombilla a través de un Relay, caso contrario el mensaje será “CERRADO”. c)
10. I.
II. III.
Calculadora básica de dos dígitos: Se ingresa un primer número de 2 dígitos (del 0 al 99), posteriormente se ingresa una operación a realizar: suma (+), resta (-), multiplicación (*) o división (/), luego ingresa un segundo número de 2 dígitos, finalmente el LCD muestra el resultado de la operación. (Tomar en cuenta la división entre cero. En este caso se activa un bombilla a través de un Relay)
Informe escrito Firmas en la Carátula (0, 1 o 2) que avalen los procedimientos realizados en Laboratorio Imprimir el Diagrama Esquemático y el Código Fuente en MikroBasic usados para realizar los incisos asignado para la obtención de la 1ra y 2da Firma del Trabajo en Laboratorio
TRABAJO DE INVESTIGACION: Cada trabajo de investigación debe incluir: Resumen escrito a mano (de un mínimo de 3 páginas) Fuentes de Información (direcciones web, bibliografía) Copias impresas de la información adquirida a través de las fuentes
Pantalla de Cristal Líquido LCD
IV.
Secuencia de pasos y valores requeridos para realizar una inicialización (INIT) de la pantalla LCD Explicar en detalle los tres bloques de memoria que posee el display LCD: Memoria DDRAM, CGRAM y CGROM. Mostrar en una tabla, el conjunto de caracteres ASCII que puede desplegar un display LCD Display LCD gráfico (GLCD): Características, modos de funcionamiento, protocolo de comunicación Conclusiones