logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][C][KamAVR - winavr] LCD

studencik22 25 Mar 2009 08:28 1239 1
REKLAMA
  • #1 6329369
    studencik22
    Poziom 13  
    Witam
    Mam LCD http://www.lispol.pl/index.php?site=detail&prid=446
    dokładnie ten

    I napisałem ten oto kod, ale niestety nie działa. Nie wiem co źle robie, dlatego poprosiłbym o sprawdzenie, nie o gotowca, tylko sprawdzenie i wskazaniu gdzie tkwi błąd, gdyż to praca inżynierska a promotora nie ma w tej chwili w kraju :).
    Dodam, że Enabled podłączyłem do portu B RB0
    a RS do RB1. Jeśli to kwestia czasów, to poprosze o gotową odpowiedź, bo sam nie moge dojść co z nimi, wydaje mi się, że czasy (delay) są dobre, bo w końcu o odczycie decyduje stan linii enabled. Wcześniej po wykonaniu częśc kodu z innymi czasami znikał rząd kwadracików na góze.
    Pozdrawiam i dziękuje za pomoc :)

    DDRC = 0xff;
    DDRB = 0x03;
    _delay_ms(20);

    PORTB = 0x00;
    _delay_ms(10);
    PORTC = 0x02; // NA 4 BITY
    _delay_ms(10);
    PORTB = 0x01; // E na góre
    _delay_ms(5);
    PORTB=0x00; //enable w dół
    _delay_ms(2);

    PORTC=0x02; //function set 4 bity 2 linie pierwsza czcionka
    _delay_ms(5);
    PORTB = 0x01;
    _delay_ms(2);
    PORTB=0x00;
    _delay_ms(5);
    PORTC=0x00;
    _delay_ms(2);
    PORTB = 0x01;
    _delay_ms(5);
    PORTB=0x00;
    _delay_ms(2);

    PORTC = 0X00; //WŁĄCZ
    _delay_ms(2);
    PORTB=0x01;
    _delay_ms(5);
    PORTB=0x00;
    _delay_ms(2);
    PORTC = 0X0E; // DALSZA CZESC
    _delay_ms(2);
    PORTB=0x01;
    _delay_ms(5);
    PORTB=0x00;
    _delay_ms(2);

    PORTC = 0X00; // increment
    _delay_ms(2);
    PORTB=0x01;
    _delay_ms(5);
    PORTB=0x00;
    _delay_ms(2);
    PORTC = 0X06;
    _delay_ms(2);
    PORTB=0x01;
    _delay_ms(5);
    PORTB = 0X02; //zmien RS
    _delay_ms(2);

    PORTC = 0X05; //wysłanie znaku "S"
    _delay_ms(2);
    PORTB=0x01;
    _delay_ms(5);
    PORTB=0x00;
    _delay_ms(2);
    PORTC = 0x03;
    _delay_ms(2);
    PORTB=0x03;
    _delay_ms(5);
    PORTB=0x02;
    _delay_ms(2);
    DDRC = 0x3f;
  • REKLAMA
  • #2 6330442
    kaktus_c++
    Poziom 18  
    po pierwsze ja bym sprawdził czy podłączenie jest na pewno dobre , w ten sposób że użyłbym gotowej biblioteki http://radzio.dxp.pl/hd44780/
    w drugiej kolejności proponuję przeanalizować tamtą właśnie bibliotekę i na jej podstawie napisać program od nowa i różnica sama wyjdzie.
REKLAMA