Thursday, November 13, 2014

DS1302 Real Time LCD Clock Circuit - 16F88


DS1302 Real Time Clock circuit
Clock Schematic

This clock use DS1302 as timekeeping chip and this was my first time I used this IC for my project. It used three wires for communication. It communicates with a microprocessor via a simple serial interface. Three wires are required to communicate with the clock/RAM: CE, I/O (data line), and SCLK (serial clock). The real-time clock/calendar provides seconds, minutes, hours, day, date, month, and year information. The DS1302 will run with a voltage from 2.0V to 5.5V.

Here I used PIC16F88 micro-controller and 16x2 LCD. No switches were added to edit time and date. To add switches you have to modify the code and it is not difficult. The DS1302 uses an external 32.768kHz crystal. The oscillator circuit does not require any external resistors or capacitors to operate. The accuracy of the clock is dependent upon the accuracy of the crystal and the accuracy of the match between the capacitive load of the oscillator circuit and the capacitive load for which the crystal was trimmed. Please refer datasheet for more information.

DS1302 Features

  • Real-Time Clock Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the Week, and Year with Leap-Year Compensation Valid Up to 2100
  • 31 x 8 Battery-Backed General-Purpose RAM
  • Serial I/O for Minimum Pin Count
  • 2.0V to 5.5V Full Operation
  • Uses Less than 300nA at 2.0V
  • Single-Byte or Multiple-Byte (Burst Mode) Data Transfer for Read or Write of Clock or RAM Data
  • Simple 3-Wire Interface
  • DS1202 Compatible

MikroC used as programming language but you can easily convert it to MikroC Pro. Micro-controller is running by its internal clock at 8MHz.The project files can be download from below with Source files, Proteus and Hex file.

Tuesday, November 11, 2014

Seven Segment Simple Digital Clock Circuit - 16F628


Simple Clock circuit
Clock Schematic

This is a very simple clock circuit. The only IC used in this circuit was 16F628A pic micro-controller. This IC is very cheap and you can get it from any electronic spare parts shop. Four common cathode seven segment displays used to display time. We cannot get much accurate time using this. However, we can able to get reasonable accurate if we calibrate this circuit correctly. You can calibrate this clock by changing value of ‘Drift’. The ‘Drift’ variable is use to set calibration and it value should be in 0 to 255. In my code, value of ‘Drift’ is 198 and that is not the perfect value for it. You can get 0.5Hz frequency from RB7 if your ‘Drift’ value is correct.

Totally four buttons are used in this circuit and RESET button is optional. Min and Hour buttons used to update time and Mode button change the display mode. Two display modes are available. At the beginning, it will show hour and minutes on display. You can view seconds by pressing Mode button. Please replace NOT gate with NPN transistors such as BC547 and put 1k-10k resistors for base before connect with micro-controller.

MikroC used as programming language but you can easily convert it to MikroC pro or any other language. Because the code very simple. Micro-controller is running by its internal clock at 4MHz.The project files can be downloading from below with Source files, Proteus and Hex file.

Monday, November 10, 2014

Common Remote Control Receiver Circuit (RC5 SIRC NEC) - 16F683


General Remote Controller
General Remote Controller

The cheapest way to remotely control a device within a visible range is via Infrared light. Almost all audio and video equipment can be controlled this way nowadays. Due to this wide spread use the required components are quite cheap, thus making it ideal for us hobbyists to use IR control for our own projects.

If you ever want to open your gate or run any other device via remote controller you can use this circuit for that. IR remote control receiver for controlling home appliances can be easily made using PIC micro-controller. By using below circuit you can easily control your home appliances using your TV remote, DVD Player remote control or any other remote.

Remote Control Receiver Schematic
Remote Control Receiver Schematic

The main part of this remote control receiver circuit is PIC16F683. It is cheap and tiny. For infrared receiver I used TSOP1730. However, you can use any other infrared receiver for it (TSOP12xx, TSOP48xx and TSOP62xx product series).

The TSOP1730 used to capture infrared ray from the remote. This infrared receiver changes its output according to the received infrared ray. The output of TSOP1730 then connected to the micro-controller and it decodes the IR signal and gives necessary output according to the IR signal. This circuit is support to Sony, Philips and NEC (I hope, only tested with Sony and Philips) protocols and you can use any remote controller to operate this circuit.

When power is applied, D1 LED will light up. This LED indicates that power is applied. When receiver get IR signal from remote controller then D2 LED light up for 250ms and then off and D3 LED toggle its state. If you need to control heavy load then remove D3 LED and connect transistor and/or relay with this pin. And if you need to switch something like counter then you can used pin 7 (D2 LED) for that.

Sony SIRC Protocol

Sony Protocol
Sony Protocol

The SIRC protocol uses a pulse width encoding of the bits. The pulse representing a logical "1" is a 1.2ms long burst of the 40kHz carrier, while the burst width for a logical "0" is 0.6ms long. All bursts are separated by a 0.6ms long space interval. The recommended carrier duty-cycle is 1/4 or 1/3.

NEC Protocol

NEC Protocol
NEC Protocol

The NEC protocol uses pulse distance encoding of the bits. Each pulse is a 560┬Ás long 38kHz carrier burst (about 21 cycles). A logical "1" takes 2.25ms to transmit, while a logical "0" is only half of that, being 1.125ms. The recommended carrier duty-cycle is 1/4 or 1/3.

Philips RC-5 Protocol

Philips Protocol
Philips Protocol

The protocol uses bi-phase modulation (or so-called Manchester coding) of a 36kHz IR carrier frequency. All bits are of equal length of 1.778ms in this protocol, with half of the bit time filled with a burst of the 36kHz carrier and the other half being idle. A logical zero is represented by a burst in the first half of the bit time. A logical one is represented by a burst in the second half of the bit time. The pulse/pause ratio of the 36kHz carrier frequency is 1/3 or 1/4 which reduces power consumption.

Sunday, November 9, 2014

7 Band Real Time Audio Spectrum Analizer Circuit - 16F818 BA3834 MSGEQ7


Audio Spectrum Analyzer
Audio Spectrum Analyzer

Spectrum analyzers are built in most of the modern signal processing systems for measuring the distribution of signal energy in frequency. An audio spectrum analyzer is used for measurements in the audible frequency spectrum (from 20Hz to 20 kHz) and can be a very powerful tool for keeping a studio well tuned. A Digital, real-time Audio Frequency Spectrum analyzer circuit for audio devices is presented in this project. This circuit aims to professionals or hobbyists who would like to embed it in an audio device or use it as a stand-alone unit. This Digital, real-time Audio Spectrum analyzer circuit for audio devices can be connected to any audio device.

The circuit is based on a PIC16F818 (or PIC16F88) and BA3834S/F (or MSGEQ7).

Audio Spectrum Analyzer circuit
Analyzer with Pattern 1


The input audio signal is directly connect to the BA3834S/F (or MSGEQ7). The BA3834S/F and MSGEQ7 are 7-band, band-pass filter ICs that use microprocessor time division to produce serial output for spectrum analyzer displays. Those are divides the audio spectrum into seven bands, 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz and16kHz and out serially from its output pin. That signal then connected to micro-controller. It digitizes and processes this audio signal using an 12-bit ADC module and it computes the distribution of the audio signal energy and displays it on a 7×7 LED display in real time.

Audio Spectrum Analyzer circuit
Analyzer with Pattern 5

After 10 seconds delay this circuit is start to work. User can select display mode by pressing ‘MODE’ button and it support seven display modes. You can use either BA3834S/F or MSGEQ7 as band-pass filter IC and PIC16F88 or PIC16F818 as micro-controller. In my circuit, I used PIC16F818 and BA3834S.
Both versions are available in download section.

Technical details

Display: LED Bar-graphs, 7 Bar-graphs, 49 LEDs, RED Monochrome
Bands: 7 bands
BA3834 - 68, 170, 420 Hz, 1, 2.4, 5.9, 14.4 KHz
MSGEQ7 - 63, 160, 400 Hz, 1, 2.5, 6.25, 16 KHz
Display modes: 7 - user selected
Power Supply requirements: 5V DC

Saturday, November 8, 2014

DS1307 Real Time Seven Segment Alarm Clock Circuit - 16F88


  • 31/01/2016 - Added hourly chime restriction function

DS1307 Alarm Clock
Alarm Clock

This is the newest clock I made using DS1307 real time clock IC. Not like other clock circuits I posted, this clock circuit built in all necessary function such as hourly chime, alarm, time drift correction, etc. In addition, it also include temperature sensor as optional function.

This clock has eight display modes (including standby mode).
  • Mode 1 – Display Seconds
  • Mode 2 – Display Time
  • Mode 3 – Display Date
  • Mode 4 – Display Year
  • Mode 5 – Display Alarm
  • Mode 6 – Display Temperature
  • Mode 7 – Show Time, Date and Temperature continuously
  • Mode 8 – Stand By Mode

DS1307 Alarm Clock
DS1307 Alarm Clock

This PIC project uses PIC16F88 micro-controller, DS1307 Real Time Clock, LM35 temperature sensor, and SSD-5461AG common cathode seven segment display. (If you cannot find that display then use four common cathode seven segment displays).

The PIC16F88 used its internal oscillator and it runs at 8MHz. We can reduce cost and complexity of circuit and can save micro-controller’s pin by using internal oscillator.RA0 and RA1 configured as digital and analogue alternatively to drive seven segment and read voltage of LM35.

The DS1307 (RTC) Real Time Clock is an 8-pin device using an I2C interface. It has eight read/write registers that store the information. This IC will do the timekeeping and it not only keeps track of time but also the date and the day of the week. DS1307 RTC is fully Binary Coded Decimal (BCD) clock/calendar. Therefore, the data read from DS1307 should be converted to BCD format. The most important is the Clock Halt Bit (CH), which is, bit 7 of address 0. This is the register that controls 'seconds' and the CH bit has to be preserved otherwise the chip stops the clock. Writing zero to this bit resets the CH bit so that the clock runs. So when the first usage we must set ‘seconds’. Otherwise clock fail to run.

DS1307 Alarm Clock circuit
Alarm Clock's Internal

Time Setting

Using MODE button you can change the display mode and the current status will save to Eeprom.
SET button can be used for edit the time, date, alarm etc. When you pressed the SET button, clock entered to the Edit mode and two displays will turn off. You can be able to edit values on other display by pressing UP and DOWN buttons. To edit turn off displays value pressed SET button again. Press the SET button again to return clock to normal mode. If the clock is in normal mode UP button also can used to change the time format (12hr or 24hr) and DOWN button can used to turn on or off alarm.

When time changed to 12hr mode LED will indicate the AM/PM status. Alarm on will indicated by the decimal point of last seven segment display. If you wish, you can also connect separate LED for it.

Error correction

Surprisingly making an accurate 32kHz oscillator is a difficult. This is because low speed oscillator drivers are designed for low power operation. That means high impedance and therefore low current, which makes the driver extremely sensitive to noise (or any nearby signals, which can capacitive couple to the crystal wire). Because that when using DS1307 we cannot get accurate time. Therefore, I added simple error correction mechanism for this clock

First, set the clock to current time (time of computer or internet) and keep it run up-to 24 hours.
After 24 hours, check the time of clock with time of computer. If time is drift, check how many seconds are drifted..?  (Use clock mode 1 to view seconds)

E.g. 1:  PC time:  16:30:00 Clock time:  16:30:05
+5 seconds drifted. So we have to reduce time.

I used Eeprom (2) to store this values and default value is 30 (0x1E).  See the Eeprom figure.
Now simply overwrite it with 25 (0x19). You must use hex values for it.

E.g. 2:  PC time:  16:30:00 Clock time:  16:29:58
-2 seconds drifted. So we have to increase time.
Overwrite Eeprom (2) value with 32 (0x20).

Hourly Chime Restriction

You can able to stop hourly chime function for specific time period using this setting. Device Eeprom address 6 and 7 use for this. default values are 0x00 and 0x18 (0 and 24)

Eeprom(6) ≤ Chime Restriction < Eeprom(7)

Eg: Stop Chime from 21.00 to 6.00
Eeprom(6) = 0x06 and Eeprom(7) = 0x15
6 ≤ Chime Restriction < 21

Eeprom of 16F88
Eeprom of 16F88


on line


Recent comment


Free counters!
Copyright © 2012 - Scorpionz™.,All rights reserved | Powered by Blogger