Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Multiple digits 7 segments display

Status
Not open for further replies.
Hello everybody
Thank you for being patient with me...
Same here!

Nigel Goodwin said:
demestav said:
Well i agree with the calculations of both posts. What it seems strange to me is this
so digit 1 gets 1A for 0.5 seconds then digit 2 gets 1A for 0.5 seconds
Why should each digit get 0.5seconds??? All it needs is some miliseconds right?

Yes, the time examples were only to show that the actual time doesn't affect the brightness, and as I explained the 0.5 second example would exhibit extreme flickering.

Do not get me wrong Nigel. I know you put 0.5 second for example. What i meant is : Why do you change the time needed to update a single digit. If your code needs 10us to update 1 digit, then that's it. For one digit it will take 10us, for 2 digits 20us, for 3 digits 30us, and so on. Now when the refresh rate changes, it that time should stay the same. I mean if you decide to refresh your screen 10 times per second, the time to refresh each digit should be the same 10us, since your code for refreshing one digit has not changed(i.e. take the same time as before).

EXAMPLE TAKEN FROM YOUR POST

1Hz, current set at 1A by a resistor, so digit 1 gets 1A for 0.5 seconds then digit 2 gets 1A for 0.5 seconds - so each digit gets an average of 0.5A, but the display will obviously exhibit extreme flicker!.

1000Hz, same resistor, digit 1 gets 1A for 0.5uS, then digit 2 gets 1A for 0.5uS, so each display gets EXACTLY the same average of 0.5A.

How I see it: Starting from the second example , i follow you. Each digit takes 0.5us to refresh EVERY 1us.
Now going to the first example. Since the refresh is 1Hz, it means that the whole display should be updated once every second. Fair enough. However, why is the time needed to update one digit is incresed to 0.5sec???? As i see it, it should be the same routine as in the above example i.e. taking 0.5us to refresh one digit. Therefore the brightness should be much lower since current from each digit is only for 0.5us every second, instead of 0.5us every 1us from the previous example.



But as I told Mike, I think the problem is at how the refresh rate is defined. My point of view i shown in the figure I posted yesterday, which i think I explain it ok. If you look at it, I am sure you will understand how i see it.

Thank you for reading.
 
demestav said:
Do not get me wrong Nigel. I know you put 0.5 second for example. What i meant is : Why do you change the time needed to update a single digit. If your code needs 10us to update 1 digit, it does not matter how many digits you would have

Because it's far better to use ALL the time spread between the digits, it gives higher brightness and less flicker with a lower refresh rate. By using timer interrupts to do the refresh (as in my tutorial) this is simple to do, and completely transparent to the rest of the program.

Generally the only time you wouldn't do it that way is if you're using the same I/O pins for another purpose, such as reading some switches, and a number of MicroChip application notes do just that. Another obvious reason would be the use of an old low-end PIC without interrupts!.
 
Nigel Goodwin said:
Because it's far better to use ALL the time spread between the digits
demestav said:
Now looking at your figures, i think understant our difference. You consider that between the refresh rates, ALL of the time should be used to light up the digits. Therefore the more the digits, less the time they will be light up hence less brightness. Hmm yes. I hope this is what you mean.

:wink:


Thank you for the replies.
 
Hi demestav,

your saying that higher refreshing rate leads to brighter display is true if the digits are independant to each other such that they can be turned ON/OFF regardless of the rest of the digits. This is easy to understand.

However, on a microcontroller, there are limitations on the number of pins available to control the display so usually we adopt a multiplexed connection whereas all coresponding segments of each digit are connected together as a group, and we selectively power up each digit to light up the segment(s). As a result only ONE digit can be ON at any one time. Now you see why more digits would place a restriction on how fast we can refresh the "whole Display". This is the refresh rate Mike was talking about. Also this setup would cause the digit ON time and refreshing rate be dependant of each other.

Another way to multiplex the display is to scan the seqments with power of coresponding digit(s) set to ON.

I hope this would clear up the different understanding of refreshing rate.
 
Joel Rainville said:
1- set all segments value to 0
2- select 7 segment
3- update value
4- loop

What I want to understand is why I need a delay between steps 3 and 4. I don't think your theory's right. My theory is that the 4028 isn't switching fast enough. What do you think?

so that your eyes can see the updated value duh
 
Status
Not open for further replies.

Latest threads

Back
Top