Hello !
I am building for some time a cct to drive a 3digit multiplexed LCD. (from aliexpress)
From the sellers on aliexpress I managed to find a circuit diagram of the LCD. I color it myself to understand exactly how to actually drive it.
After making the cct in reality, I discovered that those COM1-4 pins in the diagram are actually inverted on my LCD device. That alone eat me a couple of days and numerous hours of error debugging. I trusted the diagram too much.
My Driver Circuit.
I initially started with a PIC 12F508 and I was 'sure' it will work. It didnt. Then I back down to Arduino and here is the circuit with it, 'mimicking' the PIC pins and role. So using Arduino I am paralleling the PIC. You got me so far?
(click to see a large file img) View attachment LCD_3digitF-arduino.jpg
I understand this is probably a hard subject for some, all I ask is your thoughts. What it may be the solution to the problem? To somehow find the real problem and make it work. If you worked already with such stuff, then lucky me. If not, then we will make assumptions, until we will find some good results. That's the idea of my question on your forum here.
As you can see, I am using logic ICs to drive only 1 single digit (from 3). I am driving each segment of 1 digit. Specifically digit 3, the blue marked one.
I have a video with a lot of detailed experimentation and testings and error showing. I will give you the link (from youtube) if you want to help me and if you are into this subject. Send me a private request and I will send you the link. I can not post it here officially because I am swearing a lot in the movie and ... I don't want to upset some too sensitive souls around here. I know there are great and really helpful guys here. If the video is too much for some, discussion will be fine for me as well. No problem. I will answer every question !
So...the real problem is like this:
- I get a lot of 'glitching' when the segments are moving to form a number. Does not matter the speed, the 'glitches' are always there. Both with PIC code or arduino code.
A 'glitch' (for example) is when Im powering segment B but segment F is activated as well, for some strange reason. Thus, making the number a blob of segments instead of a clean number as intended.
The first thought I had was "the code" must be the problem. So I commented out -everything-, leaving the minimum minimorum code, and is still glitching, with no difference from before. I start to believe it is not the code anymore. It is a pure hardware matter !
An english friend told me he thinks that clock (marked with red square) must be synchronized from code. I thought that as well. Im actually starting
my movie with this setup as well. But then I understood better the problem.
So my response to him and how I see the situation, is like this:
This XOR_CLK is there only as a segment driver and not the logic driver. Its only purpose is to clock how fast 1 segment is rendered. If it will clock too slow, the segment will flicker, if too fast, the segment will show correctly, with no flicker at all.
Switching between segments, is another -very different- story. So this XOR_CLK is absolutely independent of the logic clock from the code !!! The code role is to open and close those doors called 'buffer' or 'transistors' or even 'relays'. It has NOTHING to do with the ---segment--- display frequency ! Get my point now? This is how I see it.
Lets say I will clock it directly from code. I will set it to very slow speed, so the logic switching 'doors' will run 1by1 very slowly, and ALSO the segment rendering, also very slow ! You see how separate they are, now?
I think I expose a long and somewhat complicated question.
Tell me your experience and what you may think on this issue. I will provide any links or files are needed, on request.
I give you both PIC12F508 PIC link code (made in CCS C program) and Arduino link code. Take a look.
Thank you !
I am building for some time a cct to drive a 3digit multiplexed LCD. (from aliexpress)
From the sellers on aliexpress I managed to find a circuit diagram of the LCD. I color it myself to understand exactly how to actually drive it.
After making the cct in reality, I discovered that those COM1-4 pins in the diagram are actually inverted on my LCD device. That alone eat me a couple of days and numerous hours of error debugging. I trusted the diagram too much.
My Driver Circuit.
I initially started with a PIC 12F508 and I was 'sure' it will work. It didnt. Then I back down to Arduino and here is the circuit with it, 'mimicking' the PIC pins and role. So using Arduino I am paralleling the PIC. You got me so far?
(click to see a large file img) View attachment LCD_3digitF-arduino.jpg
I understand this is probably a hard subject for some, all I ask is your thoughts. What it may be the solution to the problem? To somehow find the real problem and make it work. If you worked already with such stuff, then lucky me. If not, then we will make assumptions, until we will find some good results. That's the idea of my question on your forum here.
As you can see, I am using logic ICs to drive only 1 single digit (from 3). I am driving each segment of 1 digit. Specifically digit 3, the blue marked one.
I have a video with a lot of detailed experimentation and testings and error showing. I will give you the link (from youtube) if you want to help me and if you are into this subject. Send me a private request and I will send you the link. I can not post it here officially because I am swearing a lot in the movie and ... I don't want to upset some too sensitive souls around here. I know there are great and really helpful guys here. If the video is too much for some, discussion will be fine for me as well. No problem. I will answer every question !
So...the real problem is like this:
- I get a lot of 'glitching' when the segments are moving to form a number. Does not matter the speed, the 'glitches' are always there. Both with PIC code or arduino code.
A 'glitch' (for example) is when Im powering segment B but segment F is activated as well, for some strange reason. Thus, making the number a blob of segments instead of a clean number as intended.
The first thought I had was "the code" must be the problem. So I commented out -everything-, leaving the minimum minimorum code, and is still glitching, with no difference from before. I start to believe it is not the code anymore. It is a pure hardware matter !
An english friend told me he thinks that clock (marked with red square) must be synchronized from code. I thought that as well. Im actually starting
my movie with this setup as well. But then I understood better the problem.
So my response to him and how I see the situation, is like this:
This XOR_CLK is there only as a segment driver and not the logic driver. Its only purpose is to clock how fast 1 segment is rendered. If it will clock too slow, the segment will flicker, if too fast, the segment will show correctly, with no flicker at all.
Switching between segments, is another -very different- story. So this XOR_CLK is absolutely independent of the logic clock from the code !!! The code role is to open and close those doors called 'buffer' or 'transistors' or even 'relays'. It has NOTHING to do with the ---segment--- display frequency ! Get my point now? This is how I see it.
Lets say I will clock it directly from code. I will set it to very slow speed, so the logic switching 'doors' will run 1by1 very slowly, and ALSO the segment rendering, also very slow ! You see how separate they are, now?
I think I expose a long and somewhat complicated question.
Tell me your experience and what you may think on this issue. I will provide any links or files are needed, on request.
I give you both PIC12F508 PIC link code (made in CCS C program) and Arduino link code. Take a look.
Thank you !
Last edited: