Este documento describe cómo controlar y manejar periféricos como teclados matriciales 4x4 y pantallas LCD gráficas 128x64 con un PIC18F4550. Explica cómo configurar el bus de datos y control de las pantallas LCD, e incluye código de ejemplo para mostrar imágenes monocromáticas. También proporciona detalles sobre sentencias para graficar en la pantalla LCD, como dibujar líneas, rectángulos y círculos. Finalmente, brinda una breve descripción sobre cómo funcionan los tecl
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 2021.pdf
1. !HOLA!
Un placer compartir contigo nuevamente… Seguimos
avanzando, ya nos toca abordar nuestro segundo
contenido, CONTROL Y MANEJO DE PERIFÉRICOS
(TECLADO 4X4 ,LCD GRÁFICAS 128x64), donde
aprenderemos a graficar en las pantallas GLCD y a usar
los teclados matriciales.
1
Ing. Wilfran Yaraure
Facilitador
!Vamos a darle!
2. CONTROL Y MANEJO DE PERIFÉRICOS
(TECLADO 4X4 ,LCD GRÁFICAS
128x64) CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica Dpto. De
Electromedicina
Unidad Curricular: Microcontroladores y
Microprocesadores II
3. LCD GRÁFICAS 128x64 (GLCD)
1.Son Gobernadas por 2 controladores, Cada uno encargado de un área
de la pantalla
2.Requieren una serie de librerías y sentencias para su funcionamiento
y configuración.
3.Cuentan con 20 pines Distribuidos en:
I. 8 Pines Para el bus de datos, el cual se encarga de mostrar la
imagen la información en la pantalla.
II. 6 Pines para el bus de control, estableciendo las
configuraciones de los controladores internos, entre otros ,
III. 2 Pines para la polarización
IV. 2 Pines para ajustar el contraste
Son pantallas que permiten graficar
mapas de bit en diferentes
proporciones de pixeles, además de
permitir también graficar o dibujar
figuras geométricas como líneas,
círculos, triángulos, entre otros, y
conformar así una imagen completa.
A diferencia de las LCD, estas permiten
graficar mapas de bit con mayor
resolución, y se pueden encontrar
comercialmente con 128x64, 128x128,
240x320 pixeles
3
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Características
4. El editor de código Mikro C, proporciona una
serie de librerías y sentencias que permiten
Configurar y utilizar las GLCD.
Lo primero que se debe hacer, es configurar el
Bus de dato y el bus de control , empleando
declaración de variables globales tipos Char y
Tipo Sbit.
Esto lo debe hacerse antes de la función
principal.
4
¿Como Podemos configurar las GLCD?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
5. Para ello realizamos la declaración de una variable global
tipos Char
char GLCD_DataPort at PORTX;
5
¿Como declaramos el bus de datos?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Con esta línea de programación
configuramos el puerto encargado de enviar
los datos a la pantalla, debes tener en cuenta
que debe ser un puerto con 8 pines, 8bit, que
todos puedan ser configurados como salidas
Digitales
char GLCD_DataPort at PORTD;
6. Para ello realizamos la declaración de una variable global
tipos sbit, una para cada línea de control
6
¿Como declaramos el bus de control?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
1. Primero declaramos los pines control, en este
caso empleando el puerto B para ello
//Declaración de los pines de control.
sbit GLCD_CS1 at RB0_bit;
sbit GLCD_CS2 at RB1_bit;
sbit GLCD_RS at RB2_bit;
sbit GLCD_RW at RB3_bit;
sbit GLCD_EN at RB4_bit;
sbit GLCD_RST at RB5_bit;
2. Luego declaramos los Tris de Control para este
mismo puerto.
//Declaración de los registros de TRIS de control.
sbit GLCD_CS1_Direction at TRISB0_bit;
sbit GLCD_CS2_Direction at TRISB1_bit;
sbit GLCD_RS_Direction at TRISB2_bit;
sbit GLCD_RW_Direction at TRISB3_bit;
sbit GLCD_EN_Direction at TRISB4_bit;
sbit GLCD_RST_Direction at TRISB5_bit;
7. En este caso mikro c y el Lenguaje proporcionan una
línea de programación que incluye l a librería
correspondiente a la GLCD, donde se describe la
sentencia necesaria para realizar la inicialización de
la misma.
7
¿Como Inicializamos nuestra pantalla GLCD?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Debes tener en cuenta que esta declaración de
inicialización se realiza dentro de la función principal
del código, es decir, dentro de la Void Main (), y se
encuentra entre las condiciones iniciales del programa
como La declaración de los TRISX, del ADCON1, Entre
otros.
Glcd_Init();
sentencia para la inicialización de la GLCD
8. 8
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Una de las diferencias entre las pantallas LCD y las
GLCD, es que esta ultima permite mostrar o graficar
imágenes monocromáticas, basadas en mapas de
bit mono cromáticos.
Para ellos se deben seguir los Siguientes pasos:
1. EDITAR IMAGEN
Se abre la imagen a utilizar con el editor de imagen
de mapa de Bits (Paint).
9. 9
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
2. Se selecciona toda la imagen
(o Presionar CTRL+ E).
10. 10
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
3. Cambiar tamaño
i. Se hace Clic derecho sobre la
imagen seleccionada para
desplegar el menú de edición Y
hacer clic en “cambiar tamaño”
ii.Seleccionar PÍXELES
iii.Cambiar la medida de tamaño
Horizontal a 128 Pixeles y 64
Pixeles vertical
iv.Deseleccionar la relación entre
ellos y seleccionar aceptar.
i.
ii
iii
iv
11. 11
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
4. RECORTAR IMAGEN
hacer clic en recortar en la barra
de herramientas superior.(O
Presionar Ctrl+Mayús+X)
Manteniendo la imagen
seleccionada
12. 12
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
5. GUARDAR IMAGEN
i. Hacer Clic en Archivo,
ii. Guardar como,
iii. IMAGEN BMP
iv. seleccionar el tipo de archivo
Mapa de Bit Monocromático
IMAGEN RESULTANTE
13. 13
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
6. Código de la imagen en Lenguaje C
Para esto se emplea la herramienta GLCD
Bitmap Editor incluida en el MikroC PRO,
este editor se encuentra en la barra de
herramientas superior, dentro del ítem
Tools, y su submenú GLCD Bitmap Editor.
14. 14
Imágenes monocromáticas en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
6. Código de la imagen en Lenguaje C
6.1 Hacer clic en la pestaña: KS0108,
6.2 Seleccionar 128x64 (KS0108)
6.3 Hacer Clic en Load BMP, para cargar Mapa de
Bit Monocromático creado en PAINT.
6.4 Seleccionar la opción mikroC PRO.
6.5 Seleccionar la opción Copoy Code to Clipboard.
Está acción copia el código en lenguaje C.
6.6 Guardar el Código en un blog de notas para
tenerlo a la mano a la hora de utilizarlo
para agregar al código de programa se realiza una
declaración de variable de tipo:
const unsigned char.
6.1
6.2
6.3
6.4
6.5
15. 15
Código
Ejemplo
para
mostrar
una imagen
en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Declaración de Variables Globales
Función Principal
Declaración del Bus de datos en el PORTD
Declaración del Bus de Control en los
Puerto C y E
Declaración del Código de la
imagen
Sentencia de
Inicialización de la
GLCD
Sentencia Para
Mostrar la imagen en
la GLCD
16. 16
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
El editor de código mikro c,
ofrece una serie de librerías
cargadas con sentencias o
líneas de programación que
permiten escribir y graficar,
textos e imágenes en la
Glcd. Entre ellas están:
Glcd_Fill(0); Rellena la memoria de la GLCD con un
patrón de bytes que pueden ser negros (1) o
blancos (0), colocando dentro del paréntesis el
valor correspondiente, es utilizada para “borrar”
la pantalla
Glcd_Dot(x,y,c); Dibuja un punto en la GLCD en las
coordenadas correspondientes, donde X es el
valor de la posición en x, Y es el valor de la
posición en Y, y C es el color del punto ( que
puede ser blanco o negro según se coloque 1 o 0)
17. 17
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Glcd_Line (x_start, y_start, x_end, y_end, color);
Glcd_V_Line (x_start, y_start, x_end, y_end, color);
Glcd_H_Line(x_start, y_start, x_end, y_end, color);
Con estas 3 Sentencia se pueden graficar líneas en
cualquier dirección (Glcd_Line) Líneas Verticales
(Glcd_V_Line), y Líneas Horizontales (Glcd_H_Line)
Especificando las coordenadas del ponto inicio de la
línea (x_start, x_Start), y las del punto final de la
línea (x_end, y_end) además de definir el
parámetro color, con el valor del ultimo numero,
18. 18
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Glcd_RectangleRectangle(x1, y1, x2, y2, color);
Glcd_Rectangle_Round_Edges; (x1, y1, x2, y2, r, color);
Glcd_Rectangle_Round_Edges_Fill; (x1, y1, x2, y2, r, color);
Con estas 3 Sentencia se pueden graficar
Rectángulos (Glcd_RectangleRectangle)
Rectángulos con Bordes redondeados
(Glcd_Rectangle_Round_Edges), y Rectángulos
con bordes redondeados y relleno
(Glcd_Rectangle_Round_Edges_Fill; )
Especificando las coordenadas de la esquina
superior izquierda (x1, y1), y de La
esquina inferior derecha (x2, y2), el radio
de los bordes redondeados (r) y el color
del relleno o de la línea según sea el
caso, con el ultimo numero.
19. 19
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Glcd_Box (x1, y1, x2, y2, Color); Con esta Sentencia se pueden graficar una
caja o cuadrado
Especificando las coordenadas de la esquina
superior izquierda (x1, y1), y de La
esquina inferior derecha (x2, y2), y el
color del relleno o de la línea según sea
el caso, con el ultimo numero.
(x1, y1),
(x2, y2),
20. 20
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Glcd_Circle (x, y, r, Color);
Glcd_Circle_Fill (x, y, r, Color);
Con esta Sentencia se pueden graficar un
Circulo con relleno(Glcd_Circle_Fill) o sin
relleno (Glcd_Circle)
Especificando las coordenadas del centro del
circulo (x, y), y el radio (r) además del
color del relleno o de la línea según sea
el caso.
(x, y)
r
21. 21
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Glcd_Write_Char (‘Chr’, X, pg, Color) ;
Glcd_Write_Text (“tex”, X, pg, Color);
Con estas Sentencias se pueden mostrar
caracteres alfanuméricos (Glcd_Write_Char)
y Texto (Glcd_Write_Text) en la GLCD
Especificando El carácter o texto a mostrar
(Chr, Tex) entre comilla simple o comillas
dobles, según sea el caso, la posición en
x donde se va a comenzar a escribir (X), el
Numero de pagina (Pg) de la Glcd donde
se va a escribir, y el color.
22. 22
Sentencias para graficar en la GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Glcd_Image (Titulo );
Con esta Sentencia se pueden Mostrar una
imagen en la pantalla GLCD
Especificando el titulo O Nombre de la
imagen.
23. 23
Código Ejemplo de sentencias para GLCD.
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Habiendo hecho las
declaraciones de las
variables globales
necesarias para el uso
de la GLCD
24. “
Espero que te este yendo bien, se
que eres inteligente u capaz… por
eso te invito a seguir en este viaje, y
profundizar mas en este mundo de
los Microcontroladores.
24
Ing. Wilfran Yaraure
Facilitador
25. Teclados Matriciales 4x4
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Consisten un arreglos de pulsadores alineados en 4 filas y 4
columnas, constituyen una interfaz lo bastante completa para
numerosas aplicaciones
¿Como funciona?
Al pulsar una tecla, se activa una de las 4 columnas, y luego revisa
cual de las filas se activa, para determinar cual de las teclas fue
pulsada, para esto realiza un testeo guiado por la matriz formada,
llevando a cabo un recorrido por cada tecla de izquierda a derecha y
de arriba a bajo.
25
26. 26
Keypad_Key_Press ();
Esta es una función que permite
mostrar los valores de cada tecla
cuando se presiona la tecla,
donde 0 indica que no hay
ninguna tecla presionada, y los
valores de 1 a 16, indicaran cada
una de las opciones de tecla que
se pueden ofrecer en esta matriz
char keypadPort at PORT_;
Esta Línea permite declara la
variable char que asignara el
puerto que controlará el
teclado Matricial, es decir
donde se conectara el mismo
Keypad_Init ();
Esta es la sentencia de
Inicialización necesaria para
usar el teclado matricial
4x4, la cual se debe
declarar dentro de la
función principal del código,
al momento de describir las
condiciones iniciales.
¿Como Configurar los Teclados Matriciales 4x4?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
El Editor de código Mikro C PRO, cuenta con la librería Keypad4x4, que permite
controla un teclado de 4x4, usando estas 4 sentencias o funciones:
Keypad_Key_Click ()
Esta función ejerce una
tarea anti rebote, ya
que muestra el valor de
la tecla cuando se deja
de presionar la tecla en
cuestión.
27. 27
¿Como Decodificar los Teclados Matriciales 4x4?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Las funciones anteriores permiten desarrollar
algunas sentencia, pero al activarse una tecla, solo
se están activando un 1 lógico o un 0 lógico, para
poder traducir esos estados a un valor o carácter
alfanúmero, se debe emplear una función
decodificadora, para la cual se emplea la función
switch, que ofrece una serie de casos o menús,
para ejecutar y el código ASCII:
28. 28
¿Qué es el código ASCII?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
American Standard Code for Information Interchange
Código Americano (estadounidense) Estándar para el intercambio de
Información (se pronuncia Aski).
Es un código utilizado para representar caracteres y texto, asignándole
un valor numérico a cada uno, para hacer mas fácil su llamado en el las
líneas de programación.
Es utilizado por pantallas GLCD y otras, para mostrar los caracteres.
Ofreces Caracteres de control o no Imprimibles, y los caracteres
imprimibles, que son los símbolos que se pueden mostrar.
29. 29
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Al programar,
usando las
librerías
correspondien
tes, se pueden
utilizar los
valores
decimales o
Hexadecimale
s mostrados
en esta tabla,
para indicarle
al micro y a la
pantalla que
carácter
mostrar.
30. 30
¿Como Conectar los Teclados Matriciales 4x4?
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para conectar los teclados matriciales de 4x4 se debe
tener en cuenta:
1. Se debe emplear un puerto completo de 8 bit, 8
pines
2. Las colunas se conectan a los bit menos
significativos, es decir la Columna 1 se conecta con
el pin 0 del puerto, la columna 2 con el pin 1 del
Puerto, la columna 3 con el Pin 2 del Puerto, y la
columna 4 con el Pin 3 del Puerto.
3. Se debe conectar una resistencia de protección de
10K, entre las columnas y el Pin de conexión
31. Ejemplo
Realizar un programa que muestre en
una pantalla GLCD un mensaje en varias
líneas : Bienvenidos, A continuación,
ingrese Datos, del Paciente, y luego
permita ingresar datos alfanuméricos
con un teclado matricial 4x4, permitiendo
escribir todas las letras y números
arábicos, borrar la letras y crear espacio
entre palabras.
31
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
32. Atacando por partes
1.Es necesario Un puerto de Entrada para el Teclado 4x4, debe ser de 8
pines completos y de 8 Bit. Asignamos el PORT B
2.Son necesarios varios puerto de Salida para la GLCD, 8 Bit de bus de
datos, y los 6 bit de control. Para el Bus de dato asignamos El PORT D, y
para el bus de control lo distribuimos 3 en PORT C y 3 En el PORT E
3.Las entradas y salidas deben ser digitales
4.Serán necesarias variables Globales tipo Char para declara los puertos
encargados de pantalla y teclado, y algunas variables enteras.
5.Son necearías algunas funciones secundarias para realizar la
decodificación del teclado matricial y el código ASCII
32
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
33. Analizamos el código por partes
33
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Observamos un ejemplo mas dinámico de Cabecera usando las
mismas herramientas /* … */
Declaramos las Variables necesarias para la Utilización de la GLCD
En este caso se emplea la Variable tipo Short, la cual le dio el
identificar borrado, para poder realizar el proceso de Borrado en la
Pantalla, usando contadores y otras herramientas que veremos mas
adelante
Declaramos las Variables necesarias configurar el Bus de Datos en el
PUERO D, y Bus de control Distribuido en el PORT C Y PORT E, debido
a que utilizaremos el PUERTO B para el Teclado.
Los Pines de control pueden ser declarados de Dos formas
Usando RC0 o LATC0
Como se observa en este ejemplo
34. Analizamos el código por partes
34
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
En esta porción del Código, observamos que se realiza la deflación de una
serie de variables tipo Short que funcionaran como contadores que ayudaran
al funcionamiento del teclado
posX, posY Permitirán escribir secuencialmente sin tener que estar
enviando las coordenadas cada vez que se pulse la tecla, funcionan como
contadores de posición.
letra es un contador que permitirá almacenar en el, el valor en código ASCII
de la tecla pulsada para mostrarlo en la GLGCD.
kp Es un contador que almacena el valor de la tecla pulsada, es decir cual
tecla fue pulsada.
cnt Es el contador nos ayudara a escribir varias letras con unas sola tecla,
almacenando en el cuantas veces fue pulsada la tecla.
kp_ant será un contador que guardara el valor de la tecla pulsada
anteriormente.
sigX es un contador que nos ayudará a hacer un salto de línea, es decir ira
contando hasta desde 0 a 127, para indicar que ya se debe pasar a la
siguiente posición en x, porque ya se alcanzo el máximo.
tiempo es un contador que se encargara de medir el tiempo de espera
necesario para ir a la siguiente letra con la misma tecla
Observamos también la declaración de la variable char para asignar
el puerto, en este caso al puerto B
35. Analizamos el código por partes
35
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Ya en este punto llegamos a la función principal del
programa, donde comenzamos a declara las condiciones
iniciales de cada variable, puerto y funciones.
Se activan las entradas y salidas digitales con el registro
ADCON1
Se desactivan los comparadores internos del micro con
el registro CMCON
Se les da un valor de inicio a cada contador antes
mencionado.
Se inicializan las librerías del teclado y la GLCD
36. Analizamos el código por partes
36
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Comenzando con la lógica del programa, se inicia con las tareas
que requiere el enunciado, la primera tarea era mostrar un
mensaje de bienvenida en varias líneas
Entonces usando la sentencia Glcd_Write_Text, colocando el
texto a mostrar entre comillas “texto” especificando la posición
en X y la posición en Y donde se va a iniciar a mostrar, y el color
de la letra.
Debes tener en cuenta que tienes 128 posiciones o pixeles, en
x, es decir 128 puntos para graficar en x Y 64 para graficar en Y,
no quiere decir que puedas graficar 128 letras.
Se puede observar que se dio coordenadas diferentes y
secuenciales a cada línea de mensaje para que no queden una
sobre otra y se muestren al mismo tiempo.
37. Analizamos el código por partes
37
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para utilizar el Teclado, iniciamos un bucle de repeticiones
infinitas usando do {…} while(1); de aquí en adelante todo
estará dentro de es este bucle, para poder ingresar los valores a
través del teclado.
En este caso se les da nuevamente un valor de inicio a las
variables contadores a utilizar, para que estas inicien en cero y
no se genere ningún error al presionar las teclas
38. En este caso se hacen algunos arreglos para evitar el efecto rebote en l a tecla, o activar el teclado erróneamente, por ejemplo:
Se utiliza un retardo de 10 ms, antes de comenzar
Se aumenta 1 al contador tiempo
Se establece una sentencia interactiva condicional para verificar que se haya esperado el tiempo necesaria, y se pueda escribir
la letra, preguntando si tiempo es mayo que 150 y si sigX es igual a cero, si esto se cumple igualamos la variable sigX a 1
Si estas condiciones se cumplen entonces la variable kp será igual a la tecla presionada (Keypad_Key_Click();), los valores del 1
al 16, no se muestra aun ningún carácter numérico o letra.
Analizamos el código por partes
38
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Dentro del bucle de repeticiones infinitas serán creados varios
bucles de repeticiones condicionadas, para poder ejecutar el
teclado.
En este primer bucle se tiene la condición while (!kp); Es decir,
que repetirá hasta que !kp deje de estar presionado, recodamos
que este (!) operador lógico indica negación,
39. Analizamos el código por partes
39
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para mostrar el valor en código ASCII, es decir el carácter en
la pantalla, se estará empleando la sentencia interactiva
condicional if else
Con el if verificamos si se esta presionando una tecla
diferente
Con el else verificamos si se esta presionando la misma
tecla.
40. Analizamos el código por partes
40
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Este primer if esta condicionado de manera que si kp tiene
cualquiera de esos valores,(kp_ant, o kp==16, o 12 o 13 ) se
ejecuten las sentencias de las líneas siguientes
Dentro de las sentencias de este condicional se encuentra
otra sentencia if , la cual permite verificar si se ha alcanzado
la posición máxima en x para poder seguir escribiendo, es
decir si posX llego a 120, se debe comenzar a escribir en la
siguiente línea, por lo que se reinicia posX colocándolo en 0, y
se aumenta la posY para pasar a la siguiente línea. Pero si
posY ya alcanzo el valor máximo en Y que seria posY = 7, se
debe reiniciar posY y comenzar a escribir al Incido de la
Pantalla nuevamente.
NOTA IMPORTANTE:
Los valores de kp== 16 o 12 o 13, corresponde
los case 12, case 13, case 13, de la sentencia
switch que se utilizara mas adelante para
mostrar los caracteres
41. Analizamos el código por partes
41
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para el caso de else, cuando se presione la misma tecla, se
emplean otra sentencia condicional interactiva, que esta
sujeta al valor de la variable sigX, si esta es igual a 1, como lo
vimos en bucle do {…} while(!kp) entonces se deben cumplir
las sentencias de las líneas siguientes.
Donde se verifica de igual forma las posiciones en x y en y
para poder seguir escribiendo.
En este caso aun no se muestran los caracteres, solo se
están preparando las posiciones para escribir en la pantalla
NOTA IMPORTANTE:
Es necesario saber que al escribir en la pantalla,
podrás escribir 21 letras en 7 líneas, a pesar de
que X tiene 128 pixeles, cada letra ocupa una
cierta cantidad de ellos, y con relación a Y se
cuentan con 64 pixeles, pero cada letra ocupa
cierta cantidad de ellos al igual que en x.
42. Analizamos el código por partes
42
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para poder decodificar los caracteres en cada tecla, se empleara una sentencia interactiva
tipos switch condicionada por la variable kp es decir, cada vez que se le de valor a kp con la
sentencia Keypad_Key_Click(); el programa entrará a la función switch y ejecutara el caso,
según la tecla que fue presionada (de 1 a 16)
En cada caso se encontrar las sentencias if, else, para verificar el estado del la variable cnt,
para decidir que letra o numero mostrar. En el case 1 por ejemplo
Si la variable cnt es menor que 1, es decir se presiono solo 1 vez, entonces se le asigna un
valor a la variable letra= 49 para mostrar el numero 1 en la pantalla
Si la variable cnt no es menor que 1, si no que es menor que 2, es decir se presiono 2 veces,
se le asigna un valor a la variable letra= 65. para mostrar el la Letra A en la pantalla
Si ninguna de estas condiciones anteriores se cumple, indica que se presiono la tecla por 3era
vez y se le asigna un valor a la variable letra= 66. para mostrar el la Letra B en la pantalla.
Y así se realizara el arreglo correspondiente para cada caso, según la cantidad de letra o
numero a mostrar por cada tecla, desde el case 1 hasta el case 16
NOTA IMPORTANTE:
Los valores de la variable letra pueden ser asignados
en numeración decimal o hexadecimal, y la pantalla
los traducirá a código ASCII, por lo que se debe
verificar la tabla del código ASCII para asignar los
valores
43. Analizamos el código por partes
43
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para al fin poder mostrar los caracteres de cada
tecla, se emplea la sentencia
Glcd_Write_Char (letra, posX, posY, 1);
Teniendo en cuenta las variables letra, posX, posY, ye
el tratamiento que se les dio en las líneas anteriores.
44. Analizamos el código por partes
44
CONTROL Y MANEJO DE PERIFÉRICOS CON EL PIC18F4550
Ing. Wilfran Yaraure
Facilitador
Para el Borrado, se utilizará el caso 16 el la sentencia switch, es decir que cuando se
presione la tecla 16, se ejecutara el borrado.
Como se ejecuta:
Si posX es igual a 0 y posY es menor que 0, entonces le restamos 1 a posY y llevamos al
máximo a posX= 120. y se le asigna un valor a la variable letra=32 que en código ASCII
corresponde a un espacio en blanco
Pero si la posX es menor que 0, entonces regresamos a la ultima posición de x y
colocamos un valor a letra=23
Cada vez que esto pase, se le asigna un valor al contador borrado= 1, para indicar que se
esta borrando un espacio.
Para completar el proceso, en las ultimas líneas del
programa, se usa la sentencia if, condicionada por la
variable borrado, cuando esta sea igual a 1 se activara
esta condición, para luego de que se borre, se coloque
automáticamente la variable borrado= 0, y se regrese
a la ultima posición en x
46. 46
¡Excelen!
Hemos llegado al final de esta sesión, pero aun no
queda un poco mas para profundizar, te invito que sigas
indagando y practicando, y trates de realizar los
ejercios demostrados y hacer la simulación, no hay
mejor manera de aprender que haciendo.
Si tines dudas estoy a un mensaje de distancia.
Ing. Wilfran Yaraure
Facilitador
47. “
47
Ing. Wilfran Yaraure
Facilitador
El sentido Trascendental del prepararse, de sacrificar,
al entregarse del todo para lograr el objetivo, es el
sentido que abraza cada vocación, cada profesión ,
cuando sabemos a dónde vamos, porque lo hacemos,
y para quién lo hacemos.
Saber que la recompensa será mayor que cualquier
valor metálico, y más duradera que cualquier riqueza
de esta tierra, es una motivación para valorar cada una
de las horas, días y años de esfuerzo, sacrificio y
entrega, por eso te invito a correr y luchar por esa
corona Incorruptible, y ganarle la carrera al desánimo.
"¿No saben que en el estadio todos corren, pero uno solo gana el premio? Corran, entonces, de manera que lo ganen. Los
atletas se privan de todo, y lo hacen para obtener una corona que se marchita; nosotros, en cambio, por una corona
incorruptible. Así, yo corro, pero no sin saber adónde; peleo, no como el que da golpes en el aire. Al contrario, castigo mi
cuerpo y lo tengo sometido, no sea que, después de haber predicado a los demás, yo mismo quede descalificado.
(1Cor. 9, 24-27)
48. Bibliografía
✓ Clavijo (2011), Diseño y simulación de sistemas microcontrolados en lenguaje C, Programación con MikroC
PRO, Simulación en Proteus ISIS. https://drive.google.com/file/d/0B3Gup-
Soes9hbFByRHF0WFpuQk0/view?usp=sharing
✓ MikroElectronika (2011) GUÍA DE REFERENCIA RÁPIDA A mikroC www.mikroe.com
48