Ovládání ST7920

Připadají mi v tom výše uvedeným kódu chyby.bylo by možný dát sem schéma zapojení MCU k displeji a pro jistotu foto displeje (poud jsou na něm popsaný piny jako je na tonto obrázku.Nekdy to bývá na spodní straně )?

Není chyba právě v tom?

Myslím, že právě toto je důvod, proč Ti to nefunguje. Čísluješ si bity obráceně : 0b00000001 posílá 1 na bit 0 a ne 7. Bity se totiž číslují takto : 0b76543210.

Jinak na první test displej nemusíš přepínat do grafického režimu a můžeš s ním komunikovat stejně, jako se znakovým.

Na odzkoušení funkčnosti displeje můžeš případně odzkoušet tohhle.Je to pro 16F877A /4MHz
Nastavené dle schématu co jsi poslal:
Rs RA5
RW RA4
E RA3
Psb RA2
Rst RA0
Dataport:
DB7 RD7
DB6 RD6
DB5 RD5
DB4 RD4
DB3 RD3
DB2 RD2
DB1 RD1
DB0 RD0
ST7920-12864-ENGLISH.hex (1.73 KB)

Kdyby jsi to schéma dal k tomu HEXu, tak by to nebylo asi moc na škodu.

Vždyť schéma sem dával Matyáš.Je to psaný na to schéma zapojení.
Případně:
download.php?id=2957
download.php?id=2956
Edit: Doplnil jsem popis zapojení

Škoda.Ten program funguje přesně s tímto displejem.
Trafopájkou rozhodně není dobře pájet tuto elektroniku.Jeden nový displej ,nikdy nepoužitý,ale nefunkční mám na stole.Stát se to asi může (že nefunguje jako nový,nebo se lehce odpálí).

Ještě jako další možnost můžeš zkusit s tímto zapojením:
Rs RB0
RW RB1
E RB2
Psb RB3
Rst RB5
Dataport:
DB7 RD7
DB6 RD6
DB5 RD5
DB4 RD4
DB3 RD3
DB2 RD2
DB1 RD1
DB0 RD0

Jestli ani tohle ,tak snad začít od začátku podle datasheetu.
ST7920-12864-ENGLISH.hex (1.73 KB)

Mohl bych poprosit o kontrolu:

Send_Command(0b00000110);  // Cursor moves right, no display shift.

Nějak mi ta binární hodnota nekoresponduje s datasheetem.
Díky.

Podle datasheetu by mělo být pro posun kurzoru S=H. Je-li to pravda ,mělo by bejt poslední číslo v pravo log. 1.
Pletu se ?

Já si právě nejsem jist, o kterou funkci se má jednat - jestli o “Entry mode set” (Datasheet str. 13), nebo “Cursor/Display Shift Control” (Datasheet str. 14). V obou se totiž pracuje s kurzorem.
Chápu to tak, že “Entry mode set” nastavuje, co se má stát po zapsání znaku na GLCD (to znamená že to se nastavuje 1x) a “Cursor/Display Shift Control” prostě hýbe s kurzorem.
Chápu to správně? Nevím totiž, jak přesně bylo myšleno “Cursor moves right, no display shift.”
Děkuji!

Pro ten můj dislej platí:
write_com(0x30); //set 8 bit operation and basic instruction set
write_com(0x0c); //display on cursor off and char blink off
write_com(0x06); //entry mode set
write_com(0x01); //display clear

tj 0x06 = 0B0000110
Takhle mám řešenou inicializaci displeje pro textový mód.

To Sender:
Mohl by jste mi poslat celý Váš kód (pokud ho máte v C)?
Děkuji.

Posláno v SZ.
Ještě mě napadlo,jestli není na tvém displeji naopak třeba reset (L->H nebo naopak)

Bohužel ne :frowning:

Pokud máš na RA0 stále log. 0, pak máš buď špatně nastavené pojistky v procesoru a RA0 je použit na nějakou systémovou periferii (u některých ATmega se například musí zakázat JTAG, aby byly přístupné všechny piny) nebo máš zkrat proti zemi na desce …

Log. 0 tam stále není.

Zapomněl jsem dodat, že pokud tam nahraji program, který má v main() pouze RA0 = 1; tak tam opravdu fyzicky 1 je (napětí RA0 - GND = 5V).
Podle datasheetu PIC16F877A je na portu RA0 ještě analogový vstup 1, ale to by nemělo vadit.
Nastavení TRIS registru je také v pořádku:

TRISD = 0x00; TRISA = 0x00;
Chyba bude někde v softwaru.

tak si ten DS procti jeste jednou

Kdyby lidi četli pořádně katalogové listy, 90% problémů by nebylo. Lenost je hrozná nemoc… :slight_smile: Tak abych jen nekritizoval - zaměř se na ADCON0 a ADCON1, schválně co se dozvíš…

Matyáš> Zkoušel jsi ten displej zapojit na port B a použít ten kód ,co jsem ti poslal ?
Jinak -na potru A vše zakázat a nastavit jako výstupní.
tady dávám foto,že mi opravdu funguje: