Proyecto de Microcontroladores

7
OBJETIVO Realizar un contador de O a 99 con un doble display de 7 segmentos de cátodo común. La cuenta debe ser continua y de O a 9 el digito de las decenas debe estar apagado. Componentes: PIC16F84A, RX8 y 7SEG-MPX2-CA. Los terminales de los dos displays son comunes por lo que el dato es común; para que aparezca el digito sólo en las unidades, o sólo en las decenas, se debe apagar el otro display mediante el terminal de cátodo. Es decir, si se desea visualizar las unidades se pasa el código "10" aJ display y si son las decenas se pasa el "01" (con un 1 el display está apagado y con un O está encendido). La alternancia entre los dos cátodos debe ser tan rápida que el ojo no se dé cuenta del parpadeo. En el caso que las decenas sean cero, su display se apagará. CONST DlSPLAY[l OJ = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f) permite visualizar de 0 a 9 mediante la combinación de dígitos típica de los displays de 7 segmentos (figura 9). Por ejemplo, en el 0 se encienden a, b, c, d, e y f, 10 que significa 111111, Ox3F en hexadecimal. DIAGRAMA

description

Se realizo un contador de 0-99 con un Switch de inicio y uno de reset

Transcript of Proyecto de Microcontroladores

Page 1: Proyecto de Microcontroladores

OBJETIVO

Realizar un contador de O a 99 con un doble display de 7 segmentos de cátodo común. La cuenta debe ser continua y de O a 9 el digito de las decenas debe estar apagado. Componentes: PIC16F84A, RX8 y 7SEG-MPX2-CA.

Los terminales de los dos displays son comunes por lo que el dato es común; para que aparezca el digito sólo en las unidades, o sólo en las decenas, se debe apagar el otro display mediante el terminal de cátodo. Es decir, si se desea visualizar las unidades se pasa el código "10" aJ display y si son las decenas se pasa el "01" (con un 1 el display está apagado y con un O está encendido). La alternancia entre los dos cátodos debe ser tan rápida que el ojo no se dé cuenta del parpadeo. En el caso que las decenas sean cero, su display se apagará.

CONST DlSPLAY[l OJ = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f) permite visualizar de 0 a 9 mediante la combinación de dígitos típica de los displays de 7 segmentos (figura 9). Por ejemplo, en el 0 se encienden a, b, c, d, e y f, 10 que significa 111111, Ox3F en hexadecimal.

DIAGRAMA

Page 2: Proyecto de Microcontroladores

CÓDIGO EN CCS

#include <16F84A.h>

#USE DELAY( CLOCK=4M)

#FUSES XT,NOWDT,noprotect,noput

#USE fast_IO (B)

#USE fast_IO (A)

int CONST DISPLAY[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

main(){

int ud=0,dec=0,i;

SET_TRIS_B(0x00);

SET_TRIS_A(0x00);

SET_TRIS_A(0x01100);

OUTPUT_B(0);

for( ;; ) {

for (dec=0;dec<10;dec++){

for (ud=0;ud<10;ud++){

for (i=0;i<1;i++){

if(input(PIN_A2) ==1){

ud=0;

dec=0;

i=0;

}

OUTPUT_A(0x02);

OUTPUT_B(DISPLAY[ud]);

delay_ms(13);

if (dec==0) OUTPUT_a(0x03);

else output_a(0x01);

OUTPUT_B(DISPLAY[dec]);

delay_ms(13);

}

}

}

}

}

Page 3: Proyecto de Microcontroladores

Compilación en ccs

SIMULACION EN PROTEUS

Page 4: Proyecto de Microcontroladores

NOTA: Para que el contador comience a funcionar es necesario abrir es Switch de inicio.

Page 5: Proyecto de Microcontroladores

El contador se reinicia después de contar hasta 99 o presionando el pulsador de Reset.

El conteo inicia nuevamente después de soltar el pulsador

Programa cargado al Pic 16F84A

CONCLUSIONES

Page 6: Proyecto de Microcontroladores

Despues de la compilación en ccs y la construcción en proteus para hacer la simulación correspondiente, el funcionamiento no fue el adecuado con las instrucciones contenidas en el libro por lo que se tuvo que complementar el proyecto con información de la red, observando dos detalles que interrumpían el buen funcionamiento del circuito. El primero se encontraba en la descripción de los números en el sistema hexadecimal y el segundo error en los ciclos for ya que requería uno más del que contenía el ejemplo del libro.

Se agregó también un pulsador para reiniciar el conteo y un Switch para inicio y stop.