Introduction: DS1302 + 1602 LCD Clock

Picture of 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

Picture of 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

Picture of 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;

Comments

About This Instructable

3,078views

13favorites

License:

Add instructable to: