¿Cómo podría poner la palabra hola en 8 display de 7 segmentos usando Pic16f877a y en programación c?
La palabra hola deberá moverse y parpadear o solo moverse (desplazarse).
Tengo programación de un codificador binario donde uso display doble y con transistores los enciendo y apago, pero ni idea de como hacer este.
La palabra hola tiene que aparecer.
La palabra debe moverse a través de los 8 display.
Está un poco confuso porque es de mi 877a donde voy a trabajar.
Aquí les pongo como sería en el 84a
Les agradecería la ayuda.
La palabra hola deberá moverse y parpadear o solo moverse (desplazarse).
Tengo programación de un codificador binario donde uso display doble y con transistores los enciendo y apago, pero ni idea de como hacer este.
La palabra hola tiene que aparecer.
La palabra debe moverse a través de los 8 display.
Código:
#include <16F877a.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000)
#define use_portd_lcd TRUE
#define use_portb_kbd TRUE
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#include <lcd.c>
#include <kbd_4x4.c>
void unidec(con)
{
int8 uni=0,dec=0;
while(con<9){con-=10;dec++;}
uni=con;
output_c(uni);output_high(pin_c6);delay_ms(5);
output_c(dec);output_high(pin_c7);delay_ms(5);
}
set_tris_a (0b00011111);
set_tris_b (0b11111111);
set_tris_c (0b00000000);
set_tris_d (0b00000000);
Port_b_pullups (true);
lcd_init ();
kbd_init ();
CHAR k;
int8 con=0,x=0,uni=0,dec=0,seg=0;
WHILE(true)
{
lcd_gotoxy (1, 2) ;
printf (lcd_putc,"\rContador\r") ;
uni=con;
while(!input(pin_a0) && !input(pin_a1))unidec(con);
{if (input(pin_a0))
if(con>98) con=0;
else con++;}
{if(input(pin_a1))
if(con<1) con=99;
else con--;}
while(input(pin_a0)|| input(pin_a1))unidec(con);
}
Aquí les pongo como sería en el 84a
Código:
#include <16F84A.h>
#fuses nowdt,xt,noput,noprotect
#use fast_io(a)
#use fast_io(b)
#use delay(clock=4000000)
void unidec(con)
{
int8 uni=0,dec=0;
while(con<9){con-=10;dec++;}
uni=con;
output_b(uni);output_high(pin_b6);delay_ms(5);
output_b(dec);output_high(pin_b7);delay_ms(5);
}
Void main()
{
Set_tris_a(0b00011111);
Set_tris_b(0b00000000);
int8 con=0;
output_b(0b11000000);
while(true)
{
while(!input(pin_a0) && !input(pin_a1))unidec(con);
{if (input(pin_a0))
if(con>98) con=0;
else con++;}
{if(input(pin_a1))
if(con<1) con=99;
else con--;}
while(input(pin_a0)|| input(pin_a1))unidec(con);
}
}
Última edición por un moderador: