Autor Tema: 16f877 con lcd, como lo hago a 4 bits  (Leído 1972 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado lexdead

  • PIC10
  • *
  • Mensajes: 1
16f877 con lcd, como lo hago a 4 bits
« en: 07 de Mayo de 2006, 23:06:56 »
tengo un programa con el pic 16f877, lo tengo funcionando bien a 8 bits, pero tengo problemas al intentar cambiarlo a 4 bits, quizas ustedes me puedan ayudar, anexo el programa, ah otra cosa, en mi escuela me enseñaron a programar en C, muy diferente a como uds lo hacen, espero que me asesoren ok

programa
//PROGRAMA PARA DISPLAY LCD//
//1, 2, 6, 12, 20, 56, 64, 128//
#include <pic.h>
#include <delay.h>
#include <delay.c>
#define RS RC0
#define EN RC1


char posicion=0;



void Reset (void);
void enter (void);



void main (void){


char mensaje=0;
char time=0;

unsigned char letra []={"HOLA A TODOS"};
unsigned char letra2[]={"ESPERO ESTO"};
unsigned char letra3[]={"LES DIGA"};
unsigned char letra4[]={"CUAN BUENO SOY"};
unsigned char letra5[]={"hola"};
TRISC=12;
TRISB=0;
PORTB=0;
RC2=0;
RC3=0;


Reset();  //LLAMANDO A LA FUNCIÓN DE INICIALIZACIÓN DEL DISPLAY//



//COMIENZA EL ENVÍO DEL DATO//
while (mensaje<12){      

RS=1;
EN=0;
DelayMs(1);
PORTB=letra [mensaje]; //ENVIANDO DATO//
DelayMs(10);
EN=1;
DelayMs(50);
EN=0;
PORTB=0; //REINICIANDO EL PUERTO DE DATOS//
mensaje++;
posicion++;
}


enter();//LLAMANDO A LA FUNCIÓN DE PASO AL SEGUNDO RENGLÓN//



//MANDANDO EL SEGUNDO RENGLÓN//

mensaje=0;
while (mensaje<11){
RS=1;
EN=0;
DelayMs(1);
PORTB=letra2 [mensaje]; //ENVIANDO DATO//
DelayMs(10);
EN=1;
DelayMs(50);
EN=0;
PORTB=0; //REINICIANDO EL PUERTO DE DATOS//
mensaje++;

}


while (time<16){
DelayMs(250);
time++;
}
time=0;



Reset();//REINICIAR POR SEGUNDA VEZ//
posicion=0;
//MANDANDO TERCER MENSAJE//
mensaje=0;
while (mensaje<8){
RS=1;
EN=0;
DelayMs(1);
PORTB=letra3 [mensaje]; //ENVIANDO DATO//
DelayMs(10);
EN=1;
DelayMs(50);
EN=0;
PORTB=0; //REINICIANDO EL PUERTO DE DATOS//
mensaje++;
posicion++;

}


enter();


//MANDANDO CUARTO MENSAJE//
mensaje=0;
while (mensaje<14){
RS=1;
EN=0;
DelayMs(1);
PORTB=letra4 [mensaje]; //ENVIANDO DATO//
DelayMs(10);
EN=1;
DelayMs(50);
EN=0;
PORTB=0; //REINICIANDO EL PUERTO DE DATOS//
mensaje++;
}





while (time<20){
DelayMs(250);
time++;

}

Reset();//REINICIAR POR SEGUNDA VEZ//
posicion=0;
//MANDANDO TERCER MENSAJE//
mensaje=0;
while (mensaje<4){
RS=1;
EN=0;
DelayMs(1);
PORTB=letra5 [mensaje]; //ENVIANDO DATO//
DelayMs(10);
EN=1;
DelayMs(50);
EN=0;
PORTB=0; //REINICIANDO EL PUERTO DE DATOS//
mensaje++;
}



enter();
while (time<25){
DelayMs(250);
time++;

}}//FIN//


//              FUNCIONES:                  //



//FUNCIÓN DE INICIALIZACIÓN DEL DISPLAY//

void Reset(void){
unsigned char config [4]={59, 6, 12, 1};
char x=0;
if(RC2==1)RC3=1;
else RC2=0, RC3=0;
while (x<4){
RS=0;
EN=0;
DelayMs(5);
EN=1;
DelayMs(22);
PORTB=config
  • ;

DelayMs(22);
EN=0;
DelayMs(10);
PORTB=0;
DelayMs(50);
x++;
}//HA SIDO CONFIGURADO EL DISPLAY//

}


//FUNCIÓN DE PASO AL SEGUNDO RENGLÓN//

void enter(void){

while (posicion<40){
RS=1;
EN=0;
DelayMs(1);
PORTB= ' '; //RECORRIENDO CURSOR A SEGUNDO RENGLON//
DelayMs(1);
EN=1;
DelayMs(1);
EN=0;
PORTB=0; //REINICIANDO EL PUERTO DE DATOS//
posicion++;
}
posicion=0;
}

Desconectado eidtech

  • PIC10
  • *
  • Mensajes: 5
Re: 16f877 con lcd, como lo hago a 4 bits
« Respuesta #1 en: 08 de Mayo de 2006, 01:39:46 »
Por que no intentas utilizando las funciones implementados por el compilador generalmente incluidas en lcd.h, en PIC C ya vienen las funciones implementadas en 'nibble mode'. Por ejemplo algunas de las funciones son:

lcd_init();
lcd_putc("mensaje");
lcd_gotoxy(x,y);

Desconectado hades

  • PIC10
  • *
  • Mensajes: 2
Re: 16f877 con lcd, como lo hago a 4 bits
« Respuesta #2 en: 06 de Agosto de 2006, 03:24:26 »
Creo que el compilador que estas usando no es CCS....sino CC5X....deja revisar que onda.. 8)

Desconectado Diego Eduardo

  • PIC10
  • *
  • Mensajes: 9
    • Pic y chistes
Re: 16f877 con lcd, como lo hago a 4 bits
« Respuesta #3 en: 08 de Agosto de 2006, 21:49:44 »
Puedes revisar el enlace son algunos de mis programas
http://mx.geocities.com/irresistible_en_linea
El Zorro