Dobrý den,
už několik dní se trápím s připojením 2x16 alfanumerického displeje k ATMega8. Displej je funkční protože u Dev. sady s Charon II od HW-Group mi funguje(použivají svoji knihovnu pro ATMega128 - nepodařilo se ji přepsat na ATMega8). V manuálu píší že řadič je HD44780 našel jsem si jak datasheet tak český návod na práci s ním na strance: doveda.byl.cz/lcd/index.htm
Zkoušel jsem inicializaci napsat podle tohoto návodu, ale pořad se nedaří nic vykreslit. Na displeji je po celou dobu vykreslena jedna řádka čtverecků. Chci to ovládat na portuD konkrétně na pinech: RS:PIN2, R/W:PIN3, E:PIN4, D0:PIN5, D1:PIN6, D2:PIN7, D3:PIN8
Atmega je nastavená pro chod na 16MHz. Piny displeje D0-D3 jsou připojeny na zem.
Jsem už opravdu zoufaly časi sem nastavoval pomocí _delay_us() funkce z AVR knihovny. Použil jsem i některé cizí hotové knihovny, ale žádna mi nefunguje. Za kazdý nápad budu vděčný.
nejhorší je, že i když zkusím hotový kód. Připojím LCD na piny uvedené zde v návodu: protostack.com/forum/blog.php?u=2&b=32&c=1
přesně tak jak to tam dělají oni tak to nefunguje.
neměl by někdo ozkousenou knihovnu pro atmegu8 a tento display?
Máš v projektu nastavenou frekvenci mcu? S tou totiž pracují funkce jako delay_us a podobné. Na té stránce nemají krystal, jedou tedy z interního RC - pomaleji než ty. Pokud by jsi měl pauzy při inicializaci displeje nedostatečné, patrně ho nerozjedeš.
už zkouším i takove blbosti jako jestli mi dobře sedí konektor v nepájivém poli a nic. Jestli tomu dobře rozumím tak ten LCD je hodne závislej na těch prodlevách? Jaká je asi tak tolerance?
vypada to, že jsem nasel nejakou aspon částečně funkční knihovnu. Opravdu asi bude problem s tím časováním. Chci vykreslit slovo “pokus” a vykreslí mi to pouze pismeno p a pak jen bliká kurzor. Navíc první řádek je jako přelitý černou barvou. Chvíli je ale vidět že jede normálně. Du tu knihovnu ješte překontrolovat.
edit: přebarvení vyřešil trimr připojený na Kontrastní PIN. Časování bude ale určitě špatně vypíšu delší řeťězec: “ABCDEFGHIJK” a displej mi zobrazí pouze “AE”
to bych neveril jak citlivé to může byt. kdyź desku zapínám a vypínám jednou z 10ti pokusu zobrazí celej řádek dobre.
To se musí řešit jinak než přes tu funkci _delay() podezřívám jí že neni moc přesná.
Ja pouzivam v programu AVR Studio knihovnu od jump.to/fleury
Zapojene to mam dle druheho pripadu 3 draty Reg Sel,R/W,Enable a 4 draty D4-D7 vse zapojene na port D tak, ze pin 0-pin 3 jsou D7-D4 a pin 5,6,7 jsou zapojene na displey 4,5,6.
Je potreba pridat lcd.c a lcd.h do projektu a upravit lcd.h odpovidajicim spusobem
#define LCD_PORT PORTD /**< port for the LCD lines */
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
#define LCD_RS_PORT LCD_PORT /**< port for RS line */
#define LCD_E_PORT LCD_PORT /**< port for Enable line */
#define LCD_RW_PORT LCD_PORT /**< port for RW line */
#define LCD_DATA0_PIN 0 /**< pin for 4bit data bit 0 */
#define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */
#define LCD_DATA2_PIN 2 /**< pin for 4bit data bit 2 */
#define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */
#define LCD_RS_PIN 5 /**< pin for RS line */
#define LCD_RW_PIN 6 /**< pin for RW line */
#define LCD_E_PIN 7 /**< pin for Enable line */
děkuji za knihovnu. Bohužel taky nešla. Ta má začala fungovat ve chvíli když jsem zakomentoval tu prvnotní 8.b komunikaci a rovnou nastavil 4. bit. Fungují oba řádky a zatím se zdá, že fungují i texty.
Tak me ten displej zacal fungovat s touhle knihovnou prakticky hned, je divne ze tobe to nefunguje, tipoval bych nejakou chybu v nastaveni krystalu, ja jsem pouzival zakladni nastaveni s 1Mhz internim oscilatorem a pro to je taky program odladeny, nicmene pokud ti funguje ta tvoje, tak neni co resit.