# Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segment

1. ## Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segment

I want to make a RTC clock with 4-digit 7seg disp which will display " HH:MM " in multiplex tech.

I have 4 nos digit and each are of CA type. As the each single-digit has one DP and which is located on right side of the digit.
As of " HH. " (H-ten, H-one , .Single Dot) is Ok and I have no problems, But to get one more Dot on upper portion to form remaining " :MM ", I nedd to invert M-ten.

Sample COUNTER code is here, and tested the digit(SEGMENTS AND CA are connected to ULN Driver IC).
Code:
#include

//***Define the signal pins of all four displays***//
#define s1 RC0
#define s2 RC1
#define s3 RC2
#define s4 RC3
//***End of definition**////

void main()
{
unsigned int a,b,c,d,e,f,g,h; //just variables
int i = 0; //the 4-digit value that is to be displayed
int flag =0; //for creating delay

unsigned int seg[]={0X3F, //Hex value to display the number 0
0X06, //Hex value to display the number 1
0X5B, //Hex value to display the number 2
0X4F, //Hex value to display the number 3
0X66, //Hex value to display the number 4
0X6D, //Hex value to display the number 5
0X7D, //Hex value to display the number 6
0X07, //Hex value to display the number 7
0X7F, //Hex value to display the number 8
0X6F  //Hex value to display the number 9
}; //End of Array for displaying numbers from 0 to 9/// FOR CC// FOR CA WITH ULN

//*****I/O Configuration****//
TRISC=0X00;
TRISD=0x00;

PORTC=0X00;

//***End of I/O configuration**///

#define _XTAL_FREQ 20000000

while(1)
{

//***Splitting "i" into four digits***//
a=i%10;//4th digit is saved here
b=i/10;
c=b%10;//3rd digit is saved here
d=b/10;
e=d%10; //2nd digit is saved here
f=d/10;
g=f%10; //1st digit is saved here
h=f/10;
//***End of splitting***//

PORTD=seg[g];s1=1; //Turn ON 'H-ten'
__delay_ms(5);s1=0;     //Turn OFF
PORTD=seg[e];s2=1; //Turn ON 'H-one'
__delay_ms(5);s2=0;     //Turn OFF
PORTD=seg[c];s3=1; //Turn ON 'M-ten' >> This digit want to inverse to get the DP upper left side>>
__delay_ms(5);s3=0;     //Turn OFF
PORTD=seg[a];s4=1; //Turn ON 'M-one'
__delay_ms(5);s4=0;     //Turn OFF

if(flag>=10)
{
i++;flag=0;
}
flag++;
}
}
My question is,
should i declare ONE MORE ARRAY with appropriate elements(namely, revese_seg[]) like above //seg[] and load it to PORTD only for this digit..
Code:
PORTD=reverse_seg[c];s3=1; //Turn ON 'M-ten'
Is that correct process?
Or can be done something else from Hardware side by changing wire connection of segments for this digit other that software site ?

Tnx

•

2. ## Re: Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segme

Originally Posted by saramah
Or can be done something else from Hardware side by changing wire connection of segments for this digit other that software site ?
Yes, you can rearrange the connections to the reversed M-ten so it behaves like the other digits.

3. ## Re: Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segme

since the colon is always on, or blinks the seconds, why not use a pair of LEDs
mounted between the hour and minutes?
then you don't have to rotate minute 10, invent new connections for 0 through 9,
and the minutes will be as straightforward as the hours

•

4. ## Re: Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segme

tnx.
Adding one more array in code is the correct way? or wire rearrange is correct??
Yes, you can rearrange the connections to the reversed M-ten so it behaves like the other digits.

Code:
M-ten Pin:>>      Data-line pin for all three digit(HH: M-one)

A>>            should it on: DD: D
B>>            FF: F
C>>            EE: E
D>>            AA: A
E>>            CC: C
F>>            BB:B
G>>            GG: G
Or thers way...
tnx

5. ## Re: Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segme

for a standard 7 segment display, top to bottom
horizontal A, G, D
left side F, E
right side B, C
decimal point lower right

for a standard 7 segment display, rotated 180 degrees, top to bottom
horizontal D G A
left side C, B
right side E, F
decimal point upper left

0 ABCDEF ABCDEF same
1 BC EF
2 ABGED ABGED same
4 GCBF GFEC
5 AGDBC AGDEF same
6 DGEF AGBC
7 ABC DEF
8 ABCDEFG ABCDEFG same
9 AGFBC DGCEF

if you rewire so that B and E are swapped, C and F are swapped, and A and D are swapped,
the numbers come out correct.

0, 2, 5 and 8 are correct regardless
the swap compensates for the rotation

the decimal point is still the decimal point

program for M 10 is same as all the other numbers (H 10, H1, & M1)

•

6. ## Re: Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segme

Why not simply rewire the segments instead of writing software?

7. ## Re: Best Solution to use DOT POINT by REVERSING 3rd. one Digit of 4-digit seven segme

I didn't check the power/ground connections.
So when you rotate M10, you'll have to take care of that.

It looks like a little re-wiring will solve the problem

--[[ ]]--