Skocz do zawartości

Atmega8, LCD - wysyłanie znaków do modułu LCD


adi1525

Pomocna odpowiedź

Witam, napisałem własny program do obsługi wyświetlacza LCD, inicjacja przebiega poprawnie, ponieważ kursor miga. Nie udaje mi się natomiast wysłać jakiegokolwiek znaku, chodzi mi o wpisanie np litery A na pierwsze miejsce bez żadnych przesunięć.

Oto kod:

#include <avr/io.h> 
#include <util/delay.h> 
/* ############################################################################################## 
RS = PB0 
RW = PB1 
E = PB2 
DB0 = PDO 
DB1 = PD1 
DB2 = PD2 
DB3 = PD3 
DB4 = PD4 
DB5 = PD5 
DB6 = PD6 
DB7 = PD7 
##############################################################################################*/ 

void wyslij(int wartosc, int rs) 
{ 

PORTB &=~_BV(PB2); // E =0 
PORTB &=~_BV(PB1); //RW=0 
if (rs==0) 
{ 
PORTB &=~_BV(PB0); //rs=0 
} 

if (rs==1) 
{ 
PORTB =_BV(PB0); //rs=1 
} 

PORTD = wartosc; 

_delay_ms(1); 
PORTB =_BV(PB2); // E =1 
_delay_ms(1); 
PORTB &=~_BV(PB2); // E =0 
_delay_ms(1); 

} 
void inicjacja() 
{ 
_delay_ms(20); 
wyslij(0b00111100,0); 
_delay_ms(5); 
wyslij(0b00111100,0); 
_delay_ms(1); 
wyslij(0b00111100,0);// 3 razy wywołanie Function set interfejs 8 bitowy, 2 linie 

wyslij(0b00000001,0);// czyszczenie wyświetlacza 
wyslij(0b00000111,0);// przesuwanie napisów 
wyslij(0b00001111,0);// włączenie wyświetlacza, kursora i migania kursora 
} 

int main() 
{ 
DDRD = 0b11111111; 
DDRB = 0b11111111; 

inicjacja(); 

while(1) 
{ 

} 

} 

Próbowałem przed funkcją while wpisać:

wyslij(0b01000001,1);//0b01000001 oznacza literę 'A',1 oznacza rs = 1 czyli zapis

_delay_ms(100);

i tylko kursor przesuwa się o kilka miejsc w prawo i miga.

Link do komentarza
Share on other sites

W funkcji "wyslij":

Zamiast: "PORTB =_BV(PB0); //rs=1" powinno być: "PORTB |=_BV(PB0); //rs=1" i

zamiast: "PORTB =_BV(PB2); // E =1" powinno być: "PORTB |=_BV(PB2); // E =1".

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.