Вы находитесь на странице: 1из 79

2017

INSTITUTO POLITÉCNICO NACIONAL


CECYT NO. 3 “ESTANISLAO RAMÍREZ RUIZ”

Manual de Prácticas de
Introducción a los
Microcontroladores

ING. LUIS ARMANDO LOERA CERVANTES

INSTITUTO POLITECNICO NACIONAL | CECYT NO. 3 “ESTANISLAO RAMIREZ RUIZ”


Introducción

Los microcontroladores son un herramienta que ha ido evolucionando hasta


lo que es ahora, un dispositivo diseñado para agrupar todas las funciones en
una sola unidad. No se necesitan componentes externos (periféricos) para su
aplicación, porque todos los circuitos necesarios ya están incorporaos. Esto
significa ahorro de tiempo, dinero y espacio para un determinado diseño.
Un microcontrolador es un dispositivo famoso debido a su diseño, en el cual
tiene todas las componentes integradas en el mismo chip, esto quiere decir
que no necesita de otros componentes especializados para su aplicación,
porque todos los circuitos necesarios, que de otra manera correspondan a los
periféricos, ya se encuentran incorporados, lo cual facilita la construcción de
dispositivos más complejos.
Existe un gran número de utilidades posibles para un microcontrolador, así
como una gran variedad de ellos, el que te convenga más dependerá del uso
que le quieras dar.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Práctica No. 1
“Blink (parpadeo de un led)”
R.A.P: El alumno logrará editar, compilar, simular y comprobar el
funcionamiento de su primer programa, permitiéndole conocer las principales
funciones del pic, la distribución de sus puertos, así como a estructura básica
de un programa en MikroC.

Materiales:
o PC con el software instalado (Proteus 8/8.1, MikroC 6.0, PicKit2)
o Grabador de PIC’s (PicKit2 ”clone u original”, MasterProg, MiniProg)
o Microcontrolador PIC16F886
o Fuente Alimentacion 5v regulado (Cargador celular o PowerBank con
cable adaptado)
o 3 resistores 330 Ohm
o 3 LED
o Protoboard, alambre para protoboard no. 22 (cable de red UTP)
o Pinzas de corte y punta
Para comenzar…
En la Unidad de Aprendizaje de Introducción a los Microcontroladores
utilizaremos un programa llamado MikroC, el cual es un IDE (“Entorno de
Desarrollo Integrado”), que incluye el editor, compilador y depurador
“debugger”, y que utiliza como lenguaje base una versión de lenguaje C para
microcontroladores.
Para utilizarlo se recomienda descargar la versión prueba “Demo” de la
página del proveedor…

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Una vez descargado e instalado, se ejecuta por primera vez y se necesitará
crear un proyecto nuevo a través del menú Project>New Project o bien,
seleccionando la opción de acceso rápido en la página de inicio como se ve a
continuación.

A continuación aparecerá una ventana emergente la cual deberás llenar con


los siguientes datos: Nombre de tu Proyecto ”BLINK1”, ubicación de tu
proyecto (se recomienda crear una nueva carpeta exclusivamente para ese
proyecto para no mezclar los múltiples archivos que se generarán),
seleccionar el modelo del microcontrolador PIC que ocuparás “PIC16F886” y
la frecuencia de operación (que debe coincidir con la frecuencia de operación
del PIC, en nuestro caso trabajará inicialmente a 4MHz con el oscilador
interno, pero que puede a llegar a ser de hasta 20MHz si se usa un cristal de
cuarzo externo), A su vez, activa la casilla de verificación de la opción “Open
Edit Project window to set Configuration bits” el cual nos permitirá en otra
ventana ajustar algunas propiedades de nuestro dispositivo llamados fuses,
bits de configuración o palabras de configuración, como por ejemplo proteger
el uC frente a copias de código, definir el tipo de oscilador y si se desea o no
activar el master Clear.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Al pulsar Next en la siguiente ventana podrás añadir archivos adicionales
disponibles llamados “librerías” que hayan sido creados previamente o
descargados y cuyas funciones no estén incluidas en las propias librerías que
posee MikroC, en este caso no se ha añadido ninguno ya que el proyecto
consta de un solo archivo de código fuente, por lo que sólo se pasará a la
siguiente ventana.

Posteriormente, se nos pregunta si se desean incluir todas las librerías que


incluye el propio compilador, se elegirá por el momento la opción “Include
None” y “Finish” (más adelante si lo desea o necesita se pueden incluir
individualmente sólo las librerías que se requieran para un determinado
trabajo evitando que la carpeta del proyecto no sea demasiado pesada).

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Finalmente se abrirá una última ventana en la que colocarás todos las
opciones (Fuses o Bits de configuración o palabra de configuración) en modo
“DISABLE” y en el campo “Oscillator Selection” escoge la opción número 4
“INTOSCIO”. (Lee los anexos respecto a este tema para la explicación de
cada bit y para prácticas posteriores revisa las indicaciones de tu profesor si
es que deseas experimentar alguna de estas características
Opción donde se elige el oscilador interno
Estructura básica de un programa en de
MikroC (sin funciones)
tu micro, normalmente el que aparece
en pantalla es el que debes elegir.
Todos los programas (código fuente) de microcontroladores PIC en C tienen
una estructura básica, a partir de la cual se desarrolla cualquier aplicación
del usuario:

//Nombre_de_programa.c
//Descripción del programa. .
//Declaración de variables
...
//Función principal
void main( ){
//Instrucciones del programa.
...}
Las demás opciones cumplen
distintos propósitos que iras
aprendiendo, pero en un
principio todo deberá estar en
“Disabled” (deshabilitado).

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


ACTIVIDAD 1
Control de Puertos
De acuerdo a lo explicado por tu profesor respecto a la estructura básica de
un programa en lenguaje C, captura las siguientes instrucciones dentro de la
función main, es decir entre la llave de apertura { y cierre } dentro del área
de trabajo del código fuente “BLINK1.c”.

Una vez terminada la edición de tu programa, compila el código con el icono


del engrane en la barra de herramientas o en el menú Build/Build “CTRL+F9”
para verificar que no existan errores de sintaxis (de existir se informa en la
barra de resultados “Messages” en la parte inferior cuantos errores se
detectaron y en que líneas del programa, deberás corregirlos).
Recuerda que cada instrucción individual se termina con un “;” y que existe
un par de reglas para identificar o nombrar los pines individuales de tu uC,
como es el nombre del puerto A B o C acompañado de un punto para indicar
ahora el número de bit 0 al 7, además que la función delay_ms toma como
parámetro una valor no mayor a 65535.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Otro dato a tomar en cuenta es que estas usando el operador de asignación
“=” junto con el nombre del puerto y su número de bit para poner en un
nivel lógico alto “1” dicho pin (es decir 5V o encender el led);
Además para que el programa funcione adecuadamente PRIMERO se debe
configurar forma de operar de ese puerto ya sea como entrada o salida a
través de REGISTRO llamado TRISC (Tri-State of PortC) escribiendo o
asignando un uno “1” para que se defina como Input/Entrada, o un cero “0”
para que sea un Output/Salida digital (de no realizar esta parte no
funcionará el programa porque todos los puertos de manera inicial están
configurados como entradas). Al configurar la forma de operación, un dato
importante es que los puertos configurados como salida pueden iniciar con
un valor lógico indeterminado, por lo que se debería inicializar su estado
nuevamente con una asignación “=”.
Ya que hayas completado los puntos anteriores sin errores y resolviendo tus
dudas abre el programa “PROTEUS” y en el módulo ISIS agrega los
componentes e interconecta para construir el siguiente diagrama
esquemático, carga el código máquina “BLINK1.hex” y observa la simulación
del circuito (Si tienes dudas puedes consultar el Anexo 1, donde vienen los
pasos a seguir para simular un circuito programado en Proteus)

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


En este punto ya estás listo para probar el funcionamiento de manera física
de tu programa, así que conecta en tu Protoboard los LED’s según los
ejercicios con su respectiva resistencia hacia las puertos indicados en tu
programa, coloca el cableado de alimentación para tu microcontrolador (5v)
en las terminales marcadas como VSS (-) y VDD (+), energiza y comprueba
su funcionamiento.
Nota: El formato que acabas de utilizar para referenciar los puertos no es el
único que existe, existen otros, los cuales tienen la siguiente sintaxis y que
son muy importantes también para el caso de bits individuales de algunos
registro del uC:

PORTC.F0 // Este es usando la literal “F”, que viene de Flag o bandera

PORTC.RCO // Esta forma es indicando el nombre y no el número de bit


// que esta designado por el propio fabricante de uC en su
// Datasheet

RC0_bit=1 // aquí se omite el nombre del puerto, pero se indica que


// es un bit
EJEMPLO:
Existe un registro llamado INTCON (Interruption Control), que se estudiará
detenidamente más adelante, su propósito es configurar algo llamado
interrupciones, en dicho registro cada bit de los 8 que posee tiene una
posición (bit 0 al 7) y tiene una función y nombre particular, así para este
ejemplo se desea poner a uno lógico “1” el bit número 5 que se llama T0IE
(Timer 0 Interrupt Enable) para activar las interrupciones del Timer 0, y se
puede hacer de las siguientes formas.
INTCON.B5=1 //se puede escribir como
INTCON.T0IE=1 //o de otra manera
T0IE_bit=1

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio 1
Realiza un programa en el que un led_rojo (PORTC.B0) se encienda por 3
segundos, después de esto se apague y enseguida de eso un led_amarillo
(PORTC.B3) encienda por 5 segundos, contina sin apagarse, y ahora se
enciende un led_verde (PORTC.B7) que deberá parpadear 3 veces con
intervalos de 1.5 segundos para por último apagar todo.
ACTIVIDAD 2 “Uso de Alias”
Edita el siguiente programa en un nuevo proyecto de MikroC “BLINK2” y
conecta en tu protoboard los leds según los ejercicios con su respectiva
resistencia.
En la siguiente imagen puedes notar que en el encabezado del programa
(header) se encuentran dos líneas de texto de color morado llamadas
directivas de pre-procesado (existen otras directivas más), en este caso
dicha directiva #define, no es una instrucción para el uC y por lo tanto no la
ejecutará este chip, sino que se utilizará por la computadora donde estás
trabajando con MikroC durante el proceso de compilación con el propósito de
sustituir una cadena de texto y así hacer más legible y entendible el
programa, su estructura es la siguiente:
#define nuevo_nombre cadena_de_texto o nombre_original
En este caso queda así
#define led PORTC.B0

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Si logras identificar el programa es el mismo que ya creaste en la Actividad
1, el único cambio realizado ha sido cambiar la expresión PORTC.B0 por “led”
y TRISC.B0 por “configLed”.

Otro método para el uso de alias consiste en usar la siguiente sintaxis:


Sbit (Single bit)
sbit (nombre) at (puerto o pin utilizado).
Por ejemplo, para este programa seria:
sbit led at PORTC.B0

Ejercicio 2
Con el mismo programa que creaste en el ejercicio 1, implementa el uso de
alias, sustituyendo la configuración del puerto y los pines de conexión de los
leds por las etiquetas que prefieras. De igual manera varia el tiempo de cada
intervalo, desde un tiempo mayor a menor, y observa el funcionamiento del
LED.

Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Anexo 1: “Uso de Proteus”
Como se mencionó anteriormente, el uso de Proteus es muy importante para
simular tus circuitos y así poder comprobar el funcionamiento de manera
previa y detectar posibles fallas en la lógica de operación de tu programa,
por lo que a continuación se detallará brevemente el procedimiento a seguir
para armar y simular un circuito.
En primera instancia, debes abrir Proteus y dar click en la parte superior
donde dice ISIS en un recuadro azul.

Lo que te aparece en la siguiente parte es la hoja de trabajo en la cual


podrás comenzar a construir tu diagrama y simular tus circuitos, ahora para
la elegir los componentes que vas a utilizar, ubicarás el mouse en la barra
lateral izquierda de la pantalla y darás click en la segundo icono (símboo de
amplificador operacional) donde aparece la leyenda “component mode”,
después deberás dar click en el icono de la letra P (Pick Device).

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Al dar click en la “P”, aparecerá la siguiente ventana, en la cual podrás elegir
tus componentes simplemente buscándolos por su descripción o matrícula
(incluso si esta matricula o descripción está incompleta) o puedes buscar en
la lista de componentes, que están organizados por categorías y
subcategorías, por ejemplo categoría Microprocessor y subcategoría PIC16
para encontrar el uC necesario y Resistor y 0.6 Watt para los resistores para
los LED que a su vez están en la categoría de optoelectronics.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Aquí es donde
podrás buscar tus
componentes por
nombre.

En este recuadro blanco te


Si existen distintas
aparecerán los
categorías y/o
componentes que vas
subcategorías de tus
eligiendo para después
componentes, aquí
poder utilizarlos en la hoja
aparecerán para simplificar
de trabajo.
la búsqueda.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Da doble click sobre el nombre del componte que deseas agregar y repite
este paso para cada nuevo componente, al terminar de elegir los
componentes necesarios, da click en la parte inferior derecha de la ventana,
en donde dice “Ok”, para empezar a armar tu circuito.
Ahora, en la hoja de trabajo, selecciona uno por uno tus componentes y
colócalos en la hoja de trabajo siguiendo una distribución práctica, de tal
manera que puedas conectarlos entre sí sin cruzar demasiado los
conductores, ubica tu puntero sobre los extremos o terminales de algún
componente y dando click conecta hasta el o los otros componentes que
necesites, es decir interconecta como se muestra, y ya al final dirígete a la
parte lateral izquierda y da click en la octava herramienta “Mode terminals”,
después selecciona “ground” (tierra), para dar por terminado a tu circuito.

Nota: Recuerda colocar


tus componentes en el
pin correcto, el cual es el
que hayas elegido en tu
programa, para asegurar
un correcto
funcionamiento.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Cuando ya des por terminado tu programa, y compiles, recuerda que se crea
automáticamente por MikroC un archivo “.hex” (código máquina) el cual
contiene tu programa compilado “traducido” escrito en formato hexadecimal
IntelHex, que es el lenguaje, por así decirlo, con el que tu microcontrolador
entenderá las instrucciones, este es el archivo .hex, es el que nosotros
elegiremos para simular.
Cuando tu circuito ya este armado, da doble click sobre tu uC PIC, y te
ubicarás en la parte donde dice “Program file” para después dar click a un
lado, en el pequeño recuadro con un documento, y ya allí, buscas la carpeta
donde guardaste tu programa y eliges el archivo .hex. Hecho esto, te diriges
hacia abajo en la misma ventana en donde dice “Processor Clock Frequency”,
y escribes la frecuencia correspondiente a tu microcontrolador, que como se
mencionó antes, es 4MHz. Al final, solo da click en “ok”.

Por último, cierra la ventana y busca en la parte inferior izquierda el botón


de “Play”, da click allí y observa el funcionamiento de tu programa.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Anexo 2: “Uso de PicKit2”
El uso de PicKit conlleva no solo el saber utilizar el software (PicKit2), sino
tambien el hardware (grabador de PIC’s), por lo tanto, las siguientes
instrucciones de uso incluiran ambos.
En primer instancia se recomienda reconocer el tipo de PIC y grabador de
PIC’s que se adquirio, ya que dependiendo de esto las caracteristicas e
instrucciones de uso cambiaran, sin embargo, en su mayoria no existe
mucha variacion. El PIC que se recomienda utilizar es el PIC16F886 o el
PIC16F887, y el grabador PicKit 2, el cual puede ser clon u original.
Existen dos maneras para grabar, una es en su base ZIF o por conexión ICSP
(In Circuit Serial Programming), cada una cumple el mismo proposito, sin
embargo difieren una de otra por su manera de realizarlo, y la mas
conveniente depende del usuario, a continuacion se menciona una breve
explicacion de cada una:
a) Base ZIF: Esta manera es la mas sencilla de realizar, debido a que
solo requiere colocar el pic en la base ZIF de acuerdo a las
indicaciones de cada grabador, por ejemplo:
Como se muestra en la siguiente imagen, las palancas deben de estar
verticales, y tu pic debe ser colocado antes de conectar el grabador al
puerto USB.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


La manera de colocarlo dependera del numero de pines de pic y del
grabador que hayas adquirido, normalmente las instrucciones de
colocacion se encuentran en el mismo grabador, y si no es asi su
manual de uso tiene las especificaciones necesarias. En la siguiente
imagen se muestra la colocacion del pic de acuerdo a este grabador,
observa que la pequeña hendidura en la parte superior de tu pic es la
guia para que lo coloques.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Una vez que lo pones en su lugar correspondiente, la pequeña palanca
se debe colocar de manera horizontal como se muestra en la siguiente
imagen:

Ya que se encuentra de la manera anterior, solo es necesario


conectarlo al puerto USB y listo.

b) ICSP: ICSP es el acrónimo de la frase en inglés: "In Circuit Serial


Programming" (Programación Serial En Circuito); es una tecnología
incluida en todos los microcontroladores PIC de Microchip más
recientes y posibilita la reprogramación de los mismos sin que sea
necesaria la remoción de éstos de su circuito de aplicación. Esta
característica es extremadamente útil no solamente en la etapa de
desarrollo debido a que ahorra tiempo y trabajo, sino que su utilidad
se extiende a la etapa de mantenimiento y actualización de los
sistemas, dando la posibilidad de reprogramar los mismos "en el
campo" en sus respectivas placas ya soldadas, ya sea para corregir
errores de software o para la mejora del sistema con la
implementación de nuevas funciones.
Así mismo, todos los programadores modernos de PIC utilizan este
método para programarlos, aunque a simple vista no se vea por la
base ZIF de tu grabador, por lo que en la siguiente imagen se muestra
como se pueden encontrar comunmente.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Cuya distribucion se puede encontrar de la siguiente manera:

En el datasheet correspondiente a tu PIC podras encontrar los pines


correspondientes a cada una de los anteriores, como se muestra a
continuacion:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


PGD y PGC los puedes encontrar en los pines 28 y 27,
correspondientemente; como puedes observar, no siempre aparecen
en el datasheet con el mismo nombre que en tu grabador, por lo que
es importante que sepas diferenciar los nombres de cada uno y en
donde se encuentran ubicados.
Una vez que los tengas bien ubicados, se recomienda realizar una
conexión ordenada, por ejemplo:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


En la anterior imagen se observa que se utilizaron jumpers para
realizar la conexión directa a los pines, sin embargo se pueden utilizar
conectores de distintos tipos, por ejemplo cable plano con conectores
IDC, entre otros, como se muestra a continuaciòn:

NOTA: Recuerda que tu grabador cuenta con alimentacion propia, por


lo que no es necesario utilizar una fuente externa si se esta utilizando
ICSP, ademas de que se dañaria tu dispositivo.

Comunmente si solo necesitas unos pocos pines de tu


microcontrolador, y no utilizaras ninguno de los pines de ICSP, por lo
que no hay ningun problema, pero si la situacion es lo contrario, se
comienda realizar un circuito de la siguiente manera:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Checa que el software si reconozca a tu PIC de esta manera, cualquier
duda consulta a tu profesor.

Una vez que todos los pasos se hayan realizado de manera correcta, se tiene
que instalar el software en la computadora y conectar el grabador al puerto
USB de la misma. Al realizar esto, se tiene que ver de la siguiente manera:

Barra menú
Aquí se
observa cuando Configuración
el software ya dispositivo
reconoce tu
PIC

Ventana de Barra de
estado en la progreso
cual se observa
VDD del
que reconoció
dispositivo
al grabador
Fuente del
programa

Memoria del
programa

Memoria datos
EEPROM

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


En caso de que la barra se vuelva color rojo y muestre un mensaje de error
ve al menu Tools>Check Communication

A continuación se dará una breve explicación de las herramientas del software:

 Leer dispositivo (Read device): Lee la memoria de programa, la memoria


EEPROM de datos, las locaciones ID y los bits de configuración.
 Programar dispositivo (Write device): Escribe la memoria de programa,
la memoria EEPROM de datos, las locaciones ID y los bits de
configuración.
 Borrar (Erase): Realiza un borrado general del microcontrolador
seleccionado. Esta herramienta no es tan necesaria a la hora de grabar
un programa sencillo ya que se reescribe solo, pero sin embargo si se
utiliza la herramienta “Enable code protect” (Habilitar Protección de
Codigo) y después se quiere desactivar, es necesario utilizar “erase”
para borrar toda la memoria y reescribirla.
 Chequeo de blanco (Blank check): Realizamos un chequeo para ver si
la memoria de programa, la memoria EEPROM, los bits de
configuración y las locaciones de ID están en blanco.
 Familia de dispositivos (Device Family): Esta opción se encuentra en la
barra de menú. Selecciona una familia de dispositivos para buscar un
dispositivo conectado de esa familia. Selecciona la familia de
dispositivos la cual borrará todos los datos del dispositivo. Algunas
familias las cuales no tienen auto detección, tal como la línea baseline
aparecerá un combo desplegable en el cual se podrá elegir el
dispositivo.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ya que tienes el conocimiento básico del uso del software, y tu programa que
quieres cargar esta terminado, carga tu archivo .hex en File>Import Hex

Selecciona tu archivo y da clic en abrir.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Selecciona la opción “WRITE” y verifica que tu archivo haya sido grabado
correctamente, una manera de hacerlo sería observar el parpadeo del LED indicador
en tu grabador físicamente.

Dependiendo del grabador es como se presentan los LED’s indicadores, como se


muestra a continuación:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


NOTA: Estos pasos a seguir son recomendables cuando solamente requerirás cargar
el archivo una sola vez. En el caso de que estuvieras probando algún programa, la
acción recomendada seria seleccionar la opción “Auto Import Hex”, en donde solo
tendrás que cargar el archivo una sola vez y este se editara automáticamente una
vez que compiles tu proyecto.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Práctica No. 2
“Simulación de un semáforo”
R.A.P: Utilizara los conocimientos adquiridos previamente para simular la
aplicación de los mismos en situaciones cotidianas.

Materiales:
o PC con los softwares instalados (Proteus 8/8.1, MikroC, PicKit2)
o Grabador de PIC’s (PicKit2 ”clone u original”, MasterProg, MiniProg)
o Microcontrolador PIC16F886
o Fuente Alimentacion 5v regulado (Cargador celular o PowerBank con
cable adaptado)
o 3 resistores 330 Ohm
o 3 LED (rojo, ámbar y verde)
o Protoboard, alambre para protoboard no. 22 (cable de red UTP)
o Pinzas de corte y punta
ACTIVIDAD 1
Copia textualmente el siguiente código en tu hoja de trabajo de MikroC y
conecta en tu protoboard los leds según los ejercicios con su respectiva
resistencia.

Ciclo infinito.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


El ejercicio anterior simula el comportamiento de un semáforo sencillo, con
intervalos de tiempo cercanos a los verdaderos, en el cual se utilizó el
“while(1)” para realizar un ciclo infinito, y que nunca deje de realizar la
misma secuencia de acciones, aunque ya la haya realizado por primera vez.
Copia el siguiente diagrama en tu hoja de trabajo en Proteus para simularlo,
y una vez que tenga un funcionamiento correcto, procede a realizar el
armado del circuito en tu protoboard.

Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica No. 3 “Manejo del Puerto C completo como salida”
(Semáforo y Display de 7 segmentos)
R.A.P.=El alumno aprenderá el manejo de puertos completos mediante la
sintaxis binaria, desarrollando así un programa más sencillo al momento de
crear aplicaciones prácticas como el de un “semáforo” y manejo del display
de 7 segmentos de ánodo y cátodo común.

El display de 7 segmentos, es un componente que


se utiliza para la representación de números en
muchos dispositivos electrónicos. Este elemento se
ensambla o arma de manera que se pueda activar
cada segmento (diodo LED) por separado logrando de
esta manera combinar los elementos y representar
todos los números en el display (del 0 al 9) , letras y algunos signos o
figuras.
Cada elemento del display tiene asignado una letra que identifica
su posición en el arreglo del display.

Por ejemplo:
 Si se activan los segmentos:
“a,b,c,d,f” se forma el número “0”
 Si se activan sólo los segmentos:
“b y c” se forma el número “1”
 Si se activan sólo los segmentos:
“a,b,g,e,d,” se forma el número “2”
 Si se activan sólo los segmentos:
“a,b,g,c,d,” se forma el número “3”

Y así sucesivamente con los elementos


que se quieran formar.
Nota: las letras p.d. representa el punto
decimal

Los display de 7 segmentos pueden ser de ánodo o cátodo común.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Display ánodo común

En el display ánodo común, todos los ánodos de los diodos


LED unidos y conectados a la fuente de alimentación. En este caso
para activar cualquier elemento hay que poner el cátodo del elemento
a tierra a través de una resistencia para limitar la corriente que pasa
por el elemento

Display cátodo común

El display cátodo común tiene todos los ánodos de los diodos


LED unidos y conectados a tierra. Para activar un segmento de estos
hay que poner el ánodo del segmento a encender a Vcc a través de
una resistencia para limitar el paso de la corriente

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


EJEMPLO A
Semáforo
Observa este ejemplo y relaciona con las consideraciones teóricas que
tu maestro te ha proporcionado, donde, para este programa:

SEMAFORO2 SEMAFORO1

ROJO
ROJO
AMBAR

AMBAR
VERDE

VERDE
EJERCICIO A: De acuerdo al siguiente diagrama, desarrolla un
programa en el cual ocurra un parpadeo en los luces ámbar del
semáforo cuando se activen antes de cambiar a rojo.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


EJEMPLO B
Display 7 segmentos de Cátodo Común

Observa el siguiente código y relaciónalo con las consideraciones


teóricas que tu profesor te ha proporcionado. Donde:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio B: Conecta de acuerdo con el siguiente diagrama y realiza un
programa para un display de cátodo común, en el que formes alguna
de las siguientes palabras: “VOCA”, “POLI”, “COCA”, “PALO”, HALO”.
Nota: Recuerda que para este tipo de display no es posible formar
todas las palabras o signos, sin embargo existen algunos con mayor
cantidad de segmentos con los que es posible, como los siguientes.

Nota: Recuerda que para realizar la conexión en físico debes consultar


el datasheet de tu display de 7 segmentos, esto es debido a que el
orden de los pines en físico es distinto al que puedes observar en tu
diagrama, teniendo en cuenta que se conecta de la “a” a la “g”,
empezando por el bit menos significaivo.
De igual manera, debes saber que cada letra corresponde a un LED de
tu display, por lo que deberas considerar ese orden al realizar tu
programa.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


EJEMPLO C
Display de 7 segmentos Ánodo Común
El Display de Ánodo Común, cómo pudiste observar en las
consideraciones teóricas, es activado con, por así decirlo, “0” en lugar
de “1”, o bien, usando una negación. A continuación observa los
siguientes dos métodos.
Para la letra H

EJERCICIO C: Desarrolla un programa para un display de Ánodo


Común en el que utilices otra de las palabras mencionadas en el
ejercicio b y conecta físicamente de acuerdo al siguiente diagrama.

Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica No. 4 “Estructuras de control condicionales”
R.A.P.= El alumno aprenderá el manejo de puertos completos mediante la
sintaxis binaria, desarrollando así un programa más sencillo al momento de
crear aplicaciones prácticas como el de un “semáforo” y manejo del display
de 7 segmentos de ánodo y cátodo común.
Estructuras de control condicionales
Las estructuras de control condicionales, son aquellas que nos permitirán
influir sobre la secuencia del programa, estipulando los requisitos necesarios
para que según se cumplan o no determinadas condiciones, el orden de los
pasos involucrados en la realización de una tarea sean diferentes. En otras
palabras, las estructuras de control condicionales o selectivas nos permiten
decidir qué ejecutar y qué no en un programa.
Sin embargo, antes de comenzar a explicar las estructuras de control, se
debe conocer un poco acerca del tipo de condiciones u operadores que se
pueden utilizar en las sentencias.

Operador Operación Descripción


Igual a En comparación de cuando se utiliza un solo “=”
== para asignar valores, etc., este operador realiza una
pregunta para saber si la condición se cumple.
!= No igual a Realiza una comparación para saber si dos estados
lógicos son diferentes.
> Más grande Su función es comparar si el estado lógico
que especificado es mayoral recibido.
Menor que Su función es similar al anterior, sin embargo, este
< operador compara si el estado lógico especificado es
menor al recibido.
>= Más grande o Su función es comparar si la cantidad especificada es
igual que mayor o igual a la recibida.
Menor o igual Compara entre dos estados lógicos, para conocer si
<= que el estado lógico recibido es menor o igual al que se
especificó en la condición.
Lógica AND Realiza la función de una compuerta AND, en la que
&& solo si las dos condiciones se cumplen se realiza el
bloque de instrucciones.
Lógica OR Realiza la función de una compuerta OR, en la que si
|| cualquiera de las dos condiciones o las dos se
cumplen, se realiza el bloque de instrucciones.
Lógica NOT Realiza la función de una compuerta NOT, en la que
! si la condición especificada no se cumple, se realiza
el bloque de instrucciones.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


A continuación se mencionan las estructuras de control y sus características:
1. La estructura de control condicional if
La sentencia if nos permite elegir si se ejecuta o no un bloque de
instrucciones (secuencia de instrucciones encerradas entre dos llaves).

La sintaxis del if, es la siguiente:


Como puedes observar, en
este caso se utiliza el “punto
y coma” después de utilizar el
if, esto se puede realizar si tu
condición solo afectará a una
sola sentencia o instrucción.

En este caso, la condición


afectara a un bloque de
instrucciones, por lo cual es
necesario utilizar las dos
llaves, para abrir y cerrar el
if.
Como puedes observar en la imagen anterior, siempre después de
declarar el if, deben ir un par de paréntesis, entre los cuales se debe
indicar la condición de la que dependerán la o las instrucciones.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


1.1. La cláusula else
Una sentencia if, cuando incluye la cláusula else, permite ejecutar un
bloque de código si se cumple la condición y otro bloque de código
diferente si la condición no se cumple.

La sintaxis de la cláusula else, es la siguiente:

Como ya se mencionó
anteriormente, el “punto
y coma”, solo se puede
utilizar al final de un if,
su respectiva condición y
una sola sentencia o
instrucción.

Tanto las secuencias como los bloques de código especificados en la


imagen anterior representan dos alternativas complementarias y
excluyentes una de otra.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


1.2. Sentencia de control (IF – ELSE IF – ELSE)
Esta sentencia es parecida a else, con la diferencia de que en ésta sí se
evalúa una condición. Si la condición de un if anterior a else if no se
cumplió, entonces se evalúa la condición de else if, en caso de que no
se cumpla la condición de la sentencia else if, se ejecutara el siguiente
bloque de código que este fuera de else if, o en todo caso, el bloque
perteneciente a else.
De nuevo, no puede existir un else if, sin que exista un if antes de él.
Puede haber varios else if dentro de la misma sentencia if. La primera
expresión else if (si hay alguna) que se evalúe como verdad sería
ejecutada.

En el siguiente ejemplo, vamos a realizar un programa utilizando las


sentencias if-else, cuya condición a cumplir es que al recibir en la entrada
(PORTB) un 1, en la salida (PORTC) van a prender todos los LED’S
conectados.

Otra manera de configurar el


puerto B como entrada, 255 es
equivalente a 11111111 en binario.

La condición es igual a preguntar:


entrada==1. Si sólo se tiene una
condición, es válido poner sólo un
punto y coma al final.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


2. Estructura de control condicional Switch
La sentencia switch case, funciona de manera similar a la sentencia if,
difiere en que no se evalúa una condición si no el valor de una variable,
y ejecuta una porción de código para cada valor posible de la variable.
Los casos o valores que no son de interés para el desarrollador se
ejecutan en un fragmento de código por defecto, por medio de la
directriz default. Cada uno de los fragmentos de código editados deben
terminar con la directriz break para romper el flujo de la estructura
switch case, está acción es necesaria dado que si dos casos están
seguidos los fragmentos de código seguidos se ejecutarán hasta
encontrar la directriz break o hasta finalizar la estructura switch case.

Expresión se
puede decir
que es el
nombre de la
variable.

La instrucción 4
Al realizar alguna es equivalente al
de las operaciones conjunto de
switch-case, se operaciones que
ejecuta la directriz realizarían en el
break y finaliza la default.
estructura.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


A continuación se presenta un ejemplo del uso de la sentencia switch, en el
cual se consulta el valor de una variable llamada “entrada” (PORTB) y
dependiendo de su valor van a prender ciertos LED’S conectados a la salida
(PORTC).

Evalúa los posibles


valores de la
variable entrada y
al cumplirse uno se
prenden
determinados
LED’S.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio 1
Conecta cuatro interruptores correspondientes a los primeros pines de
PORTB y 6 LED’s en los primeros pines de PORTC con su respectivo resistor.
Utilizando la sentencia if, realiza un programa en el que al presionar los dos
primeros interruptores enciendan los tres últimos LED’s, y viceversa.
Ejercicio 2
Una vez que hayas simulado y realizado en físico el ejercicio anterior, prueba
con algunos valores distintos y después realiza el mismo programa pero
utilizando la sentencia switch.
Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica No. 5: “Estructuras de Control Repetitivo”
(while, do while, for)
R.A.P: El alumno aprenderá a utilizar estructuras de control repetitivo
(while, do-while y for) para, más adelante, desarrollar programas básicos y
complejos, que son requeridos para la aplicación práctica y tangible en
elementos electrónicos y el control de procesos.
1. While
La estructura algorítmica repetitiva while permite repetir un conjunto de
instrucciones. Sin embargo, el número de veces que se debe repetir
depende de las proposiciones que contenga el ciclo. Cada vez que
corresponde iniciar el ciclo se evalúa una condición, si esta es verdadera
(diferente de cero) se continúa con la ejecución, de otra forma se detiene.
La sintaxis y diagrama de flujo del ciclo while son los siguientes:

Nota: Un tipo especial del bucle de programa es un bucle infinito. Se


forma si la condición sigue sin cambios dentro del bucle. while(1)
Ejemplo
A continuación se presenta un ejemplo del uso de while, este programa
ejecuta la sentencia while donde la instrucción o conjunto de instrucciones
pertenecientes a este bucle se ejecutaran mientras se cumpla la condición
indicada. En este programa se hará parpadear un led rojo cada segundo y
hasta que la entrada de un botón este en nivel bajo se saldrá del bucle,
un segundo led parpadea 2 veces y termina el programa.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Cambia el estado
en el que se
encuentre
PORTC.B0 (rojo).

Ejercicio 1
Utilizando la sentencia de control while crea un programa en el que un
led rojo y verde parpadeen con intervalos y orden de t preferencia
mientras que un botón A sea presionado, al no estar presionado un led
ámbar parpadeara 5 veces con intervalos de 500 ms.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


2. Do while

La implementación de un ciclo do while, es similar al ciclo while, con la


diferencia puntual de que en este ciclo el fragmento de código se ejecuta
y después evalúa la condición del while. En conclusión el código se ejecuta
por lo menos una vez antes de evaluar la condición.

Como se puede observar en el diagrama de flujo anterior, el conjunto de


operaciones o instrucciones a realizar se ejecutará al menos una vez, y si
después de esto se comprueba que la condición se cumple, las
instrucciones se seguirán ejecutando hasta que ya no sea cierto.
No se recomienda utilizar la estructura do while si lo que se busca es
realizar un programa en el ciertas instrucciones se realicen sólo si se
cumple la condición, debido a lo que se mencionó anteriormente.
Ejemplo
A continuación, se muestra un ejemplo del uso de do-while, el cual tiene
el mismo funcionamiento que el programa realizado como ejemplo
anteriormente, con la diferencia de que utilizamos ahora está sentencia.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio 2
Utilizando la sentencia de control do while y while crea un programa en
el que un led rojo y verde parpadeen con intervalos y orden de tu
preferencia mientras que un botón A sea presionado, al no estar
presionado un led ámbar permanecerá encendido durante 8 segundos.
Esta serie de instrucciones debe ser repetida infinitamente.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


3. For
La estructura for crea un bucle que consiste en tres expresiones
opcionales, encerradas en paréntesis y separadas por punto y coma (;),
seguidas de una sentencia ejecutada en un bucle. En la primera parte se
encontrara la inicialización y declaración de la variable utilizada en la
condición, en la cual se le asignará el valor inicial de la misma. En la
segunda parte habrá una expresión para ser evaluada (condición) antes
de cada iteración del bucle, si esta es cierta se continua con las
instrucciones, si no lo es se sale del bucle. Si esta expresión se evalúa
como verdadera, y ya se ejecutaron las instrucciones, viene el cambio, el
cual es el incremento o decremento que se le hará al valor inicial de la
variable. La sintaxis del bucle for y su diagrama de flujo se muestran a
continuación:

Nota: la estructura for, al igual que


while, nos permite crear un bucle
infinito, el cual debería tener la
siguiente forma:
for(;;)
Con sus correspondientes llaves,
crearía un bucle infinito.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejemplo
Este programa realiza el parpadeo de un led 5 veces mediante el ciclo for.
Está habilitado MCLR. La conexión del led esta descrita en la definición. El
ciclo for requiere de una variable para llevar el conteo.

Ejercicio 3
Crea un programa utilizando estructura de control for en el cual 2 leds
se activen por 2 segundos cada vez que la variable “conteo” aumente
una unidad, el máximo valor que podrá adquirir esta variable deberá
ser 7.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio Integral
Crea un programa utilizando tus conocimientos adquiridos y aplicando
las estructuras de control do- while, while y for que satisfagan el
siguiente problema.
Un proceso industrial consiste en el empaquetamiento de botellas. Se
requiere que cada vez que el un sensor (el cual simularas mediante un
botón) detecte que han pasado un numero de 5 botellas se activara un
timbre (simulado por un led rojo) y se detendrá una banda (simulada
por un led verde) durante 5 segundos. Cada vez que una botella pase
delante del sensor este activara un led ámbar por 400 ms.
Nota: el uso de las estructuras de control para la solución del
problema queda a tu criterio y preferencia.
Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica No. 6 “Display de 7 segmentos multiplexado”
R.A.P: El alumno aprenderá a manejar display de 7 segmentos
multiplexados haciendo uso de sus conocimientos previos de programación
para la obtención del producto deseado.
Display de 7 segmentos
El display de 7 segmentos, es un componente que se utiliza para la
representación de números en muchos dispositivos electrónicos.
Este elemento se ensambla o arma de manera que se pueda activar cada
segmento (diodo LED) por separado logrando de esta manera combinar los
elementos y representar todos los números en el display (del 0 al 9).

Display Ánodo Común


En el display ánodo común, todos los cátodos de
los diodos LED van unidos y conectados a la fuente
de alimentación. En este caso para activar cualquier
elemento hay que poner el ánodo del elemento a
tierra a través de una resistencia para limitar
la corriente que pasa por el elemento

Display de Cátodo Común


El display cátodo común tiene todos los ánodos de los diodos LED unidos y
conectados a tierra. Para activar un segmento de estos hay que poner el
ánodo del segmento a encender a Vcc (tensión de la fuente) a través de una
resistencia para limitar el paso de la
corriente.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Nota: También hay displays alfanuméricos que permiten representar tanto
letras como números, con mayor cantidad de segmentos como el que puedes
apreciar a continuación:

Distribución
Los segmentos del display en físico se encuentran distribuidos de la siguiente
manera:

Recuerda que el
COM se refiere a
la conexión a
tierra o voltaje.

Arreglos unidimensionales

Para continuar con la práctica, es primordial introducir un tema muy


importante para el avance en el conocimiento de cómo programar en MikroC,
el cual, como el titulo lo indica, es acerca de los arreglos unidimensionales.
Primero, es necesario conocer que existen arreglos de más de una
dimensión, sin embargo, por esta ocasión nos enfocaremos en los de una
sola dimensión.
Formalmente, definimos un arreglo unidimensional de la siguiente manera:
“Un arreglo unidimensional es una colección finita, homogénea y ordenada
de datos, en la que se hace referencia a cada elemento del arreglo por medio
de un índice”. Finita, porque todo arreglo tiene un límite, es decir, se debe
determinar cuál es el número máximo de elementos del arreglo. Homogénea,
porque todos los elementos del arreglo deben ser del mismo tipo. Ordenada,
porque se puede determinar cuál es el primer elemento, cual es el segundo,
y así sucesivamente.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Un arreglo unidimensional permite almacenar N elementos del mismo tipo
(enteros, reales, caracteres, etc.) y acceder a ellos por medio de un índice.
En los arreglos unidimensionales se distinguen dos partes fundamentales: los
componentes y el índice. Los componentes hacen referencia a los elementos
que se almacenan en cada una de las celdas o casillas. El índice, por su
parte, especifica la forma de acceder a cada uno de estos elementos.
Nota: Para hacer referencia a un componente de un arreglo debemos utilizar
tanto el nombre del arreglo como el índice del elemento.
Declaración de un
arreglo de 10 elementos.

En la imagen anterior se muestra el arreglo unidimensional que contiene 10


elementos. El primer índice del arreglo es 0, el segundo el 1, y así
sucesivamente. Si queremos acceder al primer elemento del arreglo
debemos escribir A[0], pero si queremos acceder al quinto elemento
debemos escribir A[4].
Una forma de asignar valores a los componentes de un arreglo es al realizar
la declaración del mismo. Volviendo a utilizar el ejemplo anterior, la forma de
asignar un valor a cada elemento es la siguiente:

De esta manera, se puede observar que el valor de A[7] es 4, el de A[1] es


15, y así sucesivamente.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejemplo 1

Este programa realiza un conteo de 0 a 9 en un display de 7


segmentos conectado al puerto C del microcontrolador con intervalos
de 1 segundo. Obsérvese que se realizan combinaciones binarias y
hexadecimales para encender los leds del display correspondientes a
los números del 0 al 9. La conexión se realiza en el orden alfabético de
cada segmento: a-RC0,b-RC1,...,g-RC6.

Los programas que se


observan a ambos
lados son dos
maneras distintas de
realizar la misma
acción. En el primero
(izquierda) se observa
el conteo de los
números en binario y
en el segundo con
sistema hexadecimal.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio 1
a) Desarrolla un código para un display de ánodo común en que se
muestre un conteo de 0 a 9 utilizando la sentencia de control for.
b) Desarrolla un código en el que aparezca una frase de 3 palabras,
creando un código para cátodo y ánodo común.

Ejemplo 2
Este programa realiza un conteo de 0 a 9 en un display de 7 segmentos
conectado al puerto C del microcontrolador con intervalos de 1 segundo.
A diferencia del ejemplo anterior, se realizara el conteo con un ciclo for y
utilizando un arreglo se seleccionara la combinación binaria
correspondiente.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Como se puede observar en el codigo anterior, se utilizó un arreglo de 10
elementos, en el el cual cada elemento, en orden, corresponde a los
números del 0 al 9 escritos en hexadecimal. Al entrar en el ciclo for la
variable “conteo” inicia en 0, por lo cual es como decir que en PORTC
(dis), aparecerá el elemento correspondiente a seg[0], y así
sucesivamente, hasta que la condición de for ya no se cumpla.
Ejercicio 2
Desarrolla un programa en el que se muestre una palabra de 8 letras,
utilizando el ciclo for.
Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica No. 7 “Display de 7 segmentos multiplexado”
R.A.P: El alumno aprenderá a manejar display de 7 segmentos
multiplexados haciendo uso de sus conocimientos previos de programación
para la obtención del producto deseado.

Arreglo Bidimensional
Los arreglos que se mencionaron en la práctica anterior reciben el nombre de
unidimensionales porque para acceder a un elemento del arreglo solo
tenemos que utilizar un índice. Sin embargo, existen también arreglos con
múltiples dimensiones, a cuyos elementos se debe acceder utilizando
múltiples índices. Los arreglos bidimensionales, también conocidos como
“matrices”, son aquellos en los que se debe hacer referencia a cada elemento
por medio de dos índices.
Un arreglo bidimensional permite almacenar NxM elementos del mismo tipo y
acceder a cada uno de ellos. Al igual que en los arreglos unidimensionales,
se distinguen dos partes importantes: los componentes y los índices. Los
primeros hacen referencia a los elementos que se almacenan en cada una de
sus casillas, y los segundos, por otra parte, especifican la forma de acceder a
cada uno de los elementos. Para hacer referencia a un componente de un
arreglo bidimensional debemos utilizar tanto el nombre del arreglo, como los
índices del elemento (fila y columna). Observa el siguiente ejemplo de cómo
declarar un arreglo bidimensional y asignar valores a cada elemento.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Display multiplexado
Ahora que ya sabes utilizar un display de 7 segmentos procederemos a
utilizar varios displays al mismo tiempo, o para así mostrar palabras
completas, a esta técnica se le conoce como multiplexado.

La técnica de multiplexar varios displays de 7 segmentos se basa en el


defecto que tenemos los humanos en los ojos (persistencia de la retina) en
donde nos da la sensación de ver una imagen cuando esta ya ha
desaparecido. En muchos dispositivos se emplea el multiplexado para
ahorrar el número de pines.

El siguiente esquema representa la forma de multiplexar cuatro displays.

Todos los displays de la imagen anterior están conectados en paralelo con


PORTC y sus respectivos segmentos.

Los display que se utilizan son de cátodo común, y el funcionamiento es el


siguiente: debido a su conexión en paralelo, al energizar cualquier segmento
de los display por medio de PORTC se prenderán todos ellos, y es ahí donde
se requiere utilizar el PORTB, quien nos va a ayudar a energizar aquel
display del que queramos que se encienda la combinación de segmentos
requerida; los transistores son parte indispensable de este proceso debido a

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


que ayudan a no perjudicar al microcontrolador con el exceso de corriente
producida.

En la imagen anterior se muestra gráficamente como se vería lo que se


explica anteriormente. Como se puede observar, se requiere que se
enciendan los segmentos necesarios para formar el número 3 en el tercer
display, por lo que al tiempo que se energiza PORTC formando el número 3,
PORTB trabaja energizando el tercer transistor, de manera que se logre el
efecto.

Nota: Recuerda que lo que se busca es conseguir un parpadeo de una


frecuencia tan pequeña, que no sea posible capturar para el ojo humano el
parpadeo y sólo se vea una imagen fija.

Procedimiento

Por ejemplo si queremos representar en los displays de cátodo común el


número 12, primero mandamos a los ánodos la tensión para encender los
dos segmentos que forman el número “ 1” y a continuación polarizamos el
cátodo mediante el transistor T1, con lo cual solo se iluminara ese display,
transcurrido un tiempo dejamos de polarizar la base de T1 para que dicho
display se apague, y procedemos a mandar la información para encender los

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


cinco segmentos que forman el número “ 2” y solo entonces polarizamos el
transistor T2 para que se encienda ese display.

Al realizar esta operación a una frecuencia superior a 30 Hz no apreciaremos


que el “1” y el “2” están continuamente parpadeando y alternándose uno y
otro.

Con este sistema necesitaremos 7 pines del microcontrolador para controlar


los ánodos de los displays, más un pin más por cada digito que queramos
poner.

Ejemplo 1

En este programa utilizaremos una técnica de multiplicación de display


de 7 segmentos de cátodo común. La multiplicación consiste en utilizar
un mismo bus de datos para enviar los caracteres a más de un display
de 7 segmentos, esto se realiza mediante un corrimiento de datos y
una sincronización entre cada display con el dato que le corresponde. A
grandes rasgos aprovecharemos un fenómeno óptico en el cual solo
habrá un display encendido a la vez con el dato que le corresponde,
después cambiara al siguiente display con el siguiente dato; si el
corrimiento se hace lo suficientemente rápido, el ojo humano no
alcanzara a percibir el tiempo en el que el resto de los display están
apagados y parecerá que todos encienden al mismo tiempo con su dato
correspondiente.

El activado y desactivado de cada display también lo controla el uC


utilizando transistores NPN debido a que está controlando varios leds
mediante un pin.

En este caso se enviara la palabra "HOLA" a 4 displays. Los display se


conectaran al puerto B de manera que la H corresponda a RB0 y A
corresponda a RB3.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


PORTB realiza el barrido para
la activación de los displays.

Nota que se puede


inicializar más de una
variable. En este caso
“disp” se inicia en 1 para
activar el primer display.

De acuerdo a lo visto sobre los arreglos, lo que


realiza este ciclo “for” es lo siguiente: cada que
la variable cuenta aumenta y toma un valor (no
mayor 4 debido a la cantidad de letras), se
envía el dato o letra correspondiente (0-H, 1-O,
etc.). La última línea de código activa el
siguiente display desplazando el 1.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Nota: el diagrama anterior corresponde a la simulación del anterior
ejemplo, sim embargo, se be considerar que Proteus, debido a un
cambia del tiempo, no realiza de manera correcta el funcionamiento.
Recuerdo que si tienes el display multiplexado en Arduino igual lo
puedes utilizar, facilita la conexión en físico.

Ejercicio 1
Conecta tu display multiplexado en fisico, realizando todas las conexiones
pertinentes de resistencias y transistores, y elabora una palabra de 4 letras
que se mantenga estatica.
Ejemplo 2
En este programa se volvera a utilizar la tecnica de multiplexacion de
display de 7 segmentos para mostrar tres palabras distintas que
forman un solo mensaje. Para esto, retomando la practica anterior, se
utilizaran dos ciclos formas, uno contara el numero de veces que se
hace el barrido antes de cambiar de palabra y el otro determinara la
palabra que se esta mostrando (0, 1 o 2). Para facilitar este programa
se utilizara un arreglo bidimensional, en especifico de 3x4, que
guardara una palabra de 4 letras en cada renglon (tres renglones). El
funcionamiento de la multiplexacion es el mismo de la practica
anterior.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


El primer for realiza el
conteo de la palabra que
se muestra, el siguiente
es el que realiza el conteo
de las repeticiones de
cada palabra (tiempo que
se muestra) y el último es
el que realiza el conteo
del barrido de los display,
como en el anterior.

Ejercicio 2
Una vez logrado mostrar una palabra, mostraremos 3 palabras, una despues
de otra, las cuales formaran una frase. Conecta fisicamente tu display
multiplexado. Una vez realizado esto, crea un codigo en el que muestres una
frase en la que cada palabra de la frase se muestre durante 4 segundos.
Toma en cosideracion que las palabras de tu frase solo pueden contener 4
letras como maximo.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejemplo 3
En este programa se mostrara un mensaje en 4 displays de 7
segmentos, el mensaje sera de dimensiones mayores y s ira
desplazando para mostrarlo todo. Se utilizara un arreglo de una
dimension que almacenara los datos del mensaje a mostrar.
El proceso se realiza aumentado cada determinado tiempo la posicion
de inicio a partir de la cual se mostraran cuatro letras a la vez, es
decir, por ejemplo, en la primera iteracion se mostraran las letras en
las posiciones 0,1,2 y 3 mientras que en la iteracion 5 se mostraran los
caracteres de las posiciones 4,5,6 y 7.

La variable inicio determina la letra


del primer display en todo momento.

Determina el tiempo que


se ve cada posición.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejercicio 3
Como parte final se desarrolló un código en el que se muestra como una
frase “se va recorriendo” a lo largo de 4 display multiplexados. Conecta
físicamente tu display. después crea un código en el que muestres una frase
larga que “se va recorriendo” a lo largo de tus displays.
Conclusiones:

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica 8 “Uso de la Matriz”
R.A.P.: El alumno obtendrá conocimiento sobre que es la matriz, los
distintos tipos que hay y cuál es el correcto funcionamiento de la misma,
aplicando los conocimientos adquiridos previamente en las anteriores
prácticas.

La matriz 8x8
Una matriz de LEDs consiste en un arreglo de LEDs que pueden ser
encendidos y apagados individualmente desde un microcontrolador. Pueden
pensar en ella como una pantalla de pocos pixeles en los cuales pueden
presentar gráficos y textos, tanto estáticos como en movimiento. Como se
indica en el título, nosotros vamos a trabajar con una matriz de 8x8 (8 filas y
8 columnas).
Para empezar, debemos entender el funcionamiento básico de una matriz,
por lo que vamos a observar la siguiente imagen.

Para encender un LED


específico debe ubicarse la
intersección entre la columna y
la línea correspondiente. Por
ejemplo, para encender el LED
rojo tendríamos que mandar 5V
sólo en la columna 5, mientras
que la fila 4 se manda a tierra.
Si queremos encender el LED
verde, tendríamos que mandar
5V a la columna 2, mientras que
la fila 7 se manda a tierra.

Es importante mencionar que no existe una matriz que tenga los pines ordenados por
filas y columnas como la que se mostró anteriormente, las matrices en la vida real
tienen todos los pines desordenados, por lo que complica un poco la conexión en físico,
sin embargo, en el simulador sí se encuentran en orden sus pines.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


En nuestro caso, vamos a utilizar la matriz de 8x8 de ánodo común, lo que
quiere decir que las columnas todas van conectadas a ánodo, su datasheet
es el siguiente:

Para poder identificar el orden de los pines de la matriz, nuestra guía será la
siguiente:

Pin 9

Pin 1
Pin 1

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Conexión
Para la conexión, será necesario utilizar dos puertos del microcontrolador,
debido a que se tienen 8 filas y 8 columnas. PORTC será quien se conecte a
las filas, mientras que PORTB controlará el “barrido”, como en la práctica
anterior, por lo que también serán necesarios transistores.
Nota: es importante mencionar que a la hora de comprar tu matriz de 8x8
ánodo común, la manera de reconocer si es la correcta es ubicar la “A” de la
matrícula, la cual nos dice que es de ánodo.

Procedimiento
Ya sea que se realice un programa en el que se muestre una figura estática
en la matriz o un desplazamiento de una oración, existe una herramienta
que nos ayuda a conocer el valor en decimal de los leds que se están
encendiendo, estos valores son los que se colocaran en el arreglo.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


En la barra de abajo se muestran los valores del código.
Existen otras aplicaciones que igual ayudan a este propósito, sin embargo,
algunas dan los valores en hexadecimal.
Una vez que hayas decidido lo que se va a mostrar en la matriz.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Practica 9 “Pantalla LCD”

RAP: El alumno aprenderá a mostrar datos de entrada y salida atravez


del uso de una patalla LCD
Introduccion
Las siglas LCD significan ("Liquid Cristal
Display") ó pantalla de cristal líquido. Es un
dispositivo empleado para la visualización de
contenidos o información de una forma gráfica,
mediante caracteres, símbolos o pequeños
dibujos dependiendo del modelo. Está gobernado
por un microcontrolador el cual dirige todo su
funcionamiento.

Su funcionamiento esta basado en el uso de una sustancia líquida atrapada entre 2


placas de vidrio, haciendo que al aplicar una corriente eléctrica a una zona específica,
esta se vuelva opaca y contraste con la iluminación CCFL trasera. Este principio es
aplicado pero con ciertas modificaciones (ya que se utilizan 3 colores básicos para
generar la gama de colores), lo cuál permite la visualización de imágenes procedentes
de la computadora, por medio de el puerto de video hasta los circuitos de la pantalla
LCD, entran dentro de la clasificación FPD ("Flat Panel Displays") ó visualizadores de
panel plano.
Este dispositivo cuenta con un microprocesador encargado de determinar la posición de
cada píxel.
Existen
muchos
tipos de
LCD,
variando en
forma y
tamaño, número de píxeles,
color.Durante las practicas vamos a
emplear un LCD de 16x2, esto quiere
decir que dispone de 2 filas de 16
caracteres cada una. Los píxeles de
cada símbolo o carácter, varían en

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


función de cada modelo.

Existen pantallas LCD Seriales, de Color, Graficas y Táctiles.

En funcion a su tamaño generalmente es medido a lo lardo de su diagonal, expresado


generalmente en pulgadas. Sin embargo existen más
características que pueden describir las dimensiones
aproximadas, como por ejemplo la LCD 2X16 se
refiere a que tiene la capacidad de tener al mismo
tiempo 16 caracteres de manera horizontal en dos
renglones (cada uno). Las mas comunes son LCD
1X16, LCD 2X16, 4X20.

Conexión

En la siguiente imagen de Proteus se puede


observar la estructura de sus pines.

Lo podemos dividir en los Pines de


alimentación, pines de control y los pines del
bus de datos bidireccional. Por lo general
podemos encontrar ademas en su estructura
los pines de Anodo de led backlight y cátodo
de led backlight.

Pines de alimentación:

Vss: Gnd

Vdd: +5 voltios

Vee: corresponde al pin de contraste, lo


regularemos con un potenciómetro de 10K
conectado a Vdd.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Pines de control:

RS: Corresponde al pin de


selección de registro de
control de datos (0) o registro
de datos(1). Es decir el pin RS
funciona paralelamente a los
pines del bus de datos.
Cuando RS es 0 el dato
presente en el bus pertenece
a un registro de
control/instrucción. y cuando RS es 1 el dato presente en el bus de datos pertenece a
un registro de datos o un carácter.

RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato en


la pantalla o leer un dato desde la pantalla.

E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no
esta activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o
leer desde el LCD.

Pines de Bus de datos:


El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la
comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0 a
D7) o empleando los 4 bits mas significativos del bus de datos(D4 a D7). En este caso
vamos a explicar la comunicación con el bus de 4 bits.

DDRAM y CGROM

Son las dos zonas de memoria del LCD.


La memoria DDRAM(Data Display Ram): corresponde a una zona de memoria donde
se almacenan los caracteres que se van a representar en pantalla. Es decir es la
memoria donde se almacenan los caracteres a mostrar con su correspondiente
posición.

La memoria CGROM es una memoria interna donde se almacena una tabla con los
caracteres que podemos visualizar en el lcd.

La memoria CGRAM(Character Generator Ram): en ella se pueden almacenar nuestros


propios caracteres.

Diagrama de conexión a 8 pines


Las conexiones para el módo de 8 bits requerimos las 8 lineas de datos activas. En el
siguiente ejemplo se aprecia como se están utilizando los 8 bits del puerto B, RA0

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


funciona como señal de selección de registro (RS) y RA1 como señal de habilitación
(E).

Diagrama de conexión a 4 pines


Al conectar una pantalla LCD es posible conectarse a través de un bus de 4. El modo
de 4 bits permite usar solo 4 pines para el bus de datos, dándonos un total de 6 o 7
pines requeridos para la interfaz con el LCD,. El pin RW es el único que puede omitirse
si se usa la pantalla en modo de solo escritura y deberá conectarse a tierra si no se
usa. En este caso el microcontrolador no puede leer desde el chip controlador de
pantalla, pero en la mayoría de las situaciones esto no es necesario y nuestra librería
no implementa aun esta funcionalidad.Se utilizan los primeros 4 bits del puerto A (RA0-
RA3) como bus de datos. RB0 como señal de habilitación (E) y RB1 como señal de
selección de registro (RS).

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Tipos de Conexión

Comunicación en paralelo. Es la más directa de utilizar, ya que se puede realizar


haciendo directamente la comunicación con el
arduino, esta puede utilizar del pin 0 al 7 o
bien del 0 al 4, mandando la mitad de los
datos, ya que aun mandando la mitad de los
datos, (haciendo doble proceso de envío) es
tan rápido el registro, que no es posible
percibirlo con el ojo humano.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Comunicación serial a paralelo.

Para utilizar esta forma de comunicación se requiere un circuito integrado (como el


PCF8574A) el cual se conecta por I²C o SPI al puerto SDA mientras que el reloj al SCL
del arduino (parte superior derecha en el arduino UNO) mediante la librería Wire. Esta
librería permite la comunicación con dispositivos I²C/TWI. Este se hace mediante un
shift register.

Comunicación serial UART.

Este método funciona de manera serial


utilizando el puerto TX y RX de un
microcontrolador, mediante el uso de una
herramienta llamada BackPack, Sparkfun
tiene dos, una que soporta de 16 0 20
caracteres y es para 2 o 4 líneas,
mientras la otra es para gráficos entre
160×128 y 128×64. Esta puede ser
utilizada con un baud entre 2400 y 38400 bps.

Librería y funciones principales en mikro C

mikroC tiene una librería para comunicación con LCDs basados en el controlador
HD44780 o compatibles, a través de un interfaz de 4 bits para datos. Para el trabajo con
el módulo LCD se debe añadir la librería Lcd, que contiene las funciones que se
muestran en la tabla a continuación Para poder utilizar estas funciones se debe declarar
previamente un total de 12 variables: 6 que definen los pines del PIC y otras 6 que
permiten programar el sentido de circulación de datos.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Por ejemplo:

LCD_init(); //Inicializa el modulo o chip de la pantalla LCD

LCD_out(1,3,"BIENVENIDO"); //Esta funcion escribe un texto en la posición indicada


(fila,columna,texto)

LCD_out_cp("hey!"); //Imprime una cadena de caracteres "texto" en la


posicion actual del cursor

LCD_chr_cp(' '); //Imprime un solo carácter en la posición actual del


cursor (current position)

LCD_cmd(_lcd_clear); //Borrar pantalla

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejemplo 1

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


Ejemplo 2

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES


ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES
Ejemplo 3

Ejercicio de aplicación
Realiza un programa el cual controle un arranque y paro semiautomático de un motor
monofásico, donde el usuario pueda seleccionar el tiempo que desee que el motor
permanezca trabajando. El tiempo se ajustara con botones de adicción y sustracción. Al
terminar el tiempo establecido el motor se apagara y volverá a preguntar al usuario el
tiempo que quiere volver a encender el motor.

ING. LUIS ARMANDO LOERA CERVANTES INTRO. A LOS MICROCONTROLADORES

Вам также может понравиться