Jag har köpt denna LCD drive http://www.electrokit.se/opto-display-l ... v_41003720
Försöker nu använda den med en PIC16F690 som är kopplad direkt till de tre kontrollsignalerna E RW RS. Databyten matas via en 74HC595. Genom att mäte direkt på LCD displayens kontakter så ser jag att där finns de spänningar jag förväntar mig. I LCD displayens datablad finns listat ett antal instruktioner som jag försöker använda. Mitt problem är att jag kan inte få någonting att visas på displayen. Den är och förblir helt mörk. Endast genom att vrida upp backlightning kan jag se en rad fyrkanter mycket svagt. Använder Pickit 2 på ett eget kretskort. Jag söker någon form av enkel exempelkod som kan visa något på displayen. Nedan lite exempelkod jag försökt. Först har jag en fördröjning på 15 mS sedan anropar jag först LCDfunction() och sedan LCDonoff() vilken jag förväntar mig skulle visa en blinkande cursor. Vad missar jag?
Språket är C och jag använder HiTech C lite. Mina båda funktioner LCDfunction och LCDonoff initierar data längd antal rader fonttyp och cursor och sätter på displayen.
> men det där ser inte ut som en initiering av en HD44780
Nej, det gör det ju inte. Antingen är det inte all kod, eller så
vet jfri riktigt vad han håller på med. Jag kollade inte så noga,
men antog att det helt enkelt inte var all kod...
sodjan skrev:> men det där ser inte ut som en initiering av en HD44780
Nej, det gör det ju inte. Antingen är det inte all kod, eller så
vet jfri riktigt vad han håller på med. Jag kollade inte så noga,
men antog att det helt enkelt inte var all kod...
Nej det är inte all kod. Postade bara LCD funktionerna och den funktion som anropas inifrån dessa.
Det betyder: "Gör ingenting så länge TRUE != 0". Dvs programmet stannar där om TRUE är definierat till att vara icke noll. Så det är nog inte så bra att ha i det här fallet...
OK. Var väl det svar jag väntat mig. Nu är ju visserligen inte all kod bifogad men jag undrade lite hur man tar sig ifrån den där loopen. Eftersom det inte finns några statements mellan klammrarna.
> Så det är nog inte så bra att ha i det här fallet...
Tja, vi vet ju inte syftet med den där koden. Eftersom det hela är
ihophafsat utan vettiga kommenterar så blir det bara gissningar.
Dock så ser det ju lite underligt ut med en delay *efter* loopen...
> men jag undrade lite hur man tar sig ifrån den där loopen.
Det finns flera sätt. Interrupt, brownout och/eller watchdog-timeout t.ex.
Det var ju inte den bäst kommenterade koden direkt. Vad är det meningen att funktionen LCDonoff() ska göra egentligen? Namnet på funktionen är lite dubbeltydigt? Sätt på och stäng sedan av? Hur som hest så är det ju klart att när man väl kommit dit så kommer du inte längre - du fastnar i do-while-satsen... Men ditt största problem är nog det som redan påpekats: Du måste initiera displayen först. Kolla TOpnOtch's länk ovan!