P16F877 + LCD 4x20

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

P16F877 + LCD 4x20

Inlägg av Mutiaz »

Hej!

Får inte min lcd att fungera,, blir bara svarta fyrkanter på den. Antagligen initieringsproblem tror jag..

E0 = RS
E1 = E
E2 = R/W

Dom andra portarna kör jag på portb0,b1,b2 osv..

Här är koden jag kör nu:

Kod: Markera allt

DEFINE	LOADER_USED	1
Pause 400

' Define LCD pins 
DEFINE LCD_RSREG  PORTE 
DEFINE LCD_RSBIT  0 
DEFINE LCD_EREG  PORTE 
DEFINE LCD_EBIT  1 
DEFINE LCD_RWREG  PORTE 
DEFINE LCD_RWBIT  2 
DEFINE LCD_DREG  PORTB 
DEFINE LCD_DBIT  0 

' Pre-start 
Pause 500                      ' Wait for LCD to wake up 
LCDOut $FE, 1         'Initiate LCD by clearing display 

Pause 500            'Wait for LCD to initiate 

LCDOut $FE, 1
LCDOut "Hej"
Pause 500

End
Användarvisningsbild
AndLi
Inlägg: 18274
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

Ja det är defenitivt ett initeringsproblem, mig veterligen är det betydligt fler kommandon som behövs för att sätta upp den korrekt.. Så titta i databladet för drivkretsen igen och se vad du missar...
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Jag vet inte vad det är du programmerar i, men om det finns en LCDout-funktion, finns det då inte en färdig LCDinit eller liknande också?
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

PicBasic eller?
Ska nog inte behövas fler kommandon än sådär. Men kolla PicBasic-manualen så ser du exakt hur du ska göra.

Annars så vet jag inte.

EDIT: Från manualen:

Kod: Markera allt

	' Set LCD Data port
	DEFINE LCD_DREG	PORTB
	' Set starting Data bit (0 or 4) if 4-bit bus
	DEFINE LCD_DBIT	4
	' Set LCD Register Select port
	DEFINE LCD_RSREG	PORTB
	' Set LCD Register Select bit
	DEFINE LCD_RSBIT	1
	' Set LCD Enable port
	DEFINE LCD_EREG	PORTB
	' Set LCD Enable bit
	DEFINE LCD_EBIT	0
	' Set LCD bus size (4 or 8 bits)
	DEFINE LCD_BITS	4
	' Set number of lines on LCD
	DEFINE LCD_LINES	2
	' Set command delay time in us
	DEFINE LCD_COMMANDUS	2000
	' Set data delay time in us
	DEFINE LCD_DATAUS	50
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Ja det är PicBasicPro jag kör.. Jag ska testa det när jag kommer hem..
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

På 16F877 måste man sätta några pinnar på nått digitalt tjaffs. Då skriver jag ADCON= 7

Är det inte något liknande jag måste skriva till P16C84?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

ADCON finns inte på 16x84......
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Nej det vet jag.. Men finns det inte något motsvarande som jag kanske har missat i min kod till P16C84?

Kod: Markera allt

DEFINE	LOADER_USED	1


' Define LCD pins 
DEFINE LCD_DREG  PORTA 
DEFINE LCD_DBIT  0 
DEFINE LCD_RSREG  PORTA 
DEFINE LCD_RSBIT  4 
DEFINE LCD_EREG  PORTB 
DEFINE LCD_EBIT  3 
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50



' Pre-start 
Pause 500                      ' Wait for LCD to wake up 
LCDOut $FE, 1         'Initiate LCD by clearing display 

Pause 500            'Wait for LCD to initiate 

LCDOut $FE, 1
LCDOut "Hej"
Pause 500


End

Edit: Det enda jag ser på LCDn är Svarta rutor fortfarande.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

RS på RA4 är kanske inte så bra, för den är väl open drain på '84... Fast är den inte det på 877 också förrsten? Kommer inte ihåg, men testa en annan pinne iaf är mitt tips.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Eller sätt en pull-up motstånd på 10K där.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Det har jag redan!

Jag kör efter exemplet i PicBasic manualen på sidan 96.
Fast den är gjord till en 2x16 lcd.. den jag har är en 4x20 men det är väl bara att man ändrar lines´en från två till 4?
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

Testa och kör med 2 "Lines" bör väl fugera som en 2x20 då?
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Jo men det funkar ändå inte..
Problemet är ju att det bara blir svarta rutor
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Om det bara blir svarta rutor brukar kontrasten att vara för kraftig. Sänk den.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Det har jag testat.. Ingen skildnad..
Skriv svar