///////////////////////////////////////
//AUTOR:JORGE ARTURO RODRIGUEZ HERNANDEZ
//TITLE;LETRERO CON DISPLAY DE 7 SEGMENTOS
//DATE:18/JUNIO/'09
///////////////////////////////////////
//CONFIGURACION///////////////////
#include<16f887.h>
#fuses HS,NOWDT,NOLVP,MCLR,NOPROTECT,NOPUT
#use delay(clock=20000000)
#use rs232(uart1,baud=2400)
//DEFINIMOS PINES
//#define EN1 PIN_C0
//#define EN2 PIN_C1
//#define EN3 PIN_C2 NO SE PORQUE LO PUSE
//#define EN4 PIN_C3 PORQUE NO SE USAN
//#define EN5 PIN_C4
//#define EN6 PIN_C5
//AGREGAMOS VARIABLE FIJAS
const int LETRA[]={ 0b00001001, //H
0b01000000, //O
0b01000111, //L
0b00001000, //A
0b11111111, //SPACE
0b11111111, //SPACE
0b11111111, //SPACE
0b11111111, //SPACE
0b11111111, //SPACE
0b11111111, //SPACE
0b11111111};//SPACE
//AGREGAMOS VARIABLES
unsigned int x=0;
signed int y=6,z=6,n=1,VALOR=100;
unsigned long i;
//CONFIGURACION DEL PIC
void config(void){
set_tris_c(0x80); //RC0-RC6 SALIDAS, RC7 ENTRADAS
set_tris_d(0x00); //RD0-RD7 SALIDAS
setup_comparator(NC_NC_NC_NC); //OPAM APAGADOS
setup_adc(ADC_OFF); //DAC APAGADO
}
void main(void){
config(); //HABLAMOS A LA CONFIGURACION DE CONFIGURACION
output_c(0x00);
while(TRUE){
for(i=0;i<=VALOR;i++){ //ciclo de temporizacion
for(y=z;y<=6;y++){ //ciclo donde activa cada display
bit_set(*7,y); //con su correspondiente letra
output_d(LETRA[x]);
delay_ms(1); //Tiempo de vizualizacion
bit_clear(*7,y); //Apaga el display antes Prendido
x++; //Incrementa para saber donde debe
if(x>=n) x=0; //primero empezar el principo de la palabra
}
}
VALOR=VALOR-10; //Cuando valla mas letras mostradas se va a tardar
if(VALOR<=9) VALOR=100; //mas, entonces el tiempo debe de disminuir para
z--; //una vizualizacion correcta
if(z<=-4) z=6; //Decrementa para vizualizar mas letras al paso del tiempo
n++; //transcurrido.
if(n>=11) n=1; //Incrementa el limite a donde debe de llegar //cada letra con corde al tiempo transcurrio
}
}