LCD Test_bit Hitech

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

LCD Test_bit Hitech

Mensagempor eagle_good » 06 Nov 2006 07:09

Galera ...... :) Esta lib pra lcd com hitech funciona legalzinha....usando delay......e eu pretendo testar o bit 7 (busy) do LCD (igual a lib doCCS).
entao a rotina....seria assim ......mas num funfa :cry:
o que esta errado ???

sabendo-se que
cpp code
#define LCD_EN RB0 
#define LCD_RS RB1
#define LCD_RW RB2
#define LCD_D4 RB4 //data
#define LCD_D5 RB5 //data
#define LCD_D6 RB6 //data
#define LCD_D7 RB7 //data

unsigned char lcd_read(void)
{
unsigned char data = 0;

TRISB = 0xF0; // configure the datas pins as inputs
LCD_RS = 0; // command
LCD_RW = 1; // pin rw in 1 to read
LCD_EN = 1;
if (RB7) data |= 0x80; //else data|= 0x00; // lê os quatro bits mais significativos
if (RB6) data |= 0x40; //else data|= 0x00;
if (RB5) data |= 0x20; //else data|= 0x00;
if (RB4) data |= 0x10; //else data|= 0x00;
LCD_EN = 0; // dá um pulso na linha enable
nop();
LCD_EN = 1;
if (RB7) data |= 0x08; //else data|= 0x00; // lê os quatro bits menos significativos
if (RB6) data |= 0x04; //else data|= 0x00;
if (RB5) data |= 0x02; //else data|= 0x00;
if (RB4) data |= 0x01; //else data|= 0x00;
LCD_EN = 0; // desabilita o display
LCD_RW = 0; // volta para write
TRISB = 0x00;
return data; // retorna o byte lido
}

void lcd_write(unsigned char c, unsigned char rs)
{
while(lcd_read( )& 0x80); // 1=busy / 0=ready

if(rs) LCD_RS=1; else LCD_RS=0; // data or command
if(c & 0x80) LCD_D7 = 1; else LCD_D7 = 0;
if(c & 0x40) LCD_D6 = 1; else LCD_D6 = 0;
if(c & 0x20) LCD_D5 = 1; else LCD_D5 = 0;
if(c & 0x10) LCD_D4 = 1; else LCD_D4 = 0;
LCD_STROBE;
if(c & 0x08) LCD_D7 = 1; else LCD_D7 = 0;
if(c & 0x04) LCD_D6 = 1; else LCD_D6 = 0;
if(c & 0x02) LCD_D5 = 1; else LCD_D5 = 0;
if(c & 0x01) LCD_D4 = 1; else LCD_D4 = 0;
LCD_STROBE;
LCD_RS=0; //0=>comando 1=>data
LCD_RW=0; //0=>write 1=>read
//Delay(40);
}
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor eagle_good » 06 Nov 2006 13:34

pessoal......ehehehe......


resolvido......... nada que uns nops num resorva heim......ahahaha...

blz .....veja aonde vai os norps da vida.....

cpp code
LCD_RS = 0; // command 
LCD_RW = 1; // pin rw in 1 to read
LCD_EN = 1;
nop();
nop();
if (RB7) data |= 0x80;
if (RB6) data |= 0x40;
if(RB5) data |= 0x20;
if (RB4) data |= 0x10;
nop();
LCD_EN = 0; // dá um pulso na linha enable
nop();
LCD_EN = 1;
nop();
nop();
if (RB7) data |= 0x08;
if (RB6) data |= 0x04;
if (RB5) data |= 0x02;
if (RB4) data |= 0x01;


valeu galera ............eheheh
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x