i2c knicnica pre lcd 1602 hd44780 PCF8574

Není to náhodou pro tento modul? Občas je i na Aukru, taky jsem se na něj díval…

ano je to podobny modul
už som niečo našiel aj sa mi to podarilo skompilovat, ale ešte to nie je úplne funkčné
zdrojak som našiel tu computerheld.de/i2clcd/

ak by mal niekto záujem prikladam moje trocha upravene aby ich išlo skompilovať. main program je použity ako priklad z tej stránky.
Skúšam to zatial simulovat v proteus isis v.7. Z I2C lezú nejaké dáta, ale na displeji nič, tak ak by ste niekto mali čas/zaujem pozrite sa na to. Prikladam tie moje zdrojaky ktore idú skompilovat. Možno robím chybu v adresovaní lcd alebo samotného pcf.
i2clcd_pcf8574_interface.rar (68.3 KB)

Zkusil jsem to s ATmega8. PCF8574 a PCF8574A má každý jinou i2c adresu, tak je nutné zadat v programu podle toho co je osazené na modulu.
PCF8574_LCD16x2.zip (45.6 KB)
PCF8574_LCD16x2.GIF

moc ti dakujem :stuck_out_tongue: , tie funkcie si si napísal sám?

Ano, podle datasheetu.

Zdravím,

chci se zeptat zda-li to bude fungovat i na displeji 20x4?

Děkuji

Pokud používá ten LCD stejné časování jako typ s HD44780, tak to bude fungovat, jen je potřeba přidat do funkce Lcd_Gotoxy adresy pro další řádky.

Např: pro typ LCD 4x20znaků (AMC2004AR-B) je potřeba ještě zvýšit počáteční čas na 40ms.
Expander + LCD 4x20znak.zip (75.6 KB)

Dotaz na jeden řádek v programu expanderu:

Co dělá tento řádek programu? Nikdy jsem tohle neviděl, takže abych nebyl za troubu :wink:

static FILE mystdout = FDEV_SETUP_STREAM(lcd_putchar,NULL,_FDEV_SETUP_WRITE);

To je kouzlo, které zařídí že funkce printf() bude zapisovat do Lcd.

Kompletní příklad (pro zápis do uart, ne do Lcd) je tady:
nongnu.org/avr-libc/user-man … out_malloc

:slight_smile: Díky, taky sem si to mohl zkusit vygooglit :wink:

Ahoj fšem :wink:
Tak jsem zkoušel předcházející programy pro LCD s expandérem PCF8574, a nějak se nedaří. Ani jeden program mi nefunguje, a to sem už zoufale Googlil snad všude. Přitom to vypadá že procesor s expandérem komunikuje, jedný co se mi zdá divný je že všude uvádí u toho LCD adresu 0x27, ale když se dívám do datasheetu, tak by to mělo mít adresu 0b01001110 což je 0x4E, takže nevim, každopádně jsem zkoušel všechno a prdlajs. Zkouším to na tomto displeji: ebay.com/itm/201125617027?_trksid=p2060778.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Procesor používám ATmegu16 na interních 8MHz.

Data do LCD asi nějaký lezou, ale asi špatně, protože buď tam není nic, a nebo to dělá hokusy pokusy.

Zkoušeli jste někdo výše uvedené programy? A fungovali Vám?

Díky za zkušenosti

Adresa je správně - 0x27. Adresu do prvního bytu usadíš na bity 7-1 (tedy uděláš z toho 0x4E) a nejnižší bit je R/nW. Výsledek je tedy takový, že 0x4E = zápis do I2C na adrese 0x27, 0x4F = čtení z I2C na adrese 0x27. Pokud správně na začátku inicializuješ expander (nastavíš správně I/O piny expanderu), mělo by to vše šlapat správně. Díky používatému expandéru s LCD musíš komunikovat 4-bitově. Důležitá je i rychlost komunikace. Také jsem se s expandérem pro LCD pral a přesto, že LCD knihovna (vlastní, ne odněkud stahovaná) fungovala tak, jak má, tak s expanderem to dělalo blbosti. Musel jsem snížit rychlost komunikace z MCU. Ten běžel na IntRC 8 MHz a hodinové pulzy jsem jednou instrukcí nahazoval a hned následující instrukcí shazoval -> příliš krátký pulz a expander jich hodně nezaznamenal. Stačilo mezi nastavení a shození pinu dát tuším, že 2 NOPy (nebo jiné instrukce, pokud nechceš ztrácet čas). Já na LCD používám raději PCA9555. Má 2 brány a data do displeje zapisuju 8-bitově. Přitom mám ještě dostatek pinů na EN a RS signály + zapínání podsvícení LCD. Ale je fakt, že modul k LCD jsem si dělal sám.

No já sem nad tím uvažoval taky že si to udělám sám, ale chtěl jsem to vyzkoušet s tím displayem z číny, co to udělá. Asi to bude chtít jinej přístup :wink:

Ja som tiež kúpil displej z číny s prevodníkom, síce len 16x2 a použil som knižnice z tohto linku

davidegironi.blogspot.sk/2013/06/an-avr-atmega-library-for-hd44780-based.html#.VNoW8yw0_aV

atmega8 na 8MHz interný oscilátor pri komunikačnej rýchlosti 100k, procesor na kontaktnom poli, displej pripojený cca 30cm káblikom (vystrihnutým z PATA/IDE kábla) a komunikácia úplne bez problémov. Treba tiež dať pozor na zapojenie displeja k prevodníku, v samotnom článku je jedno zapojenie, v komentároch pod článkom sú inak pripojené piny LCD k prevodníku. Mne fungovalo to v komentároch.

Snáď pomôže…

Zítra to vyzkouším, a uvidíme, děkuju. Akorát co se dívám tak tam má UART, a to mi není jasný proč. Uart v tom schématu vůbec nepoužívá.

Ten uart sice nepoužíva, ale posiela na neho presne to isté, čo aj na displej. Ono pri knižnici má aj ukážkový soft (ten, čo je aj na videu - počítanie do 9 pri zapnutom podsvietení a potom pri vypnutom podsvietení) a tam presne to, čo ide na displej, ide aj do PC cez seriový port. Je to jasné z výpisu kódu:

[code] for(i=0; i<p; i++) {
char buf[10];
itoa(i, buf, 10);
lcd_gotoxy(0, line);
lcd_puts(“i= “);
lcd_gotoxy(3, line);
lcd_puts(buf);
line++;
line %= 2;
uart_puts(buf);
uart_puts(”\r\n”);
_delay_ms(500);
lcd_clrscr();

	}[/code]

asi to podstatné v tomto softíku …

Tak vše funguje jak má, celé jsem to ořezal na minimum. Děkuji moc za pomoc. Jinak to s tim UART jsem věděl, jen mi bylo divný že tam posílá data a ve schematu to nemá nikam vyvedený.

A len tak pre info, čo tam bolo, že to nešlo?

No, co bylo první ,tak byly proházené ty piny na tom modulu, koho by napadlo, že se to dělá ve dvou verzích, :wink: , kdybych si to ale blbec proměřil bylo o problém míň. Další co bylo, tak překladač hlásil chybu v Uartu, tak sem ho odseparoval a bylo, nijak jsem nezkoumal co tam bylo špatně, na nic jsem ho nepotřeboval. Potom jsem zapomněl nastavit LCD, že mám 4x20 a né 2x16. Jo a nebylo nikde definovaný F_CPU, to hlásilo další chybu, všechno jsem to upravil, a jede to jak po másle. Prostě chyby začátečníka :slight_smile:
Takže aktuálně to jede na Atmega16, internal RC osc. 8 MHz. Pokud někdo bude chtít program, fuknu ho sem. Jo je to dělaný v Atmel Studiu 6.2.

Jinak stanleyv, moc děkuju i ostatním, bez vaší pomoci a nápověd bych to asi nedal :slight_smile:

No nemáš zač, od toho sme tu :slight_smile:

Inak si myslím, že by si to dal aj bez nás, len by to trvalo o doooooosť dlhšie a tie nervy, keď po troch prebdených nociach by si si premeral, čo je kde a zistil, prečo to nefachčí … no nechcel by som byť po blízku a počúvať tie vybrané slová :smiley:

Hlavné je, že sa to takto neodpáli … to by si asi nebol rád vôbec :slight_smile:

nech sa darí…

P.S. podeľ sa potom o ďalšie úspechy :slight_smile: