Hola despues de seguir volviendome loco adaptando el codigo para hacerlo simplemente enviar a la pantalla letras, sin leer mandos ni nada, tengo este codigo, y no me funciona a ver si me podeis echar una mano, hay dos funciones una valeo y otra borg, por que hay dos modelos de dysplay en opel uno que mrq funciona con pulso ascendente y otro descendente por favor ayudadme os ajunto mi codigo, en el post anterior os puse para que descargarais los ficheros, y ahi podris comparar el original con el mio gracias por adelantado
#include <16f876.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES XT //Cristal
#use delay(clock=4000000)
#use I2C(MASTER,SDA=PIN_C4,SCL=PIN_C3,RESTART_WDT) //Configuración I2C
#byte STATUS = 0x03
#define RP0 5
//#define DEBUG
#define WORKING
// Prototipos
void Initi2c(void);
void Starti2c(void);
void Stopi2c(void);
void EscreveDisplayValeo();
void EscreveDisplayBorg();
void main()
{
set_tris_b(0);
while (1)
{
EscreveDisplayValeo();
delay_ms(10000);
EscreveDisplayBorg();
delay_ms(10000);
}}
void EscreveDisplayValeo()
{
#ifdef WORKING
Initi2c();
#endif
//MRQ = 0;
output_bit (pin_b0,0);
delay_ms(1);
//MRQ = 1;
output_bit (pin_b0,1);
delay_ms(1);
#ifdef WORKING
Starti2c();
i2c_write(0x9b); // Endereço do display
#endif
//MRQ = 0;
output_bit (pin_b0,0);
#ifdef WORKING
// Display symbols
delay_ms(1);
i2c_write(0x01);
delay_ms(1);
i2c_write(0x01);
delay_ms(1);
i2c_write(0x01);
delay_ms(1);
#endif
#ifdef WORKING
i2c_write(0x61);
i2c_write(0x62);
i2c_write(0x64);
i2c_write(0x67);
i2c_write(0x68);
i2c_write(0x6B);
i2c_write(0x6D);
i2c_write(0x6E);
i2c_write(0x70);
i2c_write(0x73);
#endif
delay_ms(1);
//MRQ = 1; // MRQ = 1 // (Entrada?)
output_bit (pin_b0,1);
#ifdef WORKING
Stopi2c();
#endif
delay_ms(5);
return;
}
void EscreveDisplayBorg()
{
#ifdef WORKING
Initi2c();
#endif
//MRQ = 1;
output_bit (pin_b0,1);
delay_ms(1);
//MRQ = 0;
output_bit (pin_b0,0);
delay_ms(1);
#ifdef WORKING
Starti2c();
i2c_write(0x9b); // Endereço do display
#endif
//MRQ = 0;
output_bit (pin_b0,0);
#ifdef WORKING
// Display symbols
delay_ms(1);
i2c_write(0x01);
delay_ms(1);
i2c_write(0x01);
delay_ms(1);
i2c_write(0x01);
delay_ms(1);
#endif
#ifdef WORKING
i2c_write(0x61);
i2c_write(0x61);
i2c_write(0x61);
i2c_write(0x67);
i2c_write(0x68);
i2c_write(0x6B);
i2c_write(0x6D);
i2c_write(0x6E);
i2c_write(0x70);
i2c_write(0x73);
#endif
delay_ms(1);
//MRQ = 1; // MRQ = 1 // (Entrada?)
output_bit (pin_b0,1);
#ifdef WORKING
Stopi2c();
#endif
delay_ms(5);
return;
}
void Starti2c()
{
#asm
bsf STATUS,RP0
#endasm
//SDA = 0; // SDA
output_bit (pin_c4,0);
//SCL = 0; // SCL
output_bit (pin_c3,0);
#asm
bcf STATUS,RP0
#endasm
//SDA = 1;
output_bit (pin_c4,1);
//SCL = 1;
output_bit (pin_c3,1);
delay_ms(1);
#asm
bcf STATUS,RP0
#endasm
//SDA = 0;
output_bit (pin_c4,0);
return;
}
void Stopi2c()
{
#asm
bsf STATUS,RP0
#endasm
//SDA = 0; // SDA
output_bit (pin_c4,0);
//SCL = 0; // SCL
output_bit (pin_c3,0);
#asm
bcf STATUS,RP0
#endasm
//SDA = 0;
output_bit (pin_c4,0);
//SCL = 1;
output_bit (pin_c3,1);
delay_ms(1);
#asm
bcf STATUS,RP0
#endasm
//SDA = 1;
output_bit (pin_c4,1);
delay_ms(1);
return;
}
void Initi2c()
{
#asm
bsf STATUS,RP0
#endasm
// Seta os pinos C3, C4 e D0 como saida (0)
set_tris_c (0b00000000);
//trisc4 = 0;
//trisd0 = 0;
//trisb0 = 0;
set_tris_b (0b00000000);
#asm
bcf STATUS,RP0
#endasm
// Sobe o nivel das portas
//SDA = 1;
output_bit (pin_c4,1);
//SCL = 1;
output_bit (pin_c3,1);
//MRQ = 1;
output_bit (pin_b0,1);
return;
}