What is the best way to communicate between two PICs to drive multiple LCDs

Fluffyboii

Active Member
In this post you can see me struggle with driving Static drive LCDs with MUX mode. MUX drive mode creates segments that partially lit up when they should be off. So my only option is direct driving the 7 segment LCDs. PIC16F1939 can only drive 24 segments on Static mode. Which means it can only drive 3 digits. I was thinking of possible ways to tackle this problem but the cheapest and easiest way to do this seems to be using a PIC16F1936 as a slave to drive 2 digits itself and driving other 2 digits with the PIC16F1939 or just using two PIC16F1936s. Since I already have a PIC16F1936 and 1939 in SMD package first option is fine by me. I can design a simple PCB to solder the LCDs and microcontrollers on.

I know it is extremely wastefull in terms of processing power to use another MCU to drive 2 digits woth of LCD displays to make a dumb clock but this is possibly the cheapest and easiest option since I already have the PICs and I do not want to buy another PIC or PICkit.

So what is the most optimal way to comminucate between the MCUs? Should I look into Serial communication or I2C? Or should I just use digital pins to send binary data directly to the second PIC? Since the only purpose of the second PIC will be displaying numbers and maybe letters it should not need a fancy communication protocol and 5 digital pins should be enough to send whatever I want displayed in binary. Could possibly use the DAC and ADC in these PICs to send analog voltages that equal to whatever I want displayed I guess but sounds like a big hassle to program. The use of two MCUs to drive LCDs is probably a unnecessary bid hassle anyway, I guess.

Since the whole project of making a dumb clock got out of hand in terms of costs and efford involved I am okay with wasting even more resources and time into it. If I can use the second slave PIC for something else than just driving the LCDs, for example getting button inputs etc. I will be able to justify using two microcontrollers. The whole thing is a solution looking for a problem to solve.
 
Hi F,
Try not to think of it as wasting time! I've been on the same project for 6 years! I mix the ambition of finishing the project with learning, and today I've learnt something that make a 'thing' work, so I've used up some time, but that's fine.

I use both UARTS and SPI. For my purposes I chose SPI ove I2C and now it's working fine. There are ways of visualising the data as it moves, and it's not too expensive (digital analyser)
C.
 
6 years is quite the dedication. I have a tendency to overdo things and burn myself out. I am making a real cool clock at the moment though, will post it when its done. I will use the LCDs later
 
6 years is quite the dedication. I have a tendency to overdo things and burn myself out. I am making a real cool clock at the moment though, will post it when its done. I will use the LCDs later
Hi F,
Yes, it sound like it is, but some people do crosswords every day, then throw them away, where my project is better than it was when I started
Looking forward to see your clock.C
 
Last edited:
You can transmit from one PIC to one or more PICs with a single USART and one wire.

You can also debug using a serial port on a PC, but that will usually be on a USB adapter nowadays.
 
Ghost segments are usually caused by changing the segment values with the common still selected. Ensure you switch of the common anode/cathode output before changing the segment. Ghosting is always fixable.

Better to correct your problem rather than introduce another pic and possible communication problems.

Mike.
 
Ghost segments are usually caused by changing the segment values with the common still selected.

For background, he's using the dedicated LCD drive system in a PIC, but with individual large digit displays rather than a multi-digit display.

There are not enough pins on a single device to drive every LCD pin separately, and if the digit commons are connected together it causes the ghost segments.
 
Just to add some of my findings about LCDs here: Regular multiplexed displays have a limited viewing angle before unlit and lit segments become indistinguishable. Direct drive displays do not posses this issue unless I multiplex them. When I multiplex them they get some amount of ghosting, similar to the multiplexed LCDs. I think it is not possible to get rid of it since I have not much control over the PIC's LCD driver.
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…