problémy s MikroPascal a LCD ATM1601A a GDM1602A

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

problémy s MikroPascal a LCD ATM1601A a GDM1602A

#1 Příspěvek od Ouch »

Ahoj. Neporadil by mi nekdo s naprogramováním PIC16F88 pro LCD display ATM1601A, nebo GDM1602A. testoval jsem 4bit i 8bit verzi ale nechce to fungovat. Po zapnuti se tvari vse ok. Jde mi posouvat kurzor, blika atd. Nejde ale psat zadny znak ani retezec. Pomozte pls.
Program pro 4bit vypada takto:

Osccon := %01110110;
TrisA := 0;
TrisB := 0;
Delay_ms(500);
SetBit(PortA,3);
Delay_ms(500);
ClearBit(PortA,4);
Lcd_Config(PORTB,7,6,5,4,PORTA,2,0,3);
Delay_ms(1000);
Lcd_Cmd(LCD_BLINK_CURSOR_ON);
Delay_ms(2000);
Lcd_Out_cp('t');
Delay_ms(5000);
end.
Uživatelský avatar
mety
Příspěvky: 634
Registrován: 06 bře 2005, 00:00
Bydliště: Planeta Zem

#2 Příspěvek od mety »

Prečo to tak komplikuješ?Veď sa to da aj jednoduchšie.V mikropascale je veľa príkladov,stači si len vybrať :)

napr:

program lcd_demo;

begin
Lcd_Init(PORTD); // Tu dosadiš port na ktorom maš LCD
Lcd_Cmd(LCD_CLEAR);
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(2, 1, 'mikroElektronika'); //Tu napišeš text,ktory sa ma zapisať
end.
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

#3 Příspěvek od Ouch »

jj, ale kdyz nemam PIC zapojeny podle toho jak vyzaduje standartní konfigurace tak potrebuju pouzit Lcd_Config. Ale pokud myslis ze tohle pomuze tak prekopu tu desku :cry: . Zatim dik jdu to otestovat.
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

#4 Příspěvek od Ouch »

Tak ani tohle nefunguje

program Display;
begin
Osccon := %01110110;
TrisA := 0;
TrisB := 0;
Delay_ms(500);
Lcd_Init(PORTB);
Lcd_Cmd(LCD_BLINK_CURSOR_ON);
Delay_ms(3000);
Lcd_Out(1, 1, 'text');
Delay_ms(5000);
end.

Nevim jestli to neni treba nejakym nastavenim, nebo treba spatnej typ displeje. Zapojeny by to melo byt dobre ale proste to nejde.
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#5 Příspěvek od mikollar »

skus vyvod R/W pripojit bud na PORTB,0 alebo natvrdo na - pol
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

#6 Příspěvek od Ouch »

jj. Pin R/W mam pripojeny na Gnd ale nefunguje to. Trapim se s tim uz dost dlouho a fakt uz jsem bezradnej. Nemuze to byt treba nejaka chyba MikroPascalu? Testoval jsem ver.6 , ver.7 a nyni ver.8. Nebo treba ze pouzivam PIC16F88, nebo frekvence 8MHz vnitreni oscilator? Jinak vse slape protoze na pinech se hodnoty meni ale display vzdycky ma polovinu tmavou. Neukaze se zadne pismenko ani jinej znak. Display je 100% v poradku protoze je odzkouseny na jine aplikaci (ne ode mne). Mam jednoradkovej i dvouradkovej a oba se chovaji podobne.
Uživatelský avatar
mety
Příspěvky: 634
Registrován: 06 bře 2005, 00:00
Bydliště: Planeta Zem

#7 Příspěvek od mety »

V mikropascale chyba neni,ja to použivam dosť často .
Skus toto:


program test;
var pozdrav: array[6] of char;

begin
TRISB := 0; // PORTB je výstupny
Lcd_Init(PORTB); //Inicializacia LCD
Lcd_Cmd(LCD_CURSOR_OFF); // Vypni kurzor
pozdrav := 'Ahoj';
Lcd_Out(1, 1, pozdrav); // Zapiš data na display
end.
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

#8 Příspěvek od Ouch »

Tak tohle taky nefunguje. Zapojeni by melo byt spravne podle helpu v Mikropacalu. Jeste me napada jestli neni problem s tema displayema jestli nepouzit nejake jine druhy. Tohle je z GM jednoradkovej a na zadni strane ma ATM1601A v2.0, ten druhej je dvouradkovej a vzadu je napsano GDM1602A ver 2.0 . Nevim v cem by mel byt jinak problem. Fakt uz jsem testoval vsechny moznosti ale porad stejny vysledek. Treba by to slo s jinym PICem.?
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

#9 Příspěvek od Ouch »

Tak se mi podarilo rozbehnou ten LCD dispaly ale s procesorem PIC16f877A po 8 bit komunikaci. Program je zde:
program Dispaly877A;
var pozdrav: array[6] of char;

begin
TRISB := 0;
TrisA := 0;
TrisC := 0;
TrisD := 0;
PortA := %00010000;
Lcd8_Config(PortC, PortD, 0,1,3,7,6,5,4,3,2,1,0);
Delay_ms(500);
PortA := %00000000;
LCD8_Cmd(LCD_CLEAR);
Lcd8_Cmd(LCD_CURSOR_OFF); // Vypni kurzor
pozdrav := 'Ahoj';
Lcd8_Out(1, 1, pozdrav); // Zapiš data na display
Lcd8_Out(2, 1, 'druha radka');
end.

ale dost by me zajimalo proc to nechodi s 16f88.
Prosim nenapada nekoho neco?
Docela by me to pomohlo.
Uživatelský avatar
mety
Příspěvky: 634
Registrován: 06 bře 2005, 00:00
Bydliště: Planeta Zem

#10 Příspěvek od mety »

Mne to stale fungovalo,ja použivam procesory 16F877A :)
No ale na tvoju otozku prečo to nechodi z 16F88 nepoznam odpoveď :?
Uživatelský avatar
Ouch
Příspěvky: 8
Registrován: 11 úno 2003, 00:00
Bydliště: Volyně

#11 Příspěvek od Ouch »

Ahoj. Tak uz to chodi. Staci pridat do programu ANSEL := %00000000; a je to. Patrne nektere bity na portu A ovlivnuje AD prevodnik tak kdyby nekdo mel podobny problem tak tohle je reseni. Jinak diky za rady. Programek vypada nejak takhle:

program Display;
begin
Osccon := %01110110;
ANSEL := %00000000;
TrisA := 0;
TrisB := 0;
Delay_ms(500);
SetBit(PortA,3);
Delay_ms(500);
ClearBit(PortA,3);
Lcd_Init(PORTB); // Initialize LCD on PORTB
Lcd_Cmd(LCD_BLINK_CURSOR_ON); // Turn off cursor
Delay_ms(100);
Lcd_Out(1, 1, 'text'); // Print text at LCD

end.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“