Multiple digits 7 segments display

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


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


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

: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.
 

so that your eyes can see the updated value duh
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…