NOTA: este articulo ha sido extraído del original proveniente del sitio web varper-tech.com en la dirección http://varper-tech.com/articulo.php?idart=79. Allí podrás conseguir informacion mas detallada sobre la descarga de los archivos de código del microcontrolador y los archivos de simulación.
Resumen
En esta practica se muestra un circuito de ejemplo para el manejo de dos dispositivos muy importantes en la electrónica: los teclados matriciales y los displays digitales. Estos últimos, aunque han sido un poco desplazados por las nuevas tecnologías como LCD, no dejan de ser útiles sobre todo en ambientes con baja iluminación ya que estos tienen luz propia y son muy resaltantes. El método de control es bastante sencillo y solamente requiere de conocimientos básicos de microcontroladores. En esta practica se vera como manejar un único display digital mediante un teclado de 3x4 en el que al presionar cada tecla se visualizara en el display y cuando se presiona asterisco se decrementa el contador mientras que al presionar el numeral se incrementa.
Materiales utilizados
- Microcontrolador PIC18F2550
- Cristal de 4MHz
- 7 Resistencias de 300ohm
- 3 Resistencias de 10K
- 1 Display digital ánodo común
Herramientas utilizadas
- MPLAB IDE
- Compilador C18
- PICKIT (o cualquier otro programador de microcontroladores PIC)
- Proteus 7.4 SP3 (o superior)
Descripción
El circuito consta de un microcontrolador que es quien se encarga de realizar la decodificación para convertir un valor numérico en formato binario a un valor numérico en formato 7 segmentos, dicha rutina se puede conseguir en la parte inferior de este articulo en la sección de archivos adjuntos. El circuito es bastante sencillo solamente se tienen que conectar directamente el display a las salidas del microcontrolador (ya que este maneja una corriente suficiente para alimentar los leds del display) con sus respectivas resistencias limitadoras. En la rutina de decodificación se puede elegir entre display de ánodo común y cátodo común para que el usuario pueda hacer cambios con solo ajustar los valores dentro del código fácilmente y no tener que modificar el hardware para ello.
Por otro lado la conexión del teclado matricial es bastante sencilla, como se puede apreciar en el siguiente diagrama las columnas están dispuestas como entradas mientras que las filas están dispuestas como salidas, esto es para hacer un muestreo constante de cada una de las columnas del teclado en busca de alguna tecla pulsada por el usuario, cuando esta halla sido pulsada, la rutina de control se encarga de verificar cual de todas fue la que se pulso y realizar la acción pertinente.
El código del programa ha sido implementado de la manera mas modular posible, se han hecho dos rutinas, una para descodificar el display y otra para descodificar el teclado, cada una con sus respectivos archivos de encabezado.
Diagrama circuital
Gráfico 1. Diagrama del circuito para el control de un display digital y teclado matricial.
Algoritmo implementado
El algoritmo es bastante sencillo y como se menciono anteriormente se hizo de la forma mas modular posible de modo que sus rutinas puedan ser implementadas en otras aplicaciones si así lo desean, cada rutina tiene su archivo de encabezado de modo que se pueda incluir en otros proyectos.
Gráfico 2. Diagrama de flujo del sistema
Los procesos "Decodifica valor del contador" y "Lee tecla presionada" se refieren a los procedimientos creados de forma modular. De resto los siguientes pasos indican una pequeña validación que permite actualizar el contador con el valor presionado de la tecla y en caso de presionar asterisco o numeral el mismo sera decrementado e incrementado respectivamente.
Con respecto al manejo del teclado, la rutina es bastante sencilla, esta consta en poner en alto una de sus filas por ves y luego testear cada una de las columnas, de este modo teniendo la información de que fila esta seteada y cual columna esta en alto, entonces podremos saber a que numero pertenece y así entregar un valor.
Existen dos rutinas distintas una de ellas devuelve un valor entero correspondiente al numero que se presiono mientras que la otra devuelve el código ASCII del numero que se presiono.
Para mayor claridad en las rutinas pueden descargar el código en la parte inferior de este articulo.
Algunos cambios
En el caso de que necesitemos cambiar el display de 7 segmentos por uno de cátodo común, basta con realizar las conexiones y en el procedimiento creado en el código (decTo7Seg) basta con cambiar el segundo argumento y asignarle el valor cero para actualizar la rutina.
En este caso se esta utilizando un cristal de 4MHz pero también se puede utilizar el microcontrolador con el oscilador interno, solo bastaría con cambiarle las palabras de configuración inicial y podríamos eliminar el cristal tranquilamente.
No hay comentarios:
Publicar un comentario