LCD

2
#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);

Transcript of LCD

Page 1: LCD

#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);

Page 2: LCD

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]); }