Hola, en mi primera publicación en electrónica he preparado un proyecto muy simple basado en el dado electrónico de Ucontrol desarrollado por Ariel ; para verlo pulsa en el siguiente enlace.
Lo he simulado primero en Proteus para ver su funcionamiento, configurando previamente el compilador CCS que lleva integrado el programa. Sin más voy a mostraros capturas de pantalla del mismo.

El código fuente para este micro usando el oscilador interno a 4 MHz es el siguiente :
(aclaro que este código no es de mi autoría pero que funciona perfectamente)
********************************************************************************************************************************************************
/* Main.c file generated by New Project wizard
*
* Created: vi. may. 22 2015
* Processor: PIC16F628A
* Compiler: CCS for PIC
*/
#include <16F628A.h> //PIC utilizado
#fuses NOWDT,NOPROTECT,PUT //Configuramos los fuses
#use delay(internal=4M) //Oscilador a 4Mhz
#use fast_io(b) //Optimizamos E/S del PORTB
#BYTE PORTB = 0x06 //El PORTB está en 0x06
//Variables globales--------------------------------------------------
//La tabla dado tiene el valor del PORTB para cada numero posible.
int dado [6]={0x01,0x08,0x09,0x0A,0x0B,0x0E};
//Prototipo de funciones ---------------------------------------------
void lanzo_dado(void);
//------Programa principal--------------------------------------------
void main(void)
{
set_tris_a(0xFF); //configuro el PORTA completo como entrada.
set_tris_b(0x00); //configuro el PORTB completo como salida.
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
do{ //bucle principal
PORTB = 0; //Apago todos los leds
if(input(PIN_A0)){ //Si elpulsador esta en alto...
lanzo_dado(); //...lanzo el dado y muestro el resultado
}
}while(TRUE); //Repito el bucle.
}
//--------------------------------------------------------------------
//Esta funcion lanza el dado y muestra el resultado
//--------------------------------------------------------------------
void lanzo_dado(void) {
char i=0; //i contendrá el valor del dado en cada momento.
do{ //bucle principal
i++; //Sumo 1 a i
if (i == 7) { //Si pasa de 6...
i = 1; //...empiezo de 1 otra vez.
}
}while(input(PIN_A0)); //Repito el bucle hasta que se suelte el pulsador.
//Ahora, muestro el valor de "i" en los LEDs:
PORTB = dado [i];
delay_ms(2000); //Espero 5 segundos, y vuelvo al programa ppal.
}
********************************************************************************************************************************************************
Adjunto el proyecto en proteus en el siguiente enlace: proteus (no tiene contraseña)
Ahora paso a mostrar el proyecto realizado en Eagle Cad tanto esquemático como pcb:

Adjunto también el proyecto de Eagle en el siguiente enlace: dado en eagle
Aqui dejo foto y video de funcionamiento
Aqui dejo foto y video de funcionamiento
Para cualquier duda mi correo es luisdlahuerta@hotmail.com
Gracias por visitar mi blog
Saludos
que version de proteos utilizaste, y la linea en rojo osea la que se supone que va por arriba no veo donde la incluiste asi como las resistencias que van del pic a los leds gracias de antemano
ResponderEliminarHola Eduardo, la versión era la 8 u 8,1 creo. En cuanto a lo que comentas de la linea en rojo, interpreto que te refieres al puente que va en la cara superior de la pcb (donde van los componentes), se vé en la imagen con un hilo rígido plateado. Por otro lado, las resistencias no las ves porque están por la cara inferior (la azul) usé smd porque no tenía de las otras.
EliminarEspero haberte ayudado.
Un saludo
y gracias por comentar.
de cuanto eran las resistencias
ResponderEliminar