PIC18F4620 & XC8: Contador con display de 7 segmentos cátodo común

Siguiendo con los ejemplos básicos con el compilador XC8, toca el turno de hacer un pequeño contador, para este ejemplo usaremos el modulo de display de 7 segmentos de cátodo común junto al PIC Trainer v1.0, la sentencia que realiza es un conteo de uno en uno de forma ascendente y luego descendente.

Circuito:
El circuito es muy sencillo, los datos del display (A,B,C,D,E,F y G) están conectados al PORTD del MCU y los transistores en el PORTB.

Código:
El código que he usado es sencillo, definimos una tabla con los valores para formar los números del display y en main usos los for para hacer el conteo (OJO: El código esta pensado para usar solo un display yo he activado los 4 transistores del modulo para demostración, tener cuidado ya que activar los 4 le demanda mas corriente a las salidas del MCU), sin mas el código es el siguiente.
/*******************************************************************************
*
* Contador con display de 7 segmentos catodo común
*
*******************************************************************************
* FileName: main.c
* Processor: PIC18F4620
* Complier: XC8 v1.42 & MPLAB X IDE v5.00
* Author: Pedro Sánchez (MrChunckuee)
* Blog: http://mrchunckuee.blogspot.com/
* Email: mrchunckuee.psr@gmail.com
* Description: Mostramos numeros en forma ascecenden y descendente en el
* modulo de display de 7 segmentos, aproximadamente casa 0.7
* segundos es el incremento.
*******************************************************************************
* Rev. Date Comment
* v0.0.0 09/01/2020 - Creación del ejemplo
******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <xc.h>
#include <stdbool.h>
#include "word_config.h" //Only here
#define _XTAL_FREQ 16000000
/*********** P O R T D E F I N I T I O N S **********************************/
#define ctrlUnidadTransistor LATBbits.LATB0
#define ctrlDecenaTransistor LATBbits.LATB1
#define ctrlCentenaTransistor LATBbits.LATB2
#define ctrlMillarTransistor LATBbits.LATB3
/************** V A R I A B L E S *********************************************/
unsigned char i;
// Definimos constantes para el display de catodo comun
const unsigned char Display7Seg [10]={0x3F , 0x06 , 0x5B , 0x4F , 0x66 ,0x6D , 0x7D , 0x07 , 0x7F , 0x6F } ;
/************** P R O T O T Y P E S *******************************************/
void MCU_Init(void);
void main(void) {
MCU_Init();
while(1){
for(i=0; i<=9; i++){
LATD = Display7Seg [i];
__delay_ms(700); // 0.7 second delay
}
for(i=8; i>0; i--){
LATD = Display7Seg [i];
__delay_ms(700); // 0.7 second delay
}
}
}
void MCU_Init(void){
//Configura oscilador interno a 4MHz
OSCCONbits.IRCF=0b110;
OSCTUNEbits.PLLEN = 1; //PLL enable Fosc = 16MHz
ADCON1=0xFF; //Entradas digitales
//Limpiamos puertos
PORTA=0x00;
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
//Todos los puertos como salidas
TRISA=0x00;
TRISB=0x00;
TRISC=0x00;
TRISD=0x00;
//Encendemos todos los displays
ctrlUnidadTransistor = 1;
ctrlDecenaTransistor = 1;
ctrlCentenaTransistor = 1;
ctrlMillarTransistor = 1;
}
Vídeo:
Aquí un pequeño vídeo del circuito en funcionamiento:


Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.


Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.


Bibliografia:

Publicar un comentario

0 Comentarios