Drivining av LCD modul med bara 5 portar
Postat: 13 december 2003, 13:55:55
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.
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?
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
| | |/ | ! !
! +-+
----- | |
----- | |
! | |
! +-+
! !
----+---+--+---
!
-----
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?