TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Todo en microcontroladores PIC
(Moderadores:
MGLSOFT
,
pocher
,
Suky
) »
Contador Ascendente y Descendente con PIC18f2550
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: Contador Ascendente y Descendente con PIC18f2550 (Leído 3496 veces)
0 Usuarios y 1 Visitante están viendo este tema.
daniermac
PIC10
Mensajes: 3
Contador Ascendente y Descendente con PIC18f2550
«
en:
26 de Julio de 2017, 22:40:08 »
consulta, tengo que realizar un TP con las siguientes características:
- realizar botón que funcione como un contador ascendente para la unidad y la decena,
- con un botón de selección entre la unidad y la decena, un botón de play y pausa, de modo decreciente, que al llegar a 0, suene el buzzer por 500ms y accione un relé, el cual
- enciende un led, luego de los 500ms se apague.
contador.jpg
(184.29 kB, 1360x768 - visto 1427 veces)
acá el código
#include <18f2550.h>
#use Delay (clock=4M)
#fuses XT
#fuses cpudiv1
#byte TRISA = 0xf92
#byte TRISB = 0xf93
#byte TRISC = 0xf94
#byte PORTA = 0xf80
#byte PORTB = 0xf81
#byte PORTC = 0xf82
#bit Ps_Incremento = 0xf80.0
#bit Ps_Inicio = 0xf80.1
#bit Ps_Seleccion = 0xf80.2
#bit TR_Display_1 = 0xf82.0
#bit TR_Display_2 = 0xf82.1
#bit TR_Display_3 = 0xf82.2
#bit TR_Display_4 = 0xf82.4
#bit TR_Rele_5 = 0xf82.5
#bit TR_Buzzer_6 = 0xf82.6
BYTE CONST Display_Tabla[10] =
{
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10011000}; //9 tabla dada vuelta
signed int Unidad = 0, Decena = 0;
int flag = 0; // bandera de Inicio-Pausa
void Escribir_displays()
{
int t = 100;// tiempo exagerado
IF (Decena != 0)
{
PORTB = Display_Tabla[Unidad];
TR_Display_1 = 0;
Delay_ms (t);
TR_Display_1 = 1;
PORTB = Display_Tabla[Decena];
TR_Display_2 = 0;
Delay_ms (t);
TR_Display_2 = 1;
}
ELSE
{
PORTB = Display_Tabla[Unidad];
TR_Display_1 = 0;
Delay_ms (t);
TR_Display_1 = 1;
}
}
void Play()
{
{
WHILE (Ps_Inicio == 0); // Esperamos a que se suelte el pulsador
{
delay_ms (50); // Generamos un retardo de 50mSeg para evitar el rebote
}
flag = !flag;
while (flag == 1)
{
delay_ms (250);
Escribir_displays ();
TR_Rele_5 = 1;// el relé se cierra
unidad = Unidad -1;
if (Unidad < 0)
{
Decena = Decena - 1;
Unidad = 9;
}
if (Ps_Inicio == 0)
{
delay_ms (50);
flag = !flag;
TR_Rele_5 = 0; // relay se abre
}
if (Decena == 0 && Unidad == 0)
{
flag = !flag;
TR_Rele_5 = 0; // relay abierto
TR_Buzzer_6 = 1;
delay_ms (500);
TR_Buzzer_6 = 0;
}
}
}
}
void main()
{
TRISA = 255;
TRISB = 0;
TRISC = 0;
PORTB = 255;
PORTC = 0b00010111;
WHILE (true)
{
IF (Ps_Incremento == 0)
{
Unidad = Unidad + 1;
IF (Unidad == 10)
{
Unidad = 0;
}
WHILE (Ps_Incremento == 0); // Esperamos a que suelte el pulsador
{
delay_ms (50); // Generamos un retardo de 50mSeg para evitar el rebote
}
TR_Buzzer_6 = 1;
delay_ms (300);
TR_Buzzer_6 = 0;
}
if (Ps_Seleccion == 0)
{
Decena = Unidad;
Unidad = 0;
WHILE (Ps_Seleccion == 0); // Esperamos a que suelte el pulsador
{
delay_ms (50); // Generamos un retardo de 50mSeg para evitar el rebote
}
TR_Buzzer_6 = 1;
delay_ms (20); // Doble bip
TR_Buzzer_6 = 0;
delay_ms (10);
TR_Buzzer_6 = 1;
delay_ms (20);
TR_Buzzer_6 = 0;
}
Escribir_displays ();
IF (Ps_Inicio == 0 && ( Decena != 0 || Unidad != 0))
{
Play();
}
}
}
el tema es que no me muestran los displays, creo que el error debe estar el los BC337 que no están alimentados, si alguno me puede dar una mano, les agradecería, saludos
Daniel
«
Última modificación: 26 de Julio de 2017, 22:52:01 por daniermac
»
En línea
daniermac
PIC10
Mensajes: 3
Re:Contador Ascendente y Descendente con PIC18f2550
«
Respuesta #1 en:
26 de Julio de 2017, 22:43:28 »
creo que el código de los displays están para ánodo y no para cátodo, y me parece que eso también hace que dé error, y más de ahí no tengo idea, saludos
«
Última modificación: 26 de Julio de 2017, 22:50:20 por daniermac
»
En línea
Fer_TACA
Moderadores
DsPIC33
Mensajes: 4154
Re:Contador Ascendente y Descendente con PIC18f2550
«
Respuesta #2 en:
27 de Julio de 2017, 05:11:16 »
Si los colectores de los transistores van al terminal que enciende los puntos de los displays entonces estos deben de ser de anodo comun.
Lo mismo sucede si ese pin es el de alimentacion.
En línea
Todos los días se aprende algo nuevo.
daniermac
PIC10
Mensajes: 3
Re:Contador Ascendente y Descendente con PIC18f2550
«
Respuesta #3 en:
27 de Julio de 2017, 08:26:30 »
Debe ser entonces ese el error, lo único es q no me deja subir el archivo en dsn de proteus 7
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Todo en microcontroladores PIC
(Moderadores:
MGLSOFT
,
pocher
,
Suky
) »
Contador Ascendente y Descendente con PIC18f2550