Sida 1 av 1
LED-displayer
Postat: 7 oktober 2004, 22:46:08
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?
Postat: 7 oktober 2004, 23:43:36
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.
Postat: 8 oktober 2004, 00:30:21
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.
Postat: 8 oktober 2004, 11:17:14
av karlstedt
Du kan spara ytterligar portar genom att multiplexa en bcd-avkodare. Dock ökar hårdvaran. Smaksak.
Postat: 8 oktober 2004, 17:47:06
av Rollo
Okaj!
Tack för svaren. Ska sätta mig o försöka få ihop det där nu

Postat: 19 oktober 2004, 21:31:15
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

Postat: 19 oktober 2004, 21:36:38
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
Postat: 7 november 2004, 20:42:18
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 Gosub
fem 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!!
Postat: 7 november 2004, 20:49:25
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?
Postat: 7 november 2004, 20:55:32
av Rollo
okeej...finns det något motsvarande return om man använder branch då?
Postat: 7 november 2004, 21:31:53
av MadModder
Man kan ju inte hoppa till en subrutin med namnet minut om man har en variabel med namnet minut. Eller?
Postat: 7 november 2004, 21:58:32
av Rollo
hmm...nää...men min subrutin heter ju "fem".

Postat: 7 november 2004, 22:10:47
av Malm
Men du går till subrutinen minut?
Postat: 7 november 2004, 22:15:41
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..
Postat: 8 november 2004, 18:15:35
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?