Sunteți pe pagina 1din 8

PRACTICA No.

LABORATORIO DE SISTEMAS MICROPROCESADOS

Tema: Programación de los microcontroladores atmel mega 16 (Implementación del


hardware)

1.- Objetivo:
Implementar un circuito en hardware que permita sumar o restar 2 números utilizando
el microcontrolador ATMEL MEGA 16.

2.- Marco Teórico

Características del microprocesador Atmega16

El ATmega16 es un microcontrolador de 8 bits y de bajo consumo de potencia, basado


en la arquitectura AVR RISC, capaz de ejecutar un millón de instrucciones por segundo,
posee bajo consumo de potencia contra velocidad de procesamiento.
El voltaje de alimentación puede variar en 4.5 y 5.5V.
Presenta una memoria volátil en donde están los 32 registros de propósito general como
también una memoria no volátil memoria de datos (memoria flash)
Internamente presenta periféricos: 2 timers counters de 8 bits, un contador temporizador
de 16 bits, un contador en tiempo real, 4 salidas PWM útil para conversores D/A, 8
canales A/D, interfase serial a 2 hilos, para transmisión y recepción de datos tenemos un
puerto Usart.
Presenta memoria volátil y no volátil (memoria flash), esta memoria flash permite
10000ciclos de escritura, lectura.
Tiene 512B de memoria EEPROM que se utiliza para datos (se guarda algo que no
quiero que se borre), tiene 1KB de SRAM.
También presenta un watch dog timer (WDT (circuito de vigilancia)), un comparador,
circuitos especiales tenemos Power Reset (POR (colocar el contador de programa en la
posición cero)), interrupciones internas y externas (pines externos, un evento que viene
fuera del UP Ejemplo: un contador, un teclado).
Tiene un puerto JTAG 1149.1IEEE que fue diseñado para el testeo de circuitos
impresos y para depurar aplicaciones en bebidas o empotradas.

Configuración de pines del atmega16


Diagrama de Bloque

Indicadores de 7 segmentos
Los indicadores de 7 segmentos se colocadas en forma de ocho tal. Aunque
externamente su forma difiere considerablemente de un diodo LED típico, internamente
están constituidos por una serie de diodos LED con unas determinadas conexiones
internas.

Muchas veces aparece un octavo segmento, entre paréntesis en el ejemplo anterior, que
funciona como punto decimal.

Características

Solidez: excelente
Angulo de visibilidad: 150 grados
Consumo por digito: 50 mW
Vida media en horas: 100000
Luminosidad: buena
Facilidad de montaje: excelente
Vcc general: 1.5 volt.

Conversiones
3.- Trabajo Práctico
Equipo y elementos utilizados:
- Una computadora con:
• AVR Studio 4.0 (Para ensamblar y compilar el programa)
• Proteus 7 Profesional (Para hacer pruebas de simulación)
• ProgIsp (para programar el microcontrolador Atmega16)
- Un programador quemador de microcontroladores Atmel.
- Un microcontrolador Atmega16
- Dip Switchs de 9 bits, para dos numero de 8 bits y uno para selección de la operación
- Un pulsador, para el reset.
- Dos displays de 7 segmentos ánodo común
- Un led, para indicar el carry.
- 18 Resistencias de 5.6KΩ y 15 de 330Ω
- Un protoboard y varios alambres

Procedimiento:
Primero se realizó los últimos ajustes y modificaciones al programa, para hacerlo más
eficiente al reducir las líneas de código.

Luego se ensambló y simuló el programa con los softwares correspondientes, igual que
en la práctica anterior, para verificar su correcto funcionamiento.

Una vez comprobado el funcionamiento del programa, se procedió a armar el hardware


con todos los elementos y programar el microcontrolador con el hardware y software
requerido para esta tarea; en nuestro caso se uso un programador usb de Atmel y el
software “ProgIsp”.
Con nuestro programador simplemente se coloca el microcontrolador en el zócalo zif y
después de cargar el archivo de extensión .hex , generado por el ensamblador
AVRStudio, en el programa progisp, y después de verificar la configuración del
programa, como los bits fusibles, la configuración del oscilador interno que se utilizó, y
que este bien seleccionado el micro y el programador, se da la orden al software de
programar el micro, tarea que tomó solo unos segundos.

Una vez programado el microcontrolador se lo coloca en el protoboard, en la ubicación


correspondiente junto con el resto del hardware y se procede a probar el circuito.

Programa implementado en lenguaje assembler:

.include "m16def.inc"
.org 0x00
.cseg
clr r0
clr r20
clr r21
ldi r22,$80
ldi r18,$7f
ser r19
out ddra,r0
out ddrb,r0
out ddrc,r18
out ddrd,r19
ingreso:
in r16,pina
in r17,pinb
sbic pinc,7
rjmp resta
suma:
add r16,r17

decodificador:
adc r20,r20
mov r19,r16
andi r19,$0f
ldi r30, low(tabla*2)
ldi r31, high(tabla*2)
add r30, r19
clr r0
adc r31,r0
lpm r0, z
out portc, r0

andi r16,$f0
swap r16
ldi r30, low(tabla*2)
ldi r31, high(tabla*2)
add r30, r16
clr r1
adc r31,r1
lpm r1, z
cpse r20,r21
add r1,r22
out portd, r1
rjmp ingreso

resta:
sub r16,r17
rjmp decodificador

tabla:
.db 0b1000000,0b1111001
.db 0b0100100,0b0110000
.db 0b0011001,0b0010010
.db 0b0000010,0b1111000
.db 0b0000000,0b0010000
.db 0b0001000,0b0000011
.db 0b1000110,0b0100001
.db 0b0000110,0b0001110
Circuito Implementado

VCC

GND

R 18
R 17 5 .6 k

5 .6 k

VCC SELECT

U1
9 22
RESET P C 0 /S C L
R 1R 2R 3R 4R 5R 6R 7R 8R 9R 10 P C 1 /S D A
23
5 .6 k5 .6 k 5 .6 k5 .6 k 5 .6 k5 .6 k 5 .6 k5 .6 k5 .6 k 5 .6 k 13 24
X TA L1 P C 2 /T C K
12 25
DSW 1 X TA L2 P C 3 /T M S
26
O F FO N P C 4 /T D O
16 1 40 27
P A 0 /A D C 0 P C 5 /T D I
15 2 39 28
P A 1 / A D C 1P C 6 / T O S C 1
14 3 38 29
P A 2 / A D C 2P C 7 / T O S C 2
13 4 37
P A 3 /A D C 3
12 5 36 14
P A 4 /A D C 4 P D 0 /R X D
11 6 35 15
P A 5 /A D C 5 P D 1 /T X D
10 7 34 16
P A 6 /A D C 6 P D 2 / IN T 0
9 8 33 17
DSW 2 P A 7 /A D C 7 P D 3 / IN T 1
18
O F FO N P D 4 /O C 1 B
D I P S W _ 18 6 1 1 19
P B 0 / X C K / TP0 D 5 / O C 1 A
15 2 2 20
P B 1 /T 1 P D 6 / IC P
14 3 3 21
P B 2 / I N T 2 / A PI ND 07 / O C 2
13 4 4
P B 3 / O C 0 / A IN 1
12 5 5
11 6 6
P
P
B 4 /S S
B 5 /M O S I
?
10 7 7 30
P B 6 /M IS O A V C C
9 8 8 32
P B 7 /S C K AREF
R 19
D IP S W _ 8 ATM E G A 16 330
R 1 1R 1 2R 1 3R 1 4R 1 5R 1 6
GND 5 .6 k 5 .6 k 5 .6 k 5 .6 k 5 .6 k 5 .6 k

CARRY
LED

GND
Pantalla del software de grabación lista:

4.- Resultados:

Nuestro circuito tuvo un funcionamiento correcto. El diseño de nuestro programa y


nuestro circuito tiene como entrada de datos en el microcontrolador: Todos los pines de
los puertos A y B, para ingresar los dos números de 8 bits que serán sumados o
restados; el pin 7 del puerto C, para seleccionar la operación, de suma si el pin esta en 0
o resta si está en 1. Y tiene como salidas del microcontrolador los pines del 0 al 6 del
puertos C y todos los pines del puerto D, donde los pines 0 – 6 del puerto C son los que
se conectan al display que muestra la cifra menos significativa del resultado, los pines
0 – 6 del puerto D se conectan al display que muestra la cifra más significativa del
resultado y el pin 7 del puerto D nos muestra el carry del resultado y también nos indica
si el número es negativo, es decir, esta en complemento de dos.
El circuito realizó la suma o resta de dos números de 8 bits en binario, es decir de dos
números hexadecimales y nos muestra el resultado en hexadecimal en los dos displays
de 7 segmentos, pudiendo obtener para la suma números del 00H al 1FEH, donde el 1
de los resultados mayores a FFH nos lo indica el led de carry.
Al realizar la resta de los dos números se podrían obtener resultados de FFH hasta
–FFH, donde los números negativos son mostrados en complemento de 2, es decir que
el –FFh será mostrado como 01H y el bit de carry nos indicara que el número es
negativo, es decir que esta en complemento de 2.
Todo lo explicado se comprobó en la práctica obteniendo los resultados esperados de la
programación y simulación.
5.- Conclusiones y Recomendaciones

- Se programó, simuló e implementó en hardware un circuito que nos permitió sumar o


restar 2 números de 8 bits utilizando el microcontrolador ATMEL MEGA 16.

- Nos Familiarizamos con el microcontrolador Atmega16 ya como hardware, teniendo


nuestras primeras nociones del encapsulado, su distribución de pines y el manejo del
chip como tal, ya para la implementación en hardware del circuito simulado.

- Debemos de tener en cuenta que en la simulación no se requiere poner un cristal,


capacitores, ni una fuente de polarización para el microcontrolador, pero en la
implementación ya real en hardware se debe tomar muy en cuenta todo esto ya que sin
un oscilador programado ni una fuente de polarización el microcontrolador simplemente
no funcionará.

- Es muy importante conocer la forma correcta de programar o grabar el


microcontrolador con el software y hardware apropiado, ya que por ejemplo si no se
conecta de forma correcta el micro al quemador no se grabará el micro, o si en el
software de grabación, progisp, se programan erróneamente los bits fusibles no
funcionará bien el micro.

- Hay que tener mucho cuidado al momento de grabar el microcontrolador con los bits
fusibles y las opciones de grabación, ya que con estas opciones se programa el oscilador
a utilizarse, si se programará la memoria flash o la EEPROM, y si se le bloqueará al
microcontrolador. Esta ultima opción hay que verificarla cuidadosamente, ya que si se
bloquea el micro, nos quedará inhabilitado para una nueva grabación.

- Con ciertos programadores es posible programar al microcontrolador sin necesidad


extraerlo de su ubicación, simplemente conectando los pines de salida que indica el
programador con los respectivos pines del micro, pero teniendo muy en cuenta que el
programador ya cuenta con su propia alimentación, así que se debe conectar cualquier
otra fuente de alimentación del circuito en el que se encuentra el integrado.

-Se recomienda traer armados los circuitos, para evitar de esta manera una perdida de
tiempo, simular en algún software los circuitos o en lo posible tratar de probar dichos
circuitos antes de entrar al laboratorio.

- Se recomienda tener un conocimiento claro de lo realizado en las prácticas anteriores,


ya que todo lo aprendido en estas prácticas se aplicó en esta, por lo que sin un claro
conocimiento de lo practicado antes no se podría realizar esta práctica a cabalidad.

- Se recomienda también saber muy bien el funcionamiento del software y hardware de


grabación y programación del microcontrolador, para poder realizar un correcto grabado
de la memoria de programa del microcontrolador y que no tenga problemas su
funcionamiento.

Bibliografía
TOCCI, Ronald; “Sistemas Digitales, Principios y Aplicaciones”, Prentice Hall,
Sistemas Digitales, Ing. Carlos Novillo
http://www.pucp.edu.pe/congreso/cibim8/pdf/18/18-06.pdf

S-ar putea să vă placă și