Professional Documents
Culture Documents
Entrar
///////////////////////////////////////////////////////////////////////////////////
/
// VsZeNeR'05
// 30/Agosto/05
//
// Programa: Escribir & leer eeprom interna del PIC y mostrarla por lcd
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3
//
// Notas: Se muestra por pantalla de lcd(LM016L) la informacion grabada en la
memoria
// interna del PIC(eeprom) y luego se muestra por la lcd
// Se utiliza variables locales:
// �LAST_VOLUME -> posicion a grabar en la eeprom del pic
// �mensaje1[] -> contiene 1� mensaje a escribir en eeprom y mostrar en lcd
// �mensaje2[] -> contiene 2� mensaje a escribir en eeprom y mostrar en lcd
// �mensaje3[] -> contiene 3� mensaje a escribir en eeprom y mostrar en lcd
// �mensaje4[] -> contiene 4� mensaje a escribir en eeprom y mostrar en lcd
// �volume -> contiene mensaje leido por la eeprom interna del pic
// Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de
// salida.
// Conexiones: B0 -> E
// B1 -> RS
// B2 -> RW
// B4 -> D4
// B5 -> D5
// B6 -> D6
// B7 -> D7
//////////////////////////////////////////////////////////////////////////////////
///PROGRAMA
void main(void)
{
char LAST_VOLUME=0,volume; //variables de direccion escritura eeprom y mensaje
char mensaje1[]="VsZeNeR'05"; //mensajes...
char mensaje2[]="HOLA";
char mensaje3[]="FORO";
char mensaje4[]="TODOPIC!"; //a escribir en eeprom interna y mostrar en lcd
for( ; ; ){ //bucle...
for(LAST_VOLUME=0;LAST_VOLUME<4;LAST_VOLUME++){ //bucle que recorre las posiciones
de eeprom
volume = read_EEPROM (LAST_VOLUME); //almacena mensaje de la direccion eeprom
printf(lcd_putc,"%s",volume) ; //muestra mensaje por pantalla lcd
delay_ms(500);
lcd_putc("\f" ); //borra pantalla lcd
} //...infinito
}
}
Este ejemplito esinteresante ya que utilizamos la eeprom interna de nuestro
dispositivo para almacenar 4 mensajes y despues sacralos por pantalla, recordar que
la eeprom es una porcion de memoria no volatil, es decir los tres mensajes grabados
se quedaran almacenados en el pic incluso quitandole la alimentacion al pic!
vszener
COLABORADOR
vszener
COLABORADOR
///////////////////////////////////////////////////////////////////////////////////
/
// VsZeNeR'05
// 27/Agosto/05
//
// Programa: Contador 0a9 por LCD con pulsador y buzzer
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3
//
// Notas: Se muestra por pantalla de lcd(LM016L) un mensaje de inicio del programa
// y se espera hasta que pulsemos el boton, entonces se borra pantalla y cada vez
// que presionemos el boton se ira incrementando en un valor el digito mostrado en
// la mitad de la fila 1� del lcd hasta llegar a 9 que entonces volvera a 0 y se
// emitira un beep.
// Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de
// salida.
// �tabNum[] -> vector donde se almacenan numeros del contador 0a9
// �i -> indice para vector tabNum
// Conexiones: B0 -> E
// B1 -> RS
// B2 -> RW
// B4 -> D4
// B5 -> D5
// B6 -> D6
// B7 -> D7
// B3 -> Buzzer(beep)
//////////////////////////////////////////////////////////////////////////////////
///PROGRAMA
void main(void)
{
char tabNum[10]={'0','1','2','3','4','5','6','7','8','9'},i=0; //tabla y variable
definida
lcd_init(); //inicializa lcd
printf(lcd_putc,"Presione boton\npara contador0a9" ); //muestra mensaje inicio
for( ; ; ){ //bucle...
if(!input(PIN_A0)){ //�se ha pulsado el boton?
do{ //SI -> eliminar...
}while(!input(PIN_A0)); //...rebotes del boton
if(i>9){ //�se ha mostrado digito 9?
i=0; //SI -> restaura valor indice(para mostrar digito 0)
output_high(PIN_B3); //activa buzzer(beep)
delay_ms(50); //tiempo de escucha del beep
output_low(PIN_B3); //desactiva buzzer(beep)
}
printf(lcd_putc,"%c",tabNum[ i ]); //muestra por pantalla el numero
printf(lcd_putc,"\b" ); //retrasa el cursor una posicion(escribe encima)
i++; //incremento contador indice tabNum
}
} //...infinito
}
vszener
COLABORADOR
http://miarroba.com/foros/ver.php?foroid=348538&temaid=3561028
!!!
pocher
come y duerme en el foro!!!
///PROGRAMA
void main(void)
{
char i=0; //contador para tabla BCD
int
tabBCD[10]={0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b0111,0b1000,0b1001};
//BCD 0-9
for(;{ //bucle...
if(!input(PIN_A0)) //�se ha pulsado el boton?
{
delay_ms(151); //SI -> retardo para evitar los rebotes
i++; //incremento contador indice tabBCD
if(i>9) //�se ha mostrado digito 9?
i=0; //SI -> restaura valor indice(para mostrar digito 0)
output_b(tabBCD); //muestra por portb digito 7 segmentos
}
} //...infinito
}
Codigo:
for(;{ //bucle...
if(!input(PIN_A0)) //�se ha pulsado el boton?
{
delay_ms(151); //SI -> retardo para evitar los rebotes
i++; //incremento contador indice tabBCD
if(i>9) //�se ha mostrado digito 9?
i=0; //SI -> restaura valor indice(para mostrar digito 0)
output_b(tabBCD); //muestra por portb digito 7 segmentos
}
while(!input(PIN_A0));
delay_ms(151);
} //...infinito
}
Un saludo
vszener
COLABORADOR
vszener
COLABORADOR
///////////////////////////////////////////////////////////////////////////////////
/
// VsZeNeR'05
// 30/Agosto/05
//
// Programa: Escribir & leer eeprom externa 24LC256 y mostrarla por lcd
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3
//
// Notas: Se muestra por pantalla de lcd(LM016L) la informacion grabada en la
memoria
// externa 24LC256(eeprom) y luego se muestra por la lcd
// Se utiliza variables locales:
// �dir-> posicion a grabar en la eeprom 24LC256
// �men1[] -> contiene 1� mensaje a escribir en eeprom y mostrar en lcd
// �men2[] -> contiene 2� mensaje a escribir en eeprom y mostrar en lcd
// �men3[] -> contiene 3� mensaje a escribir en eeprom y mostrar en lcd
// �men4[] -> contiene 4� mensaje a escribir en eeprom y mostrar en lcd
// En la pantalla lcd se muestra la direccion de memoria donde esta grabado el
// mensaje a mostrar y el correspondiente mensaje.
// Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de
// salida.
// Conexiones: A0 -> SCK eeprom externa
// A1 -> SDA eeprom externa
// B0 -> E
// B1 -> RS
// B2 -> RW
// B4 -> D4
// B5 -> D5
// B6 -> D6
// B7 -> D7
//////////////////////////////////////////////////////////////////////////////////
///PROGRAMA
void main(void){
int dir=0; //direccion de eeprom a escribir y leer mensajes
char men1[]="VsZeNeR'05"; //declaracion de...
char men2[]="Hola";
char men3[]="Foro";
char men4[]="TODOPIC!"; //...mensajes a escribir y leer por 25LC256
lcd_putc("\f>>>Leyendo...\n" ) ;
for(dir=0;dir<4;dir++){ //bucle para leer mensajes en eeprom externa y muestra por
lcd
printf(lcd_putc,"\n %d ~ %s",dir,read_ext_eeprom(dir) ) ;
delay_ms(1500); //retraso para que se vea en pantalla los mensajes
lcd_putc("\n " ); //borrado 2�linea de lcd
}
output_a(0b00); //apago port a
lcd_putc("\fFin de lectura!" ) ;
for( ; ; ){ //animacion...
for(dir=1;dir<8;dir++){
lcd_gotoxy(dir,2);
lcd_putc("VsZeNeR'05" ) ;
delay_ms(200);
lcd_putc("\n " );
}
for(dir=6;dir>1;dir--){
lcd_gotoxy(dir,2);
lcd_putc("VsZeNeR'05" ) ;
delay_ms(200);
lcd_putc("\n " ) ;
}
} //...final
}
Ya sabemos grabar tanto en memoria eeprom del pic(memoria interna) como memoria
externa!!!!jeje joeee que lejano se ve ahora eso de iluminar un led!!!
vszener
COLABORADOR
http://miarroba.com/foros/ver.php?foroid=348538&temaid=3565378
!!!
vszener
COLABORADOR
///////////////////////////////////////////////////////////////////////////////////
/
// VsZeNeR'05
// 08/Septiembre/05
//
// Programa: Dado digital con lcd y buzzer
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3
//
// Notas: Dado digital, que al presionar el boton conectado al pin A0 del porta
// genera un numero pseudo-aleatorio mediante la funcion rand() que se
// encuentra en la libreria STDLIB.H. El numero pseudo-aleatorio es elegido
// mediante la funcion rand() y segun los 'rebotes' producidos por el boton.Tener
// en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de
// salida. Cuando agregamos un boton a nuestro circuito hay que tener en cuenta
// que este dispositivo genera 'rebotes' que hay que ser eliminados para
// una correcta visualizacion en la lcd del digito seleccionado. Esta vez
// la eliminacion de 'los rebotes' se ha realizado mediante software.
//
// Conexiones: A0 -> boton
// B0 -> E
// B1 -> RS
// B2 -> RW
// B4 -> D4
// B5 -> D5
// B6 -> D6
// B7 -> D7
// B3 -> Buzzer(beep)
//////////////////////////////////////////////////////////////////////////////////
///PROGRAMA
void main(void)
{
char num=0; //variable almacena numero aleatorio
lcd_putc("\fDado:\n VsZeNeR'05" );
lcd_gotoxy(7,1); //Coordenadas dond se muestra el numero
for( ; ; ){ //bucle...
if(!input(PIN_A0)) //�se ha pulsado el boton?
{
do{ //SI -> elimina...
num=rand(); //genera numero pseudo-aleatorio
}while(!input(PIN_A0)); //...rebotes
vszener
COLABORADOR
http://miarroba.com/foros/ver.php?foroid=348538&temaid=3573629
!!!
RaDoN
COLABORADOR
Por cierto, porque desactivas las interrupciones �?�? el micro comienza as� ya
nordestenica
COLAB0RADOR
lo que estoi aprendiendo com el prof vszener la ingeniera Xelene los maestros
noturno66 , pocher , todopic , MGLSOFT , pacalaconcurso e todos los demas que no
menciono por que iba a quedar sim espacio sois unos genios gracias por lo que estoi
aprendiendo com ustedes
vszener
COLABORADOR
MGLSOFT
come y duerme en el foro!!!
RaDoN
COLABORADOR
nocturno66
come y duerme en el foro!!!
pocher
come y duerme en el foro!!!
nocturno66
come y duerme en el foro!!!
RaDoN
COLABORADOR
vszener
COLABORADOR
Ir al subforo:
Temas similares
No se han encontrado temas similares