Use p-channel MOS to drive the anodes. The source of the MOS will be connected to 5V and it will turn on when the output of the PIC is low.
Use n-channel MOS to drive the cathodes. The source of the MOS will be connected to 0V and it will turn on when the output of the PIC is high.
Is is important that the supply of the leds is not greater from the supply of the PIC within the value of the threshold voltage of the p-channel MOS. The best is the supply of the leds and the PIC supply have the same voltage value.

Is there a particular reason that you selected 100 ohms as your current limiting resistor? I don't know what leds you are using so I can't judge precisely but by my estimates the current you are driving them with is in the neighborhood of 30 milliamps. That seems a bit intense.

Ill be honest I was a bit lazy on that front, I just plugged the type of led (high brightness white) into a generic calculator program I have and it spat out 100 ohm.
I looked for my led spec on ebay and it looks like its vf is 3.2 - 2.6 and reccomended forward current is 20mA. I agree it seems quite high but I think it will be ok because they have good cooling and wount be on for long at a time.

I hope to use the micro to create a constantly moving display

In reflection if there is a version 2 I will use perhaps 120 or 150 resistors.

Ill be honest I was a bit lazy on that front, I just plugged the type of led (high brightness white) into a generic calculator program I have and it spat out 100 ohm.
I looked for my led spec on ebay and it looks like its vf is 3.2 - 2.6 and reccomended forward current is 20mA. I agree it seems quite high but I think it will be ok because they have good cooling and wount be on for long at a time.

I hope to use the micro to create a constantly moving display

In reflection if there is a version 2 I will use perhaps 120 or 150 resistors.

Click to expand...

Sounds like you have the resistance in the right ballpark. I don't imagine that there will be any problems in view of the high forward voltage of your LEDs.

The purpose of this panel was originally going to be a 'random' starfield effect for my daughters ceiling in her bedroom. It was only once started I realised the possibilities. I now may use a pic18f4550 with usb and load effects on with the computer.

The purpose of this panel was originally going to be a 'random' starfield effect for my daughters ceiling in her bedroom. It was only once started I realised the possibilities. I now may use a pic18f4550 with usb and load effects on with the computer.

Click to expand...

Please be sure to send us a video clip of the finished product. It sounds awesome indeed.

That's a nice project. So, are you going to switch one column each time and determine which leds will light in each column?

I did the same with my spectrum analyzer (first link below) but I used 10 current sources to drive the leds as all the leds to have a fixed illumination.

Actually, you don't really need a current limiting resistor for each led, you just need as many resistors as your rows, because to make a scrolling display you will only switch only one column at a time so you can use the same resistors for all columns.

That's a nice project. So, are you going to switch one column each time and determine which leds will light in each column?

I did the same with my spectrum analyzer (first link below) but I used 10 current sources to drive the leds as all the leds to have a fixed illumination.

Actually, you don't really need a current limiting resistor for each led, you just need as many resistors as your rows, because to make a scrolling display you will only switch only one column at a time so you can use the same resistors for all columns.

Click to expand...

I plan to control both the rows and columns, effectively I give the row and column in as a parallel data off the ouput ports of the micro (or a shift register) and then I have full control over each and every one of the led's in the whole matrix. The columns and scrolling thing as you suggest would of course work but the way I have constructed it so far will give me more functionality

I plan to control both the rows and columns, effectively I give the row and column in as a parallel data off the ouput ports of the micro (or a shift register) and then I have full control over each and every one of the led's in the whole matrix. The columns and scrolling thing as you suggest would of course work but the way I have constructed it so far will give me more functionality

Hi again MIK3, Just had a look at your display on youtube, very cool.
Regarding what we were discussing about rows and columns before, I must admit I hadnt thought it through properly. Had been planning to load rows and columns all at once but this will not work. Of course loading them at once would result in 'pixels' being lit where they were not meant to be. A big Ah Ha from me, now I see what you mean, Only by scanning rows for instance will I be able to load 'pixels' as needed and not have 'rouge pixels'