loading
This instructable will show you how to make a 8x8 LED matrix in witch you can control evry single LED and create your own patterns as long as they only need 64 pixels to show them in one color.

Update 25.09.10

I've added a pattern generator to create patterns but not all of it's features are complete

Step 1: Materials

Materials you need:
-8x8LED matris (can make one but i bought mine)
-16x120Ohm resistors
-8xNPN transistors (I used C547B)
-1xPIC16f690
-prototype board (or you can make pcb for this)
-wire
-5V power supply (you can use a voltige regulator but I just power mine from a usb port)

Tools:
-PIC programmers (all the pic programmers from microchip exept for pickit1 will work)
-Software- MPLAB (free software from microchip)
-Soldering iron
-A vacum pump for removing solder is good to have
-wire cutters

Skills you need:
-soldering skill (being capable of making good solder connections within 5-10 sec.)
-Logic thinking to some level

If this is your first experiense using microcontrollers I recommend that you start with a more simple project.
<p>Hi,</p><p>Can anyone share a code for 8x10 led matrix with Arduino.. pls mail me if possible </p><p>abhijit2683@gmail.com ..</p><p>thanks in advance</p>
<p>im done on the code that you've been discussed on this website...but a little confuse on how to convert the code.asm to hex file...to burn it to the pic16f690</p>
Good evening, Thanks , you're given code and circuit worked. you're code and circuit help me a lot. But I have a question on how can I simply move the letters from left to right or vice versa, or just scrolling text.? do you have any idea on how to do it? thanks mr. hemmikarl for the help. I hope you can help me with my little problem to improve my circuit project. thanks again. this is my accomplished circuit based on your tutorial,<br> http://img820.imageshack.us/img820/7044/newnl.jpg
my problem about the mplab was resolved. i reinstall my MPLAB and it works... i already built the circuit...but i cant see any pattern... it seems like a random lighting of leds...
hello this is my screen shot of my errors during my program in MPLAB. http://img94.imageshack.us/img94/3340/8x8.png
do lines 43 to 53 look like this?<br><br><br> Time ; time for each pattern to stay<br> Temp ; temp register<br>endc<br><br> goto Start ; jump to Start<br><br><br>;------------------------------------------------------------------;<br>; Subroutines are here at the top ;<br>;------------------------------------------------------------------;<br>
your project helps a lot but im new in circuit building the schematic above is kinda confusing.. can you please provide a more specific pin connections. thank you very much hoping for your response thank you again and god bless.
thanks sir, will try what you tell us to do. :) have a good day!
that is my problem too. can you help us sir? please do reply. THANKS!
make sure the file name is correct <br>you can go directly to the file online (it's just a text file) and copy all of it <br>in MPLAB create a new file, paste the code into it and save as &quot;something.asm&quot; <br>I usually just use Quickbuild with asm files <br>I tried downloading it and it works fine with me <br>could you please send a screenshot of the errors you are having?
Hi, im new with this microcontroller programming. I already downloaded MPLAB. The problem is that when i put the code(LED_matrix.asm) there's a lot of error. <br> Please help me . <br>sample errors <br> Executable code and data must be defined in an appropriate section <br>Operand contains unresolvable labels or is too complex
make sure the file name is correct <br>you can go directly to the file online (it's just a text file) and copy all of it <br>in MPLAB create a new file, paste the code into it and save as &quot;something.asm&quot; <br>I usually just use Quickbuild with asm files <br>I tried downloading it and it works fine with me <br>could you please send a screenshot of the errors you are having?
How can I gate IC programming soft wear
The sofrware is free BUT you need a pic programmer for example I used PicKit2 in this project, Now a newer programmer is awailable it's called PicKit 3<br><br>the software is called MPLAB and you can get it from Microchip.com<br>you can get a pickit at microchipdirect.com, ebay or mabye even at a local electronics store
I'm using pic16f877a... Can you translate this to it???Pls... I'm a beginner to pic..<br><br>Thanks
how to get a full schematic of it?can anyone save me
OK, so let's say I built this. Because I'm a beginner and i don't know almost anything about circuits and stuff, how should I program the microcontroler to show some letters? I make the letters, save them but how to upload them to the microcontroler? Thanks in advance!
<br> I have a simple ASM program with a matrix display light just columns. <strong>An example:</strong><br> <br> ;-----------------------<br> LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P=16F876<br> #include &lt;p16F876.inc&gt;<br> &nbsp; &nbsp;<br> __CONFIG&nbsp;&nbsp; _CP_OFF &amp;&nbsp; _WDT_OFF &amp; _PWRTE_ON &amp; _XT_OSC<br> ORG&nbsp;&nbsp; 0x2100<br> DE&nbsp;&nbsp; 0x00<br> ORG&nbsp;&nbsp;&nbsp; 0<br> <br> <br> cblock 0x20<br> d1<br> d2<br> d3<br> endc<br> <br> goto start<br> <br> Delay<br> ;999990 cycles<br> movlw 0x07<br> movwf d1<br> movlw 0x2F<br> movwf d2<br> movlw 0x03<br> movwf d3<br> Delay_0<br> decfsz d1, f<br> goto $+2<br> decfsz d2, f<br> goto $+2<br> decfsz d3, f<br> goto Delay_0<br> <br> ;6 cycles<br> goto $+1<br> goto $+1<br> goto $+1<br> <br> ;4 cycles (including call)<br> return<br> <br> loop:<br> movlw b'00000111'<br> movwf PORTA<br> movlw b'11110010'<br> movwf PORTB<br> movlw b'11111111'<br> movwf PORTC<br> call Delay<br> call Delay<br> call Delay<br> <br> goto loop<br> start:<br> bsf STATUS,RP0 ; select register page 1<br> movlw 0 ; put 0 into W<br> movwf TRISC ; set portC all output<br> clrf&nbsp; TRISA<br> clrf&nbsp; TRISB<br> <br> bsf STATUS,RP1 ; select Page 2,<br> bcf STATUS,RP0 ; by setting RP1 in Status register and clearing RP0<br> <br> clrf PORTC ; select Digital I/O on port C<br> <br> <br> bcf STATUS,RP1 ; back to Register Page 0<br> goto loop<br> <br> end<br> ;-----------------------<br> <br> <strong>This program code is OK</strong>. But I want the program to which I could display the words fleeing across the screen. Started, I tried to ignite a pair of columns on different sites but with the burning LEDs. But received some strange flashing, do not light longer ... Anybody know what's wrong ...<br> <strong>Programme code:</strong><br> <br> ;-----------------------<br> LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P=16F876<br> #include &lt;p16F876.inc&gt;<br> &nbsp; &nbsp;<br> __CONFIG&nbsp;&nbsp; _CP_OFF &amp;&nbsp; _WDT_OFF &amp; _PWRTE_ON &amp; _XT_OSC<br> ORG&nbsp;&nbsp; 0x2100<br> DE&nbsp;&nbsp; 0x00<br> ORG&nbsp;&nbsp;&nbsp; 0<br> <br> <br> cblock 0x20<br> &nbsp;&nbsp; Delay1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; delay loop 1<br> &nbsp;&nbsp; Delay2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; delay loop 2<br> &nbsp;&nbsp; Delay3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; delay loop 3<br> &nbsp;&nbsp; TimeDelay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; time delay x 0.001 s<br> &nbsp;&nbsp; EndCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; used to tell PIC the end of the table is reached<br> &nbsp;&nbsp; Counter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; used as table counter<br> &nbsp;&nbsp; Line1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 1<br> &nbsp;&nbsp; Line2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 2<br> &nbsp;&nbsp; Line3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 3<br> &nbsp;&nbsp; Line4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 4<br> &nbsp;&nbsp; Line5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 5<br> &nbsp;&nbsp; sad<br> &nbsp;&nbsp; Line6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 6<br> &nbsp;&nbsp; Line7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 7<br> &nbsp;&nbsp; Line8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Line 8<br> &nbsp;&nbsp; Layer4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; brightness, and time<br> &nbsp;&nbsp; Brightness&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; LED brightness<br> &nbsp;&nbsp; Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; time for each pattern to stay<br> &nbsp;&nbsp; Temp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; temp register<br> d1<br> d2<br> d3<br> endc<br> <br> <br> goto start<br> <br> Delay<br> ;999990 cycles<br> movlw 0x17<br> movwf d1<br> movlw 0x2F<br> movwf d2<br> movlw 0x03<br> movwf d3<br> Delay_0<br> decfsz d1, f<br> goto $+2<br> decfsz d2, f<br> goto $+2<br> decfsz d3, f<br> goto Delay_0<br> <br> ;6 cycles<br> goto $+1<br> goto $+1<br> goto $+1<br> <br> ;4 cycles (including call)<br> return<br> <br> loop:<br> movlw b'00000001'<br> movwf Line1<br> movlw b'11110010'<br> movwf Line2<br> call&nbsp;&nbsp; output<br> <br> <br> <br> call Delay<br> movlw b'11100000'<br> movwf Line1<br> movlw b'10101010'<br> movwf Line2<br> call&nbsp;&nbsp; output<br> call Delay<br> <br> goto loop<br> <br> <br> start:<br> bsf STATUS,RP0 ; select register page 1<br> movlw 0 ; put 0 into W<br> movwf TRISC ; set portC all output<br> clrf&nbsp; TRISA<br> clrf&nbsp; TRISB<br> <br> bsf STATUS,RP1 ; select Page 2,<br> bcf STATUS,RP0 ; by setting RP1 in Status register and clearing RP0<br> <br> clrf PORTC ; select Digital I/O on port C<br> bcf STATUS,RP1 ; back to Register Page 0<br> goto loop<br> <br> <br> <br> output:<br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Layer4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; andlw&nbsp;&nbsp; b'00000001'&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; movwf&nbsp;&nbsp; Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; incf&nbsp;&nbsp; Time,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS,C&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; rlf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time,1<br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS,C&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; rlf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time,1<br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS,C&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; rlf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time,1<br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS,C&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; rlf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time,1<br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS,C&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; rlf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time,1<br> <br> <br> <br> &nbsp;&nbsp; clrf&nbsp;&nbsp; PORTB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; clear port B<br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Line1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; move layer1 to W<br> &nbsp;&nbsp; movwf&nbsp;&nbsp; PORTC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put W onto PortC<br> <br> &nbsp;&nbsp; bsf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORTB,4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; turn on layer 1 buy outputing bit 5 of PortB<br> <br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Brightness&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put brightness into W<br> &nbsp;&nbsp; call&nbsp;&nbsp; Delayy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; call the delay<br> <br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORTB,4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; turn off layer 1<br> <br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Brightness&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put Brightness into W<br> &nbsp;&nbsp; sublw&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; sub W from 4<br> &nbsp;&nbsp; btfss&nbsp;&nbsp; STATUS,Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; skip if the zero flag is set<br> &nbsp;&nbsp; call&nbsp;&nbsp; Delayy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; call the delay<br> decfsz&nbsp;&nbsp; Time<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; clrf&nbsp;&nbsp; PORTB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; clear port B<br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Line2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; move Line2 to W<br> &nbsp;&nbsp; movwf&nbsp;&nbsp; PORTC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put W onto PortC<br> <br> &nbsp;&nbsp; bsf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORTB,5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; turn on layer 2 buy outputing bit 6 of PortB<br> <br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Brightness&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put brightness into W<br> &nbsp;&nbsp; call&nbsp;&nbsp; Delayy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; call the delay<br> <br> &nbsp;&nbsp; bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORTB,5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; turn off layer 2<br> <br> &nbsp;&nbsp; movfw&nbsp;&nbsp; Brightness&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put Brightness into W<br> &nbsp;&nbsp; sublw&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; sub W from 4<br> &nbsp;&nbsp; btfss&nbsp;&nbsp; STATUS,Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; skip if the zero flag is set<br> &nbsp;&nbsp; call&nbsp;&nbsp; Delayy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; call the delay<br> decfsz&nbsp;&nbsp; Time<br> &nbsp; &nbsp;<br> decfsz&nbsp;&nbsp; Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; decrement the Time regiester<br> return<br> <br> <br> Delayy:<br> &nbsp;&nbsp; movwf&nbsp;&nbsp; Delay3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put W into Delay 3<br> <br> Loop1:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; After Delay2 decreses to 0, it is reset to..<br> &nbsp;&nbsp; movlw&nbsp;&nbsp; 0x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put 1 into W<br> &nbsp;&nbsp; movwf&nbsp;&nbsp; Delay2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put W into Delay2<br> <br> Loop2:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; After Delay1 decreses to 0, it is reset to E9h<br> &nbsp;&nbsp; movlw&nbsp;&nbsp; 0x1D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put 80 into W<br> &nbsp;&nbsp; movwf&nbsp;&nbsp; Delay1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; put W into Delay1<br> <br> Loop3:<br> &nbsp;&nbsp; decfsz&nbsp;&nbsp; Delay1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; decrement Delay1<br> &nbsp;&nbsp; goto&nbsp;&nbsp; Loop3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; jump back to Loop3<br> &nbsp;&nbsp; decfsz&nbsp;&nbsp; Delay2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; decrement Delay2<br> &nbsp;&nbsp; goto&nbsp;&nbsp; Loop2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; jump back to Loop2<br> &nbsp;&nbsp; decfsz&nbsp;&nbsp; Delay3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; decrement Delay3<br> &nbsp;&nbsp; goto&nbsp;&nbsp; Loop1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; jump back to Loop1<br> &nbsp;&nbsp; return<br> <br> end<br> ;----------------------------------------------------------<br> <br> Thanks for help. :)
help me complain<br>goto $+1<br>goto $+1<br>goto $+1<br>what does $ mean?<br>
A part of your problem might be the<br><br>Delayy:<br>that your subroutine is called but you call Delay on some parts of your code<br><br>The other part of your problem might be that you clear PORTB in the call of outputs<br>The code does not put PORTC all to 0 before it starts outputting so that might be a part of your problem<br><br>If it&acute;s neither of those then I'm not sure what's wrong
I have a question from this source<strong> code</strong>:<br> <br> ;-----------------------------------------------------<br> output:<br> <br> clrf PORTB ; clear port B<br> movfw Line1 ; move layer1 to W<br> movwf PORTC ; put W onto PortC<br> bsf PORTB,4 ; turn on layer 1 buy outputing bit 5 of PortB<br> <br> movfw Brightness ; put brightness into W<br> bcf PORTB,4<br> <br> <br> movfw Line2<br> movwf PORTC<br> bsf PORTB,5<br> movfw Brightness<br> call Delay ; call the delay<br> bcf PORTB,5 ; turn off layer 1<br> ;-------------------------------------------<br> <br> this code show indisplays line2 to spend line1. I want to display the line1 and line2 in one time. How to change the code?<br>
How difficult would it be to control this with an arduino? can anyone push me in the right direction?
i need a simple code from picture (A or F or K letter). please write something the code. :/
Hey so the code is just a simple 1 and 0? So how can I program this pic so i can just put power to one output. Just to make a led blink.
no the code is not just a simple 1 and 0. the code translates the 1 and 0 into what it should send to the outputs. <br>this is coded with assembler code<br><br>http://www.mstracey.btinternet.co.uk/pictutorial/picmain.htm<br><br>this is a good learning tool (althoug i'd like to point out that i don't know how to write a program from scratch i am capable of modifying programs alredy written)<br><br>and a good way to start is to actually understand what each command does (althoug he post it in hex format and i use text format for the commands)<br><br>movlw is moving some value into the register W for example<br>movlw b'10000000'<br>now the binary number 10000000 is in the w register<br>to move something from the W register into another name for example name_1<br><br>movlw b'10000000'<br>movwf name_1<br><br>here is a code that i put together for you to make a LED blink (uses PORTC 0 as output)<br><br><br>;Code starts<br>;-----------------------------------------------------------------------------<br><br>#include <br> __config (_INTRC_OSC_NOCLKOUT &amp; _WDT_OFF &amp; _PWRTE_OFF &amp; _MCLRE_OFF &amp; _CP_OFF &amp; _BOR_OFF &amp; _IESO_OFF &amp; _FCMEN_OFF)<br><br><br>; Delay = 1 seconds<br>; Clock frequency = 4 MHz<br><br>; Actual delay = 1 seconds = 1000000 cycles<br>; Error = 0 %<br><br> cblock 0x20<br> d1<br> d2<br> d3<br> endc<br><br>goto start<br><br>Delay<br> ;999990 cycles<br> movlw 0x07<br> movwf d1<br> movlw 0x2F<br> movwf d2<br> movlw 0x03<br> movwf d3<br>Delay_0<br> decfsz d1, f<br> goto $+2<br> decfsz d2, f<br> goto $+2<br> decfsz d3, f<br> goto Delay_0<br><br> ;6 cycles<br> goto $+1<br> goto $+1<br> goto $+1<br><br> ;4 cycles (including call)<br> return<br><br>loop:<br> movlw b'1'<br> movwf PORTC <br> call Delay<br> movlw b'0'<br> movwf PORTC<br> call Delay<br> goto loop<br>start:<br> bsf STATUS,RP0 ; select register page 1<br> movlw 0 ; put 0 into W<br> movwf TRISC ; set portC all output<br><br> bsf STATUS,RP1 ; select Page 2,<br> bcf STATUS,RP0 ; by setting RP1 in Status register and clearing RP0<br> <br> clrf ANSEL ; select Digital I/O on port C<br> clrf ANSELH ; &quot; &quot;<br><br> bcf STATUS,RP1 ; back to Register Page 0<br> goto loop<br> <br>end<br><br>;-----------------------------------------------------------<br>;Code ends
what if we're not allowed to used a microcontroller? thanks!
You could probably hook the power up individually and switch them yourself but the microcontroller would really be what you'd need to actually be able to make patterns automatically (without your interaction).
actually, it is not displayed automatically. we must use push buttons (or any) to display a certain pattern. any tips? thanks!
I suppose you could use a 555 timer and counter to create a scanning row, then another counter triggered at the bottom of the first one. The, All you need id to have switches at the output of the counters. (9 for each pattern) Then, 64 AND gates for each pattern. It would be very complicated. You could just wire up many leds in parallel. It just wouldn't have multiple patters.
I have a few 8x8 bicolor dot matrix LEDs I bought off of ebay some time ago that I would like to use but I'm a bit confused on the pin out. I believe they are red/green 8x8 dot matrix leds. There are 12 pins at the top and 12 at the bottom. Which gives me a total of 24. I understand I will only connect a total of 16 pins for rows and columns. So what ones do i use? I've looked over the data sheet time and time again and I'm still confused.<br/><br/> <a rel="nofollow" href="http://www.sure-electronics.net/DC,IC%20chips/LE-MM103_4_b.jpg">http://www.sure-electronics.net/DC,IC%20chips/LE-MM103_4_b.jpg</a><br/>
pins 3 6 9 12 13 16 19 are common anode for both green and red. pins 24 21 18 15 1 4 7 10 are the green cathodes pins 23 20 17 14 2 5 8 11 are red cathodes at least if this is the right schematic of the part
Nice work!
thanks
I like the project, but a full clearer schematic would make it much better and easier to duplicate.
what is missing in this schematic? (exept for the 42 LED's)

About This Instructable

88,919views

47favorites

License:

More by hemmikarl:8x8 LED matrixUniversial radio iPod dock
Add instructable to: