EmbeddedRelated.com
Forums

LED Display Driver for use with PIC?

Started by Unknown December 7, 2004
Hello.

My current project uses a PIC16F873A to output to an already
multiplexed LED Display (Fairchild MSQ6441, 4 digit, 7-segment numeric
display).

I would like to relieve some work from the PIC, so I've been looking
into LED Display Drivers to pick up the slack.  I came across the
MAX7221, a nice chip from Maxim... common cathode LED Display Driver
that does the multiplexing for you, SPI compatible..easy to use.  It
supports all 8 digits, so I don't need the extra pins.

Now, Ideally I would like a LED Display Driver that is I2C (not SPI)
compatible and drives up to 4 digits.  I came across the MAX6958, it
looked perfect.. I2C compatible, drives 4 digits, 16 pin PDIP.  BUT,
you cannot hook up a multiplexed LED Dispaly to it because of it's
special multiplexing method (Charlieplexing).  You have to connect
individual digits to the chip...the chip needs access to each segment
(a,b,c,d,e,f) of each digit.  I would really like to stick with already
multiplexed LED Displays (ie, common cathodes and all segments tied to
each other).  Anyone know of such a chip that could hook up multiplexed
display which is I2C compatible.  Thanks for any input.

On 7 Dec 2004 14:25:31 -0800, the renowned jut.shanahan@gmail.com
wrote:

>Hello. > >My current project uses a PIC16F873A to output to an already >multiplexed LED Display (Fairchild MSQ6441, 4 digit, 7-segment numeric >display). > >I would like to relieve some work from the PIC, so I've been looking >into LED Display Drivers to pick up the slack. I came across the >MAX7221, a nice chip from Maxim... common cathode LED Display Driver >that does the multiplexing for you, SPI compatible..easy to use. It >supports all 8 digits, so I don't need the extra pins. > >Now, Ideally I would like a LED Display Driver that is I2C (not SPI) >compatible and drives up to 4 digits. I came across the MAX6958, it >looked perfect.. I2C compatible, drives 4 digits, 16 pin PDIP. BUT, >you cannot hook up a multiplexed LED Dispaly to it because of it's >special multiplexing method (Charlieplexing). You have to connect >individual digits to the chip...the chip needs access to each segment >(a,b,c,d,e,f) of each digit. I would really like to stick with already >multiplexed LED Displays (ie, common cathodes and all segments tied to >each other). Anyone know of such a chip that could hook up multiplexed >display which is I2C compatible. Thanks for any input.
What's the problem with getting the PIC to do it? Best regards, Spehro Pefhany -- "it's the network..." "The Journey is the reward" speff@interlog.com Info for manufacturers: http://www.trexon.com Embedded software/hardware/analog Info for designers: http://www.speff.com
jut.shanahan@gmail.com wrote:
> Hello. > > My current project uses a PIC16F873A to output to an already > multiplexed LED Display (Fairchild MSQ6441, 4 digit, 7-segment numeric > display). > > I would like to relieve some work from the PIC, so I've been looking > into LED Display Drivers to pick up the slack. I came across the > MAX7221, a nice chip from Maxim... common cathode LED Display Driver > that does the multiplexing for you, SPI compatible..easy to use. It > supports all 8 digits, so I don't need the extra pins. > > Now, Ideally I would like a LED Display Driver that is I2C (not SPI) > compatible and drives up to 4 digits. I came across the MAX6958, it > looked perfect.. I2C compatible, drives 4 digits, 16 pin PDIP. BUT, > you cannot hook up a multiplexed LED Dispaly to it because of it's > special multiplexing method (Charlieplexing). You have to connect > individual digits to the chip...the chip needs access to each segment > (a,b,c,d,e,f) of each digit. I would really like to stick with already > multiplexed LED Displays (ie, common cathodes and all segments tied to > each other). Anyone know of such a chip that could hook up multiplexed > display which is I2C compatible. Thanks for any input.
try http://www.standardproducts.philips.com/products/segmentdisplays/
jut.shanahan@gmail.com wrote:

> Hello. > > My current project uses a PIC16F873A to output to an already > multiplexed LED Display (Fairchild MSQ6441, 4 digit, 7-segment numeric > display). > > I would like to relieve some work from the PIC, so I've been looking > into LED Display Drivers to pick up the slack. I came across the > MAX7221, a nice chip from Maxim... common cathode LED Display Driver > that does the multiplexing for you, SPI compatible..easy to use. It > supports all 8 digits, so I don't need the extra pins. > > Now, Ideally I would like a LED Display Driver that is I2C (not SPI) > compatible and drives up to 4 digits. I came across the MAX6958, it > looked perfect.. I2C compatible, drives 4 digits, 16 pin PDIP. BUT, > you cannot hook up a multiplexed LED Dispaly to it because of it's > special multiplexing method (Charlieplexing). You have to connect > individual digits to the chip...the chip needs access to each segment > (a,b,c,d,e,f) of each digit. I would really like to stick with already > multiplexed LED Displays (ie, common cathodes and all segments tied to > each other). Anyone know of such a chip that could hook up multiplexed > display which is I2C compatible. Thanks for any input.
There shouldn't be that much work to offload. A timer that interrupts about every 4ms, 4 8-bit registers and a 4-bit shift register (or 2-bit counter) are all that's needed. If the processor is running at 4MHz, 10 instructions to do the switch would be 10us. 10us out of 4ms is a mere 0.25%. Even if my estimate if off by 2 or 3X, It's still less than 1% of the CPU cycles. Noel
>Subject: Re: LED Display Driver for use with PIC? >From: Noel Henson noel@noels-lab.com >Date: 08/12/2004 00:34 GMT Standard Time >Message-id: <5Yrtd.1039$Pw6.134@fe25.usenetserver.com> > >jut.shanahan@gmail.com wrote: > >> Hello. >> >> My current project uses a PIC16F873A to output to an already >> multiplexed LED Display (Fairchild MSQ6441, 4 digit, 7-segment numeric >> display). >> >> I would like to relieve some work from the PIC,
>There shouldn't be that much work to offload. A timer that interrupts about >every 4ms, 4 8-bit registers and a 4-bit shift register (or 2-bit counter) >are all that's needed. If the processor is running at 4MHz, 10 instructions >to do the switch would be 10us. 10us out of 4ms is a mere 0.25%. Even if my >estimate if off by 2 or 3X, It's still less than 1% of the CPU cycles. > >Noel
I agree with you Noel, probably not even 10 instructions needed. A lot more effort would be needed to run an I2C link.
On 08 Dec 2004 14:01:11 GMT, the renowned cbarn24050@aol.com
(CBarn24050) wrote:

>>Subject: Re: LED Display Driver for use with PIC? >>From: Noel Henson noel@noels-lab.com >>Date: 08/12/2004 00:34 GMT Standard Time >>Message-id: <5Yrtd.1039$Pw6.134@fe25.usenetserver.com> >> >>jut.shanahan@gmail.com wrote: >> >>> Hello. >>> >>> My current project uses a PIC16F873A to output to an already >>> multiplexed LED Display (Fairchild MSQ6441, 4 digit, 7-segment numeric >>> display). >>> >>> I would like to relieve some work from the PIC, > >>There shouldn't be that much work to offload. A timer that interrupts about >>every 4ms, 4 8-bit registers and a 4-bit shift register (or 2-bit counter) >>are all that's needed. If the processor is running at 4MHz, 10 instructions >>to do the switch would be 10us. 10us out of 4ms is a mere 0.25%. Even if my >>estimate if off by 2 or 3X, It's still less than 1% of the CPU cycles. >> >>Noel > >I agree with you Noel, probably not even 10 instructions needed. A lot more >effort would be needed to run an I2C link.
More than 10, counting save/restore context. But the order of magnitude is correct. Best regards, Spehro Pefhany -- "it's the network..." "The Journey is the reward" speff@interlog.com Info for manufacturers: http://www.trexon.com Embedded software/hardware/analog Info for designers: http://www.speff.com
Spehro Pefhany wrote:

> More than 10, counting save/restore context. But the order of > magnitude is correct. > > > Best regards, > Spehro Pefhany
OK. Let's see how small we can make it. Perhaps it would make a good reference for others. I do love to make pins and ports do more than one thing so, let's consider 4 8-segment displays (7 plus a .) and 4 push-button switches for input. We'll only need 13 signals. Let's assume these variables: DIGIT3 the bit pattern for the left-most digit DIGIT2 the bit pattern for the left-center digit DIGIT1 the bit pattern for the left-center digit DIGIT0 the bit pattern for the right-most digit SELECT the shifter or counter Who wants to take the first stab at it? Noel
>Subject: Re: LED Display Driver for use with PIC? >From: Spehro Pefhany speffSNIP@interlogDOTyou.knowwhat >Date: 08/12/2004 14:56 GMT Standard Time >Message-id: <j25er05oehojmons2cm5gumlq7p7ajmnes@4ax.com> >
>>I agree with you Noel, probably not even 10 instructions needed. A lot more >>effort would be needed to run an I2C link. > >More than 10, counting save/restore context. But the order of >magnitude is correct. > > >Best regards, >Spehro Pefhany
I was assuming that you were allready in the timer interrupt routine. Less than 10 meant the number of instructions used each time round the loop and not the total number of code instructions. I can't be bothered to actually write the code so I can't actually disagree with you.
hamilton wrote:

> Noel Henson wrote: >> >> Who wants to take the first stab at it? >> >> Noel >> >>
Hamilton, What took you so long? ;) What is the schematic? We'll need to know which PIC pins do what. Noel PS: Nice work. Even an RS232 interface.
Noel Henson wrote:

> Spehro Pefhany wrote: > >> More than 10, counting save/restore context. But the order of >> magnitude is correct. >> >> >> Best regards, >> Spehro Pefhany > > OK. Let's see how small we can make it. Perhaps it would make a good > reference for others. > > I do love to make pins and ports do more than one thing so, let's consider > 4 8-segment displays (7 plus a .) and 4 push-button switches for input. > We'll only need 13 signals. > > Let's assume these variables: > > DIGIT3 the bit pattern for the left-most digit > DIGIT2 the bit pattern for the left-center digit > DIGIT1 the bit pattern for the left-center digit > DIGIT0 the bit pattern for the right-most digit > SELECT the shifter or counter > > Who wants to take the first stab at it? > > Noel
I see that we need the code to support these functions: Initialize the timer Enable the interrupt Acknowledge the interrupt Context save Context restore Index into the data storage array Write the output Scan the keys Did I miss anything? Noel