100% found this document useful (1 vote)
48 views21 pages

Instructables LED Matrix Using Shift Registers

This document provides instructions for building an 8x8 LED matrix that is controlled by a microcontroller using shift registers and high-side drivers. It includes a parts list, explanations of the circuit components, and step-by-step instructions for assembling the LED matrix and wiring it to the microcontroller. The goal is to teach concepts of using shift registers and high-side drivers that can be applied to building larger LED displays.

Uploaded by

apofview
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
48 views21 pages

Instructables LED Matrix Using Shift Registers

This document provides instructions for building an 8x8 LED matrix that is controlled by a microcontroller using shift registers and high-side drivers. It includes a parts list, explanations of the circuit components, and step-by-step instructions for assembling the LED matrix and wiring it to the microcontroller. The goal is to teach concepts of using shift registers and high-side drivers that can be applied to building larger LED displays.

Uploaded by

apofview
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Explore (/tag/typeid/)

(/)
(/)

Create (/about/[Link])

Contests
let's make (/contest/)

Community (/community/)
You (/you/)

share what you make >


(/editInstructable/)

(/id/intel/)

(/tag/typeid/categoryliving/channelreuse/?sort=FEATURED)
(/tag/typeid/categoryoutside/channelcamping/?sort=FEATU
(/tag/typeid/categorytechnology/chann

AboutThisInstructable
313,135views

Posted:
Jun14,2008

525favorites

License:

barney_1
(/member/barney_1/)
Follow

67

(/member/barney_1/)
Morebybarney_1

(/id/LEDHanukkah
Menorah)

(/id/BeerBottleDryingRack)
([Link]

(/id/HowtoMakeandCan
ConcordGrapeJam)
Tags:
([Link]

avr(/tag/typeid/categorytechnology/keywordavr/)
8x8(/tag/typeid/categorytechnology/keyword8x8/)

Thisinstructableismeanttobeamorecompleteexplanationthanothers
[Link],thiswillprovidemorehardwareexplanationthanis
availableintheLEDMarqueeinstructable([Link]
([Link]
LEDscrollingmarqueesign)byled555.

led(/tag/typeid/categorytechnology/keywordled/)
matrix(/tag/typeid/categorytechnology/keyword
matrix/)
marquee(/tag/typeid/categorytechnology/keyword
marquee/)

Goals
Thisinstructablepresentstheconceptsinvolvedwithshiftregistersandhigh
sidedrivers.Byillustratingtheseconceptswithan8x8LEDmatrixIhopeto
provideyouwiththetoolsneededtoadaptandexpandtothesizeandlayout
yourprojectcallsfor.

ExperienceandSkills
Iwouldratethisprojecttobeofmediumdifficulty:
Ifyoualreadyhaveexperienceprogrammingmicrocontrollersandworking
withLEDsthisprojectshouldbefairlyeasyforyoutocompleteandtoscale
tolargerarraysoflights.
IfyouarejuststartingoutwithmicrocontrollersandhaveflashedanLEDor
twoyoushouldbeabletocompletethisprojectwithsomehelpfromour
friendgoogle([Link]
Ifyouhavelittleornoexperiencewithmicrocontrollersorprogrammingthis
[Link]
otherbeginnerprojectsandcomebackwhenyou'vegotsomemore
experiencewritingprogramsformicrocontrollers.

DisclaimerandCredit
First,[Link],ornota
bestpractice,pleaseletmeknowandI'llmakethecorrection.
Dothisatyourownrisk!Youshouldknowwhatyou'redoingoryoucancause

shift(/tag/typeid/categorytechnology/keywordshift/)
register(/tag/typeid/categorytechnology/keyword
register/)
LEDs_guide(/tag/typeid/category
technology/keywordleds_guide/)

Addinstructableto:
Group

Related
UsingaDotMatrixLED
withanArduinoandShift
Register(/id/UsingaDot
MatrixLEDwithan
ArduinoandShiftR/)
[Link]
(/id/810LEDMatrixwith
4017/)
bySyst3mX
(/member/Syst3mX/)

watchfuturamaonan8x8
pixelscreen(/id/watch
futuramaonan8x8pixel
screen/)
bysethj(/member/sethj/)

damagetoyourcomputer,yourmicrocontroller,andevenyourself.
Ihavelearnedalotfromtheinternet,particularlyfromtheforumsat:
[Link]
[Link]
outhere:
[Link]

Step1:Parts
PartsList
GeneralParts
Tomakean8x8gridofLEDsandcontrolthemyouwillneed:
64LEDsofyourchoice
8ResistorsfortheLEDs
1Shiftregisterforthecolumns
1Driverarrayfortherows
8Resistorsforswitchingthedriverarray
1microcontroller
1clocksourceformicrocontroller
1prototypingboard
1powersupply
Hookupwire

SpecificPartsUsedHere
ForthisinstructableIusedthefollowing:
64greenLEDs(Mouserpart#604WP7113GD)
8220ohm1/4wattresistorsfortheLEDs(Mouserpart#660
CFS1/4CT52R221J)
1HEF4794LEDdriverwithshiftregister(Mouserpart#771HEF4794BPN)
1mic2981HighVoltageHighCurrentSourceDriverArray(Digikeypart
#5761158ND)
83.3kohm1/4wattresistorsforswitchingthedriverarray(RadioShackpart
#2711328)
1AtmelATmega8microcontroller(Mouserpart#556ATMEGA816PU)
112MHzcrystalforthemicrocontrollerclocksource(Mouserpart#815AB
12B2)
12200holeprototypingboard(RadioShackpart#276147)
ConvertedATXpowersupply:SeeThisInstructable
([Link]
toareally/)
Solidcore22awghookupwire(RadioShackpart#2781221)
Solderlessbreadboard(RadioShackpart#276169(nolongeravailable,try:
276002)
AVRDragon(Mouserpart#556ATAVRDRAGON)
DragonRider500byEcrosTechnologies:SeeThisInstructable
([Link]
withtheA/)

NotesRegardingParts
RowandColumnDrivers:Probablythemostdifficultpartofthisprojectis
[Link],Idonotthinkastandard74HC595
shiftregisterisagoodideaherebecausetheycannothandlethekindofcurrent
wewanttosendthroughtheLEDs.ThisiswhyIchosetheHEF4794driverasit
caneasilysinkthecurrentpresentwhenall8ledsareinonerowareswitched
on.
Theshiftregisterispresentonthelowside(thegroundpinoftheleds).Wewill
needarowdriverthatcansourceenoughcurrenttostringmultiplecolumns
[Link]
foundthatperformsthistaskistheUDN2981(digikeypart#6201120ND)
[Link]
ifyouknowofotherhighsidedriversthatwouldworkwellinthisapplication.

Beginnertutorial:
ControllingLEDmatrix
with2595shiftregisters
LEDDotMatrixDisplay
(/id/LEDDotMatrix
Display1/)
bykapilgupta
(/member/kapil+gupta/)

SeeMore(/tag/typeid/?q=)

LEDMatrix:Thismatrixis8x8becausetherowandcolumndriverseachhave
[Link]
andwillbediscussedinthe"modularconcepts"[Link],
orderalloftheneededpartsatonetime.
Thereare8x8,5x7and5x8LEDmatricesavailableinoneconvenientpackage.
[Link]
these.Mouserhassome5x7unitsavailablesuchaspart#604TA1211GWA.I
usedcheapgreenLEDsbecauseI'mjustplayingaroundandhavefun.
Spendingmoreonhighbrightness,highefficiencyLEDscanallowyouto
produceamuchmorespectacularlookingdisplay...thisisgoodenoughforme
though!
ControlHardware:ThematrixiscontrolledbyanAtmelAVRmicrocontroller.
[Link]
DragonRider500forwhichIhavewrittenbothassembly
([Link]
theA/)andusage([Link]
Rider500withyourAVRDrag/)[Link]
prototypingandIhighlyrecommendit.

Step2:Thematrix

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

IwillbebuildingmyownLEDmatrixforthisprojectusing5mmledsanda
([Link]
[Link]
8x8dotmatrixledmodulesfromseveralsources,[Link]
workjustfinewiththisinstructable.
([Link]

ConstructionConsiderations

Alignment
TheLEDSneedtobealignedsotheyfacethesamedirectionatthesame
[Link]
[Link]
fewLEDsinplaceacoupleofinchesawayfromtherowIwasworkingonto
makesuretheplexiglasswasparallelwiththeprototypingboard.
([Link]

RowsandColumns
Weneedtohaveacommonconnectionforeachrowaswellaseachcolumn.
Becauseofourrowandcolumndriverchoiceweneedtohavetheanode
(positiveleadoftheLED)connectedbyrowandthecathode(negativeleadof
theLED)connectedbycolumn.
ControlWires
ForthisprototypeIamusingsolidcore(singleconductor)[Link]
[Link]
differentconnectortypetosuityourproject.

BuildingtheMatrix
[Link].
[Link],thiswillbevery
difficulttofixifyourealizeitlater.
[Link]
alignedcorrectly(notatweirdangles)[Link]
youdonotcliptheanodelead,wewillneedthatlatersojustleaveit
pointingup.

[Link]
wiretoeachcathoderightatboardlevel.
Itackedthisateachendthenwentbackandaddedabitofsolderateach
junction.
ThiswireshouldrunpastyourlastLEDtomakeforaneasyinterfacewhen
weaddcontrolwires.
5.Repeatparts14untilyouhaveallLEDsinplaceandallcolumnbuses
soldered.
[Link],bendseveraloftheanodeleadsata90degreeangleso
theytouchtheotheranodeleadsinthesamerow.
Therearedetailedpicturesofthisbelow.
Takecarenottoletthesecomeincontactwiththecolumnbuses,creatinga
shortcircuit.
[Link].
[Link]
therowdrivercontrolwires.
8.Repeatparts6&7untilallrowsbuseshavebeensoldered.
[Link].
Iusedredsolidcorewirefortherowsandblackforthecolumns.
[Link]
doneattheendofeachbus.

Important
[Link]
withoutresistorsyouwillprobablyburnoutyourLEDsandallthisworkwillbe
fornothing.

Step3:Thecontrolhardware

([Link]

([Link]

[Link]
beenconstructedsothattheAnodes(voltagesideoftheLED)constitutethe
rows,andtheCathodes(groundsideoftheLED)[Link]
meansourrowdriverneedtosourcecurrentandourcolumndriverneedsto
sinkit.
[Link]
wayIcancontrolanalmostunlimitednumberofcolumnswithjustfour
[Link]
tieddirectlytovoltage.IhaveselectedtheHEF4794LEDdriverwithshift
register.Thisisabetteroptionthanastandard74HC595asitcaneasilysink
thecurrentpresentwhenall8LEDsareonatonetime.
Onthehighside(currentsourcefortherows)[Link]
schematicshowsaUDN2981,[Link]
drivercansourceupto500mAofcurrent.Becauseweareonlydriving1rowat
atimethisgivesalotofopportunityforexpansion,upto33columnsforthischip
(moreonthatinthe"modularconcepts"step).

BuildingtheControlHardware
[Link]
solutionyouwillwanttoeitheretchyourowncircuitboardoruseprototyping
board.
[Link]
Placethemic2981(orUDN2981)inthebreadboard
ConnectPin9toVoltage(Thisisconfusingintheschematic)
ConnectPin10toGround(Thisisconfusingintheschematic)
insert3k3resistorsconnectingtopins18
ConnectfromPortDoftheATmega8(PD0PD8)tothe8resistors
Connectthe8rowcontrolwiresoftheLEDmatrixtopins1118(notethatI
haveconnectedthelowestrowofLEDstoPin18andtheHighestrowtoPin
11).
[Link]
Placethehef4794inthebreadboard
ConnectPin16tovoltage
ConnectPin8toground
Connect220ohmresistorstoPins47and1114.
Connectthe8columncontrolwiresfromtheLEDmatrixtothe8resistors
youjustconnected.
ConnectPin1(Latch)toPC0oftheATmega8
ConnectPin2(Data)toPC1oftheATmega8
ConnectPin3(Clock)toPC2oftheATmega8
ConnectPin15(EnableOutput)toPC3oftheATmega8
[Link]
Connecta12MHzcrystalandloadcapacitorsasshownintheschematic
[Link]
Connecttheprogrammingheaderasshownintheschematic
[Link]
ItisbesttofilterthevoltagesuppliedtotheATmega8.Usea0.1ufcapacitor
betweenPin7&8oftheATmega8
[Link]
resistortoconnectittovoltage,anythingabout1kshouldbegood.I'veused
a10kresistorintheschematic.
[Link]+[Link]'suptoyoutodesignthe
regulator.

Step4:Software
TheTrick
Yes,likeeverything,there'satrick.Thetrickisthattherearenevermorethan8
LEDsilluminatedatonetime.
Forthistoworkwell,[Link]
[Link]'showthedisplayinterruptworksinplain
english:
Timercountsuptoacertainpoint,whenreachedtheinterruptservice

routineisrun.
Thisroutinedecideswhichrowisthenextonetobedisplayed.
Theinformationforthenextrowislookedupfromabufferandshiftedinto
thecolumndriver(thisinformationisnot"latched"soitisnotyetdisplayed).
Therowdriverisshutoff,noLEDsarecurrentlylit.
Thecolumndriveris"latched"makeintheinformationweshiftedintwo
stepsagothecurrentinformationtodisplay.
Therowdriverthenprovidescurrenttothenewrowwearedisplaying.
Theinterruptserviceroutineendsandprogramreturnstonormalflowuntil
thenextinterrupt.
[Link]
meansthatwe'[Link]
[Link]
brightnessbecauseweareessentiallyrunningtheLEDsata1/8dutycycle
(theyareoff7/8ofthetime).InmycaseIgetanadequatelybrightdisplaywith
novisibleflashing.
[Link]
canbechanged(bemindfulofatomicity)andwillappearonthedisplayduring
thenextinterrupt.
ThespecificsofwritingcodefortheAVRmicrocontrollerandofhowtowrite
[Link]
includedthesourcecode(writteninCandcompiledwithAVRGCC)aswellas
[Link]
beabletousethistoclearupanyquestionsabouthowtogetdataintotheshift
registerandhowtherowrefreshisworking.
PleasenotethatIamusingafontfilethatcamewiththeks0108universalC
[Link]:[Link]
([Link]
Update:

ShiftRegisters:HowTo
I'[Link]
clearsthingsupforthosewhohaven'tworkedwiththembefore.
Whattheydo
ShiftRegisterstakeasignalfromonewireandoutputthatinformationtomany
[Link],thereisonedatawirethattakesinthedataand8
[Link]
thingsbetter,thereisanoutpinforeachshiftregisterthatcanbeconnectedto
[Link]
expansionpotentialanalmostunlimitedprospect.
TheControlPins
Shiftregistershave4controlpins:
LatchThispintellstheshiftregisterwhenitistimetoswitchtonewly
entereddata
DataThe1'sand0'stellingtheshiftregisterwhatpinstoactivateare
receivedonthispin.
ClockThisisapulsesentfromthemicrocontrollerthattellstheshift
registertotakeadatareadingandmovetothenextstepinthe
communicationprocess
EnableOutputThisisanon/offswitch,High=On,Low=Off
Makingitdoyourbidding:
Here'sacrashcourseintheoperationoftheabovecontrolpins:
Step1:SetLatch,Data,andClocklow
SettingtheLatchlowtellstheshiftregisterweareabouttowritetoit.
Step2:SetDatapintothelogicvalueyouwanttosendtotheShiftRegister
Step3:SetClockpinhigh,tellingtheShiftRegistertoreadinthecurrentData
pinvalue
AllothervaluescurrentlyintheShiftRegisterwillmoveoverby1place,
makingroomforthecurrentlogicvalueoftheDatapin.
Step4:SettheClockpinLowandrepeatsteps2and3untilalldatahasbeen
senttotheshiftregister.
TheclockpinmustbesetlowbeforechangingtothenextDatavalue.
Togglingthispinbetweenhighandlowiswhatcreatesthe"clockpulse"the
shiftregisterneedstoknowwhentomovetothenextstepintheprocess.

Step5:SetLatchhigh
Thistellstheshiftregistertotakeallofthedatathathasbeenshiftedinand
[Link]
isshiftinginnochangeintheoutputpinswilloccuruntiltheLatchisset
high.
Step6:SetEnableOutputhigh
TherewillbenopinoutputuntiltheEnableOutputissettohigh,nomatter
whatishappeningwiththeotherthreecontrolpins.
Thispincanalwaysbelefthighifyouwish
Cascading
Therearetwopinsyoucanuseforcascading,[Link]
[Link]
shiftregisterandtheoverflowfromthischipwillbeenteredintothenext.
Endofupdate

Addressingthedisplay
IntheexampleprogramIhavecreatedanarrayof8bytescalledrow_buffer[].
Eachbytecorrespondstoonerowofthe8x8display,row0beingthebottom
[Link],the
[Link]
valuetothatdataarray,theinterruptserviceroutinetakescareofrefreshingthe
display.

Programming
[Link]
DAPAprogrammingcableasIbelieveyouwillbeunabletoprogramthechip
[Link]
(STK500,MKII,Dragon,Parallel/Serialprogrammers,etc.).
Fuses:
Makesuretoprogramthefusestousethe12MHzcrystal
hfuse:0xC9
lfuse:0xEF

InAction
Onceyouprogramthechipthedisplayshouldscrolla"HelloWorld!".Hereisa
[Link]
withmydigitalcamera'svideofeatureandnotapropervideoorwebcam.

8x8_Matrix.zip

(/files/orig/FZ3/1Y26/FHEZC86Z/[Link])9KB

Step5:Modularconcepts

([Link]

([Link]

([Link]

[Link]
yourpowersupplycanprovide.(TheotherrealityishowmanyLEDsand
registershiftersyouhaveavailable).

Math

([Link]

IamdrivingtheLEDsatabout15mA(5V1.8vDrop/220ohms=14.5mA).This
meansIcandriveupto33columnswiththemic2981driver
(500mA/15mA=33.3).Dividedby8wecanseethatthisallowsustostring
together4shiftregisters.
Alsoconsiderthatyoudonotneedtohaveall32columnsstretchfromleftto
right.Youcouldinsteadcreatea16x16arraythatiswiredthesamewayyou
wouldan8x32array.Thiswouldbeaddressedbyshiftingin4bytes....thefirst
twowouldshiftallthewaytotheledsforthe9throw,thesecondtwobytes
[Link]
driver.

CascadingShiftRegisters
[Link]
shiftindata,[Link]
setofshiftregisterscanbeconnectedtoeachother,OspintoDatapin,adding

8columnswitheachnewchip.
AlloftheshiftregisterswillconnecttothesameLatch,Clock,andEnable
[Link]"cascading"effectiscreatedwhenthe
[Link]
programmingwillneedtobealteredtoreflecttheincreasednumberofcolumns.
Boththebufferthatstorestheinformationandthefunctionthatshiftsinformation
inforeachcolumnneedtobeupdatedtoreflecttheactualnumberofcolumns.
Aschematicofthisisgivenbelowasanexample.

MultipleRowDrivers
Therowdriver(mic2981)[Link]
ifyouwantmorethan32columns?Itshouldbepossibletousemultiplerow
driverswithoutusingmoremicrocontrollerpins.
[Link]
usingmorecolumnsthanitispossibletolightatonetime,additionrowdrivers
[Link]
[Link],each
drivercontrolstherowsforan8x32block.Eventhough64columnsmayhave
thesamePHYSICALrowplacement,wedividetherowbusesintwo,usingone
driverforthe8rowsofthefirst32columns,andaseconddriverforthe8rows
ofthesecond32columnsandsoforth.
Aschematicofthisisgivenbelowasanexample.
PotentialMissteps:
[Link]
wouldmeanthateachshiftregisterpinwouldbedrivingmorethanoneLEData
time.
2.Youmusthaveasetof8resistors(3k3)foreachrowdriver,onesetfor
multiplerowdriverswillnotworkasitwillnotprovidethenecessarycurrentto
switchthegates.

ForExample
IdecidedtoexpandonthematrixIbuiltearlier.Ihaveadded7morerowsfora
totalof15asthat'sallIcanfitonthisprotoboard.
IalsojustfoundoutaboutacontestthatInstructablesisdoingcalled"Letit
Glow".[Link],thedigitalcameraIused
totakethevideodoesn'[Link],
especiallywherealltheLEDsflash,butdoesn'tlooknearlyasgoodinthevideo.
Enjoy:

Sourcecodeforthislargerdisplayisincludedbelow.

Let_It_Glo.zip

(/files/orig/FCQ/LVN5/FHEJ16M3/[Link])11KB

Step6:Conclusion
PossibleAdditions

I2C
IhavelefttheTwoWireInterface(I2C)[Link]
severalinterestingprospectsthatcanusethesetwopins.AdditionofanI2C
[Link]
prospectofdesigningprogrammingtoturnthemega8intoanI2Ccompatible
[Link]
todisplaydataonyourLEDarraybypassingitovertheI2Cbus.
Input
TherearemanypinsleftoverthatcouldbeusedforbuttonsoranIRreceiver.
Thiswouldallowformessagestobeprogrammedinviaamenusystem.
Display
[Link]
writescharacterstothedisplay,theotherscrollscharactersontothedisplay.
Theimportantthingtorememberisthatwhatyouseeinthelightsisrepresented
[Link],the
lightswillchangeinthesameway.
Sometantalizingopportunitiesincludecreatingagraphingmeteroutofthe
[Link]
implementedfromthetopdownorbottomup,[Link],have
fun!

Step7:FollowUp

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

([Link]

AfterlettingthecontrollercircuitsitinthebreadboardformonthsIfinally
designedandetchedafewcircuitboardstoputthisprototypetogether.
Everythingworkedoutgreat,Idon'tthinkthere'sanythingIwouldhavedone
differently.

CircuitBoardFeatures
Shiftregistersareonseparateboardsthatcanbedaisychainedtogetherto
increasethesizeofthedisplay.
Controllerboardhasit'sownpowerregulatorsothiscanberunbyany
powersourcethatprovides7v30v(9vbatteryor12vbenchsupplyboth
workjustfineforme).
([Link]
6pinISPheaderincludedsothemicrocontrollercanbereprogrammed
withoutremovingitfromtheboard.

[Link]
aneepromtostoremoremessagesoreventomakethisaslavedevice
controlledbyanothermicrocontroller(RSStickeranyone?)
[Link]
firmwareinthefuturetoincludetheuseofthesebuttons.

Assembly
Givemeplexiglass,anglebrackets,6x32machinescrews,nuts,andwashers,
aswellasatapsettothreadholesandIcancreateanything.

LED_Matrix_PCB_Proto_Firmware.zip
(/files/orig/FJ8/9K1G/FLROM0XW/[Link])12KB

Wehaveabenicecommentpolicy.
Pleasebepositiveandconstructive.

IMadeit!

140of
130

AddImages

MakeComment

Next([Link]
&sort=ACTIVE&limit=40&offset=40#DISCUSS)

axeman911(/member/axeman911/)

4yearsago

Reply

insteadofmic2981wouldadecadecounterwork,orcouldwejustoutthepins
directlyonthearduino?
(/member/axeman911/)
flag

bweaver6(/member/bweaver6/) axeman911

3monthsago

Reply

YouwouldntwanttouseattlICtopowertheLED'[Link]
(/member/bweaver6/)
pulltomuchcurrentfortheICtohandle.
flag

zxlee(/member/zx+lee/)

1yearago

Reply

Thumbsup,greatexplanation,greatinstructables:D
(/member/zx+lee/)
flag

fredkylam(/member/fredkylam/)

1yearago

Reply

ThecolumndriverisdriveonlyONEcolumnatanyonetime,sothecurrent
(/member/fredkylam/)
[Link]

[Link]?
flag

MCUman(/member/MCUman/)

2yearsago

LEDmatrixusingshiftregisters bybarney_1(/member/barney_1/)

Reply

[Link]
needed?WhatisthecostofthisHEF4794?GiventhePOVofthehumaneye
(/member/MCUman/)
versusthespeedofamicrocontroller,Ihaveneverseenthisasaproblem
Download(/id/LEDmatrixusingshiftregisters/?download=pdf)
(/id/LEDmatrixusingshiftregisters/)
usingaoldtrusty74HC164,which,BTW,[Link]
theHC164isconsiderablycheaperoverthecostofthe4794by$[Link]
Collection
IMadeit!
doIknowthis?I'veusedtheHC164inthismodefornumeroussuccessful
designsthathavegonetoproduction,[Link]
greatarticletodemonstratetotheHEF4794butisittrulypractical?
flag

JHSTUBA(/member/JHSTUBA/)

2yearsago

Reply

Isthe10kresistornescessary?
(/member/JHSTUBA/)

flag

(/contest/letitglow/)

7Steps
Favorite

Share

Kamilon(/member/Kamilon/)

2yearsago

Reply

I'[Link]
matrixthatallowsfordirectdrive(eachLEDindividuallycontrolled),checkthis
(/member/Kamilon/)
out:
[Link]
[Link]
thanbuyingonebyfollowingyourinstructions.
flag

jigs859(/member/jigs859/)

3yearsago

Reply

imdoingthisproject....butadditioninthis,imuseagsmmodulewhich
receivesthemessagesendbyanycellphone,anditdisplaythemessageon
(/member/jigs859/)
theleddisplay...soineedCIRCUITDIAGRAMandCODEforthisproject....plz
helpmesoon...
flag

samwhiteUK(/member/samwhiteUK/) jigs859

2yearsago

Reply

Basicallyyouwantsomeoneelsetodoyourprojectforyouthendon't
you?You'lllearnalotmorebydoingtheresearchandthegraft
(/member/samwhiteUK/)
yourself.
flag

'earl(/member/%27earl/)

3yearsago

Reply

Shouldbe"clamp"Justsaying.
(/member/%27earl/)

flag

eriknyquist(/member/eriknyquist/)

3yearsago

Reply

IwanttobuildsomethinglikethisbutI'venoticedthatmostoftheexamplesof
codethatI'vefoundforLEDdrivingprogramsarewritteninanassembly
(/member/eriknyquist/)
[Link]?wouldliketoavoiditifpossible...
flag

axeman911(/member/axeman911/)

3yearsago

Reply

howdouuploadcodeinC++tothearduino???
(/member/axeman911/)

kimchhour(/member/kimchhour/)

flag

3yearsago

Reply

Hisirineedtomakeboardformatrix832.
(/member/kimchhour/)

[Link](/member/[Link]/)

flag

4yearsago

Reply

Atmega16?codeHelpPLZ
(/member/[Link]/)

shanakaplus(/member/shanakaplus/)

flag

4yearsago

Reply

I'[Link]
youhelpmetofindineagle?
(/member/shanakaplus/)
flag

avanner77(/member/avanner77/) shanakaplus

4yearsago

Reply

or,iftheydontmatchup,youcanmakeyourownpartwiththistutorial:
[Link]
(/member/avanner77/)
flag

avanner77(/member/avanner77/) shanakaplus

4yearsago

Reply

ifyoucheckthedatasheetsforthehef4794andthe74hc595,youcan
seeiftheyhavethesamepinoutandjustusetheeaglepartforthe595
(/member/avanner77/)
flag

EmilianoValencia(/member/Emiliano+Valencia/)

4yearsago

Reply

hi,imreallyinterestedinthisproject,speciallyinthe16x16array,butIwantto
useitwithanarduino,andalso,thateachLEDisindividuallyaddressable
(/member/Emiliano+Valencia/)
(meaningthatthecodeshuldhaveaplacewithlineswiththetext
"B00000000,x32"andthateachlinehasatotalof2560(Whichcanbe
changedto1tomaketleLEDlightup)soeachlinewouldbeanewframewith
everyLEDindividuallyaddressable.
TheproblemisthatImkindanewwithmicrocontrollersandcan'twritethe
code,WherecanIgetit??canyouhelpmewriteit??
plzhelp,
reallyinterestedinurproject.
Thanks.
flag

sun580(/member/sun580/)

4yearsago

Reply

thanksitsgood
(/member/sun580/)

kalasas18(/member/kalasas18/)

flag

4yearsago

[Link]
(/member/kalasas18/)
example:

LISTP=16F876
#include<[Link]>
__CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
ORG0x2100
DE0x00
ORG0

cblock0x20
d1
d2
d3
endc
gotostart
Delay
999990cycles
movlw0x07
movwfd1
movlw0x2F
movwfd2
movlw0x03
movwfd3
Delay_0
decfszd1,f
goto$+2
decfszd2,f
goto$+2
decfszd3,f
gotoDelay_0
6cycles
goto$+1
goto$+1
goto$+1
4cycles(includingcall)
return
loop:
movlwb'00000111'
movwfPORTA
movlwb'11110010'
movwfPORTB
movlwb'11111111'
movwfPORTC
callDelay
callDelay
callDelay
gotoloop
start:

Reply

bsfSTATUS,RP0selectregisterpage1
movlw0put0intoW
movwfTRISCsetportCalloutput
clrfTRISA
clrfTRISB
bsfSTATUS,RP1selectPage2,
bcfSTATUS,RP0bysettingRP1inStatusregisterandclearingRP0
clrfPORTCselectDigitalI/OonportC

bcfSTATUS,RP1backtoRegisterPage0
gotoloop
end

[Link]
[Link],Itriedtoigniteapairofcolumnson
[Link],
donotlightlonger...Anybodyknowwhat'swrong...
Programmecode:

LISTP=16F876
#include<[Link]>
__CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
ORG0x2100
DE0x00
ORG0

cblock0x20
Delay1delayloop1
Delay2delayloop2
Delay3delayloop3
TimeDelaytimedelayx0.001s
EndCountusedtotellPICtheendofthetableisreached
Counterusedastablecounter
Line1Line1
Line2Line2
Line3Line3
Line4Line4
Line5Line5
sad
Line6Line6
Line7Line7
Line8Line8
Layer4brightness,andtime
BrightnessLEDbrightness
Timetimeforeachpatterntostay
Temptempregister
d1
d2
d3
endc

gotostart
Delay
999990cycles
movlw0x17
movwfd1
movlw0x2F
movwfd2
movlw0x03
movwfd3
Delay_0
decfszd1,f
goto$+2
decfszd2,f
goto$+2
decfszd3,f
gotoDelay_0
6cycles
goto$+1
goto$+1

goto$+1
4cycles(includingcall)
return
loop:
movlwb'00000001'
movwfLine1
movlwb'11110010'
movwfLine2
calloutput

callDelay
movlwb'11100000'
movwfLine1
movlwb'10101010'
movwfLine2
calloutput
callDelay
gotoloop

start:
bsfSTATUS,RP0selectregisterpage1
movlw0put0intoW
movwfTRISCsetportCalloutput
clrfTRISA
clrfTRISB
bsfSTATUS,RP1selectPage2,
bcfSTATUS,RP0bysettingRP1inStatusregisterandclearingRP0
clrfPORTCselectDigitalI/OonportC
bcfSTATUS,RP1backtoRegisterPage0
gotoloop

output:
movfwLayer4
andlwb'00000001'
movwfTime
incfTime,1
bcfSTATUS,C
rlfTime,1
bcfSTATUS,C
rlfTime,1
bcfSTATUS,C
rlfTime,1
bcfSTATUS,C
rlfTime,1
bcfSTATUS,C
rlfTime,1

clrfPORTBclearportB
movfwLine1movelayer1toW
movwfPORTCputWontoPortC
bsfPORTB,4turnonlayer1buyoutputingbit5ofPortB
movfwBrightnessputbrightnessintoW
callDelayycallthedelay
bcfPORTB,4turnofflayer1
movfwBrightnessputBrightnessintoW
sublw4subWfrom4
btfssSTATUS,Zskipifthezeroflagisset
callDelayycallthedelay
decfszTime
clrfPORTBclearportB
movfwLine2moveLine2toW
movwfPORTCputWontoPortC
bsfPORTB,5turnonlayer2buyoutputingbit6ofPortB

movfwBrightnessputbrightnessintoW
callDelayycallthedelay
bcfPORTB,5turnofflayer2
movfwBrightnessputBrightnessintoW
sublw4subWfrom4
btfssSTATUS,Zskipifthezeroflagisset
callDelayycallthedelay
decfszTime
decfszTimedecrementtheTimeregiester
return

Delayy:
movwfDelay3putWintoDelay3
Loop1:
AfterDelay2decresesto0,itisresetto..
movlw0x1put1intoW
movwfDelay2putWintoDelay2
Loop2:
AfterDelay1decresesto0,itisresettoE9h
movlw0x1Dput80intoW
movwfDelay1putWintoDelay1
Loop3:
decfszDelay1decrementDelay1
gotoLoop3jumpbacktoLoop3
decfszDelay2decrementDelay2
gotoLoop2jumpbacktoLoop2
decfszDelay3decrementDelay3
gotoLoop1jumpbacktoLoop1
return
end

Thanksforhelp.:)
flag

[Link](/member/[Link]/)

4yearsago

Reply

DoesanyoneknowifthematrixwouldworkwithanArduinoboard????
(/member/[Link]/)

ji394su3(/member/ji394su3/)

flag

4yearsago

Reply

goodarticle!!
(/member/ji394su3/)

pavanbhushan(/member/pavanbhushan/)

flag

4yearsago

Reply

whatistheadditionalconnectionthatshouldbemadetomaketheLEDsglow
individualletters???
(/member/pavanbhushan/)
flag

pavanbhushan(/member/pavanbhushan/)

4yearsago

Reply

howcanwemakethe8*8leddisplaytheletters????I'mstuckatthispoint...
(/member/pavanbhushan/)

Suresh.D.M(/member/Suresh.D.M/)

flag

4yearsago

Reply

canweaddshiftregisterstothecolumnandshiftthebit
(/member/Suresh.D.M/)

pontikakis3(/member/pontikakis3/)

flag

4yearsago

Reply

WhereistheFontSetat[Link]
(/member/pontikakis3/)

DanielIt(/member/DanielIt/)

flag

5yearsago

Reply

Heythere..niceproject,[Link]
learningC,ienlargedtheprojecttobe8x32columns,buticantgetthecodeto
(/member/DanielIt/)
[Link]?Therearesome
partsinthecodecommentedthatneedtobealtered,buticantfigureout
[Link],orustreplyhere.
Thank'sandkeepupthegoodwork!!
flag

dhimullai(/member/dhimullai/) DanielIt

5yearsago

Reply

Hi
Itootriedwithexpanding8x32,itdoesn'tworksasexpected.,Anyone
(/member/dhimullai/)
canhelpme,
flag

knektek(/member/knektek/)

5yearsago

Reply

Couldyouuseawholeloadoftransistors?Forswitchingsomethingelse?
Maybeanarrayofmotorsorswitchingrelays?
(/member/knektek/)
flag

greekwow(/member/greekwow/)

5yearsago

Reply

doestheledshavegoodbrighness?thereisnotproblemwithdutycycle?
becouseihavethatprobleminmyproject,(iuse4017decadecounter)
(/member/greekwow/)
flag

ndinitz(/member/ndinitz/)

5yearsago

Reply

canthisbedoneusingparallelloadshiftregistersordoesithavetobedone
withserialload.
(/member/ndinitz/)
ifitistobedoablewithparallelloadregistersthentheboarddoesnthaveto
displayonlyonecolumnatatime,right?thatwouldbesomuchcoolerand
youcouldbuildmodulesandconnectthemwithparallelinserialouttoserialin
parallelout.
lemeknowwhatyouthink...
flag

rammbo69(/member/rammbo69/)

5yearsago

Reply

Bothare20pF.
(/member/rammbo69/)

malth91(/member/malth91/)

flag

5yearsago

Reply

averyinformativeandinterestingsite
(/member/malth91/)

roketlights(/member/roketlights/)

flag

5yearsago

Reply

whatarevaluesforc2andc3?????imrelyingentirelyonthis!!please?igot
[Link]!!!
(/member/roketlights/)
flag

jeffo(/member/jeffo/)

5yearsago

Reply

Justtoclarify,couldIprograminabunchofphrases(like,3040)andcallup
anyoneofthembasedoncertaininputs?Whatisthelimitonphraselength
(/member/jeff
o/) withoutanyexternalmemory?
flag

roketlights(/member/roketlights/)

5yearsago

Reply

ijustboughtabuttloadofregisters.imtryingtomakea32x32anypointers?
onhowtoconnect8x8inrowsandcolumns?anyhelpwouldbeapprecieated.
(/member/roketlights/)
:)
flag

hype1(/member/hype1/)

5yearsago

Reply

IamlookingintoyoursetupandInoticedthis:Whydoyouusesuchadriver
onthehighsidewhenyouarelightingonecolumnatthetimeduring
(/member/hype1/)
multiplexing?Nowyoucouldsourcerowsof8LED'satonetime,butthatisn't
thecasewhilemultiplexing,right?
flag

monkeydluffy(/member/monkeydluffy/)

6yearsago

Reply

brobarney,canuhelpmetogetHEF4794?ineedtheHEF4794??9ofthem
[Link]'snostoresellthatshift
(/member/monkeydluffy/)
register:(:(CanIgetitfromu??I'llpayitlater.I'minJakarta,Indonesia.
Pleasehelpmemaster,[Link]
:)
flag

ndegwa(/member/ndegwa/)

6yearsago

Reply

Ineedhelpprogrammingthemicrocontrollercouldyoupleasehelpiwould
likemydisplaytoscrollthefollowingNBI..............VOI.............MBSoverand
(/member/ndegwa/)
overandcanalsobemadetostopatoneofthelettersshown.
flag

CallumSnowden(/member/Callum+Snowden/)

6yearsago

Reply

CouldyouuseaMAX232toconnectittoacomputer?
(/member/Callum+Snowden/)

140of
130

flag

Next([Link]
&sort=ACTIVE&limit=40&offset=40#DISCUSS)

Wehaveabenicecommentpolicy.
Pleasebepositiveandconstructive.

IMadeit!

AboutUs

AddImages

MakeComment

FindUs

WhoWeAre(/about/)

Facebook([Link]

Advertise(/advertise/)

Youtube([Link]

Contact(/about/[Link])

Twitter([Link]

Jobs(/community/PositionsavailableatInstructables/)
Help(/id/howtowriteagreatinstructable/)

Pinterest([Link]
Google+([Link]
Tumblr([Link]

Resources

Mobile

ForTeachers(/teachers/)

DownloadournewappsforiOS,

ArtistsinResidence([Link]
Join!
Join our newsletter: enteremail
GiftProAccount(/account/give?sourcea=footer)

AndroidandWindows8!

Forums(/community/)
Answers(/tag/typequestion/?sort=RECENT)
TermsofService([Link]
|

Android
([Link]
id=[Link])

Sitemap(/sitemap/)
PrivacyStatement([Link] |
LegalNotices&Trademarks([Link] | MobileSite([Link]
([Link]
2015Autodesk,Inc.

iOS
([Link]
Windows
([Link]
us/app/7afc8194c771441a9590
54250d6a8300)

GoProToday(/account/gopro?sourcea=footer)

We'reHiring!(/community/PositionsavailableatInstructables/)

You might also like