Hace tiempo que no realizaba algo de XC8, la verdad esta propuesta fue realizado por el administrador y colega Julio Aguilar hace tiempo, como parte de una dinámica que se estaba realizando en el grupo de Electónica&Robótica, la dinámica era para ver los estilos de programación y sintaxis de diferentes lenguajes (ya que era al gusto el lenguaje y compilador) y aprender de ello, desafortunadamente la dinámica se suspendió por falta de interés de los usuarios, muy pocos participaron, pero bueno eso es otro tema.
Circuito:
La idea era mostrar el efecto de luces del auto fantástico utilizando un potenciometro para variar la velocidad del encendido de los LEDs (En esta entrada la he omitido y deje ese valor constante, posteriormente en otra entrada hablaremos del ADC y se mostrara efecto en el mismo circuito), también se usaría un PIC12F675 y un registro de desplazamiento 74HC595, la propuesta fue para mostrar el efecto en 8 LEDs pero al usar el registro de desplazamiento es fácil ampliarlo a mas, claro esta con su debida modificación en el firmware. Bueno con los datos dados el circuito propuesto para esta variante es el siguiente:
Circuito:
La idea era mostrar el efecto de luces del auto fantástico utilizando un potenciometro para variar la velocidad del encendido de los LEDs (En esta entrada la he omitido y deje ese valor constante, posteriormente en otra entrada hablaremos del ADC y se mostrara efecto en el mismo circuito), también se usaría un PIC12F675 y un registro de desplazamiento 74HC595, la propuesta fue para mostrar el efecto en 8 LEDs pero al usar el registro de desplazamiento es fácil ampliarlo a mas, claro esta con su debida modificación en el firmware. Bueno con los datos dados el circuito propuesto para esta variante es el siguiente:
Código:
El firmware propuesto es el siguiente, no veo necesario dar muchas explicaciones, ya que esta comentado en las lineas mas importantes:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************* | |
* | |
* LEDs con efecto del auto fantastico | |
* | |
******************************************************************************* | |
* FileName: main.c | |
* Processor: PIC12F675 | |
* Complier: XC8 v1.30 | |
* Author: Pedro Sánchez (MrChunckuee) | |
* Blog: http://mrchunckuee.blogspot.com/ | |
* Email: mrchunckuee.psr@gmail.com | |
* Description: Lueces con efecto del auto fantatico usando el resgistro | |
* de desplazamiento 74HC595. MCLR On, INT OSC = 4MHz | |
******************************************************************************* | |
* Rev. Date Comment | |
* v1.00 07/11/2015 Creación del firmware | |
******************************************************************************/ | |
#include <xc.h> | |
#include <pic12f675.h> | |
//Configuracion de FUSES del PIC12F675 | |
#pragma config FOSC=INTRCIO //Int OSC = 4MHz | |
#pragma config WDTE=OFF //Disables Watchdog Timer | |
#pragma config PWRTE=OFF //Disable Power-Up Timer | |
#pragma config MCLRE=ON //Enable Master Clear | |
#pragma config BOREN=OFF //Disable Blown-ou Detect | |
#pragma config CP=OFF //Disable Code Protection | |
#pragma config CPD=OFF //Disable Data Code Protection | |
#define _XTAL_FREQ 4000000 | |
#define pinSH_CLK GPIObits.GP1 | |
#define pinDATA GPIObits.GP2 | |
#define pinST_CLK GPIObits.GP4 | |
//Variable donde almacenamos los datos a mostar | |
unsigned char LEDs_DATA[7]={0b10000001, | |
0b01000010, | |
0b00100100, | |
0b00011000, | |
0b00100100, | |
0b01000010, | |
0b10000001}; | |
//Declaracion de funciones utilizadas | |
void MCU_Init(void); | |
void Send_Data(unsigned char DATA); | |
void Delay_ms(unsigned int t); | |
void main (void){ | |
unsigned char i; | |
MCU_Init(); //Inicializamos uC | |
while(1){ | |
for(i=0; i<6; i++){ | |
Send_Data(LEDs_DATA[i]); //Mostramos un dato de 8bits a la vez | |
Delay_ms(250); //Pausa entre envio de datos | |
} | |
} | |
} | |
void MCU_Init(void){ | |
ANSELbits.ANS = 0b0000; //Entradas y salidas digitales | |
CMCONbits.CM = 0b111; //Deactivamos comparadores | |
TRISIO = 0x00; //GP0 como salida, en realidad todo el puerto | |
//Limpiamos pines antes de usarlos | |
pinSH_CLK = 0; | |
pinDATA = 0; | |
pinST_CLK = 0; | |
} | |
//Esta funcion evia los datos al 74595 | |
void Send_Data(unsigned char DATA){ | |
unsigned char LOOP, FLAG; | |
for (LOOP=0; LOOP<8; LOOP++){ | |
FLAG=DATA&0x01; | |
if(FLAG==0) pinDATA=0; | |
else pinDATA=1; | |
pinSH_CLK = 1; | |
pinSH_CLK = 0; | |
DATA >>= 1; | |
} | |
pinST_CLK = 1; | |
pinST_CLK = 0; | |
} | |
//Delay en milisegundos t = tiempo del delay | |
void Delay_ms(unsigned int t){ | |
unsigned int j; | |
for(j=0;j<t;j++){ | |
__delay_ms(1); | |
} | |
} |
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.
2 Comentarios
Hijo mio, te falto indicar el logfile del compilador :)
ResponderEliminarYa sera en otra ocasión jejeje al compilar se darán cuenta de ello XD
Eliminar