Sei sulla pagina 1di 21

Informe Laboratorio No.

1 Microprocesadores e Interfaces
Lara Ramirez Juan Sebastian, Ramirez Pea Luis Felipe.
{juan.lara-r, luis.ramirez-p}@mail.escuelaing.edu.co
Escuela Colombiana de Ingeniera Julio Garavito
Bogot, Colombia

Abstract Los microprocesadores son dispositivos


digitales que proveen una infinidad de funcionalidades en
dependencia de una lgica programable, en la prctica se
utiliz un microprocesador comercial, que se puede
encontrar como pic18f4550 de microchip. Se utilizaron
funcionalidades como interrupciones, timers, ahorro de
energa y acceso a memoria no voltil incluidas en este tipo
de procesador. El objetivo de la prctica fue implementar
un tipo de calculadora que permitiera realizar operaciones
aritmticas bsicas como suma y resta, haciendo uso de un
teclado matricial y cinco displays de ocho segmentos.
Key Words Assembler, Display de ocho segmentos,
Interrupciones,
Memoria
no
voltil
EEPROM,
Microprocesador, pic18f4550, teclado matricial, timers.

I. INTRODUCCIN
na de las ms importantes cualidades del ser humano
es el ingenio y esto se ve representado fielmente en
toda la tecnologa que nos rodea hoy en da. Es bien
sabido que la existencia de dispositivos electrnicos en la
escala en la cual se comercializan se debe principalmente
a la invencin del transistor y de elementos basados en
semiconductores. Una de las caractersticas ms
importantes de este tipo de elementos es la capacidad de
conmutar, es decir, permitan el cambio de una seal de
voltaje de un estado alto a uno bajo en un corto tiempo en
dependencia de una seal de entrada; a partir de esto se
dio toda un rea de desarrollo a la que se conoce hoy en
da como electrnica digital.
Uno de los inventos que revolucionaron el mundo, fue la
calculadora, este dispositivo ha venido evolucionando a
lo largo de los aos hasta llegar a dispositivos
programables que permiten solucionar complejas
operaciones matemticas en cuestin de segundos, esta
agilidad tan caracterstica de estos dispositivos depende
fundamentalmente de un tiempo de mquina que est
presente en todo circuito digital secuencial. Es necesario
destacar la importancia de los microprocesadores en esta
evolucin, pues son dispositivos capaces de realizar
distintas operaciones en dependencia de un patrn de bits
que un humano programa cuantas veces lo requiera.
En esta prctica se utiliz un microprocesador conocido
como pic18f4550 de microchip [1] con el fin de
implementar una calculadora con la capacidad de realizar

operaciones aritmticas bsicas como suma y resta de


nmeros con signo de cuatro dgitos, adicionalmente
existan una serie de funcionalidades como las que se
listan a continuacin:
Modo de ahorro de energa despus de 50
segundos.
Almacenamiento y extraccin de un dato en
memoria no voltil, en este caso se acudi a la
memoria
EEPROM
disponible
en
el
microprocesador [1].
Mensaje de saludo mostrado por ocho segundos,
en este caso se utiliz la palabra hello.
Un control de reinicio del sistema.
Mensajes de error por cada operacin en caso de
que el resultado sobrepase los lmites
establecidos, es decir, un nmero de ms de
cuatro dgitos.
En este documento, se puede encontrar el diseo de la
calculadora con las funcionalidades mencionadas
teniendo en cuenta que la programacin est
completamente basada en las funciones dadas por el
microcontrolador utilizado y no se aplica perfectamente a
otro tipo de dispositivos. Se mostrar tambin el diseo
fsico del dispositivo, es decir, la implementacin de un
teclado matricial 4x4 y el uso de cinco displays de ocho
segmentos de nodo comn. Tambin se encuentra una
seccin con los resultados obtenidos, es decir fotografas
del sistema en funcionamiento y simulaciones de los
tiempos que se mencionaron previamente. Finalmente se
encuentra una seccin con anlisis de resultados y
conclusiones donde se mencionan los errores ms
relevantes encontrados durante la prctica y una posible
solucin a los mismos.
II. DESARROLLO DE LA PRCTICA EXPERIMENTAL
A continuacin, se muestran dos subsecciones en las que
se podr comprender cmo se dise la calculadora con
las funcionalidades requeridas y una muestra de los
resultados obtenidos.
A. Diseo
El diseo se divide en dos, la primera parte consiste en el
montaje fsico implementado, tanto para programar el
microprocesador como para el funcionamiento normal de
la calculadora; la segunda parte consiste en el diseo del
1

programa implementado, este cdigo se puede encontrar


en la seccin de anexos y ser mencionado
frecuentemente en la segunda parte del diseo.
A continuacin, se muestra una figura que ilustra los
puertos que posee el microprocesador utilizado:

utiliza visualizacin dinmica, con el fin de minimizar


puertos de salida.

Fig. 3 Diagrama de bloques del circuito (Fuente propia).

Fig. 1. Diagrama de puertos del pic18f4550 (imagen


tomada de: [1])

Tericamente, el teclado matricial no es ms que un


conjunto de pulsadores posicionados y organizados en
forma de matriz, es decir por medio de filas y columnas
interconectadas entre s. Para obtener un dato del arreglo,
es necesario realizar un barrido ya sea de fila o de
columna (se explicar ms adelante en el diseo del
programa) y leer la columna o fila respectivamente; el
hardware implementado se puede observar en Fig. 4.

Como bien se observa en la Fig. 1, el MCLR (Master


clear) se encuentra subrayado, esto indica que funciona
con lgica negativa, para conseguir un correcto
funcionamiento se utiliza un pulsador que por defecto est
en un valor alto y cuando se pulsa en uno bajo como el
que se ilustra en Fig. 2

Fig. 4. Conexin fsica con el teclado matricial 4x4


(Imagen tomada de: [2]).

Fig. 2. Circuito implementado para la funcionalidad


Reset (Fuente propia).
El hardware se divide en dos partes importantes: control
del teclado matricial y salida a los displays. En Fig. 3 se
puede observar un diagrama de bloques general del
sistema implementado, estn presentes los puertos
seleccionados para cada bloque. El teclado matricial
ocupa en total 4 pines de salida y 4 de entrada y el sistema
de visualizacin por medio de displays utiliza 8 pines para
el control de los ctodos y 5 pines para el control del
nodo de cada display, esto es pensado en una interfaz que

Se utilizan unas resistencias de 10k en serie con los


pulsadores con el fin de restringir la corriente que pasa
por el microprocesador, es evidente que sin ellas habra
un corto entre dos pines del procesador. Adicionalmente
se utilizan resistencias de pull up con el fin de brindar un
camino de alto voltaje desde el cual pueda circular la
corriente.
Con respecto a la visualizacin dinmica, cabe resaltar
que todos los displays eran de nodo comn, por ello se
unieron fsicamente todos los ctodos y estos se
conectaron al PORTD del microcontrolador, por ello en
Fig. 3 se muestran slo dos buses de datos
correspondientes a ctodos (K) y nodos (A), los ctodos
no tienen conexin fsica entre s, por lo que al final se
tiene un bus de 5 bits correspondiente al nmero de
displays implementado, y los nodos unidos fsicamente
corresponden a un bus de 8 bits, que hace referencia al
2

nmero de leds o segmentos contenidos en cada display


de ocho segmentos.
El dispositivo se programa utilizando un Pickit 3, el
montaje utilizado se muestra en Fig. 5.

segundos de inactividad, el dispositivo va a un modo de


ahorro de energa. Este modo se implement por medio
de un componente presente en el dispositivo utilizado y
es el timer.

Fig. 7. Timer 0 del microcontrolador (imagen tomada de:


[1]).
Fig. 5.Conexin estndar con el pickit 3 (imagen tomada
de: [2]).
Hasta este punto se ha abordado lo que corresponde al
montaje fsico implementado, con respecto al programa
se debe abordar dos partes fundamentales que son
anlogas a los bloques del circuito:

Programa principal e interrupcin por Timer0:

Este segmento del programa se asocia a la visualizacin


dinmica, es decir el programa est constantemente
mostrando informacin en los displays ya sea un mensaje
de saludo o algn nmero; a continuacin, se muestra el
diagrama de flujo correspondiente al programa
implementado:

Este timer puede funcionar como contador o como


temporizador de eventos, en este caso se implement
como un contador ascendente de 8 bits que permita
ejecutar una interrupcin cada que el byte se desbordaba,
una de las caractersticas ms importantes de este
contador es que es independiente de los procesos
normales del microprocesador por lo que no genera
retardos durante el funcionamiento normal, por esto
mismo, se puede calcular fcilmente el tiempo que dura
cada retardo, en el programa implementado se utiliz un
contador de interrupciones, de tal forma que cada que el
timer0 se desbordaba o sobrepasaba el nmero 255, un
segundo contador aumentaba en uno hasta alcanzar el
nmero equivalente a los 50 segundos. Finalmente se
utiliz un registro validador que cambiaba cuando se
sobrepasan los 50segundos, este validador es el mismo
que se muestra en Fig. 6 en el ltimo condicional y es el
que regula si el programa continua realizando la
visualizacin dinmica o entra en modo de ahorro de
energa.

Fig. 6.Diagrama de flujo correspondiente al programa


principal (Fuente propia).
En este diagrama de flujo se muestra la secuencia normal
del programa, es decir, esto es lo que debera de ejecutar
el microcontrolador en condiciones normales, la primera
condicin hace referencia a un ciclo que dura 8 segundos
donde se muestra un mensaje de bienvenida: HELLo,
una vez terminado ese ciclo, todos los displays se borran
y comienza la visualizacin dinmica de los datos
almacenados en las variables disp1, disp2, disp3, disp4 y
disp5; adicionalmente hay un condicional que depende de
un tiempo de inactividad, cabe resaltar que a los 50

Fig. 8. Diagrama de flujo correspondiente al contador de


interrupciones para control de inactividad (Fuente
propia).
3

El timer0 debe ser previamente configurado en el


programa para funcionar, as mismo se deben de activar
las interrupciones por desbordamiento del mismo, a
continuacin, se muestran los bits para el control de este
contador:

Fig. 9. Bits de control de Timer0 (imagen tomada de:


[1])

Interrupciones:

Hasta este punto, se dispone de un sistema capaz de


mostrar un mensaje de saludo, e ir a un modo de ahorro
de energa despus de 50 segundos, la parte fundamental
de la calculadora se realiza por medio de interrupciones
de baja prioridad utilizando el teclado matricial, la forma
de identificar qu pulsador del teclado fue presionado se
da por medio de un barrido en PORTB, para ello es
necesario habilitar las interrupciones por cambio de nivel
en dicho puerto, en Fig. 10 se muestra un esquema de
cmo se debe realizar el barrido.

Fig. 10. Condiciones presentes en el barrido del teclado


matricial (imagen tomada de: [2]).

Cabe resaltar que en Fig. 3, se especific que las columnas


correspondan a la salida del micro (PORTB(3:0)) y las
filas a la entrada (PORTB(7:3)), al realizar el
procedimiento mostrado en Fig. 10, se obtiene qu
pulsador fue presionado y se da la posibilidad de efectuar
determinada subrutina. Hay varios pulsadores que
efectan una tarea similar, estos son los que corresponden
a un nmero, la interrupcin correspondiente a estos
nmeros se muestra en Fig. 11 como un diagrama de flujo.

Fig. 11. Diagrama de flujo correspondiente a


interrupcin para cualquier nmero (Fuente propia).
En la figura anterior se muestra un cuadro resaltado en
color rojo, ese corresponde a la rotacin que se realiza
cada que ingresa un nuevo nmero, hace falta aclarar
cmo funciona la visualizacin dinmica, ya que en sta
se incluye el manejo de tablas y se muestran los datos que
estn en los registros disp1, , disp5; dichos datos se
encuentran en formato binario.

Fig. 12. Diagrama de flujo para la visualizacin


dinmica en un nico display utilizando tablas (Fuente
propia).
4

En Fig. 12 se muestra el diagrama de flujo para la


visualizacin de un nico display, para conseguir la
visualizacin dinmica es necesario repetir la misma
secuencia por cada display, si la duracin del retardo es la
apropiada, en el exterior se puede ver lo de cada registro
disp1, , disp5 en cada display. Con lo anterior, se tiene
un sistema que permite el ingreso de datos desde el
teclado matricial y su correcta visualizacin en los
displays por medio de visualizacin dinmica. Las
operaciones corresponden a otro tipo de interrupcin por
cambio de estado en PORTB y se muestran en Fig. 13; ya
sea suma o resta, se debe realizar el mismo procedimiento,
lo nico que cambia es el registro que indica que
operacin fue realizada.

Fig. 14. Diagrama de flujo correspondiente a la


interrupcin por botn igual (Fuente propia).
El registro OPEQ es utilizado para saber qu operacin se
realizar, la importancia de realizar operaciones de
nmeros con signo es que en la resta lo nico que toca
hacer es cambiar el signo del segundo nmero y luego
continuar con la suma, por ello no se abordar ms que la
suma, existen cuatro posibles casos de suma de nmeros
con signo y en el programa se clasificaron por subrutinas:

Fig. 13. Diagrama de flujo correspondiente a una


subrutina asociada a una interrupcin por botn de
operacin (Fuente propia).
El registro utilizado para identificar el tipo de operacin
es OPEQ, cuando est en cero es porque se ha presionado
el botn de suma y cuando est en 1 es porque se ha
presionado el botn de resta, cabe resaltar que el registro
disp1 contiene el signo y hay un botn para invertir el
signo.
En Fig. 13 se puede observar que la informacin contenida
en los registros disp. Que son aquellos relacionados a la
visualizacin dinmica se transfieren a unos registros
llamados uni1, dec1, cen1, mil1 y signo1 esto
corresponde a un espacio en memoria designado para
almacenar cada dgito del primer nmero de la operacin.
El botn designado a mostrar el resultado de la operacin
tiene una subrutina que depende de los datos previamente
guardados.

Fig. 15. Subrutina correspondiente a la suma (Fuente


propia).
5

Los cuatro casos previamente mencionados se reducen a


dos, cuando el signo es igual y cuando el signo es
diferente, lo nico que cambia es el signo en cada caso
como se mostr en Fig. 15, la subrutina suma culmina en
otras dos subrutinas:
ambosmas: cuando el signo de los dos nmeros
es igual, por lo que se efecta una suma
ordinaria
segundospos: cuando los signos son diferentes,
se toma que el segundo es positivo y el primero
es negativo, en caso contrario se invierten los
dgitos de los nmeros.

El diagrama de flujo mostrado en Fig. 16, muestra el


proceso realizado para realizar la suma en caso de tener
dos nmeros del mismo signo, el proceso consiste en
sumar dgito a dgito teniendo en cuenta el carry, en cada
suma se regula que el nmero sea menor a 10, de caso
contrario se realiza una conversin binaria a BCD
sumando seis al nmero en cuestin, como se contaba con
registros de 8 bits y no de 4 como normalmente se trabaja
el BCD fue necesario sumar F6 con el fin de conseguir un
correcto desbordamiento. Al final de Fig. 16, se muestra
una salida normal, cuanto el resultado no se desbord y
una salida de error, que se da exclusivamente en este caso
y se reconoce por la existencia del carry de salida.
A continuacin, se muestra la subrutina segundopos:

A continuacin, se muestra la subrutina ambosmas:

Fig. 17. Primera parte del diagrama de flujo de


segundopos (Fuente propia).

Fig. 16. Diagrama de flujo para subrutina ambosmas


(Fuente propia).

En Fig. 17 se muestra el comienzo de la subrutina


segundopos, en esta se pregunta si el nmero negativo A
(uni1, dec1, cen1, mil1) es mayor que el nmero positivo
B (uni2,dec2,cen2,mil2) en caso de ser verdadero, se
intercambian los valores de A con los de B y se asigna el
signo negativo de una vez en su respectivo registro, en
caso contrario, se asigna el signo positivo y se contina a
realizar la resta.
La subrutina que se muestra en Fig. 17 como B-A
corresponde a la resta convencional de dos nmeros
donde se cumple que el minuendo es mayor que el
sustraendo, el signo de la operacin correspondiente se
asigna justo antes de entrar en la misma por lo que con ese
condicional se simplifican las operaciones a realizar.
Al final de Fig. 17, se observa una convergencia en la
subrutina B-A que es la que se muestra en Fig. 18, esta
resta se realiza por medio de restas normales por
complemento de diez.
6

Fig. 19. Tiempo medido por simulacin del sleep.

Fig. 20. Tiempo de Sleep Medido por Cronometro.

Fig. 18. Diagrama de flujo para subrutina B-A (Fuente


propia).
B. Resultados
Con respecto a los resultados, se decidi tomar fotografas
de los posibles mensajes que se podan obtener y algunos
ejemplos de operaciones realizadas, adicionalmente se
midieron tiempos de los retardos ms significativos tanto
en la realidad (haciendo uso de un cronmetro) como en
el simulador.

Fig. 21. Tiempo de Retardo de Inicio Medido por


Simulacin.

Fig. 26. Muestra de la suma.

Fig. 22. Tiempo de Retardo de Inicio Medido por


Cronometro.

Fig. 27. Muestra de la resta.

Fig. 23. Mensaje de bienvenida.

III. ANLISIS DE RESULTADOS


Uno de los errores ms relevantes de la prctica fue el
ingreso de nmeros no deseados debido al rebote en los
pulsadores del teclado matricial, este rebote hace
referencia a la oscilacin entre estados abierto y cerrado
del pulsador debido a movimientos mecnicos no
deseados, esto se puede ver mejor representado en Fig. 28
y es algo presente en cualquier tipo de pulsador
convencional.

Fig. 24. Mensaje de error en la suma.

Fig. 28. Voltaje de rebote medido en un pulsador(imagen


tomada de [3]).
Fig. 25. Mensaje de error en la resta.

Existen diversas formas de eliminar este tipo de ruido, por


ejemplo, se pueden utilizar circuitos RC para con el fin de
8

eliminar aquellas oscilaciones de alta frecuencia que se


presentan, la forma ms comn es implementar un retardo
por software para que el sistema slo detecte el primer
cambio de nivel, esta fue la forma utilizada en la prctica
y el retardo utilizado se ajust de tal forma que una
pulsacin equivala estrictamente a una nica
interrupcin. Otro tipo de error visto frecuentemente fue
el mal contacto entre el teclado matricial y la protoboard,
cabe resaltar que los terminales del teclado estaban
soldados a unos conectores tipo Header lo que le daba
cierta altura a la base del mismo, de esta forma, al
presionar cualquier botn como 1, 2, 3 o suma siempre
haba un torque lo suficientemente fuerte para mover el
contacto con la protoboard; este problema se soluciona
mejorando el diseo fsico del dispositivo, buscando
obtener una mejor estabilidad mecnica del teclado y de
los contactos.
Uno de los aspectos ms importantes de la prctica fue la
implementacin del timer0 para contabilizar el tiempo de
inactividad, cuya implementacin fue relativamente
sencilla pues el clculo del tiempo se redujo a una simple
divisin ya que este contador slo depende del oscilador
interno, esto difiere significativamente del retardo de 8
segundos el cual no se dise tan fcilmente, pues en este
se inclua la visualizacin dinmica cuyo tiempo dependa
de varias funciones. Cabe resaltar que el tiempo real de
los retardos siempre contiene error, pues en un sistema
digital difcilmente se obtiene un tiempo exacto ya que los
tiempos obtenidos siempre son mltiplos de la frecuencia
de oscilacin del sistema. Los errores correspondientes
encontrados:
50 50.003864
| 100
50
= 0,007728%
8 8.214228
8 = |
| 100
8
8 = 2,67785%
Es evidente que los errores son muy pequeos, pero se
observa que utilizar un temporizador da mayor exactitud
a una variable ya que siempre funciona de manera
independiente al cdigo principal.
= |

IV. CONCLUSIONES

Los microprocesadores son dispositivos muy


tiles en la vida cotidiana, el pic18f4550 permiti
implementar de manera correcta una calculadora
de operaciones aritmticas bsicas.
Los temporizadores del microcontrolador
utilizado permiten tener un mayor control del
tiempo que cualquier otro tipo de retardo ya que

funcionan de manera independiente al flujo


normal del programa.
El retardo para la eliminacin de ruido por rebote
funciona apropiadamente en un sistema como el
implementado, aun as, en una aplicacin donde
las pulsaciones sean de mayor frecuencia se
requiere tomar otro tipo de solucin.
Para instrucciones como el almacenamiento de
datos es necesario realzar una verificacin de si el
dato ingresado ya fue guardado en la memoria
voltil, ya que esto tarda un tiempo mayor que
una instruccin corriente es por ello que en la
parte de tecla de guardado o teclanum se realiza
al final de cada instruccin una verificacin, con
ello puede pasar y almacenar el siguiente dato.
Hay que considerar un montaje independiente
siempre
para
la
programacin
del
microprocesador, ya que de no hacerlo esto
podra ocasionar que este se dae por
configuraciones internas del mismo, por tal
motivo como se pudo apreciar en el montaje
presentado existan dos espacios donde estaba
ubicado el microprocesador.
Existen instrucciones como lo son los macros
otorgan un mayor orden en el cdigo respecto a
la cantidad de instrucciones, ya que en ocasiones
stas pueden llegar a ser repetitivas, esta
herramienta sin duda ayuda reducir el tamao del
cdigo, pero siempre hay que tener en cuenta que
slo es una herramienta que provee el
compilador; cuando se traduzca las instrucciones
a cdigo binario, se reemplazarn los macros por
las lneas de cdigo respectivas.
REFERENCIAS

[1] Microchip, http://ww1.microchip.com/, 2009.


[En lnea]. Available:
http://ww1.microchip.com/downloads/en/DeviceD
oc/39632e.pdf. [ltimo acceso: 21 03 2016].
[2] J. Soto, Sistemas Electrnicos Digitales y
Aplicaciones, [En lnea]. Available:
http://190.24.150.73/seda/seda_wp_00/. [ltimo
acceso: 21 03 2016].
[3] C. M. e. a. Annybell Villarroel Luis,
wikitronica, 20 06 2014. [En lnea]. Available:
http://wikitronica.labc.usb.ve/index.php/Preguntas
_Frecuentes_Demoqe. [ltimo acceso: 23 03
2016].

ANEXOS:

10

11

12

13

14

15

16

17

18

19

20

21

Potrebbero piacerti anche