LCD display 2x8

nn myslím zobrazit znak na display.

Tak stačí nastavit adresu prvního znaku a pak už jen posíláš znaky. K inkrementaci adresy znaku dochází automaticky.

ok díky :slight_smile:

Zdravím vás , na display se mi znaky zobrazují , ale mám pár nejasností.
V datashhetu řadiče S6A0096 nerozumím nastavení DDRAM adresy.
Podle obrázku se mají nastavit bity DB6 - DB0 a DB7 má být trvale nastaven na log. 1. No jo ale jak pak tedy nastavím 8bitovou adresu , když jeden bit DB7 je nastaven trvale na log. 1?
Když chci poslat na display písmeno A tak signál DB7 musím nastavit na log.0.

DDRAM (RS 0) nastavuješ pozici na displeji a zapisuješ instrukce. CGRAM (RS 1) zobrazuješ znaky.
Pošleš 0x80, tak je to řádek 1, pozice 1. A pak pošleš ‘A’ a zobrazí se ti A na pozici 1, řádek 1. Když pak pošleš další ‘A’, tak se ti zobrazí na řádku 1, pozici 2. Pokud máš nastavenou inkremetaci znaků.

Pleteš si adresu pozice na displeji a zápis znaku.
Pokud nastavíš RS=0,RW=0 a DB7=1 - potom na DB6/0 zapisuješ adresu pozice na displeji, kam chceš zapsat následující znak. Po zapnutí má první místo zleva v horním řádku adresu 0x00h, v dolním 0x40h. Pokud budeš displej posouvat, max. adresa pro horní řádek je 0x27h, pro dolní 0x67h, na to stačí těch 7 bitů DB6/0. Tak je to alespoň u displejů 2x16, u těchto menších předpokládám to samé.
Když chceš potom zapsat na displej třeba to tvoje “A”,musíš nastavit RS=1, RW=0 a na DB7/0 kód pro “A” (0x41h).

Aha , tak v tom bude ten problém.Inkrementaci nastavenou mám.
díky za pomoc klucí :slight_smile:

Zdravím vás , po menší odmlce jsem se opět vrátil k display a zjistil jsem,
že se mi nedaří přejít na druhý řádek.
V prvním řádku v pohodě nastavuji pozici i znak.
Ale jak se chci přepnout na druhý řádek tak to prostě nejde.
Nastavím RS = 0,RW = 0 , DB7 = 1 , a dále pošlu na DB6-DB0 nejdříve horní 3 bity a pak dolní 4.
Pošlu na DB6 - DB0 hodnotu 40h , ale na dolní řádek se nepřepnu.
2xline řádky mám nastavené.
nevíte v čem by mohla být chybka?
díky

Komunikuj s ním, jako by to byl 1x16! Už jsem ti to tu kdesi psal.

To jsem zkoušel taky , ale bez výsledku :blush:
Mám určité pochybnosti v čem by mohla být chyba , pokusím se zeptat takhle když používám 4bit kom. tak nejdříve vyšlu horní 4 bity - DB7 má být nastaven na log.1 a zbylé 3 bity nastavím na log. 0 , potvrdím E , nastavím E a teď mi není jasné jestli mám znovu nastavit DB7 na log. 1 nebo tento bit použít pro nastavení adresy?
část programu pro nastavení pozice a řádku připisuji je to pro 1x16 disp.
PORTBbits.RB0 = 1; // nastav E
PORTBbits.RB1 = 0; // RS = 0
// horni 4 bity
PORTBbits.RB5 = 1; // DB7
PORTBbits.RB2 = 1; // DB4 2 radek 1 pozice
PORTBbits.RB3 = 0; //DB5
PORTBbits.RB4 = 0; //DB6
PORTBbits.RB0 = 0; // strhni E
cekej;
PORTBbits.RB0 = 1; // nastav E
// dolni 4 bity
PORTBbits.RB5 = 0; // DB7 zde vaham jestli ma byt log 1 nebo 0
PORTBbits.RB2 = 0; // DB4
PORTBbits.RB3 = 0; //DB5
PORTBbits.RB4 = 0; //DB6
PORTBbits.RB0 = 0; // strhni E
cekej;
PORTBbits.RB0 = 1; // nastav E

pročpoužíváš takovýzběsilý způsob ??? záápisuna port ???
ahlavně to trvá strašně dlouho :smiley:
piš to jako normální jedno zápisna port;) jeto přehlednější a rychlejší :wink:

já jsem to pouze rozepsal , jinak samozřejmě používám způsob
např. PORTB = 0x03;

mohu ti doporučil, velice zajímavé stránky :wink:

viz tady elektronika.kvalitne.cz/ATMEL/ne … atice.html

tam najdeš snad vše…

Ja by som ti odporucil na studium tuto stranku - zapojenie na PIC, ale pekne popisana funkcia a ovladanie LCD:

cmail.cz/doveda/lcd/index.htm

, a na kuknutie na ATMEL (ta CAVENova je tiez good) snad este pripojim tuto :

dhservis.cz/lcd_soubory/moje.html

Je tam celkom pekne popisany zdrojak…

díky , zkusím to :wink: