Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Project on making A digital clock with digital thermometer using LCD and PIC16f877a

Not open for further replies.


Junior Member level 2
May 31, 2012
Reaction score
Trophy points
Activity points
Hi...I am facing a great problem in making a simple digital clock with digital thermometer using LCD. I am using here the PIC16f877a microcontroller... I also using here LM35 as a temperature sensor. It shows only temperature reading But i can not get the output of the clock. Now what can I do???
Anybody please reply... I don't want to use "DS1307" ic. I only want to make a simple digital clock with thermometer using lcd

View attachment clock &

You might find something interresting here:
Your 1000 ms delay will be much longer in your program due to other tasks that the PIC is doing after you exit.
BTW this: if(portc.f0==1) means what? If your portc.f0 is grounded, you will never execute the code below that statement.

ZASto....But I can't do it.. please help me to make the full code with schematic... please
I am facing great problem here... I have to submit this project in coming sunday .....please
i need your help so much....


You can use Roman Blacks code, but perhaps not the easiest code to follow.

The other way is to use a 32k watch crystal with Timer1 to create the 1 second timebase for your RTC.

Plenty of code examples around.

Unfortunatelly I can't do YOUR homework. I gave you the referrence how to generate 1 second, redoing someone else's (yours?) code is not trhat I'm willing to do.

	// uses 1 variable; unsigned long bres
	// gets here every TMR0 int (every 256 ticks)

	bres += 256;	// add 256 ticks to bresenham total

	if(bres >= 5000000)	// if reached 1 second!
		bres -= 1000000;	// subtract 1 second, retain error
		do_1sec_event();	// update clock, etc

is THIS above uneasy to follow and understand?

I use this method when I need an almost perfect 1 sec. period for whatever.

Room Thermostat for my Thermo accumulating heating device :) which, btw reads, periodically DS18B20, desides when to switch room temperature to lower jevel (night time), ... and display lots of data at the 2x16 LCD, without hickups, and everything nicely packed in PIC 16F628A. As the timebase, an OCXO keeping the 4MHz crystal at 40 Celsius, and calibrated against GPS

Not open for further replies.

Part and Inventory Search

Welcome to