Drivining av LCD modul med bara 5 portar

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Drivining av LCD modul med bara 5 portar

Inlägg av matseng »

Jag tänkte jag skulle koppla in en LCD på en 8-pinnars pic12F675. Tyvärr upptäcke jag att av dom 6 "general purpose i/o-pinnarna" som finns så går bara 5 att sätta som outputs. Detta medför att det blir lite svårt att koppla in en LCD som behöver 4 data, RS och E för att fungera.

Jag vill inte sätta dit ett chip till, typ en latch eller ett shiftregister, jag vill klara mig med nåt mindre. Efter en lång stunds funderingar så kom jag fram till att man borde kunna klara sig med 4 diskreta komponenter. 2 kondingar, en diod och ett motstånd enligt nedan.

Kod: Markera allt

 
   +-------------------------------> LCD RS       
   !
   !  | |   |\ |                                  
>--+--| |---| +|---+------+--------> LCD E
      | |   |/ |   !      !
                   !     +-+
                 -----   | |
                 -----   | |
                   !     | |
                   !     +-+
                   !      !
               ----+---+--+---
                       !          
                     -----  
En pinne ut från uC'n får vara kombinerad RS och E. Genom att lägga ut en snabbt pulståg på pinnen så laddas kondingen som går mot jord upp till nära 5 volt vilket innebär att E hålls hög (och RS pulsar, men det gör inget).

När sedan ett kommando/data ska skickas till LCD'n så lägger jag först ut rätt data på D4-7 och stannar pulståget på antingen 0'a eller '1 beroande på hur jag vill ha RS och väntar ett tag till jag vet att kondingens spänning har fallit tillräckligt lågt för att E ska bli en 0'a. Eftersom E-ingången triggas på fallande flank borde det inte spela någon roll att RS pulsas ett tag medans E fortfarande är låg inför nästa tecken som ska skickas till LCD'n.

Jag har inte orkat koppla upp och prova detta ännu. Men med lite tur så skulle det kunna fungera. Eller?
danei
EF Sponsor
Inlägg: 26475
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

går det inte attt lägga E hög? Jag har inte kollat datablad, så jag kan ha åt skogen fel.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Nej, det går inte. Det är E som visar att datat på ingångarna (D0-7 och RS, R/W) är valida och ska "utföras", dvs den är själva "klockpulsen" till LCD-modulen.
danei
EF Sponsor
Inlägg: 26475
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Vad är RS till?
Användarvisningsbild
erixon
Inlägg: 380
Blev medlem: 27 augusti 2003, 10:21:58

Inlägg av erixon »

Den är till för att välja data eller commando, rs alltså
Användarvisningsbild
Illuwatar
Inlägg: 2256
Blev medlem: 10 november 2003, 14:44:27
Skype: illuwatar70
Ort: Haninge
Kontakt:

Inlägg av Illuwatar »

Du skulle kunna koppla RS och E till var sin port om du skickar datat seriellt till displayen. Detta kräver en omvandlare som i princip är ett 8-bitars skiftregister med parallell utgång. En portpinne får klocka registret, en matar ut databitarna i följd (synkat med klockningen) och en pinne styr utgångslatcharna på registret så det inklockade 8-bitars ordet läggs ut i parallell form. Därefter rycker du i E och RS-pinnarna. Denna metod förutsätter att du inte behöver läsa från displayen och du kör med delays istället för att läsa status för att avgöra om kommandot är klart. Lite omständigt kanske - att ta en större PIC blir nog både lättare och billigare...
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Jo, det är sant. Men jag skrev "Jag vill inte sätta dit ett chip till, typ en latch eller ett shiftregister, jag vill klara mig med nåt mindre.".

Dessutom ville jag använda 12F675 eftersom den är så liten och smidig.

Stoppar man dit ett shiftregister så klarar man sig fint på två pinnar, men då har man en extra kres som är dubbelt så stor som pic-chippet - och det verkar lite fånigt.

Jag har testat med min "pulsdetektor"-koppling ovan och den fungera inte så som jag ritade den där. Men med en PNP-trissa, två kondingar och två motstånd så verkar det fungera bättre.
hebbe
Inlägg: 162
Blev medlem: 29 maj 2003, 00:45:20

Inlägg av hebbe »

Bra ide! Det är en likriktare som skapar spänning på E om det är växelström på inngången.

The real tri-state was born ;-)

Annars skulle du kunna använda en utav data-pinnarna för att ladda en konding (fördröjning) som väljer register. Och låta E gå direkt.

Exempel instruktion:

Ladda konding.
Data på bussen.
Clocka.

Sista två måste gå snabbare än RC-grejen hinner med.

Egentligen kunde RC-grejen drivas av E?? Kort e-puls=data, lång e-puls=instruktion.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

hebbe: Ja, det var bra alterativ som du hade förslag på. Ska labba lite med olika varianter i helgen och hur det fungerar.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Jag kunde inte hålla mig till helgen. Jag provade hebbes variant med att helt enkelt ha koppla in RS via ett RC-nät till D4. Det fungerar aldeles utmärkt. Mycket enklare än min "pulsdetektor"-ide. Det är bra att lufta sina ideer eftersom det nästan alltid finns förbättringar som man kan göra.

Är man riktigt fräck så kanske man kan koppla ihop E med D5 och sedan RW med D6 på samma sätt. Då skulle man även kunna polla busyflaggan och samtidigt frigöra ytterligare en pinne för nåt kul. :-)

Kod: Markera allt

     +-\/\/-+---- RS                                        
     |      |   
     |     ===
     |      |
     |     ---
     |
GP0 -+----------- D4
GP1 ------------- D5
GP2 ------------- D6
GP4 ------------- D7
GP5-------------- E
           +----- RW 
           |       
          ---
Skriv svar