You are on page 1of 12

DONG HO THI GIAN THJC DS1307

I. Chip DS1307.

DS1307 la chip dng h thoi gian thuc (RTC : Real-time clock), khai nim thoi gian thuc o dy
duoc dung voi y nghia thoi gian tuyt di ma con nguoi dang su dung, tinh bng giy, phut,
gio.DS1307 la mt san phm cua Dallas Semiconductor (mt cng ty thuc Maxim Integrated
Products). Chip nay co 7 thanh ghi 8-bit chua thoi gian la: giy, phut, gio, thu (trong tun), ngay,
thang, nm. Ngoai ra DS1307 con co 1 thanh ghi diu khin ng ra phu va 56 thanh ghi trng co
th dung nhu RAM. DS1307 duoc doc va ghi thng qua giao din ni tip I2C (TWI cua AVR)
nn cu tao bn ngoai rt don gian. DS1307 xut hin o 2 goi SOIC va DIP co 8 chn nhu trong
hinh 1.

Hinh 1. Hai goi cu tao chip DS1307.

Cac chn cua DS1307 duoc m ta nhu sau:

- X1 va X2: la 2 ng kt ni voi 1 thach anh 32.768KHz lam ngun tao dao dng cho chip.
- VBAT: cuc duong cua mt ngun pin 3V nui chip.
- GND: chn mass chung cho ca pin 3V va Vcc.
- Vcc: ngun cho giao din I2C, thuong la 5V va dung chung voi vi diu khin. Chu y la nu
Vcc khng duoc cp ngun nhung VBAT duoc cp thi DS1307 vn dang hoat dng (nhung
khng ghi va doc duoc).
- SQW/OUT: mt ng phu tao xung vung (Square Wave / Output Driver), tn s cua xung
duoc tao co th duoc lp trinh. Nhu vy chn nay hu nhu khng lin quan dn chuc nng cua
DS1307 la dng h thoi gian thuc, chung ta s bo trng chn nay khi ni mach.
- SCL v SDA la 2 duong giao xung nhip va du liu cua giao din I2C ma chung ta d tim hiu
trong bai TWI cua AVR.
Co th kt ni DS1307 bng mt mach din don gian nhu trong hinh 2.

Hinh 2. Mach ung dung don gian cua DS1307.
Cu tao bn trong DS1307 bao gm mt s thanh phn nhu mach ngun, mach dao dng, mach
diu khin logic, mach giao din I2C, con tro dia chi va cac thanh ghi (hay RAM). Do da s cac

thanh phn bn trong DS1307 la thanh phn 'cung nn chung ta khng co qua nhiu vic khi su
dung DS1307. Su dung DS1307 chu yu la ghi va doc cac thanh ghi cua chip nay. Vi th cn
hiu r 2 vn d co ban do la cu truc cac thanh ghi va cach truy xut cac thanh ghi nay thng
qua giao din I2C. Phn nay chung ta tim hiu cu truc cac thanh ghi truoc va cach truy xut
chung s tim hiu trong phn 2, diu khin DS1307 bng AVR.

Nhu ti d trinh bay, b nho DS1307 co tt ca 64 thanh ghi 8-bit duoc danh dia chi tu 0 dn 63
(tu 0x00 dn 0x3F theo h hexadecimal). Tuy nhin, thuc cht chi co 8 thanh ghi du la dung cho
chuc nng 'dng h (ti s goi la RTC) con lai 56 thanh ghi bo trng co th duoc dung chua
bin tam nhu RAM nu mun. Bay thanh ghi du tin chua thng tin v thoi gian cua dng h
bao gm: giy (SECONDS), phut (MINUETS), gio (HOURS), thu (DAY), ngay (DATE), thang
(MONTH) va nm (YEAR). Vic ghi gia tri vao 7 thanh ghi nay tuong duong voi vic 'cai dt
thoi gian khoi dng cho RTC. Vic doc gia tu 7 thanh ghi la doc thoi gian thuc ma chip tao ra.
Vi du, luc khoi dng chuong trinh, chung ta ghi vao thanh ghi 'giy gia tri 42, sau do 12s chung
ta doc thanh ghi nay, chung ta thu duoc gia tri 54. Thanh ghi thu 8 (CONTROL) la thanh ghi
diu khin xung ng ra SQW/OUT (chn 6). Tuy nhin, do chung ta khng dung chn
SQW/OUT nn co th bo qua thanh ghi thu 8. T chuc b nho cua DS1307 duoc trinh bay trong
hinh 3.

Hinh 3. T chuc b nho cua DS1307.
Vi 7 thanh ghi du tin la quan trong nht trong hoat dng cua DS1307, chung ta s khao sat cac
thanh ghi nay mt cach chi tit. Truoc ht hy quan sat t chuc theo tung bit cua cac thanh ghi
nay nhu trong hinh 4.

Hinh 4. T chuc cac thanh ghi thoi gian.


Diu du tin cn chu y la gia tri thoi gian luu trong cac thanh ghi theo dang BCD. BCD la vit
tt cua cum tu Binary-Coded Decimal, tam dich la cac s thp phn theo m nhi phn. Vi du ban
mun cai dt cho thanh ghi MINUTES gia tri 42. Nu quy di 42 sang m thp luc phn thi
chung ta thu duoc 420x2A. Theo cach hiu thng thuong chung ta chi cn gan MINUTES42
hoc MINUTES0x2A, tuy nhin vi cac thanh ghi nay chua gia tri BCD nn moi chuyn s
khac, ti s din giai bng hinh 5.

Hinh 5. S BCD.
Voi s 42, truoc ht no duoc tach thanh 2 chu s (digit) 4 va 2. Mi chu s sau do duoc di sang
m nhi phn 4-bit. Chu s 4 duoc di sang m nhi phn 4-bit la 0100 trong khi 2 duoc di thanh
0010. Ghep m nhi phn cua 2 chu s lai chung ta thu duoc mt s 8 bit, do la s BCD. Voi
truong hop nay, s BCD thu duoc la 01000010 (nhi phn) 66. Nhu vy, d dt s phut 42 cho
DS1307 chung ta cn ghi vao thanh ghi MINUTES gia tri 66 (m BCD cua 42). Tt ca cac phn
mm lp trinh hay thanh ghi cua chip diu khin du su dung m nhi phn thng thuong, khng
phai m BCD, do do chung ta cn vit cac chuong trinh con d quy di tu s thp nhi phn (hoc
thp phn thuong) sang BCD, phn nay s duoc trinh bay trong luc lp trinh giao tip voi
DS1307. Thoat nhin, moi nguoi du cho rng s BCD chi lam vn dn thm rc ri, tuy nhin s
BCD rt co uu dim trong vic hin thi nht la khi hin thi tung chu s nhu hin thi bng LED 7
doan chng han. Quay lai vi du 42 phut, gia su chung ta dung 2 LED 7-doan d hin thi 2 chu s
cua s phut. Khi doc thanh ghi MINUTES chung ta thu duoc gia tri 66 (m BCD cua 42), do
6601000010 (nhi phn), d hin thi chung ta chi cn dung phuong phap tach bit thng thuong
d tach s 01000010 thanh 2 nhom 0100 va 0010 (tach bng toan tu shiIt '~~ cua C hoc
instruction LSL, LSR trong asm) va xut truc tip 2 nhom nay ra LED vi 0100 4 va 0010 2,
rt nhanh chong. Thm chi, nu chung ta ni 2 LED 7-doan trong cung 1 PORT, vic tach ra
tung digit la khng cn thit, d hin thi ca s, chi cn xut truc tip ra PORT. Nhu vy, voi s
BCD, vic tach va hin thi digit duoc thuc hin rt d dang, khng cn thuc hin phep chia (rt
tn thoi gian thuc thi) cho co s 10, 100, 1000.nhu trong truong hop s thp phn.

Thanh ghi giy (SECONDS): thanh ghi nay la thanh ghi du tin trong b nho cua DS1307, dia
chi cua no la 0x00. Bn bit thp cua thanh ghi nay chua m BCD 4-bit cua chu s hang don vi
cua gia tri giy. Do gia tri cao nht cua chu s hang chuc la 5 (khng co giy 60 !) nn chi cn 3
bit (cac bit SECONDS6:4) la co th m hoa duoc (s 5 101, 3 bit). Bit cao nht, bit 7, trong
thanh ghi nay la 1 diu khin co tn CH (Clock halt treo dng h), nu bit nay duoc set bng 1
b dao dng trong chip bi v hiu hoa, dng h khng hoat dng. Vi vy, nht thit phai reset bit
nay xung 0 ngay tu du.

Thanh ghi pht (MINUTES): co dia chi 0x01, chua gia tri phut cua dng h. Tuong tu thanh
ghi SECONDS, chi co 7 bit cua thanh ghi nay duoc dung luu m BCD cua phut, bit 7 lun lun
bng 0.

Thanh ghi gi (HOURS): co th noi dy la thanh ghi phuc tap nht trong DS1307. Thanh ghi
nay co dia chi 0x02. Truoc ht 4-bits thp cua thanh ghi nay duoc dung cho chu s hang don vi

cua gio. Do DS1307 h tro 2 loai h thng hin thi gio (goi la mode) la 12h (1h dn 12h) va 24h
(1h dn 24h) gio, bit6 (mau green trong hinh 4) xac lp h thng gio. Nu bit60 thi h thng
24h duoc chon, khi do 2 bit cao 5 va 4 dung m hoa chu s hang chuc cua gia tri gio. Do gia tri
lon nht cua chu s hang chuc trong truong hop nay la 2 (10, nhi phn) nn 2 bit 5 va 4 la du d
m hoa. Nu bit61 thi h thng 12h duoc chon, voi truong hop nay chi co bit 4 dung m hoa
chu s hang chuc cua gio, bit 5 (mau orange trong hinh 4) chi bui trong ngay, AM hoc PM.
Bit5 0 la AM va bit51 la PM. Bit 7 lun bng 0. (thit k nay hoi do, nu doi hn 2 bit mode
va A-P sang 2 bit 7 va 6 thi s don gian hon).

Thanh ghi th (DAY - ngy trong tun): nm o dia chi 0x03. Thanh ghi DAY chi mang gia tri
tu 1 dn 7 tuong ung tu Chu nht dn thu 7 trong 1 tun. Vi th, chi co 3 bit thp trong thanh ghi
nay co nghia.

Cac thanh ghi con lai co cu truc tuong tu, DATE chua ngay trong thang (1 dn 31), MONTH
chua thang (1 dn 12) va YEAR chua nm (00 dn 99). Chu y, DS1307 chi dung cho 100 nm,
nn gia tri nm chi co 2 chu s, phn du cua nm do nguoi dung tu thm vao (vi du 20xx).
Ngoai cac thanh ghi trong b nho, DS1307 con co mt thanh ghi khac nm ring goi la con tro
d|a chi hay thanh ghi d|a chi (Address Register). Gia tri cua thanh ghi nay la dia chi cua thanh
ghi trong b nho ma nguoi dung mun truy cp. Gia tri cua thanh ghi dia chi (tuc dia chi cua b
nho) duoc set trong lnh Write ma chung ta s khao sat trong phn tip theo, AVR va DS1307.
Thanh ghi dia chi duoc ti t do trong hinh 6, cu truc DS1307.

Hinh 6. Cu truc DS1307.
II. AVR v DS1307.

Phn nay ti huong dn lp trinh diu khin va giao tip voi DS1307 bng AVR, dung WinAVR.
Do DS1307 hoat dng nhu mt Slave I2C, ban nht thit phai doc lai 'Bai 8 - Giao tip TWI-
I2C, nht la la 2 ch d Master (Send va Reveive). Ti s khng d cp lai toan b giao din
I2C nhung tom tt cach thuc hin voi AVR nhu sau: d thuc hin cuc goi o ch d Master,
AVR s goi diu kin START, tip theo la 7 bit dia chi Slave (SLA) 1 bit Write/Read, k dn la
qua trinh doc hay ghi du liu giua Master va Slave bng cac byte du liu 8 bit (co th chi 1 byte

hoc 1 dy bytes), cu sau mi byte s co 1 bit ACK hoc NOT ACK. Cuc goi kt thuc voi vic
Master phat diu kin STOP. Cu mi mt qua trinh, s co 1 'code duoc sinh ra trong thanh ghi
trang thai TWSR, kim tra gia tri code nay d bit qua trinh giao tip co thanh cng khng. Ban
cn nho dy code thanh cng khi Master truyn du liu la: 0x08 -~ 0x18 -~ 0x28 -~.-~0x28.
Va dy code thanh cng khi Master truyn du liu la 0x08 - ~ 0x40 - ~ 0x50 -~.-~0x50 -~
0x58. Nm duoc cach ghi va doc cua AVR Master la ban d nm duoc 50 cach giao tip voi
DS1307, 50 con lai chung ta phai hiu cach b tri dy du liu cua ring DS1307. Hy theo di
phn tip theo..

Vi DS1307 la mt Slave I2C nn chi co 2 mode (ch d) hoat dng giao tip voi chip nay. Hai
mode cua DS1307 bao gm Data Write (tu AVR dn DS14307) va Data Read (tu DS1307 vao
AVR). Mode Data Write duoc dung khi xac lp gia tri ban du cho cac thanh ghi thoi gian hoc
dung d canh chinh thoi gian. Trong ch d nay, AVR la 1 Master truyn du liu dn DS1307
(Slave nhn du liu). Mode Data Read duoc su dung khi doc thoi gian tu dng h DS1307 vao
AVR d hin thi hoc so sanh..Trong ch d nay, AVR la Master nhn du liu va DS1307 la
Slave truyn du liu. Hinh 7 m ta cu truc du liu trong ch d Data Write.

Hinh 7. Ch d Data Write.
Truoc ht hy noi v dia chi Slave Address (SLA) cua DS1307 trong mang I2C. Nhu chung ta
du bit, trn mang I2C mi thit bi s co mt dia chi ring goi la SLA. SLA la con s 7 bit, nhu
th theo ly thuyt s co ti da 128 thit bi trong 1 mang I2C. Chip DS1307 la mt I2C Slave nn
cng co mt dia chi SLA, gia tri nay duoc set c dinh la 1101000 nhi phn, hay 0x68 thp luc
phn. Do SLA cua DS1307 c dinh nn trong 1 mang I2C s khng th tn tai cung luc 2 chip
nay (diu nay thuc su khng cn thit) nhung co th tn tai cac thit bi I2C khac hoc tn tai
nhiu Master AVR. Quan sat hinh 7, sau khi diu kin START duoc goi boi Master (AVR) s la
7 bit dia chi SLA cua DS1307 (1101000). Do ch d nay la Data Write nn bit W (0) s duoc goi
kem sau SLA. Bit ACK (A) duoc DS1307 tra v cho Master sau mi qua trinh giao tip. Tip
theo sau dia chi SLA s la 1 byte chua dia chi cua thanh ghi cn truy cp (tam goi la AddrReg).
Cn phn bit dia chi thanh ghi cn truy cp va dia chi SLA. Nhu ti d d cp trn, dia chi cua
thanh ghi cn tuy cp s duoc luu trong thanh ghi dia chi (hay con tro dia chi), vi vy byte du
liu du tin s duoc chua trong thanh ghi dia chi cua DS1307. Sau byte dia chi thanh ghi la mt
dy cac byte du liu duoc ghi vao b nho cua DS1307. Byte du liu du tin s duoc ghi vao
thanh ghi co dia chi duoc chi dinh boi AddrReg, sau khi ghi 1 byte, AddrReg duoc tu dng
tng nn cac byte tip theo s duoc ghi lin tip vao cac thanh ghi k sau. S luong bytes du liu
cn ghi do Master quyt dinh va khng duoc vuot qua dung luong b nho cua DS1307. Vi du
sau khi goi SLAW, Master goi 8 bytes gm 1 byte du 0x00 va 7 bytes khac thi con tro dia chi
s tro dn thanh ghi du tin (0x00 thanh ghi SECONDS) va ghi lin tip 7 bytes vao 7 thanh
ghi thoi gian cua SD1307. Dy la cach ma chung ta s thuc hin trong phn lp trinh giao tip (
xem chuong trinh con TWIDS1307wblock phia sau). Qua trinh ghi kt thuc khi Master phat ra
diu kin STOP.

Chu y, nu sau khi goi byte AddrReg, Master khng goi cac bytes du liu ma goi lin diu kin

STOP thi khng co thanh ghi nao duoc ghi. Truong hop nay duoc dung d set dia chi AddrReg
phuc vu cho qua trinh doc. Tip theo, chung ta khao sat cach sp xp du liu trong ch d Data
Read, xem hinh 8.

Hinh 8. Ch d Data Read.
Trong ch d Data Read, bit R (1) duoc goi kem sau 7 bit SLA. Sau do la lin tip cac byte du
liu duoc truyn tu DS1307 dn AVR. Dim khac bit trong cac b tri du liu cua ch d nay so
voi ch d Data Write la khng co byte dia chi thanh ghi du liu duoc goi dn. Tt ca cac bytes
theo sau SLAR du la du liu doc tu b nho cua DS1307. Vy thi du liu duoc doc bt du tu
thanh nao? Cu tra loi do la thanh ghi duoc chi dinh boi con tro dia chi, gia tri nay duoc luu lai
trong cac ln thao tac truoc do. Nhu vy, mun doc chinh xac du liu tu mt dia nao do, chung ta
cn thuc hin qua trinh ghi gia tri cho con tro dia chi truoc. D ghi gia tri vao con tro dia chi
chung ta s goi chuong trinh Data Write voi chi 1 byte duoc ghi sau SLAW nhu phn chu y o
trn.
Chung ta d chun bi dy du d giao tip voi DS1307. Phn tip theo ti s trinh bay chuong
trinh va m phong giao tip giua AVR va DS1307. Hy v mt mach din bng Proteus nhu
trong hinh 9. Trong vi du nay, ban du chung ta s cai dt thoi gian cho DS1307, sau do tin
hanh doc thoi gian tu chip dng h nay va hin thi ln 1 Text LCD.

Hinh 9. Vi du giao tip AVR DS1307.

Ti s chia chuong trinh thanh 2 phn, phn giao tip voi DS1307 thng qua I2C duoc vit trong
Iile myDS1307RTC.h va phn vi du ghi-doc, hin thi duoc vit trong Iile DS1307RTCTest.c.
List 1. myDS1307RTC.h

.
Cac phn dinh nghia truoc dong 35 duoc trich tu bai TWI nn ti khng giai thich lai. Chung ta
bt du tu dong 36. Co 3 chuong trinh con duoc vit d giao tip giua AVR voi DS1307 do la:

ghi 1 dy du liu vao DS1307 tuc chuong trinh con TWI_DS1307_wblock(uint8_t Addr,
uint8_t Data], uint8_t len), chuong trinh nay duoc vit theo cach sp xp du liu cua ch d
Data Write trinh bay o trn. Chuong trinh con doc du liu tu DS1307 la
TWI_DS1307_rblock(uint8_t Data], uint8_t len ) va mt chuong trinh con dung d set dia chi
thanh ghi cn truy cp co tn TWI_DS1307_wadr(uint8_t Addr).

Chuong trinh con TWI_DS1307_wblock(uint8_t Addr, uint8_t Data], uint8_t len) nm tu
dong 54 dn dong 77. Trong chuong trinh con nay, tham s Addr la dia chi thanh ghi cn truy
cp, Data|| la mang du liu s ghi vao DS1307 va len la s byte du liu s ghi (khng tinh byte
Addr). Dong 55, AVR phat ra diu kin START d bt 1 cuc goi I2C, sau do chung ta cho cho
bit TWINT duoc set ln 1 o dong 56 (TWINT 1, cng vic d duoc thuc hin). Dong 57 kim
tra nu diu kin START d goi thanh cng hay khng bng cach so sanh thanh ghi trang thai
TWSR voi 'code tuong ung (xem lai hinh 2 trong bai giao tip TWI). Sau khi START duoc
goi, dong 59 chung ta gan dia chi SLAW cho thanh ghi du liu TWDR d phat ra trn I2C,
TWDR(DS1307SLA1)TWIW. Trong dong nay, bin DS1307SLA la SLA cua DS1307
d duoc dinh nghia truoc o dong 15 trong khi TWIW la bit W (0) duoc dinh nghia o dong 20.
Qua trinh phat I2C chi bt du khi bit TWINT duoc xoa, dong 60 thuc hin vic nay, sau do phai
cho bit TWINT duoc set ln 1 chung to qua trinh phat SLA kt thuc (dong 61). Cui cung la
kim tra code trong thanh ghi TWSR d xem qua trinh phat SLA co thanh cng, xem dong 62 va
hinh 2 trong bai giao tip TWI. Chung ta s lun theo co ch nay khi lam vic voi TWI cua
AVR, do do trong cac phn tip theo ti chi giai thich ni dung truyn-nhn, khng giai thich lai
co ch. Sau khi phat SLAW, cac dong 64 dn 65 phat dia chi thanh ghi cn truy cp (bin
Addr) va sau do phat mang du liu lin tip trong cac dong 69 dn 74. Cui cung la phat din
kin STOP d kt thuc cuc goi.

Trong chuong trinh con ghi DS1307 trinh bay o trn, nu tham s len0 thi cac dong 69 dn 74
khng duoc thuc hin, nghia la chi co dia chi Addr duoc phat ma khng co du liu nao kem theo.
Chung ta co th dung dc dim nay d set thanh ghi cho qua trinh doc. Ti d tach ra va vit
thanh 1 chuong trinh con tn TWI_DS1307_wadr(uint8_t Addr) trong cac dong tu 36 dn 52
dung d thuc hin vic set dia chi nay.

Chuong trinh con doc DS1307 TWI_DS1307_rblock(uint8_t Data], uint8_t len ) duoc trinh
bay trong cac dong tu 79 dn 99. Trong do, tham s Data|| la mang chua du liu doc v, len la s
bytes doc v, dc bit khng co tham s dia chi thanh ghi vi dia chi nay s duoc set ring truoc
khi goi chuong trinh con doc DS1307. Dong 84 mt lnh phat SLATWIR duoc thuc hin, voi
bit TWIR1 (xem dinh nghia o dong 21), AVR dang bao cho DS1307 rng no mun doc du
liu tu DS1307. Qua trinh doc duoc chia thanh 2 phn, trong phn 1 chung ta doc len-1 bytes du
tin (xem cac dong code tu 88 dn 92) va phn 2 doc byte cui cung (dong 94 dn 96). Chung ta
cn tach vic doc byte cui ra vi nu nhin lai ch d doc trinh bay trong hinh 8, sau mi byte
duoc doc, Master phai goi 1 bit ACK dn DS1307, ring byte cui cung Master phai goi bit
NOT ACK d bao DS1307 rng Master khng mun doc thm (so sanh 2 dong 89 va 94). Cui
cung, Master goi diu kin STOP d kt thuc cuc goi.
D kim tra cac ham giao tip DS1307, hy tao 1 Project bng WinAVR voi tn goi

DS1307RTCTest, tao Iile DS1307RTCTest va vit code nhu trong list 2.


List 2. DS1307RTCTest.c.

Chuong trinh demo DS1307 dung cac ham trong Iile DS1307RTC.h truoc do, ban cn copy Iile
nay vao cung thu muc voi chuong trinh demo nay. Dng thoi, chep ca Iile myLCD.h vi vi du nay
co hin thi LCD. Co ch cua chuong trinh demo nhu sau: trong phn thn chuong trinh chinh,
ban du chung ta ghi cac thng s thoi gian khoi tao cho DS1307, ti chon thoi dim ghi vao la
11h:59p:55s cua ngay 31, thang 12 nm 09 (2009) cho muc dich kim tra. Voi thoi dim nay, sau
khi chay chuong trinh duoc 5s ban s thy cac thanh thoi gian trong DS1307 tu dng chuyn
sang 0h:0p:0s ngay 1 thang 1 nm 10. Chu y la ngun clock cho chip trong vi du nay la 8MHz,
Ti dung Timer0 d tao ra 1 khoang thoi gian delay khoang 32.7ms, cu 10 ln ngt Timer0 (tuc
khoang 327ms) ti s doc DS1307 va cp nht kt qua ln LCD. Cac bin phu Second, Minute,
Hour, Day, Date, Month, Year duoc khai bao o dong 8 va 9 chua thoi gian (s thp phn binh
thuong). Bin Mode chon h thng gio, Mode 0 la h thng 24h va Mode1 la h thng 12h.
Bin AP chua bui trong Mode 12h, AP0 la bui sang (AM), AP1 la bui chiu (PM). Mang
tData|7| co 7 phn tu trong dong 14 chua 7 bytes tam tuong ung voi 7 thanh ghi thoi gian d ghi
vao DS1307 hoc doc ra tu chip nay. Cac dong tu 17 dn 28 la 2 chuong trinh con di tu s BCD
sang thp phn va nguoc lai.

Chung ta bt du voi chuong trinh con Display (void), hin thi kt qua chua trong mang tData|7|
ln LCD (dong 30 dn 64). Cac dong tu 31 dn 37 dung doc gia tri trong mang tData|7| ra cac
bin d hin thi, vi tData|7| chua gia tri doc v tu cac thanh ghi thoi gian cua DS1307 nn no la
cac s BCD, chung ta cn dung ham BCD2Dec d di sang s thp phn truoc khi gan cho cac
bin nhu Second, Minute.hin thi ln LCD. Ring voi thanh ghi HOURS (tuong ung voi
sData|2|) chung ta cn kim tra h thng gio, nu la h thng 12h thi chi ly 5 bit du cua thanh
ghi nay gan cho bin Hour (xem lai phn t chuc cac thanh ghi thoi gian o hinh 4), nu la h
thng 24h thi s ly 6 bit (xem 2 dong 33 va 34). Cac dong tu 39 dn 64 in cac bin thoi gian ln
LCD. Dong du tin cua LCD dung in gio-phut-giy, dong thu 2 in nm-thang-ngay. Phn b tri
vi tri cac gia tri in nguoi doc tu ly giai.

Chuong trinh chinh main bt du tu dong 66 va kt thuc o dong 106. Cac cng vic thuc hin
trong main bao gm khoi dng Text LCD, khoi dng Timer0 o ch d thuong, Prescaler1024
va cho phep ngt tran (cac dong tu 77 dn 79). Voi I8MHz, gia tri dinh thi mi ln tran Timer0
la : (1024(Prescaler)/8 (I))*256 (MAX)32768 us 32.7ms. Cac dong tu 83 dn 90 gan gia tri
cac bin thoi gian vao mang tData d chun bi ghi vao DS1307. Truoc khi gan cac bin nay cho
tData, chung ta cn di gia tri thp phn cua chung thanh BCD voi ham Dec2BCD. Dong 91
khoi dng I2C va dong 92 ghi 7 phn tu cua mang tData vao DS1307 voi ham
TWIDS1307wblock ma chung ta d dinh nghia trong Iile DS1307RTC.h. Chu y la dia chi bt
du ghi la 0x00, vi th 7 bytes cua mang tData s duoc ghi chinh xac vao 7 thanh ghi thoi gian
cua DS1307. Sau khi ghi du liu, cn 1 khoang thoi gian nho d DS1307 xu li, delayms(1) la
du. Cac dong tu 97 dn 100 tin hanh doc thoi gian tu DS1307 v va hin thi ln LCD. Dong 97
TWIDS1307wadr(0x00) dung d set dia chi thanh ghi cn truy cp truoc khi doc, chung ta
mun doc ht 7 thanh ghi thoi gian nn s set dia chi v 0 (thanh ghi SECONDS). Phai delay 1
khoang nho truoc khi tip tuc doc DS1307 (dong 98). Dong 99 chung ta doc 7 thanh ghi thoi
gian vao mang tData va hin thi ln LCD o dong 100. Chuong trinh chinh kt thuc o dy, vic
con lai cho trinh phuc vu ngt thuc hin.


Trong trinh phuc vu ngt tran cua Timer0 (tu dong 107 dn 125), chung ta tng 1 bin tam tn la
Timecount, dn khi nao 10 ngt xay ra (khoang 327ms) thi moi tin hanh doc DS1307 mt ln
(cac dong tu 111 dn 113). Do cu mi 327ms chung ta doc DS1307 1 ln nn s co truong hop 2
ln doc cung 1 gia tri, chung ta chi thuc hin vic cp nht kt qua khi 1 giy d qua. Dong 115
so sanh kt qua doc v voi bin Second, tuc la so sanh kt qua moi voi kt qua c, nu chung
khac nhau s cp nht gia tri giy trn LCD (cac dong tu 116 dn 119). Chung ta diu bit vic
ghi ln LCD s tn kha nhiu thoi gian, vi vy chi nn cp nht kt qua khi nao co su thay di.
Mt khac, khi s giy thay di thi cac bin thoi gian khac thay di rt chm, mt cach tt d
tranh vic xoa va ghi LCD nhiu ln la cu 60s hy thuc hin ham Display (trong ham nay co ca
xoa va ghi cac bin thoi gian). Dong 120 giup thuc hin y tuong nay, chi khi nao bin Second v
0 (d qua 60s) moi goi ham Display().

Dn dy, toan b vic truy cp DS1307 bng AVR d hoan tt. Cac y tuong mo rng ung dung
nhu thm cac nut chinh thoi gian, cai dt bao gio.xin nhuong lai cho ban doc tu phat trin.

You might also like