More Related Content
More from Simuladorgeradoreolico
More from Simuladorgeradoreolico (20)
Biblioteca LCD
- 1. #define lcd_seg_lin 0x40 // Endereço da segunda linha na RAM do LCD
void lcd_envia_nibble( char dado )
{
if(dado&0x01)lcd_d4=liga;
else lcd_d4=desliga;
if(dado&0x02)lcd_d5=liga;
else lcd_d5=desliga;
if(dado&0x04)lcd_d6=liga;
else lcd_d6=desliga;
if(dado&0x08)lcd_d7=liga;
else lcd_d7=desliga;
delay_10us(10);//delay_us(20);//5=100us delay_80us();//80us
lcd_en=liga;
delay_10us(10);//delay_us(20);//5=100us delay_80us();//80us
lcd_en=desliga;
}
////////////////////////////////////////////////////////////////////////////
void lcd_envia_byte( char endereco, char dado )
{
lcd_rs=desliga;
delay_10us(10);//delay_us(25);//5=100us delay_100us();
if(endereco)lcd_rs=liga;
else lcd_rs=desliga;
delay_10us(10);//delay_us(25);//5=100us delay_100us();
lcd_en=desliga;
lcd_envia_nibble(dado >> 4);
lcd_envia_nibble(dado & 0x0f);
}
////////////////////////////////////////////////////////////////////////////
void lcd_ini()
{
char conta;
/*
lcd_d0=desliga;
lcd_d1=desliga;
lcd_d2=desliga;
// lcd_d3=desliga;
*/
lcd_d4=desliga;
lcd_d5=desliga;
lcd_d6=desliga;
lcd_d7=desliga;
lcd_rs=desliga;
// lcd_rw=desliga;
lcd_en=desliga;
delay_ms(15);//75=15ms delay_15ms();
for(conta=1;conta<=3;++conta)
{
lcd_envia_nibble(0x03);
delay_ms(5);//25=5ms//delay=5ms
}
lcd_envia_nibble(0x02);
- 2. lcd_envia_byte(0,0x28);
lcd_envia_byte(0,0b00001100);
lcd_envia_byte(0,1);
lcd_envia_byte(0,6);
delay_ms(2);//10=2ms delay_2ms();
}
////////////////////////////////////////////////////////////////////////////
void lcd_pos_xy( char x, char y)
{
char endereco;
if(y!=1)
endereco = lcd_seg_lin;
else
endereco = 0;
endereco += x-1;
lcd_envia_byte(0,0x80|endereco);
}
////////////////////////////////////////////////////////////////////////////
void lcd_escreve( char c)
{
switch (c)
{
case 'f' : lcd_envia_byte(0,1);
delay_ms(2);//10=2ms delay_2ms();
break;
case 'n' :
case 'r' : lcd_pos_xy(1,2);
break;
case 'b' : lcd_envia_byte(0,0x10);
break;
default : lcd_envia_byte(1,c);
break;
}
}
////////////////////////////////////////////////////////////////////////////
void lcd_escreve_duas_linhas()
{
lcd_escreve('f');
for(conta=0;conta<16;conta++)lcd_escreve(stri1[conta]);
lcd_escreve('n');
for(conta=0;conta<16;conta++)lcd_escreve(stri2[conta]);
}
////////////////////////////////////////////////////////////////////////////
void lcd_escreve_uma_linha()
{
lcd_escreve('f');
for(conta=0;conta<16;conta++)lcd_escreve(stri1[conta]);
}
Observação: Autoria Engenheiro Rodrigo Lacerda Taschetto.