23
INFORME DE PRACTICAS Presentado por: ANGELICA MARIA GARZON CASTRO CODIGO: 1070598883 LEONARDO MONROY VELASQUEZ CODIGO: 79590671 CESAR AUGUSTO PACHECO BARRERA CODIGO: 11205422 WALTHER ANDRES GARZON CASTRO CODIGO: 1070588059 Presentado a: INGENIERO UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA “UNAD” ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA

MICROCONTROLAORES Codigos Fuentes Para La Practica

Embed Size (px)

DESCRIPTION

PRACTICAS

Citation preview

Page 1: MICROCONTROLAORES Codigos Fuentes Para La Practica

INFORME DE PRACTICAS

Presentado por:

ANGELICA MARIA GARZON CASTRO

CODIGO: 1070598883

LEONARDO MONROY VELASQUEZ

CODIGO: 79590671

CESAR AUGUSTO PACHECO BARRERA

CODIGO: 11205422

WALTHER ANDRES GARZON CASTRO

CODIGO: 1070588059

Presentado a:

INGENIERO

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA “UNAD”

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA

MICROPROCESADORES Y MICROCONTROLADORES

GIRARDOT 2014

Page 2: MICROCONTROLAORES Codigos Fuentes Para La Practica

PRACTICA No. 01 – Programación de microprocesadores y microcontroladores con lenguaje ensamblador.

Como primera práctica respecto a la primera unidad que trata los microprocesadores, se plantea el desarrollo de ejercicios previos antes de la desarrollar la solución al problema planteado, utilizando lenguaje ensamblador el cual es fácilmente accesible desde cualquier computador con sistema operativo Microsoft Windows XP, Vista, Seven u 8, en las versiones Profesionales mediante consola, con el DEBUG, con compiladores como MASM o TASM o con simuladores como SIMUPROG, el objetivo es integrar los conocimientos adquiridos en el curso de ALGORITMOS para hallar una solución a una situación práctica que permita adquirir habilidades en la programación de bajo nivel en lenguaje ensamblador. El laboratorio debe estar compuesto de al menos un Ejercicio que cumpla con la totalidad de parámetros solicitados:

Diseñar un programa que represente la solución matemática a un problema, por ejemplo, hallar el área, el volumen, o encontrar la solución a un sistema de ecuaciones lineales, puede optar por sistemas básicos 2x2, 3x3 o un programa que halle la solución a un sistema nxn. El programa debe presentar una interfaz agradable al usuario, con opciones para ingreso de variables, operaciones, resultados, salida del programa etc, de manera que se pueda visualizar correctamente el proceso, procedimiento y resultado.

Ejercicio 1.2.1: Encendido y apagado de un LED con intermitencia de aproximadamente 1 segundo.

Ejercicio 1.2.2: Encendido de un LED por acción sobre un pulsador.

Ejercicio 1.2.3: Implementación de al menos 5 secuencias diferentes sobre ocho (8) LEDs controladas en selección por dos pulsadores, uno para seleccionar la secuencia siguiente y otro para seleccionar la secuencia anterior.

Page 3: MICROCONTROLAORES Codigos Fuentes Para La Practica

Ejercicio 1 diagrama de flujo

Inicio

Configuraciones

Puerto B como salida

Enciende el led 8

Tiempo de respuesta

Apaga el led 8

Enciende el led 7

Tiempo de respuesta

Apaga el led 7

Enciende el led 6

Tiempo de respuesta

Apaga el led 6

Enciende el led 5

Tiempo de respuesta

Apaga el led 5

Enciende el led 4

Tiempo de respuesta

Apaga el led 4

Enciende el led 3

Tiempo de respuesta

Apaga el led 3

Page 4: MICROCONTROLAORES Codigos Fuentes Para La Practica

EJERCICIO 1 codigo fuente

#include <16f84A.h>

#fuses xt, nowdt, put

#use delay (clock=4000000)

#byte port_b=06

void main()

{

set_tris_b(0x00); // todo el puerto b de salida

port_b=0; // iniciamos en cero

do // ejecuta la acción

{

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 7); // enciende el led 8

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 7); // apaga el led 8

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 6); // enciende el led 7

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 6); // apaga el led 7

delay_ms (200); // tiempo de respuesta

Enciende el led 2

Tiempo de respuesta

Apaga el led 2

Enciende el led 1

Tiempo de respuesta

Apaga el led 1

Fin

Page 5: MICROCONTROLAORES Codigos Fuentes Para La Practica

bit_set (port_b, 5); // enciende el led 6

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 5); // apaga el led 6

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 4); // enciende el led 5

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 4); // apaga el led 5

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 3); // enciende el led 4

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 3); // apaga el led 4

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 2); // enciende el led 3

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 2); // apaga el led 3

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 1); // enciende el led 2

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 1); // apaga el led 2

delay_ms (200); // tiempo de respuesta

bit_set (port_b, 0); // enciende el led 1

delay_ms (200); // tiempo de respuesta

bit_clear (port_b, 0); // apaga el led 1

delay_ms (200); // tiempo de respuesta

}

While (true); // bucle infinito

}

Page 6: MICROCONTROLAORES Codigos Fuentes Para La Practica

PRACTICA No. 02 – Programación básica de Microcontroladores Microchip PIC, Texas Instruments MSP430 y Motorola Freescale.

Con el planteamiento teórico expuesto en la Unidad 1 “Microprocesadores”, Unidad 2 “Microcontroladores” y sus correspondientes capítulos y lecciones, se comienza el trabajo práctico partiendo de conceptos fundamentales de programación y de electrónica aplicada para implementar practicas esenciales que exploran las funciones básicas de configuración de pines como I/O (entrada / salida), utilización de macros, utilización de Timers, interrupciones y demás módulos internos al micro, implementando una programación lineal y semi-estructurada con manejo de bifurcaciones, ciclos y llamado a subrutinas, servicios a interrupción, generación de tablas, administración de la PILA y vectores de interrupción, en uno o en los tres dispositivos más representativos de las familias Microchip PIC con el PIC16F84, Texas Instruments con los MSP430G (14 pines o 20 pines) y Motorola Freescale con el JK1/JL1/JK3. El laboratorio debe estar compuesto de 2 Ejercicios básicos los cuales se encuentran parcialmente explicados y desarrollados en el módulo de curso:

Ejercicio 1.2.1: Control de una pantalla LCD de mínimo 2x16, se debe presentar un programa que despliegue los siguientes mensajes controlados por la acción de un pulsador.

Evento 1: Mensaje por defecto - Línea 1: mensaje “Microprocesadores y Microcontroladores” en desplazamiento a la izquierda o derecha, terminar con el mensaje “309696-Mp&Mc” centrado. Línea 2: mensaje “II semestre 2013” centrado.

Evento 2: Mensaje al oprimir el pulsador - Línea 1: mensaje “Integrantes:” centrado. Línea 2: mensaje con el primer nombre y primer apellido de los integrantes del grupo en desplazamiento a la izquierda o derecha.

Evento 3: Mensaje al oprimir el pulsador – Línea 1: mensaje “CEAD”. Línea 2: mensaje con el nombre del CEAD.

Ejercicio 1.2.2: Control de un teclado matricial mínimo 4x3 (comercialmente como teclado telefónico) o 4x4 y control de acceso por clave de seguridad de cuatro (4) dígitos, ver apartado de acciones que debe ejecutarse en la práctica, el teclado en el caso del 4x3 debe contener:

Los diez (10) dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Una tecla “#” (en teclados comerciales) se tomara como acción de ingreso de

clave para ser evaluada por el sistema microcontrolado. Una tecla “*” (en teclados comerciales) se tomara como acción de borrado de

clave y regreso a estado inicial, para recibir un nuevo intento de clave.

Page 7: MICROCONTROLAORES Codigos Fuentes Para La Practica

Los indicadores que deben tenerse son del tipo LED, solo uno de ellos debe encender a la vez y su función se describe como:

LED Amarillo o Azul, indica que el sistema y teclado está listo para recibir una nueva clave.

LED Verde, indica que el usuario a digitado una clave correcta. LED Rojo, indica que el usuario a digitado una clave incorrecta.

Las acciones que debe cumplir la práctica son:

Grabar una clave de 4 dígitos en la memoria no volátil del micro o EEPROM, para el ejercicio la clave debe ser semestre/año, por ejemplo para el segundo semestre de 2013 seria (0213).

La digitación correcta de la clave de debe incurrir en el encendido de un LED Verde, conectado a un pin del puerto.

La digitación incorrecta de la clave, debe incurrir en el encendido de un LED

Rojo conectado a un pin del puerto.

Un LED Amarillo o Azul debe indicar que el sistema está listo para recibir una nueva clave.

Los LED deben estar apagados al inicio del programa como condición inicial, en el momento de estar listo para recibir datos por el teclado debe encender el LED Amarillo o Azul.

Al oprimir la tecla “#” debe aceptar la clave digitada y realizar la comparación con la clave interna grabada y de ahí tomar una decisión con la acción correspondiente sobre el LED.

Al oprimir la tecla “*” debe permitir el ingreso de una nueva clave, apagando los LED Verde o LED Rojo y encendiendo nuevamente el LED Amarillo o Azul autorizando un nuevo intento de ingreso.

EJERCICIO 2 Diagrama de flujo

Page 8: MICROCONTROLAORES Codigos Fuentes Para La Practica

INICIO

Configuración

Puerto b como salida

Puerto A como entrada

Pin a0==0

Enciende led 1

Pin a0==0

Apaga led 1

Enciende led 2

Pin a0==0

Pin a0==0

Pin a0==0

Apaga led 2

Enciende led 3

Apaga led 3

Enciende led 4

Page 9: MICROCONTROLAORES Codigos Fuentes Para La Practica

EJERCICIO 2 codigo fuente

Pin a0==0

Pin a0==0

Pin a0==0

Apaga led 4

Enciende led 5

Apaga led 5

Enciende led 6

Apaga led 6

Enciende led 7

Apaga led 7

Enciende led 8

fin

Pin a0==0

Page 10: MICROCONTROLAORES Codigos Fuentes Para La Practica

#include <16f84A.h>

#fuses xt, nowdt, put

#use delay (clock=4000000)

int aux; // declaramos la variable para el contador

void main ()

{

aux =0; // hacemos la variable que comience en 0

SET_TRIS_A (0b11111111); // todos los puertos A como entrada

While (true) // la condición del pulsador

{

delay_ms (200); // tiempo de respuesta

if (input(pin_a0)==0) // si el pin a0 es igual a cero

{

aux = aux+1; // incrementamos el contador

}

If (aux==1) // si el números de pulsos es igual a 1

{

output_high (pin_b0); // enciende el led 1

}

If (aux==2) // si el números de pulsos es igual a 2

{

output_high (pin_b1); // enciende el led 2

output_low (pin_b0); // apaga el led 1

}

Page 11: MICROCONTROLAORES Codigos Fuentes Para La Practica

If (aux==3) // si el números de pulsos es igual a 3

{

output_high (pin_b2); // enciende el led 3

output_low (pin_b1); // apaga el led 2

}

If (aux==4) // si el números de pulsos es igual a 4

{

output_high (pin_b3); // enciende el led 4

output_low (pin_b2); // apaga el led 3

}

If (aux==5) // si el numeros de pulsos es igual a 5

{

output_high(pin_b4); // enciende el led 5

output_low(pin_b3); // apaga el led 4

}

if(aux==6) // si el numeros de pulsos es igual a 6

{

output_high(pin_b5); // enciende el led 6

output_low(pin_b4); // apaga el led 5

}

if(aux==7) // si el numeros de pulsos es igual a 7

{

output_high(pin_b6); // enciende el led 7

output_low(pin_b5); // apaga el led 6

}

if(aux==8) // si el numeros de pulsos es igual a 8

{

Page 12: MICROCONTROLAORES Codigos Fuentes Para La Practica

output_high(pin_b7); // enciende el led 8

output_low(pin_b6); // apaga el led 7

}

if(aux==9) // si el numeros de pulsos es igual a 9

{

aux=0; // reiniciamos la variable nuevamente a cero

output_low(pin_b7); // apaga el led 8

}

}

}

PRACTICA No. 3 – Programación avanzada de Microcontroladores Microchip PIC, Texas Instruments MSP430 y Motorola Freescale

Page 13: MICROCONTROLAORES Codigos Fuentes Para La Practica

Desde el Trabajo Colaborativo 1, el grupo colaborativo de estudiantes en campus debía haber planteado una propuesta como solución a una problemática, que cumpliera con parámetros prestablecidos de manejo de módulos internos, pines I/O y periféricos al micro. Propuesta que ha debido evolucionar y ser desarrollada por el grupo colaborativo de estudiantes en campus, que ya debe estar muy avanzada en el diseño de la solución de software y en proceso de terminación de la implementación de la solución de hardware. En este punto el grupo colaborativo de estudiantes en campus, debe ya tener integrada la solución de software y hardware y cada uno de sus integrantes debe mostrar al Tutor de práctica en cada Centro los avances de diseño, desarrollo e implementación, como desarrollo de la práctica tres del curso.

Con las prácticas realizadas en los laboratorios anteriores, el alumno está en capacidad de diseñar soluciones basadas en microprocesadores o microcontroladores y estudiar como interactúa el Microcontrolador de cualquier fabricante y familia con otros dispositivos.

La solución o aplicación debe evidenciar el manejo de dispositivos periféricos destinados a servir como interfaz humana para visualización o introducir estados, recibir señales de sensores y enviar señales a actuadores. Ejemplos como seguidores de línea, sistemas de alarma, controles de temperatura, entre otros, se encuentran en material bibliográfico o internet, por lo que se permiten al estudiante tomarlos como guía pero se exige que el diseño del algoritmo, desarrollo de la solución e implementación sean de autoría propia del estudiante y grupo colaborativo de estudiantes en campus virtual. El desarrollo de este ejercicio final debe involucrar aspectos como:

Manejo de periféricos externos al micro como puede ser teclados matriciales, display 7-segmentos, display LCD, display GLCD, memorias, ADC, transistores, relevos o indicadores, etc.

Manejo de módulos internos al micro como, manejo de interrupciones, Timers, conversores A/D, módulos PWM, módulos de comunicación UART/USART, USB, RJ45, entre otros.

Recursos a utilizar en la práctica (Equipos / instrumentos) Computador PC compatible con el sistema operativo Windows o que pueda instalarse los paquetes de software necesarios para realizar la práctica.

Los Equipos e instrumentos necesarios para la práctica y que son recomendables que el estudiante los tenga para su propio beneficio y desarrollo profesional son:

Equipos de cómputo con puerto paralelo o puerto compatible con el programador (serie o USB).

Page 14: MICROCONTROLAORES Codigos Fuentes Para La Practica

Fuente de poder regulada DC a 5 voltios. Programador Universal o el programador para PICs gama media (PICKit 2,

PICKit 3, u otro compatible) y/o Tarjeta de desarrollo LaunchPad MSP430 y/o Programador para Motorola Freescale HC08.

Los materiales necesarios para la práctica y que son recomendables que el estudiante los tenga para su propio beneficio y desarrollo profesional son:

Microcontroladores PIC16F84A y/o Microcontroladores MSP430Gxxxx y/o Motorola Freescale 68HC908JK3oJK1oJL1.

Protoboard, Multímetro. Resistencias, condensadores, cristal 4MHz, pulsadores, LEDs, teclado matricial

(3x4 o 4x4), display LCD, etc, según esquemas de circuito diseñado como solución por parte del grupo colaborativo de estudiantes en campus virtual.

Pinzas, pelacables, cable AWG22 (similar al de UTP) en varios colores.

Pin a0==0

Configuración

Puerto b como salida

Puerto A como entrada

Enciende led 1

Pin a0==0

Pin a1==0

INICIO

Apaga led 1

Enciende led 2

Pin a0==0

Page 15: MICROCONTROLAORES Codigos Fuentes Para La Practica

Pin a0==0

Pin a0==0

Pin a0==0

Pin a0==0

Apaga led 2

Enciende led 3

Apaga led 3

Enciende led 4

Apaga led 4

Enciende led 5

Apaga led 5

Enciende led 6

Pin a0==0

Apaga led 6

Enciende led 7

Page 16: MICROCONTROLAORES Codigos Fuentes Para La Practica

EJERCICIO 3

#include <16f84A.h>

#fuses xt,nowdt,put

#use delay (clock=4000000)

int aux, cont; // declaramos la variable para el contador

aux=0; // hacemos la variable que comience en 0

cont=0;

SET_TRIS_A(0b11111111); // todos los puertos A como entrada

while(true) // la condicion del pulsador

{

delay_ms(100); // tiempo de respuesta

if(input(pin_a0)==0) // si el pin a0 es igual a cero

{

aux=aux+1; // incrementamos el contador

}

if(aux==1) // si el numeros de pulsos es igual a 1

{

output_high(pin_b0); // enciende el led 1

}

Apaga led 7

Enciende led 8

fin

Page 17: MICROCONTROLAORES Codigos Fuentes Para La Practica

if(aux==2) // si el numeros de pulsos es igual a 2

{

output_high(pin_b1); // enciende el led 2

output_low(pin_b0); // apaga el led 1

}

if(aux==3) // si el numeros de pulsos es igual a 3

{

output_high(pin_b2); // enciende el led 3

output_low(pin_b1); // apaga el led 2

}

if(aux==4) // si el numeros de pulsos es igual a 4

{

output_high(pin_b3); // enciende el led 4

output_low(pin_b2); // apaga el led 3

}

if(aux==5) // si el numeros de pulsos es igual a 5

{

output_high(pin_b4); // enciende el led 5

output_low(pin_b3); // apaga el led 4

}

if(aux==6) // si el numeros de pulsos es igual a 6

{

output_high(pin_b5); // enciende el led 6

output_low(pin_b4); // apaga el led 5

}

if(aux==7) // si el numeros de pulsos es igual a 7

{

Page 18: MICROCONTROLAORES Codigos Fuentes Para La Practica

output_high(pin_b6); // enciende el led 7

output_low(pin_b5); // apaga el led 6

}

if(aux==8) // si el numeros de pulsos es igual a 8

{

output_high(pin_b7); // enciende el led 8

output_low(pin_b6); // apaga el led 7

}

if(aux==9) // si el numeros de pulsos es igual a 9

{

aux=0; // reiniciamos la variable nuevamente a cero

output_low(pin_b7); // apaga el led 8

}

}

if(input(pin_a1)==0) // si el pin a1 es igual a cero // si el RA1 es igual a cero

{

cont=cont+1; // incrementamos el contador

}

if(cont==1) // si el numeros de pulsos es igual a 1

{

output_high(pin_b0); // enciende el led 1

output_high(pin_b2); // enciende el led 3

output_high(pin_b4); // enciende el led 5

output_high(pin_b6); // enciende el led 7

}

if(cont==2) // si el numeros de pulsos es igual a 2

Page 19: MICROCONTROLAORES Codigos Fuentes Para La Practica

{

output_high(pin_b1); // enciende el led 2

output_high(pin_b3); // enciende el led 4

output_high(pin_b5); // enciende el led 6

output_high(pin_b7); // enciende el led 8

output_low(pin_b0); // apaga el led 1

output_low(pin_b2); // apaga el led 3

output_low(pin_b4); // apaga el led 5

output_low(pin_b6); // apaga el led 7

}

if(cont==3) // si el numeros de pulsos es igual a 3

{

output_high(pin_b0); // enciende el led 1

output_high(pin_b2); // enciende el led 3

output_high(pin_b4); // enciende el led 5

output_high(pin_b6); // enciende el led 7

output_low(pin_b1); // apaga el led 2

output_low(pin_b3); // apaga el led 4

output_low(pin_b5); // apaga el led 6

output_low(pin_b7); // apaga el led 8

}

if(cont==4) // si el numeros de pulsos es igual a 4

{

cont=0; // reiniciamos la variable nuevamente a cero

output_low(pin_b0); // apaga el led 1

output_low(pin_b2); // apaga el led 3

output_low(pin_b4); // apaga el led 5

Page 20: MICROCONTROLAORES Codigos Fuentes Para La Practica

output_low(pin_b6); // apaga el led 7

}

}

}