Sida 2 av 3
Postat: 29 april 2004, 09:07:05
av Michel
Men helt klart så kunde man få kontrollern i displayen att bli lite groggy
Med en icke fullgod / för snabb initiering / kommunikation kan man få dom mest underliga saker att hända.
Som t.ex. att halva displayen fungerar korrekt men inte den andra halvan.
Sen beror det på vilken tillverkare som har gjort chippet.
Vissa är *väldigt* slöa.
Postat: 29 april 2004, 14:06:35
av Chrille
mullemeck skrev:Har du lyckats få igång den i 4bits läge?
Mina försök med det gick inte alls, vet inte om det är mina kopplingar eller om min lcd inte gillade det...
du skulle ju kunna testa koppla in alla 8 bitarna och testa om det funkar bättre isåfall..
Ja jag kör den på fyra bits läge nu.
Har funderat lite på att koppla in alla åtta men då får jag knappt några I/O ben över eller finns det något smidigt sätt att få tillgång till några fler I/O ben på en PIC utan att byta till en annan PIC?
Postat: 29 april 2004, 14:15:56
av cyr
Beroende på vad du ska ha benen till så kan det gå att använda de flesta LCD-pinnarna till annat också... t.ex. knappar.
Postat: 29 april 2004, 15:33:44
av $tiff
>> Chrille
Man kan ju använda latchar, encoders och allt vad det heter för att expandera antalet utgångar, men då är det i de flesta fall lättare att byta till en större PIC.
Postat: 29 april 2004, 17:28:13
av Chrille
Ok då kanske jag ska prova det för det brukar inte fungera när jag ska prova någon ny PIC så det känns som det blir mindre problem att prova med en latch.
Nu har jag deklarerat alla benen så inte standardbenen är några andra, skrev så här i koden och har kopplat som på bilden ovan men det blir fortfarande samma fel.
'Set LCD Data port
DEFINE LCD_DREG PORTA
'Set starting Data BIT (0 OR 4) IF 4-BIT bus
DEFINE LCD_DBIT 0
'Set LCD Register Select port
DEFINE LCD_RSREG PORTA
'Set LCD Register Select BIT
DEFINE LCD_RSBIT 4
'Set LCD Enable port
DEFINE LCD_EREG PORTB
'Set LCD Enable BIT
DEFINE LCD_EBIT 3
'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
Postat: 29 april 2004, 18:18:45
av $tiff
Det ser rätt ut...
Prova att öka "LCD_dataus" till exempelvis 100
Du har väl pulldown på LCDns R/W-pinne? (ja, det har du om du kopplat enligt schemat)
Vad är det för LCD du använder?
Postat: 29 april 2004, 22:23:41
av tusse
Missa inte pause 1000( en cekund) innan du startar programmet, det behöver displayen för starta, efter define...
Postat: 29 april 2004, 22:46:34
av EagleSpirit
har inte orkat läsa igenom tråden men jag vet att 628 och de lite "bättre" kretsarna har specialfunktioner på pinnarna som måste stängas av. Iaf RA pinnarna. CMCON måste vara 0 eller hur det var, kommer dock inte ihåg vilket register den låg i. Återkommer med det. Jag hade en jävla massa problem att få igång grejjerna när jag inte visste det eftersom de inte kunde bli utgångar

Postat: 1 maj 2004, 13:11:18
av $tiff
>> EagleSpirit
På 628 är det bara A5 som endast kan vara input. Alla andra pinnar kan ha de vanliga I/O-egenskaperna.
PICBasic fixar nog registerna så att alla pinnar blir vanliga I/O så länge man inte anger annat. Det förutsätter förstås att man väljer rätt alternativ vid programmeringen också.
Postat: 2 maj 2004, 20:51:44
av Chrille
>$tiff
Har provat att ändra "LCD_dataus" fram och tillbaka mellan alla möjliga värden men det verkar inte hjälpa.
Yepp jag har pulldown på R/W pinnen.
Jag använder
Fractronics OLED.
>tusse
Jag har lagt in en paus på en sekund.
Koden ser ut så här nu:
Kod: Markera allt
'Set LCD Data port
DEFINE LCD_DREG PORTA
'Set starting Data BIT (0 OR 4) IF 4-BIT bus
DEFINE LCD_DBIT 0
'Set LCD Register Select port
DEFINE LCD_RSREG PORTA
'Set LCD Register Select BIT
DEFINE LCD_RSBIT 4
'Set LCD Enable port
DEFINE LCD_EREG PORTB
'Set LCD Enable BIT
DEFINE LCD_EBIT 3
'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 100
Pause 1000
LCDOut $FE,1
LCDOut $FE, $80 , "abcdefghijklmno"
End
Postat: 3 maj 2004, 00:43:54
av Michel
Om du inte gör det redan (inte enligt schemat ovan) så testa med att även styra R/~W.
D.v.s. en korrekt skrivcykel består av E (aktiv) - <RS> - <DATA> - R/~W (aktiv) - R/~W (inaktiv) - E (inaktiv).
Vissa drivkretsar verkar går på den låga nivån - andra går på den uppåtgående flanken - på R/~W. Jag har stött på båda delarna.
Postat: 3 maj 2004, 07:52:21
av tusse
Prova med:
LCDOut $FE,1,"abcd"
LCDOut $FE,$14"efgh"
Jag kan inte finna LCDOut $FE,$80 som du skrev.
Här är en kopia från manualen.
$FE, 1
Clear display
$FE, 2
Return home (beginning of first line)
$FE, $0C
Cursor off
$FE, $0E
Underline cursor on
$FE, $0F
Blinking cursor on
$FE, $10
Move cursor left one position
$FE, $14
Move cursor right one position
$FE, $C0
Move cursor to beginning of second line
$FE, $94
Move cursor to beginning of third line
$FE, $D4
Move cursor to beginning of fourth line
Postat: 3 maj 2004, 16:29:28
av Chrille
Tyvärr så hjälpte det inte.
Ser ut så här på LCD:n:
"abc6 eVfv"
När jag kollar i manualen ser det ut så här, kollade i pdf manualen för Picbasic Pro:
Command Operation
$FE, 1 Clear display
$FE, 2 Return home
$FE, $0C Cursor off
$FE, $0E Underline cursor on
$FE, $0F Blinking cursor on
$FE, $10 Move cursor left one position
$FE, $14 Move cursor right one position
$FE, $80 Move cursor to beginning of first line
$FE, $C0 Move cursor to beginning of second line
$FE, $94 Move cursor to beginning of third line
$FE, $D4 Move cursor to beginning of fourth line
Postat: 3 maj 2004, 21:10:30
av tusse
Kolla databit D6 D7 så att du inte fått en kortis mellan dom, kolla dom andra också.
Tusse
Postat: 4 maj 2004, 20:43:29
av Chrille
Har kollat och där är ingen kortslutning.