Está en la página 1de 3

LABORATORIO DE CONTROL CON

MICROPROCESADORES
Practica 2: PROGRAMACION EN LENGUAJE C PARA MICROCONTROLADORES

César Chillán

Ingeniería Eléctrica y Electrónica, Escuela Politécnica Nacional

Quito, Ecuador

cesar.chillan@epn.edu.ec

Resumen – En el siguiente sistema microcontrolado, DESARROLLO DE CONTENIDOS


utilizando el lenguaje de programación C, se implementa un
contador de 8 bits cuyo funcionamiento de forma ascendente o
descendente es controlado por una interfaz gráfica. Para la A. Se desea implementar dos contadores de 8 bits
programación de la interfaz gráfica se utiliza el entorno de ascendente/descendente, el primer contador se
desarrollo de LabView; en esta interfaz se crea un contador de visualizará en displays 7 segmentos conectados al
8 bits cuyo funcionamiento de forma ascendente o descendente
microcontrolador, el modo de funcionamiento
es controlado mediante un pulsante conectado a un pin del
microcontrolador. Para poder seleccionar entre una cuenta (ascendente/descendente) será controlado desde el
ascenderte o descendente, ya sea del sistema microcontrolado HMI mediante comunicación serial; el segundo
o de la interfaz gráfica, se implementa la comunicación serial contador se visualizará en el HMI y su modo de
por donde se envían las señales de control.
funcionamiento se controlará desde un interruptor
conectado al microcontrolador. El programa para el
microcontrolador debe ser desarrollado en C y el HMI
INTRODUCCIÓN
en un lenguaje Visual.
En [1], el lenguaje C de programación fue desarrollado por B.
Dennis Ritchie usando como sistema operativo DEC PDP- 1) Análisis de entradas/salidas y recursos del
11 y también fue pionera de Unix junto con Ken Thompson. microcontrolador.
Hoy en día, existen compiladores de C para una variedad
Para esta práctica del laboratorio se usará un
muy amplia de microcontroladores, computadoras y
microcontrolador ATmega164p el cual posee 40 pines,
sistemas operativos; el lenguaje C se ha convertido en la
de los cuales; el Puerto B y C serán utilizados para
base de todas las aplicaciones prácticas de ingeniería y
realizar un barrido de display de 3 dígitos, el Puerto D
ciencias exactas. C permite la manipulación a nivel de bits
será utilizado para implementar la comunicación serial
y bytes, palabras (ancho o número de bits del bus de datos
(Pines PD0 y PD1) y la habilitación de la interrupción
de un microcontrolador), punteros, arreglos, operaciones
externa INT1 (Pin PD3). También se usara un oscilador
aritméticas sobre los valores que puede tener una variable
externo (Cristal de cuarzo) de 8MHz.
(definida como entera o real), direcciones y acceso a
memoria, manejo de puertos de entrada/salida. El lenguaje
C es ideal para implementar aplicaciones de física,
matemáticas, control, automatización de procesos en
mecatrónica y robótica. El lenguaje C es programación
estructurada a bloques, permite declarar procedimientos o
funciones dentro de otras funciones, también lo realiza en
forma recursiva, es decir se puede ejecutar una función
dentro de si misma. De esta forma, se extienden los
conceptos de variables globales y locales para controlar la
visibilidad de estas mediante el uso de gramática o sintaxis
propia de este lenguaje.
Fig.1 Esquema de puertos a usar.
2) Circuitos Auxiliares: microcontrolador; usando como intermediario el MAX232
(mencionado anteriormente).
Para el barrido de display se usará un ULN2803, el cual
tiene como función proporcionar la suficiente corriente a los 4) Programación del microcontrolador ATmega164p
displays de 7 segmentos para una correcta visualización.
Para la habilitación de cada Digito en el barrido de displays Se utiliza el lenguaje C para realizar la programación del
se empleará un 2N3906, por lo que para la activación es microcontrolador.
necesario enviar un 0L a la base del transistor (para la
simulación se representa esta parte mediante compuertas
NOT)

Fig.4 Configuración de periféricos.


Fig.2 Circuito de barrido de Displays
Para realizar el contador de 8bits, se crea una variable de
También se usará un modulo de conversión de serial RS232 tipo uint8_t, la misma que al superar el valor máximo de
a serial TTL, el encargado de realizar este 255 vuelve a cero y viceversa.
acondicionamiento de niveles de voltaje es el integrado
Se debe tener en consideración de que debe existir un
MAX232, el mismo que solo necesita la conexión adicional
pequeño tiempo de retardo entre el encendido de cada
de unos capacitores externos y la fuente de alimentación del
display con su respectico número, razón por la cual se
microcontrolador para funcionar. Para la simulación se
incluye la librería <util/delay.h>.
emplea un dispositivo COMPIM.
La configuración del módulo USART del microcontrolador
3) Programación del HMI: debe ser exactamente la misma para el módulo
“VISAserial”, para que puedan comunicarse el
Como se menciono anteriormente, se empleo el entorno de
microcontrolador con la PC.
desarrollo de LabView para realizar esta parte de la práctica.
La configuración de la interrupción externa INT1 se realizo
para que se detectaran flancos de subida, es decir que solo
se realiza la acción asociada a esa interrupción solo cuando
se deja de presionar el pulsante. En la practica se vio la
necesidad de implementar un “antirrebote” por software y
por hardware.

Para realizar la rutina de conversión de binario a 7


segmentos, se realiza primero una conversión a BCD y
posteriormente se recupera su equivalente en 7 segmentos,
los mismos que se encuentran almacenados en un arreglo
Fig.3 Interfaz Gráfica. unidimensional.

Se añadió un shift register a la estructura “While loop” La espera entre la transición de cada cuenta se la realiza
para poder implementar el contador de 8 bits. mediante un lazo “for()”, ya que nunca se debe dejar de
La librería “VISA” nos ayuda a realizar de una manera realizar el barrido de displays.
sencilla la comunicación serial entre la PC y el
5) Diagrama de flujo:

Inicio
6) Simulaciones:

Configuro Puertos
como I/O

Configuro
comunicación
USART

Habilito la
interrupción INT1

Fig.6 Simulación realizada en Proteus


Conversión de
“Contador” de binario
a 7 segmentos

UDR0← Up_Down

Modo_recib 1L
ido←UDR0

Fig.7 Simulación en LABVIEW


Contador=Contador-1
0L REFERENCIAS

[1] Reyes Cortés Fernando, Cid Monjaraz Jaime, ARDUINO - Aplicado


en Robótica, Mecatrónica e Ingenierías, 1ra edición, Alfaomega.
Contador=Contador+1
[2]J. Lajara, J. Pelegrí. LabVIEW Entorno gráfico de programación. libro
Labview. Barcelona, España: Marcombo. 2007.

Fig.5 Diagrama de flujo del sistema microcontrolado

También podría gustarte