# ATMEL mikrokontrolleri >  4x20 LCD ( HD44780 ) problēma

## Hank



----------


## ansius

neesmu c priekš mikrokontrolieriem specs, bet tev aiztures ir korektas? nevienā LCD HD44780 uz pilnu koksi datus iekšā iesūtīt nevar... palasi 13 lpp, tevis norādītajā specenē un paseko līdzi laika diagrammām...

----------


## Hank

> neesmu c priekš mikrokontrolieriem specs, bet tev aiztures ir korektas? nevienā LCD HD44780 uz pilnu koksi datus iekšā iesūtīt nevar... palasi 13 lpp, tevis norādītajā specenē un paseko līdzi laika diagrammām...


 Laika aiztures, kā kodā redzams kodā, ir 50ms - pēc datasheet spriežot, pietiktu pat ar 1ms, bet lai nebūtu problēmu, testam uzlikts ar rezervi.

----------


## abergs

Sākumā jātaisa LCD inicializācija, tikai tad kaut ko rakstīt/zīmēt.

----------


## Vikings

Tu kontrastu grozīji? Var gadīties tā, ka viss ieslēdzas, simbolus rāda, bet Tu tos neredzi, jo kontrasts galīgi greizs.

----------


## karloslv

Neredzu aizturi starp Enable raustīšanu (starp ->low un ->high) funkcijā send_character()... 
Skaties diagrammu - tDSW un tH. Kad uzliek Enable->H, čipam ir jāpagūst saprast, ka tu tagad liksi datus uz maģistrāles. Pēc tam pēc nomešanas uz L arī jāpaiet aizturei, lai čips sagremotu. Pēc specenes augsts Enable nozīmē - čips neuztraucas par to, kas uz maģistrāles. Tev tur viss otrādi, jaunos datus uzliek tad, kad Enable ir zems.

Nav arī skaidrs, ko dara flash_lcd() - norausta tikai Enable, un viss? Kā jau teicu, brīdī, kad E nolec no H uz L, čips nolasa, kas uz maģistrāles un interpretē. A Tev tur sazin kas tajā brīdī, visdrīzāk veca komanda vai dati.

----------


## Hank



----------


## Vikings

Pieliec poci un pagrozi. Man ir bijuši LCD, kuri rāda tikai mazā poča grozīšanas diapazonā.

----------


## Hank

> Pieliec poci un pagrozi. Man ir bijuši LCD, kuri rāda tikai mazā poča grozīšanas diapazonā.


 Vispār nekāda efekta ( t.i., nemainās absolūti nekas .. pat kontrasts tiem kvadrātiņiem ).

Ja palaižu bez komandu sūtīšanas uz LCD, minimāli, bet kontrasts mainās ..

----------


## karloslv

Ok, tagad komandas un datu funkciju kods izskatās labi. Tātad, cik saprotu, strādāsi 8 bitu režīmā (visu PBx pieslēdzi pie LCD?). Ceru arī, ka RW, RS un E pieslēgti. RW tev defaultā uz 0 jābūt - pārbaudīji arī elektriski?

Inicializācija Tev izskatās pareiza. Esmu gan strādājis tikai ar 2 rindiņu displejiem, un tagad nezinu, vai function set 0b00111111 ir pareizais - ātrumā neatrodu datašītā, kādiem jābūt N un F. Citādi neko aizdomīgu neredzu. Esmu gan ķēpājies vairākas reizes, kamēr piedabūjis tos kontrolierus strādāt robusti (it sevišķi 4 bitu maģistrāles režīmā). Arī minētais kontrasta spriegums ir būtisks - ja viss pareizi, principā būtu jāvar 'pārgaismot' displeju pie galēja poča stāvokļa, tā, ka redzami matricas punkti.

Upd: Klau, es te sāku lasīt par 4x20 - cik saprotu, tur ir divi HD44780 kontrolieri. Kā viņi tur izdomā, kurš ko darīs, meklē labākā datašītā. Šis ir konkrēts ķīniešu data-shits... Te arī var iemest aci: http://www.spickles.org/projects/4-bit-lcd/

----------


## Hank

> Ok, tagad komandas un datu funkciju kods izskatās labi. Tātad, cik saprotu, strādāsi 8 bitu režīmā (visu PBx pieslēdzi pie LCD?). Ceru arī, ka RW, RS un E pieslēgti. RW tev defaultā uz 0 jābūt - pārbaudīji arī elektriski?
> 
> Inicializācija Tev izskatās pareiza. Esmu gan strādājis tikai ar 2 rindiņu displejiem, un tagad nezinu, vai function set 0b00111111 ir pareizais - ātrumā neatrodu datašītā, kādiem jābūt N un F. Citādi neko aizdomīgu neredzu. Esmu gan ķēpājies vairākas reizes, kamēr piedabūjis tos kontrolierus strādāt robusti (it sevišķi 4 bitu maģistrāles režīmā). Arī minētais kontrasta spriegums ir būtisks - ja viss pareizi, principā būtu jāvar 'pārgaismot' displeju pie galēja poča stāvokļa, tā, ka redzami matricas punkti.


 Bildēs augšā redzams, kas un kā saslēgts - visi DBx pieslēgti pie B porta, RS / RW ( ports A, output low ) / EN pie A porta.

Par function set un NF runājot:




> (N:2-line/1-line)and, display font type (F:5×11 dots/5×8 dots)


 Kas vēl varētu būt pie vainas ?

Tikai nesakiet, ka konkrētais modelis nav HD44780  ::   ::

----------


## karloslv

Es pieeditēju savā postā - ka 4x20 manuprāt strādā sarežģītāk. Standarta HD44780 komandu setā nav nekā, kas norādītu uz 4 rindiņām. Meklē labāku dokumentāciju (es pats neesmu ar 4 rindiņu displejiem strādājis).

----------


## Hank

Vēl kādas idejas, kādēļ tas apararāts negrib mani klausīt ?




> Es pieeditēju savā postā - ka 4x20 manuprāt strādā sarežģītāk. Standarta HD44780 komandu setā nav nekā, kas norādītu uz 4 rindiņām. Meklē labāku dokumentāciju (es pats neesmu ar 4 rindiņu displejiem strādājis).


 Ja pareizi saprotu, tad 4 rindu displejs strādā tāpat kā 2 rindu ( t.i., 1. / 3. un 2. / 4. ir savienotas; pirmās overflow gadījumā aiziet uzreiz uz trešo ).

----------


## karloslv

Nu, piemēram, cik saprotu, 20x4 displejam simbolu izmērs ir 5x8 - tas jau atšķiras no tā, ko Tu sūti (Tev F=1). 
Vēl šur tur esmu redzējis, ka Function Set inicializācijā sauc 3 vai 4 reizes (http://www.optrex.com/pdfs/Dmcman_full.pdf).

----------


## Andrejs

> Ja pareizi saprotu, tad 4 rindu displejs strādā tāpat kā 2 rindu ( t.i., 1. / 3. un 2. / 4. ir savienotas


 tā arī ir - 3 rindas 1 simbols ir 1 rindas 21 simbols.

----------


## Hank

> Nu, piemēram, cik saprotu, 20x4 displejam simbolu izmērs ir 5x8 - tas jau atšķiras no tā, ko Tu sūti (Tev F=1). 
> Vēl šur tur esmu redzējis, ka Function Set inicializācijā sauc 3 vai 4 reizes (http://www.optrex.com/pdfs/Dmcman_full.pdf).


 Paldies par linku uz manuāli, bet nekur tālāk par to, kur biju, netieku .. izmēģinātas visas iespējamās ( zināmās ) kombinājis - efekta nekāda.

Vienīgais, kas mainās, ir izgaismotās rindas .. tad viņas ir 2. un 4., tad atkal visas, bet daudz blāvāk, tad atkal 2. un 4. ar 1. un 3. līdz pusei.

Interesanti, no kā tas ir atkarīgs un ko no tā secināt ?

Man jau sāk vilkt uz strīdēšanos ar pārdevējiem ..  ::   ::

----------


## JDat

> Man jau sāk vilkt uz strīdēšanos ar pārdevējiem ..


 Nevajag uzreiz tā... Tev, protams, ir tiesības, bet... Ko darīt ja tev nav taisnība (LDC OK). ko ārdevējiem tādā gadījumā darīt? Iekasēt sāpju naudu no tevis par dīkstāvi?

----------


## abergs

Cik esmu ņēmies ar LCD displejiem vispirms sagatavo datus uz pārējām displeja kājām, un tad tikai 
ieslēdz un izslēdz ENABLE ,piem.:



```
void lcd_send_nibble( BYTE n ) {
      lcd.data = n;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(2);
      lcd.enable = 0;
}
```

 Šis gan fragments no PICiem, LCD2x16 un 4-bitu vadības bet vienmēr ir strādājis.

----------


## Hank

> Nevajag uzreiz tā... Tev, protams, ir tiesības, bet... Ko darīt ja tev nav taisnība (LDC OK). ko ārdevējiem tādā gadījumā darīt? Iekasēt sāpju naudu no tevis par dīkstāvi?


 Nav tik traki .. pirkts, lai lietotu, ne nestu atpakaļ  :: 




> Cik esmu ņēmies ar LCD displejiem vispirms sagatavo datus uz pārējām displeja kājām, un tad tikai 
> ieslēdz un izslēdz ENABLE ,piem.:
> 
> 
> 
> ```
> void lcd_send_nibble( BYTE n ) {
>       lcd.data = n;
>       delay_cycles(1);
> ...


 Pieņemot, ka pārējais kods ir ok, bez izmaiņām ..

----------


## abergs

Gan PICiem bet varbūt noder:
http://www.ccsinfo.com/forum/viewtopic.php?t=28268

----------


## habitbraker

Kad es meegjinaaju palaist savu pirmo char-displeju, es arii nomociijos, kameer piedabuuju kautko paraadiit uz displeja.
Un beigu beigaas izraadiijaas, ka nebiju atsleedzis iekaartu(komparatoru laikam) un viens pins neshanceeja, kaa I/O izvads... ::

----------


## Hank

> Kad es meegjinaaju palaist savu pirmo char-displeju, es arii nomociijos, kameer piedabuuju kautko paraadiit uz displeja.
> Un beigu beigaas izraadiijaas, ka nebiju atsleedzis iekaartu(komapratoru laikam) un viens pins neshanceeja, kaa I/O izvads...


 Ņemot vērā to, ka programmators dala pāris pinus ar pašu LCD, par šo vienā brīdī ar aizdomājos, bet visu lieko / konfliktējošo atslēdzot situācijā nekas nemainās.

Labs i .. rīt darba diena - jāmet ( pagaidām ) miers.

----------


## karloslv

Nu, izskatās, ka Tev galva uz pleciem, viss, ko pagaidām varu ieteikt - meklē, pārbaudi, atslēdz, pieslēdz, skaties osciloskopā, ja vajag, u.tml. Gan jau kaut kāda muļķīga negaidīta kļūda būs. Vēl, ja ir pa rokai kāds droši ejošs (piemēram, 16x2) displejs, var pamēģināt to pieslēgt uz brīdi.

----------


## habitbraker

Lai tieshaam izsleegtu dzelzhu/softa vainu, iesaku nosimuleet kodu. Piemeeram ISIS proteus (Var trial nokachaat) Ir gan avr, gan 4*20 displeji.

----------


## Vikings

Tas, ka izmainās no divām manāmi degošām rindām uz četrām blāvi degošām nozīmē, ka vismaz komanda priekš pārslēgšanās divrindu režīmā ir saprasta un, laikam, displejs arī ir ieslēgts, sen neesmu ar šiem darbojies. Bet ir skaidrs, ka komandas līdz LCD nonāk, bet sīkumos lauzties šobrīd slinkums.

----------

