A Professional Manufacturer of Smart Interactive Screens For More Than 10 Years
This structure describes how to put a bunch of 7-
Led display.
Charging of discrete LEDs has always been the subject of several other instructions.
LEDs-
I thought of the theory and method of driving a large number of LEDs from several micro-controller pins.
They are all excellent and anyone who wants to get a deeper understanding of how charity works should read them.
Charliepsing 7-2016
Segment Display is roughly the same as using discrete led, but with some changes to handle the fact that all led segments have a common PIN instead of independence, and need to buffer the normal output, such a poor micro-controller can cope with the load.
When I build a fast dirty pulse generator I need to test the coil of the high voltage power supply and I decide if I use 6-
The digital seven-segment display replaces the ubiquitous boring LCD display.
Due to shortage of available I/o
The pins on the Atmel Tiny26 I use for the pulse generator project I can't do this using a standard multiplexing method.
Standard multi-channel transmission requires 14 I/o-pins -
Paragraph 8 (
Don't forget)
Co-anode/cathode plus 6 for each monitor.
I only need 9 I/o-by decorating the display-
The pins and displays are still mixed in a 1:6 manner, with the same brightness as the standard mix.
Charlieplexing usually lights up only one led at a time, so the brightness will decrease if you want a few LEDs (visibly)
Light at the same time.
Of course I can use a BCD-to-
7-segment decoding chip (74LS48)plus a 1-to-8 decoder (74LS138)
But that would be cheating, I don't have any hands for 48 months and I would really like to have the pulse generator installed in Altoids --like box.
Typically, you have to connect LEDs through a current limiting resistor to keep them alive for more than a few milliseconds.
Here, I don't use any resistors because the display is connected to the output pin of the micro-controller and the micro-controller generally cannot continuously absorb or source more than several times the current that the led/display can handle continuously.
Since we are reusing displays, they can only be turned on for 1/6 of the time and can handle more current than they have been turned on all the time.
In the schematic diagram below and in my structure, I am missing the current limiting resistor, both for the LEDs themselves and for the base resistance of the transistors.
Note that skipping current limiting and relying on luck with the following is a very bad structural practice, which combines the maximum specification with the relatively low receiver capability of the processor and the possible undervaluation of the led.
In anything you do professionally, or just want to keep running for a long time (
Longer than the first test run)
One should stick to good construction practices and read data sheets and math.
Read rgbphils comments in the comments section of this manual about running led on rated current.
The monitor I'm using here is a public anode-type.
This means that all segments have a common positive pin.
To light up a segment, you connect the common pin to the plus and one or more segment pins (s)to minus.
The normal multiplexing display has all-
A line segment that is connected together, and then all B-
Paragraph, etc.
The public pin is then connected separately to the microprocessor.
This makes the line segment have eight lines on each individual monitor, and the anode has one line.
As shown in the previous step, we need 14 (
16 if we have 8 monitors)
Connect to the micro controller to control 6 monitors.
If we use Charlieplexing technology, we can reduce the connection count to 9, regardless of whether we have 2, 3, 4, 5, 6, 7 or even 8 monitors.
The disadvantage of using Charlieplexing is that the connection to the monitor is a bit complicated, and the software that scans each monitor one by one will also become a bit complicated. But hey!
If you can save 7 output pins on the micro controller, I think it's cheap to have a few more lines of code.
As you can see in the software steps in this manual, the scanning software is not so complicated and can be easily implemented in the language of your choice.
The hardware is actually the same as in the standard multiplexing example, just changed some connections.
The main change is to add an extra line to the segment.
On the first display, the new line is connected to-
Segment, in the second display B segment, etc.
All other segments are connected as usual.
All A together, all B together (
Except for the special items mentioned earlier). . .
Then, the transistor of the first display is connected to-
Segment should be.
The transistor of the second monitor is connected to B-
Paragraph should be like this.
In order to address on the display, now the processor must first output a high value on the line connected by its transistor, and then output a low value on the line connected to the segment that should be lit and disconnected (high impedance)
The line of the line segment that should be closed.
The last part is the most important, because if the processor is high for the segment output that should be disconnected from the transistor connected to these segments, it will also be activated and cause some other monitors to be activated at the same time.
This is not a good thing.
Multiplexing always depends on activating only one display at a time.
Appear one by one in a quick way so that the brain/eyes are fooled and think they are running at the same time.
Since each monitor is connected in a slightly different way than other monitors, the scanning software must handle this through the special code of each monitor.
Here is the code written by Atmel Tiny26 in C-processor.
It should be very easy to adapt to any other Atmel processor.
I don't think there will be any major hurdles in converting a microprocessor into some basic dialect.
I use it as a reader's exercise :-)
You might notice that I have assigned I/o-
The port of the monitor is a bit odd, the reason is that the port not used here is used for other purposes in the project I use this monitor.
It's really easy if you want to rearrange the ports, just change the definition and remember to update A/B-
Suffix on the name so you don't miss moving them between groups in your code later.
It may sound a bit strange and it's hard to understand what I just said, but look at the code and ask if I need help.
I 'd be happy to help.