Introduction: DS1302 + 1602 LCD Clock

In this project I'm not going to make a clock, I try to experiment DS1302 and 1602 LCD brought recently. I have followed other instructablers but cannot get an expected result, so I tried and tried until it done and publish my project here to share with all.

In my project I have only changed some wiring and software to make it work, so I will concern on the changes.

Step 1: LCD and RTC Wiring Change

This is not much breakthrough in fact any wiring could be worked, but I've found one wire in question caused my LCD no display, so I correct it as follow.

/*LCD Display (1602)
1.VSS to Arduino GND

2.VCC to Arduino 5V

3.VEE to Arduino GND

4.RS to Arduino pin 10

5.R/W to Arduino pin 9

6.E to Arduino pin 8

11.DB4 to Arduino pin 7

12.DB5 to Arduino pin 6

13.DB6 to Arduino pin 5

14.DB7 to Arduino pin 4

15.LED+ to Arduino 5V

16.LED- to Arduino GND*/

/*DS1302 RTC

RST to Arduino 13

DAT to Arduino 12

CLK to Arduino 11*/

Step 2: Software Change

There are nothing wrong in the software found in the web, what my changes are only adopted in my project.

Firstly you have to include the LCD

#include <LiquidCrystal.h>

Secondly amend the RTC and LCD initialization

DS1302 rtc(13,12,11);
LiquidCrystal lcd (10,9,8,7,6,5,4);

Thirdly format the day time string to be printout from LCD

char buf_1[16], buf_2[16];
snprintf(buf_1, sizeof(buf_1), "%s %04d-%02d-%02d", day.c_str(), t.yr, t.mon, t.date, day.c_str());

snprintf(buf_2, sizeof(buf_2), "%02d:%02d:%02d", t.hr, t.min, t.sec);

lcd.setCursor(1, 0);
lcd.print(buf_1);

lcd.setCursor(4, 1);

lcd.print(buf_2);

Step 3: Finally You're Done

A clock may simply tells time, but the code inside have other opportunities to trigger some activities, for examples

day.c_str(),

t.yr,

t.mon,

t.date,

t.hr,

t.min,

t.sec;