|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Gregor Začetnik
Pridružen/-a: Pon Dec 2004 10:39 Prispevkov: 11
|
Objavljeno: Pon Dec 20, 2004 10:48 am Naslov sporočila: LCD: cmc216n02 - 16 znakov, 2 vrstici |
|
|
vse sorte sem ze probal, pa mi ne uspe napisat programa, da bi nekaj izpisal na lcd (cmc216n02 - 16 znakov, 2 vrstici) z atm89s2051.
A mi lahko kdo pomaga?
plis, napisi prog.bas
tile mi ne delajo.... ali bi morali?!?
poskus 1:
************************************************************
Dim Lucka As Bit 'deklaracija spremenljivke Lucka
Lucka = 0
Do
Lucka = 0 'prizgi
P3.7 = Lucka
Wait 2
Lucka = 1 'ugasni
P3.7 = Lucka
Waitms 500
Config Lcdpin = Pin , Db4 = P3.1 , Db5 = P3.2 , Db6 = P3.3 , Db7 = P3.4 , E = P3.5 , Rs = P3.0
Rem with the config lcdpin statement you can override the compiler settings
' Bascom8051 & pg303
'LCD: cmc216n02 - 16 znakov, 2 vrstici
Config Lcd = 16 * 2 'configure lcd screen
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines
'$LCD = address will turn LCD into 8-bit databus mode
' use this with uP with external RAM and/or ROM
' because it aint need the port pins !
Cls 'clear the LCD display
Lcd "Hello world." 'display this at the top line
Loop
End
poskus 2:
*************************************************************
'Dim Lucka As Bit 'deklaracija spremenljivke Lucka
'Lucka = 0
Do
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P3.7 , Rs = P1.0
Rem with the config lcdpin statement you can override the compiler settings
' Bascom8051 & pg303
'LCD: cmc216n02 - 16 znakov, 2 vrstici
'Config Lcd = 16 * 2 'configure lcd screen
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines
'$LCD = address will turn LCD into 8-bit databus mode
' use this with uP with external RAM and/or ROM
' because it aint need the port pins !
Cls 'clear the LCD display
Lcd "Hello world." 'display this at the top line
Loop
End
*************************************************************
*************************************************************
pini 1-14
vss (-) ---- r=22k ---- vdd (+) ---- vee( na r=22k) ---- rs ---- r/w ----- ena ----- d4 ---- d5 ----- d6 ---- d7
************************************************************* _________________ Gregor |
|
Nazaj na vrh |
|
|
MarE Profesionalec
Pridružen/-a: Pet Nov 2004 23:38 Prispevkov: 177
|
Objavljeno: Pon Dec 20, 2004 11:28 am Naslov sporočila: |
|
|
Precej komentarjev... ampak kje pa inicializiraš LCD? Ali je to kar "avtomatsko" ?
Poglej, če se lahko kaj naučiš iz tegale sourca (sicer je C, ampak vseeno):
Koda: | #include <reg51.h>
#define LCD_CLS 0x01 /* koda za brisanje ekrana */
#define LCD_HOME 0X02 /* zacetek */
#define LCD_ON 0x0e /* vklop prikaza */
#define LCD_CUROFF 0x0c /* izklop kurzorja */
#define LCD_4BIT 0x2c /* nastavitev nacina delovanja */
#define LCDport P1
sbit RS = LCDport^4; /* RS signal LCD */
sbit EN = LCDport^5; /* enable LCD */
void delay(unsigned char count) /* zakasnitev (count * 10 us) */
{ /* ni tocna zakasnitev */
unsigned char i;
for (i=0;i<count;i++);
}
void delay_ms(unsigned int time) /* zakasnitev v ms */
{
unsigned int j;
for (j=0;j<time;j++)
delay(105);
}
void LCD_write (unsigned char znak)
{
LCDport &= 0xf0;
LCDport |= znak >> 4;
EN = 1;
delay(1);
EN = 0;
LCDport &= 0xf0;
LCDport |= (znak & 0x0f);
EN = 1;
delay(1);
EN = 0;
}
void LCD_wrcom (unsigned char znak)
{
RS = 0;
LCD_write (znak);
}
void LCD_wrdta (unsigned char znak)
{
RS = 1;
LCD_write (znak);
}
/*********************************************************************/
void LCD_init()
{
delay_ms (15);
LCDport = 0xf3; // 3 x 8-bit mode, 1 x 4-bit mode
RS = 0;
delay(1);
EN = 0;
delay_ms (6);
EN = 1;
delay(1);
EN = 0;
delay_ms (1);
EN = 1;
delay (1);
EN = 0;
delay_ms (1);
EN = 1;
LCDport &= 0xfe;
EN = 0;
LCD_wrcom(LCD_4BIT);
// LCD_on();
// LCD_cls();
// LCD_home();
// LCD_dld(SLOfont);
// LCD_home();
}
|
|
|
Nazaj na vrh |
|
|
Gregor Začetnik
Pridružen/-a: Pon Dec 2004 10:39 Prispevkov: 11
|
Objavljeno: Pon Dec 20, 2004 11:48 am Naslov sporočila: LCD: cmc216n02 - 16 znakov, 2 vrstici (2nd) |
|
|
najlepša hvala:)
kako to vpisem v IC ali kako preizkusim program? _________________ Gregor |
|
Nazaj na vrh |
|
|
MarE Profesionalec
Pridružen/-a: Pet Nov 2004 23:38 Prispevkov: 177
|
Objavljeno: Pon Dec 20, 2004 1:08 pm Naslov sporočila: |
|
|
??? Rabiš prevajalnik, linker in programator, ki bo to spravil v čipuzelj. |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Pon Dec 20, 2004 2:31 pm Naslov sporočila: |
|
|
Gregor,
kaj ti pa napiše na LCD-ju? Ali sploh kaj napiše?
Lp
Jure |
|
Nazaj na vrh |
|
|
Gregor Začetnik
Pridružen/-a: Pon Dec 2004 10:39 Prispevkov: 11
|
Objavljeno: Pon Dec 20, 2004 5:04 pm Naslov sporočila: IMA KDO IZKUŠNJE? LCD:cmc216n02 - 16 znakov, 2 vrstici (3rd) |
|
|
oh, hvala vam za pomoč. sploh nisem zares pričakoval pomoči - izgleda, da je vredno poizkusit:)))
2-vrstični LCD. ko vse prklopim, je prva vrstica zapolnjena s polnimi znaki.
2. vrsta pa je prazna.
zal mi je, ko imam 4 take displaye,
mam bascom
pg302,
a ne dela.
no, vsaj vem, da je tezava le v programu (mislim da ne LCD, k so novi)
ko bi vsaj nekdo poslal preizkušen *.bas za ta LCD.
algoritem, naj bi bil temu podoben.
NIKAKOR ne morem pogruntat v čem je finta - kje je napaka ...
?!?
************************************************************
Do
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 E = P3.7 , Rs = P1.0 ' določimo pine
' LCD: cmc216n02 - 16 znakov, 2 vrstici
'Config Lcd = 16 * 2 'tukaj konfiguriramo tip LCD-ja
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses
'over 2 lines
Cls 'izbriši LCD displej
Lcd "Hello world." 'izpisi tekst
Loop
End _________________ Gregor |
|
Nazaj na vrh |
|
|
strobos Mojster
Pridružen/-a: Tor Jan 2004 17:26 Prispevkov: 32 Kraj: LJ
|
Objavljeno: Pon Dec 20, 2004 5:31 pm Naslov sporočila: |
|
|
Pozdrav,
za temle ukazom:
Lcd "Hello world." 'izpisi tekst
moraš dati eno zakasnitev npr.:
wait 1
drugače ti to takoj zbriše.
Lp |
|
Nazaj na vrh |
|
|
strobos Mojster
Pridružen/-a: Tor Jan 2004 17:26 Prispevkov: 32 Kraj: LJ
|
Objavljeno: Pon Dec 20, 2004 5:35 pm Naslov sporočila: |
|
|
Aja pa config lcdpin in config lcd daj iz zanke do loop-daj pred zanko.
Probaj in poročaj kako je.
Lp |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Pon Dec 20, 2004 8:09 pm Naslov sporočila: |
|
|
Citiram: | 2-vrstični LCD. ko vse prklopim, je prva vrstica zapolnjena s polnimi znaki.
2. vrsta pa je prazna.
|
Kot je napisal mare LCD ni inicaliziran. (tipični prikaz) Torej preden se ne "postavi" ne bo sprejemal nič. |
|
Nazaj na vrh |
|
|
SimonS Profesionalec
Pridružen/-a: Pon Jan 2004 17:52 Prispevkov: 181 Kraj: Kobarid
|
Objavljeno: Pon Dec 20, 2004 8:24 pm Naslov sporočila: |
|
|
Ziv
Jaz dodam se ukaza
Cursor Off
Display On
Sicer pa mislim, da to ni glavni vzrok. Lahko predvidevam, da uporabljas 2051 ali 4051 in kot vidim uporabljas tudi pin p1.0, ki pa je na teh uC-jih brez pull up upora in zadeva ne more funkcionirati, ce pa slucajno dela pa ne dela pravilno! Dodaj se en pull up upor 10 proti VCC in zadeva bi skoraj morala delati _________________ Skupaj smo mocnejsi
LP Simon |
|
Nazaj na vrh |
|
|
strobos Mojster
Pridružen/-a: Tor Jan 2004 17:26 Prispevkov: 32 Kraj: LJ
|
Objavljeno: Pon Dec 20, 2004 10:08 pm Naslov sporočila: |
|
|
Tisti upor ni 10ohm ampak 10kohm ali pa 4,7kohm ali pa nekaj takega probaj.
Lp |
|
Nazaj na vrh |
|
|
SimonS Profesionalec
Pridružen/-a: Pon Jan 2004 17:52 Prispevkov: 181 Kraj: Kobarid
|
Objavljeno: Tor Dec 21, 2004 5:51 pm Naslov sporočila: |
|
|
Wops se opravicujem 10K sem imel v mislih ja. Vsekakor je tudi 4k7 prav tako dober. Mogoce celo boljsi.... Vsakem primeru vrednost ni kriticna. _________________ Skupaj smo mocnejsi
LP Simon |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Sre Dec 22, 2004 7:55 am Naslov sporočila: |
|
|
Hoj,
Citiram: | Do
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 E = P3.7 , Rs = P1.0 ' določimo pine
' LCD: cmc216n02 - 16 znakov, 2 vrstici
'Config Lcd = 16 * 2 'tukaj konfiguriramo tip LCD-ja
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses
'over 2 lines
Cls 'izbriši LCD displej
Lcd "Hello world." 'izpisi tekst
Loop
End |
1. Do ukaz prestavi pred ukaz CLS
2. vidim, da imas ukaz Config LCD REM-an - pomeni, da je to komentar. Izbriši znak ' pred tem ukazom.
3. za ukazom Lcd "hello....." dodaj ukaz wait 1, drugače se ne bo nič videlo.
Potem pa poročaj, če si bil uspešen.
Lp
Jure |
|
Nazaj na vrh |
|
|
Gregor Začetnik
Pridružen/-a: Pon Dec 2004 10:39 Prispevkov: 11
|
Objavljeno: Ned Dec 26, 2004 6:21 pm Naslov sporočila: display 16x2 |
|
|
zal ne dela. se ne vdam:)...
a vam drugace dela?
PS:
na ELEKTRO-N sem tudi zasledil en clanek, da je nekdo imel tezave in prav z enakim LCD-jem in AT89c2051. _________________ Gregor |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Ned Dec 26, 2004 6:36 pm Naslov sporočila: LCD |
|
|
Gregor!
Daj zraven svoj program in opiši kako si priklopil LCD,drugače je težko pomagati.
Vlado |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|