LED-displayer

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

LED-displayer

Inlägg av Rollo »

Ny fråga längst ner!


Hejsan!


Tänkte ge mig på att göra en simpel nedräkningstimer med 7-segments LED-displayer och en 16f628. Det räcker med Minut:Sekund Sekund. Fast idag slog det mig att det skulle ju vara bra att kunna styra alla 3 displayer med samma PIC ,och då fattas det ju I/O.

Har försökt läsa lite om latchar och skiftregister med fattar nada. Jag har nu fått en tanke som jag tycker borde fungera.

Eftersom de har gemensam Anod så tänkte jag så här:

Man kopplar varje anod till var sin I/O på PICen.
De 7 katoderna seriakopplar man och kopplar sen också i sin tur till egna I/O.
Och i koden gör man t.ex. 2 I/O låga, så man får siffran ett. Och man bestämmer vilken/vilka av de 3 displayerna som ska visa ettan genom att sätta dess anod hög.

Är det någon som förstår över huvudtaget vad jag pratar om? :)
Om min idé är helt skogstokig, hur ska man annars göra?

Tack så mycket!!

*edit*
Har fortsatt googla lite...Är det det är som är multiplexing?
Senast redigerad av Rollo 7 november 2004, 20:44:20, redigerad totalt 1 gång.
Användarvisningsbild
Hedis
Inlägg: 2488
Blev medlem: 8 december 2003, 15:10:44
Ort: Vänersborg
Kontakt:

Inlägg av Hedis »

Exact så som du skrev brukar man göra. Det kallas för Multiplexing som du skrev.

Finns folk här som pysslat mycket med det.
Användarvisningsbild
Xerxes
Inlägg: 248
Blev medlem: 25 januari 2004, 22:55:05
Ort: Lund
Kontakt:

Inlägg av Xerxes »

Om du bara ska visa 0-F på displayerna kan du ju också använda en BCD-kodare, då behöver du bara fyra i/o per siffra.
Användarvisningsbild
karlstedt
EF Sponsor
Inlägg: 966
Blev medlem: 14 oktober 2003, 16:55:23
Ort: Lund
Kontakt:

Inlägg av karlstedt »

Du kan spara ytterligar portar genom att multiplexa en bcd-avkodare. Dock ökar hårdvaran. Smaksak.
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

Okaj!
Tack för svaren. Ska sätta mig o försöka få ihop det där nu :)
Rockmater
Inlägg: 8
Blev medlem: 9 oktober 2004, 13:24:40

Inlägg av Rockmater »

Jag har också problem med att få mina I/O portar att räcka på min 16f628. Dock så ska jag inte driva 3st LCD´er utan 1 LCD och lite annan utrustning. Jag kör för närvarande med "8-bit Mode" på min LCD, men vad jag har kunnat förstå så ska det gå att köra i "4-bit Mode". Hur går det förfarandet till? Är det nått speciellt som man bör tänka på osv?
Tack på förhand :D
Rockmater
Inlägg: 8
Blev medlem: 9 oktober 2004, 13:24:40

Inlägg av Rockmater »

Ops, onödigt inlägg av mig...såg ju att det fanns en hel forumavdelning för just LCD och hittade snabbt mina svar där. Sry
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

Efter ett kort uppehåll ska jag nu ta tag i dessa igen och få det färdigt!

Håller på o skriva själva timer-koden nu men PicBasic vill inte vara vän med mig.

Eftersom jag multiplexar det hela användet jag mig av olika loopar.

Om jag har en variabel som heter "minut" och vill kunna ändra den utanför loopen, hur gör jag då?

Ungefär så här vill jag ha det:

Kod: Markera allt

dim Minut as Fem
...

loop:
Gosub minut
...

fem:
portb = %10000001
return
...
Då ska den köra Gosubfem istället.

När jag gör så här så säger Proton+ ifrån med en gång.
- "label minut not found"

Nån som vet nåt annat sätt?

Hoppas ni förstår!?

TACK!!
Användarvisningsbild
EagleSpirit
Inlägg: 1288
Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:

Inlägg av EagleSpirit »

nja, så funkar det nog inte... du kan inte definiera en subrutin på det där sättet. du får använda branch isf.. eller det kanske inte är det du är ute efter?
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

okeej...finns det något motsvarande return om man använder branch då?
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30018
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Man kan ju inte hoppa till en subrutin med namnet minut om man har en variabel med namnet minut. Eller?
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

hmm...nää...men min subrutin heter ju "fem". :wink:
Malm
Inlägg: 215
Blev medlem: 22 februari 2004, 12:55:06
Ort: Borås

Inlägg av Malm »

Men du går till subrutinen minut?
Rollo
Inlägg: 217
Blev medlem: 2 januari 2004, 19:23:29

Inlägg av Rollo »

hehe.. verkar som jag ska beskriva lite bättre...

"minut" är bara en variabel. Istället för att göra flera olika loopar till alla siffor så ändrar jag bara variabeln (minut) till olika subrutiner (siffor) i min kod.

På så vis kan jag använda samma loop till alla siffror, ändrar bara variabeln till 4 etc.

Hoppas ni förstår lite bättre nu..

*edit*

Det ordnade sig!
Bytte ut gosub till portb = och ändrar variabeln till olika binära istället..
Användarvisningsbild
EagleSpirit
Inlägg: 1288
Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:

Inlägg av EagleSpirit »

verkar som det är branch du är ute efter, står mer om det på sidan 45 i PICBasic manualen.

du skriver typ:

Kod: Markera allt


main:
       branch variabel,[ett,tva,tre,fyra,fem]
cont:
       variabel = variabel+1
       goto main

       ett:
          gosub diska
          tralalala
          goto cont

        tva:
          gosub sova
          tralalala
          goto cont
eller är jag helt ute och cyklar?
Skriv svar