0 оценок0% нашли этот документ полезным (0 голосов)
84 просмотров13 страниц
Este documento describe un programa para controlar un microcontrolador PIC16F84 y mostrar números en un display de 7 segmentos. El objetivo es tener un primer contacto con la programación de microcontroladores usando lenguajes de alto nivel como C. Se explican conceptos como ensamblador, compilación y programación en C. El programa configura las entradas/salidas, muestra números ascendentes de 0 a 9 en el display cada 2 segundos y luego lo apaga.
Este documento describe un programa para controlar un microcontrolador PIC16F84 y mostrar números en un display de 7 segmentos. El objetivo es tener un primer contacto con la programación de microcontroladores usando lenguajes de alto nivel como C. Se explican conceptos como ensamblador, compilación y programación en C. El programa configura las entradas/salidas, muestra números ascendentes de 0 a 9 en el display cada 2 segundos y luego lo apaga.
Este documento describe un programa para controlar un microcontrolador PIC16F84 y mostrar números en un display de 7 segmentos. El objetivo es tener un primer contacto con la programación de microcontroladores usando lenguajes de alto nivel como C. Se explican conceptos como ensamblador, compilación y programación en C. El programa configura las entradas/salidas, muestra números ascendentes de 0 a 9 en el display cada 2 segundos y luego lo apaga.
Escuela Superior de Ingeniera Mecnica y Elctrica U.P. Ticomn
Ingeniera Aeronutica Sistemas Electrnicos Digitales Profesor Raymundo Hernndez Brcenas
Prctica 9 Programacin de Microcontroladores Primer Contacto y Display de 7 Segmentos Daniel Baltazar Ordez Carlos Carbajal Gutirrez Jorge Haffif Mendoza Blanco Rodrigo Varona Garca Jess Alberto Miranda Garca 6AV2 Fecha de elaboracin: Lunes 7 de Abril 2014 Fecha de entrega:
Objetivo Tener un primer contacto con la programacin de microprocesadores, su compilacin y manejo. A su vez, se editarn programas previos y se conocer el display de 7 segmentos y lo que su programacin implica. Introduccin El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el cdigo ejecutable y est compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el cdigo binario est compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra se interpreta por la CPU como una instruccin a ser ejecutada durante el funcionamiento del microcontrolador. Todas las instrucciones que el microcontrolador puede reconocer y ejecutar se les denominan colectivamente Conjunto de instrucciones. Como es ms fcil trabajar con el sistema de numeracin hexadecimal, el cdigo ejecutable se representa con frecuencia como una serie de los nmeros hexadecimales denominada cdigo Hex. En los microcontroladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes. Como el proceso de escribir un cdigo ejecutable era considerablemente arduo, en consecuencia fue creado el primer lenguaje de programacin denominado ensamblador (ASM). Siguiendo la sintaxis bsica del ensamblador, era ms fcil escribir y comprender el cdigo. Las instrucciones en ensamblador consisten en las abreviaturas con significado y a cada instruccin corresponde una localidad de memoria. Un programa denominado ensamblador compila (traduce) las instrucciones del lenguaje ensamblador a cdigo mquina (cdigo binario). Este programa compila instruccin a instruccin sin optimizacin. Como permite controlar en detalle todos los procesos puestos en marcha dentro del chip, este lenguaje de programacin todava sigue siendo popular. A pesar de todos los lados buenos, el lenguaje ensamblador tiene algunas desventajas:
Incluso una sola operacin en el programa escrito en ensamblador consiste en muchas instrucciones, hacindolo muy largo y difcil de manejar. Cada tipo de microcontrolador tiene su propio conjunto de instrucciones que un programador tiene que conocer para escribir un programa. Un programador tiene que conocer el hardware del microcontrolador para escribir un programa Programa escrito en C (El mismo programa compilado al cdigo ensamblador):
Los lenguajes de programacin de alto nivel (Basic, Pascal, C etc.) fueron creados con el propsito de superar las desventajas del ensamblador. En lenguajes de programacin de alto nivel varias instrucciones en ensamblador se sustituyen por una sentencia. El programador ya no tiene que conocer el conjunto de instrucciones o caractersticas del hardware del
microcontrolador utilizado. Ya no es posible conocer exactamente cmo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el programa una secuencia escrita en ensamblador. Si alguna vez ha escrito un programa para un microcontrolador PIC en lenguaje ensamblador, probablemente sepa que la arquitectura RISC carece de algunas instrucciones. Por ejemplo, no hay instruccin apropiada para multiplicar dos nmeros. Por supuesto, para cada problema hay una solucin y ste no es una excepcin gracias a la aritmtica que permite realizar las operaciones complejas al descomponerlas en un gran nmero operaciones ms simples. En este caso, la multiplicacin se puede sustituir con facilidad por adicin sucesiva (a x b = a + a + a + ... + a). Ya estamos en el comienzo de una historia muy larga... No hay que preocuparse al utilizar uno de estos lenguajes de programacin de alto nivel como es C, porque el compilador encontrar automticamente la solucin a ste problema y otros similares. Para multiplicar los nmeros a y b, basta con escribir a*b. Lenguaje C El lenguaje C dispone de todas las ventajas de un lenguaje de programacin de alto nivel (anteriormente descritas) y le permite realizar algunas operaciones tanto sobre los bytes como sobre los bits (operaciones lgicas, desplazamiento etc.). Las caractersticas de C pueden ser muy tiles al programar los microcontroladores. Adems, C est estandarizado (el estndar ANSI), es muy portable, as que el mismo cdigo se puede utilizar muchas veces en diferentes proyectos. Lo que lo hace accesible para cualquiera que conozca este lenguaje sin reparar en el propsito de uso del microcontrolador. C es un lenguaje compilado, lo que significa que los archivos fuentes que contienen el cdigo C se traducen a lenguaje mquina por el compilador. Todas estas caractersticas hicieron al C uno de los lenguajes de programacin ms populares. Materiales y Equipo PCW (Compilador) ISIS de Proteus 8 Professional
Desarrollo Ejercicio 1 Analizar el cdigo fuente. Compilar el cdigo fuente. Probar el archivo con extensin .hex. Escribir el cdigo fuente de un programa escrito en lenguaje C, el cual gobierne un micro controlador (PIC16F84). El programa debe configurar las lneas de la PUERTAA como entradas y las lneas de la PUERTAB como salidas, dicho programa debe enviar el siguiente tren de informacin hacia la PUERTAB del PIC: 1, 2, 4 ,8, 16,32,64 y 128. Esto en intervalos de 3 milisegundos.
#include <16F84.H> /*LIBRERIA DEL PIC A UTILIZAR*/ #fuses XT /*TIPO DE OSCILADOR*/ #use delay( clock = 4000000 ) /* Especifica reloj de 4 MHz */
void main(void) {
int32 x = 0; /*DECLARACION DE VARIABLE*/ int32 ciclos = 255, i =0; /* Declaracion de Valriables */ int *p_puertaa= 0x05; /* Puntero a PuertaA */ int *p_puertab= 0x06; /* Puntero a PuertaB */
SET_TRIS_A (0xff); /* 0xff --> TRISATODAS LAS PUERTAS A SON ENTRADAS*/ SET_TRIS_B (0x00); /* 0x00 --> TRISB TODAS LAS PUERTAS B SON SALIDAS */
/*inicio */
for (i =1; i <= ciclos; i=i*2)
{
x = i; /*INICIA CUENTA*/ *p_puertab = x; delay_MS(30);
}
x = 0; *p_puertab = x; delay_MS(2000);
puerta:
x = *p_puertaa; *p_puertab = x;
goto puerta;
}
Ejercicio 2 Analizar el cdigo fuente. Compilar el cdigo fuente. Probar el archivo con extensin .hex. Editar el cdigo fuente del programa llamado DOS.c escrito en lenguaje C, el cual gobierne un micro controlador(PIC16F84). Este programa configurar las lneas de la PUERTAA como entradas y las lneas de la PUERTAB como salidas. El programa debe activar un display de 7 segmentos de ctodo comn, es decir la terminal comn. Debe visualizarse un conteo ascendente en el display de 0 a 9 en intervalos de 2 segundos. Una vez concluido el conteo debe detenerse y apagarse el display.
#include <16F84.H> /*LIBRERIA DEL PIC A UTILIZAR*/ #fuses XT /*TIPO DE OSCILADOR*/ #use delay( clock = 4000000 ) /* Especifica reloj de 4 MHz */
void main(void) {
int32 x = 0; /*DECLARACION DE VARIABLE ENTERA DE 32 BITS*/
int *p_puertaa= 0x05; /* Puntero a PuertaA */ int *p_puertab= 0x06; /* Puntero a PuertaB */
SET_TRIS_A (0xff); /* 0xff --> TRISA PUERTAS A COMO ENTRADA*/ SET_TRIS_B (0x00); /* 0x00 --> TRISB PUERTAS B COMO SALIDA*/
DYSPLAY:
x = 63; /* mandamos un 0 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 6; /* mandamos un 1 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 91; /* mandamos un 2 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 79; /* mandamos un 3 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 102; /* mandamos un 4 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 109; /* mandamos un 5 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 125; /* mandamos un 6 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 7; /* mandamos un 7 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 127; /* mandamos un 8 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
x = 103; /* mandamos un 9 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
goto DYSPLAY;;
}
Ejercicio 3 Editar el programa del ejercicio anterior para permitir que el usuario accione los cinco interruptores conectados a la PUERTAA del micro controlador (el usuario puede accionar uno o varios interruptores a la vez), dependiendo del estado del o los interruptores accionados (abierto o cerrado), en el display de debe visualizarse el nmero correspondiente.
#include <16F84.H> /*LIBRERIA DEL PIC A UTILIZAR*/ #fuses XT /*TIPO DE OSCILADOR*/ #use delay( clock = 4000000 ) /* Especifica reloj de 4 MHz */
void main(void) { int32 x = 0; /*DECLARACION DE VARIABLE ENTERA DE 32 BITS*/ int32 caso=0; int *p_puertaa= 0x05; /* Puntero a PuertaA */ int *p_puertab= 0x06; /* Puntero a PuertaB */
SET_TRIS_A (0xff); /* 0xff --> TRISA PUERTAS A COMO ENTRADA*/ SET_TRIS_B (0x00); /* 0x00 --> TRISB PUERTAS B COMO SALIDA*/
DYSPLAY: caso=*p_puertaa; switch (caso) { case 0: x = 63; /* mandamos un 0 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 1: x = 6; /* mandamos un 1 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 2: x = 91; /* mandamos un 2 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 3: x = 79; /* mandamos un 3 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 4: x = 102; /* mandamos un 4 al display de 7 segmentos*/
*p_puertab = x; delay_MS(2000); break;
case 5: x = 109; /* mandamos un 5 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 6: x = 125; /* mandamos un 6 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 7: x = 7; /* mandamos un 7 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 8: x = 127; /* mandamos un 8 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
case 9: x = 103; /* mandamos un 9 al display de 7 segmentos*/ *p_puertab = x; delay_MS(2000); break;
Observaciones Para usar un display de 7 segmentos resulta muy conveniente tener una tabla donde se pueda obtener el numero binario que se necesita pata encender el display con el carcter deseado. Conclusiones Saber programar ayuda al ser humano en todos los aspectos de su vida. Nos aporta aprendizaje y capacidades las cuales nos permite llevar nuestro pensamiento a otro nivel y nos ayuda a desarrollar ideas para diferentes ocasiones que se presentan en la vida cotidiana. En todos los campos de la produccin y la enseanza es necesario desarrollar en los estudiantes la capacidad de poder aplicar la programacin para el desarrollo de todas las actividades humanas. Por esto y por el rpido incremento en la aplicacin de la electrnica digital en la aviacin es de suma importancia el aprender a programar tanto dentro de un mismo ordenador como para un microcontrolador. Referencias http://www.mikroe.com/chapters/view/80/capitulo-2-programacion-de-los- microcontroladores/