Sida 1 av 2

Styra 8st LED-7segment

Postat: 27 januari 2005, 19:40:09
av FS
Hur går man tillväga för att styra 8st LED-7segment med en PIC 16F876A? Portarna räcker ju knappast till för att styra varje segment för sig. Den har väl 22 I/O kanaler och tre-fyra av dessa behöver jag till "annat".

Antar att man använder nån slags extern krets som låter en få flera utgångar. Vad är tricket? Hur få I/O kanaler kan man använda utan att varken hårdvaran eller mjukvaran blir allt för komplicerad?

Tex. dessa segment: http://www.elfa.se/elfa-bin/setpage.pl? ... 011619.htm

Postat: 27 januari 2005, 19:57:51
av Noddan
Du använder någonting som kallas för multiplexning, dvs du aktiverar först den första displayen och lägger ut värdet som den ska ha och sen aktiverar du display nr 2 och lägger ut dess värde. Detta görs födelaktigt genom att du har sju utpinnar (om du inte har någon extern drivkrets) för att styra segmenten. Dessa sju kopplas till samtliga element. Sedan tar du åtta pinnar till och kopplar kadoden (eller anoden), den enda ensamma pinnen, från varje display och in till en pinne på mikroprocessorn. Sedan är det bara att gå snabbt igenom de alla.

Det är iaf den grundläggande principen på hur du gör det.

Såg att inlägget blev lite konstigt, men du förstår säkert. I annat fall är det bara att hojta till!

Postat: 27 januari 2005, 20:21:30
av FS
Det verkar ju smart, då kommer det med andra ord att gå åt 15 utpinnar. Kan någon säkert säga mig hur många pinnar det finns tillgängligt på en PIC 16F876A för detta ändamål?

Hur kopplar man den ensamma pinnen? Den går väl på jordsidan av displayen eller?

Hur snabbt behöver jag gå igenom displayen för att den inte ska flimmra?

Postat: 27 januari 2005, 20:32:48
av FS
Hur blir det med strömmen till dem föresten? Säg att de vill ha 20mA. Om jag då låter alla 56 segmenten vara tända samtidigt blir detta 1.12A! Låter rätt mycket, eller?

Postat: 27 januari 2005, 20:51:43
av matseng
16F876A har 22 iopinnar och allihopa verkar vara dubbelriktade.

Eftersom du kommer att multiplexa displayerna så kan max 7 st segment (en display) vara på åt gången. Så din totala ström blir tack och lov bara 7*20mA = 0.14 A

Postat: 27 januari 2005, 20:54:40
av FS
Skönt! Vad tror du om hur fort den måste gå igenom de olika segmentmodulerna för att det inte ska flimmra?

Hur kopplar jag den ensamma pinnen?

Postat: 27 januari 2005, 21:07:01
av Icecap
Du ska hålla en uppdateringsfrekvens om minst 30Hz, gärna 60 om det går.
Det betyder alltså att du ska hinna med att uppdatera alla modulerna minst 30 gg/sek. eller (helst) mer.

Edit: Kom ihåg att för att undvika "skuggning" ska man stänga av all drivning en liten stund och sen tända nästa kombination, då hinner driverna att stänga av så föregående tal inte "skuggas".

Postat: 27 januari 2005, 22:36:37
av Tony
140mA är för mycket för en pinne på Pic så det krävs en transistorswitch imellan.

Istället för multiplex kan man ha shiftregister för att få serie till parallell-omvandling.
(2 pinnar till hur många displayer som helst, nästan)

Postat: 27 januari 2005, 23:01:24
av FS
Har hittat en koppling för gemensam anod:
Bild

Men hur kopplar man för gemensam katod? Den med gemensam katod var nämligen mycket billigare på elfa http://www.elfa.se/elfa-bin/setpage.pl? ... 011619.htm

Är det nån nackdel/fördel med någon av kopplingarna?

Postat: 27 januari 2005, 23:06:23
av Schnegelwerfer
För gemensam katod byter du ut transistorerna mot NPN-transistorer, och kopplar dom mot 0V istället för 5V.

Postat: 27 januari 2005, 23:14:54
av Xerxes
Testa ICM7212, en 7-segmentsdrivare som klarar 4 displayer och sköter all multiplexing själv, det enda man behöver göra är att uppdatera siffrorna när man vill ändra dem.
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1675/ln/

Postat: 29 januari 2005, 15:36:40
av FS
Den verkar bra! Om jag förstod det rätt sköter den även strömförsörjningen, eller?

Den verkar dock inte kunna styra decimalpunkten men det kanske går att lösa direkt från PIC:en

Postat: 29 januari 2005, 16:24:24
av Garfield
Du kan använda 4094 en till varje display dvs 8st sen skickar du data via seriellt gränsnitt bara 3 pinnar använder man från processorn. Kretsen är billig 2-3kr st. Sen är det lätt att expandera flera displayer utan att man använder flera pinnar på processorn.

Postat: 29 januari 2005, 20:29:43
av FS
Hänger inte med riktigt hur man ska använda 4094:an. Hur skickar man data till den? Om man skickar den datan som motsvarar en "8" kommer den då tända alla segment i displayen?

8st 4094:or blir ungefär lika dyrt som en ICM7212 om man handlar hos Elfa. Vilken kommer vara enklast att få igång?

Postat: 29 januari 2005, 21:04:16
av Icecap
Ska du ha lite kul kan du kolla in på Maxim's hemsida (http://www.maxim-ic.com/), de har en hel del drivkretsar till LED-display och det finns typer där man kan dimma osv. och sen finns det ju gratis varuprov..... :D

Edit: Kolla in MAX6955, MAX6954, MAX6951, ICM7218C/D, ICM7228B/D och lite annat t.ex. Det finns en hel del som kan vara kul att kolla på och de gratis varuprov är 2 kretsar av varje, dock max. 4 kretsar per beställning och man har ju familj, kompisar osv....