i face a problem, im doing a programing that program into the PIC16F684. im doing a digital clock, now i only able to show the second value that display 1 to 60, i dont know how to do the minute value. im using while loop.

``````while(1 == 1)
{
if (0 == DisplayLED)
{
RA5 = LEDDigit[DisplayValue %10] >> 6;
PORTC = LEDDigit[DisplayValue %10] & 0x03F;
}
else
{
RA5 = LEDDigit[(DisplayValue /10) & 0x0F] >> 6;
PORTC = LEDDigit[(DisplayValue /10) & 0x0F] & 0x03F;
}
TRISA = TRISA ^ 0b011111;
PORTA = PORTA & 0b111100;
DisplayLED = DisplayLED ^ 1;  //  Other Digit Next

NOP();
for (i = 0; i < 660; i++);
NOP();

j = j + 1;
if (100 == j)
{
DisplayValue++;
j = 0;
}
}``````

how to add the minutes value? as well hour and day...thank... S.O.S.....

5
Contributors
7
Replies
8
Views
11 Years
Discussion Span
Last Post by firstPerson

Well first I'd probably rename DisplayValue to be something more meaningful like DisplaySeconds.

Then I might add

``````if ( DisplaySeconds == 60 ) {
DisplaySeconds = 0;
DisplayMinutes++;
}``````

I gather from your code you have a pair of 7-segment displays for displaying seconds.
Do you have another pair for the minutes as well.

yeah, i got the right circuit diagram just dont know how to write the program to apply the minutes. i had connected 4 7segments to the 4 transistors and the 4 transistors connected to RA0, RA1, RA2 and RA3 on the PIC16F684.
should i add another if...else statement in the while loop? where should i add into if yes. thank

Here's an algorhithm in C/C++. You can convert it into whatever you're using.

``````int sec = 0;
int min = 0;
int hour = 0;
while(1)
{
sleep(1000); //delay in milliseconds
++sec;
if(sec == 60)
{
sec = 0;
++min;
if(min == 60)
{
min = 0;
++hour;
if(hour == 24)
{
hour = 0;
}
}
}
display(hour, min, sec);
}``````

Well what you do in software depends entirely on what you've done with the hardware.

Say for example, you use 4 bits to drive one 7-segment display, then use the other 4 bits to choose one of 4 displays

Say
bit 7 selects the 10's for M
bit 6 selects the units for M
bit 5 selects the 10's for S
bit 4 selects the units for S

plz i need full program of digital clock in c++

giv me peply

digital clock program code is needed..try to solve my probs.

when your display value reaches 60, you add 1 to minutes, and
keep doing this until your minutes adds to 1 hour;

Try this circular loop :

``````displayValue = ++displayValue % 60;
min = displayValue % 60 + displayValue/60
hour = min % 60  + min/60``````
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.