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

UNIVERSIDAD POLITCNICA DE TLAXCALA

Ingeniera Mecatrnica

Profesor: Fernando Salas Rodrguez

Materia: Microcontroladores

Prctica 4: Contadores con Display

Integrantes del equipo: Hctor Snchez Jimnez Adrin Corona Cuamatzi Cuatrimestre: 5 Grupo: D

INTRODUCCION En esta presente prctica mediante lenguaje de programacin para microcontroladores CCS C Compiler se realizan diferentes practicas, esto que ayudan al estudiante a entender mas el control de en est caso encender un led y apagarlo o tener un puerto entero encendido y para poder definir los puertos que mas te interesen en este caso es el puerto B. Ya que se controla utilizando funciones o tambin definiendo funciones. El lenguaje en C utiliza una gran parte en estas prcticas ya que se utiliza esta como base para la programacin de un microcontrolador en CCS C Compiler. Primeramente un microcontrolador se utiliza en circuitos electrnicos comerciales desde hace unos aos de forma masiva, debido a que permiten reducir el tamao y el precio de los equipos. Un ejemplo de stos son los telfonos mviles, las cmaras de video, la televisin digital, la transmisin por satlite y los hornos de microondas. Pero hasta hace poco tiempo, para el aficionado a la electrnica resultaba poco menos que imposible incluirlos en sus montajes por diversas razones: alto precio, complejidad de los montajes y, principalmente, por la escasez y el alto precio de las herramientas del software. El microcontrolador es un circuito integrado programable que contiene todos los componentes necesarios para controlar el funcionamiento de una tarea determinada, como el control de una lavadora, un teclado de ordenador, una impresora un sistema de alarma, etc. Para esto, el microcontrolador utiliza muy pocos componentes asociados. Un sistema con microcontrolador debe disponer de una memoria donde se almacena el programa que gobierna el funcionamiento del mismo que, una vez programado y configurado, solo sirve para realizar la tarea asignada. La utilizacin de un microcontrolador en un circuito reduce notablemente el tamao y numero de componentes. Ahora se usan los microcontroladores PIC (Peripheral Interface Controller) estos son una familia de microcontroladores que ha tenido gran aceptacin y desarrollo en los ltimos aos gracias a que sus buenas caractersticas, bajo precio, reducido consumo, pequeo tamao, gran calidad, fiabilidad y abundancia de informacin, lo convierten en un muy fcil, cmodo y rpido de utilizar. El PIC 18F4550 se utiliza en la tarjeta de adquisicin ya que est pertenece a los microcontroladores PIC18 de gama alta. Posee una arquitectura RISC (reduced instruction set computer) de 16 bits longitud de instrucciones y 8 bits de datos.

MARCO TEORICO Los display de 7 segmentos, son componentes que se utilizan para la representacin de nmeros en muchas aplicaciones electrnicas. Esto es parte de la electrnica bsica de cada uno, pero de todas maneras escribir un poco respecto a este tema, una de las aplicaciones mas populares de los LEDs es la de sealizacin.

Quizs la mas utilizada sea la de 7 LEDs colocados en forma de ocho tal y como se indica en la figura. Aunque externamente su forma difiere considerablemente de un diodo LED tpico, internamente estn constituidos por una serie de diodos LED con unas determinadas conexiones internas. En la figura se indica el esquema elctrico de las conexiones del interior de un indicador luminoso de 7 segmentos..................

Ctodo comn va conectado a tierra y nodo comn va a Vcc. Contiene siete LED rectangulares (a - g), en el que cada uno recibe el nombre de segmento porque forma parte del smbolo que esta mostrando. Con un indicador de siete segmentos se pueden formar los dgitos del 0 al 9, tambin las letras a, c, e y f y las letras minsculas b y d. Polarizando los diferentes diodos, se iluminaran los segmentos correspondientes. Cada segmento (y el punto) es un led como cualquier otro, debido a esto la corriente media que se debe aplicar es de 15 mA. Dependiendo de la lgica que estemos empleando debemos utilizar una resistencia por cada entrada y as no forzar el dispositivo:

Lgica TTL (5V): 220 ohmios Lgica CMOS (12V): 680 ohmios. Esta resistencia debe ser situada en cada patilla, haciendo de puente entre la seal lgica de excitacin y el Display.

CIRCUITO INTEGRADO 7447

El decodificador 7447 es un circuito lgico que acepta un conjunto de entradas que representan nmeros binarios y que activa solamente la salida que corresponde a dicho dato de entrada. En un decodificador, dependiendo de la combinacin en sus entradas se

determina qu nmero binario (combinacin) se presenta a la salida correspondiente a dicho nmero, mientras tanto todas las otras salidas permanecern inactivas Este decodificador sirve para mostrar salidas decimales a entradas binarias. Las entradas pueden estar dadas por cualquier dispositivo que tenga 4 salidas digitales como la computadora, un micro, o Simplemente utilizando switches para conmutar los unos y ceros.

ESQUEMA DEL DECODIFICADOR 7447

DESARROLLO En esta prctica se emplean sub-practicas que ayudan al estudiante a comprender mejor el funcionamiento de los puertos, existen cuatro puertos A, B, C, D de los cuales, el estudiante se puede ayudar. Primeramente para empezar a realizar las practicas se tiene que identificar los puertos que se quieren utilizar, despus empiezas a utilizar el lenguaje C en el Software CCS C Compiler para programar la tarjeta, utilizando funciones o definiendo registros y al final solo conectar los componentes como el display y el decodificador 7447 para que al final se conecten estos correspondientemente a como se manejo en el CCS C Compiler.

CONTADOR DE 0-9 ASC/DESC (PRACTICA 1,3) /*CONFIGURACION PIC*/ #include "18f4550.h" #use delay(clock=48000000) #build(reset=0x02000,interrupt=0x02008) #org 0x0000,0x1FFF {} //------------------------------------------------------------------------------void main(void) { // indica el inicio del programa for (;;) { output_B(0x3F); //0 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x06); //1 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x5B); //2 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x4F); //3 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x66); //4 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x6D); //5 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x7D); //6 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x07); //7 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x7F); //8 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x6F); //9 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x7F); //8 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x07); //7 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x7D); //6 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x6D); //5 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x66); //4 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x4F); //3 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x5B); //2 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x06); //1 delay_ms(1000); // RETRASO DE UN SEGUNDO output_B(0x3F); //0 delay_ms(1000); // RETRASO DE UN SEGUNDO }}

CONTADOR DE 0-9 ASC/DESC CON DECODIFICADOR (PRACTICA 2,4) /*CONFIGURACION PIC*/ #include "18f4550.h" #use delay(clock=48000000) #build(reset=0x02000,interrupt=0x02008) #org 0x0000,0x1FFF {} #byte trisb=0xf93 #byte portb=0xf81 //------------------------------------------------------------------------------void main(void) // indica el inicio del programa { set_tris_b(0x00); //carga el registro de direccin de datos de todo el puerto B set_tris_c(0x00); //carga el registro de direccin de datos de todo el puerto C portb=0; //el Puerto b es igual a 0 do { portb=0x0; //lee el pin 0 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x1; //lee el pin 1 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x2; //lee el pin 2 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x3; //lee el pin 3 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x4; //lee el pin 4 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x5; //lee el pin 5 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x6; //lee el pin 6 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x7; //lee el pin 7 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x8; //lee el pin 8 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x9; //lee el pin 9 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x9; //lee el pin 9 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x8; //lee el pin 8 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x7; //lee el pin 7 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x6; //lee el pin 6 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x5; //lee el pin 5 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x4; //lee el pin 4 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO portb=0x3; //lee el pin 3 del Puerto B delay_ms(500); // RETRASO DE MEDIO SEGUNDO

portb=0x2; delay_ms(500); portb=0x1; delay_ms(500); portb=0x0; delay_ms(500); } while(true);

//lee el pin 2 del Puerto B // RETRASO DE MEDIO SEGUNDO //lee el pin 1 del Puerto B // RETRASO DE MEDIO SEGUNDO //lee el pin 0 del Puerto B // RETRASO DE MEDIO SEGUNDO // ciclo infinito

Este programa fue elaborado con la utilizacin de registros ya que es mas fcil por que se manda un numero en hexadecimal a todo el puerto y esto se reflejada en forma binaria esto se hace desde el cero que se representa as 0x0 hasta el nueve que se representa as 0x9 y tambin llevan un retraso de medio segundo para que puedan ser visualizadas y que posteriormente se pase al siguiente numero, lo mismo se hizo para la forma descendente pero esta vez inician do desde el nueve 0x9 hasta llegar al cero 0x0.

En esta imagen se puede visualizar el contador conectado a la tarjeta de adquisicin de datos con el decodificador ci 7447 para que se pueda mostrar el numero en el diplay.

CONTADOR CON DISPLAY ASCENDENTE Y DESCENDENTE CON DECODIFICADOR CI7447 #include"18f4550.h" #use delay(clock=48000000) #build (reset=0x02000,interrupt=0x02008) #org 0x0000,0x1FFF {} void main(void) { set_tris_b(0x00); set_tris_a(0x00); do { output_a(0x0); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_a(0x1); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_a(0x3); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_a(0x4); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_a(0x5); delay_ms(500); output_a(0x6); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_a(0x7); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_a(0x8); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5);

output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_a(0x2); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0);

output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0);

delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); output_b(0x0); output_a(0x9); delay_ms(500); output_b(0x0); delay_ms(500); output_b(0x1); delay_ms(500); output_b(0x2); delay_ms(500); output_b(0x3); delay_ms(500); output_b(0x4); delay_ms(500); output_b(0x5); delay_ms(500); output_b(0x6); delay_ms(500); output_b(0x7); delay_ms(500); output_b(0x8); delay_ms(500); output_b(0x9); delay_ms(500); } while(true); }

Este programa trata bsicamente de manejo de registro en hexadecimal al puerto b empezando por el cero 0x0 hasta el 9 0x9, mediante el cual se genera una salida que representa un nmero binario pero en esta ocasin ponindolo en paralelo con otro para poder generar los nmeros del 0 al 99 siguiendo la misma estructura del primer contador solo que con un cdigo mas amplio, el cual para ser visualizado correctamente en el display es necesario la utilizacin de un decodificador que en este caso se utilizo el circuito integrado 7447 que nos simplifica el trabajo. Tambin los programas anteriores como el contador del 0 al 9 tienen la misma estructura pero con un nmero de cdigo mas corto.

Aqu podemos visualizar la conexin en nuestra tarjeta de adquisicin de datos al decodificado para pasar de un numero binario a un numero decimal, que este caso fue necesario la conexin de dos codificadores y dos diplays para generar los nmeros de 0 al 99 y viceversa.

CONCLUSION En conclusin tenemos que el lenguaje de programacin es algo complicado cuando se trata de especificar la salida de cada pin para poder formar un numero binario, lo mejor es como se hizo en esta practica que fue por registros mandando un numero en hexadecimal a todo el puerto para poder visualizarlo en binario en las salidas y posteriormente decodificarlo con el circuito integrado 7447 para que el numero pueda ser visualizado en los displays.

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