Professional Documents
Culture Documents
Luận Văn Mạch Hiển Thị và Lưu Trữ Chỉ Số Điện Nước
Luận Văn Mạch Hiển Thị và Lưu Trữ Chỉ Số Điện Nước
H CH MINH
TRNG I HC BCH KHOA
KHOA IN IN T
B MN IN T
---------------o0o---------------
LUN VN TT NGHIP I HC
MCH HIN TH V LU TR
CH S IN - NC
----------
H V TN: L THANH V
MSSV: 40903344
2.
3.
4.
NGNH:
IN T - VIN THNG
LP : DD09DV4
ti: Mch hin th v lu tr ch s in - nc.
Nhim v (Yu cu v ni dung v s liu ban u):
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
5. Ngy giao nhim v lun vn: ...............................
6. Ngy hon thnh nhim v: ...................................
7. H v tn ngi hng dn:
Phn hng dn
.................................................................
.....................................
.................................................................
.....................................
Ni dung v yu cu LVTN c thng qua B Mn.
Tp.HCM, ngy... thng.. nm 20
CH NHIM B MN
Li cm n
LI CM N
Sinh vin
L Thanh V
Lun vn tt nghip
TM TT LUN VN
Lun vn ny trnh by v vic thit k, thi cng v lp trnh mt thit b gip hin th
ch s in k v ch s nc tiu th cho cc h gia nh.
Thit b bao gm:
-
ii
Lun vn tt nghip
MC LC
1.
Tng quan.................................................................................................................................1
1.2
2.
L THUYT ...................................................................................................................................3
3.
4.
5.
6.
7.
6.1
Kt lun ................................................................................................................................. 60
6.2
iii
Lun vn tt nghip
Hnh 2 1
Hnh 2 - 2
Hnh 2 3
Hnh 2 4
B nh d liu PIC16F877A8
Hnh 2 5
Hnh 2 6
Hinh 2 7
Hnh 2 8
Hnh 2 9
Hnh 2 10
Hnh 2 11
Hnh 2 12
Hnh 2 13
Hinh 2 14
Hnh 3 1
Hnh 3 2
Hnh 3 3
S chn IC DS1307.23
Hnh 3 4
S kt ni DS1307..23
Hnh 3 5
Hnh 3 6
Hnh 3 7
Hnh 3 8
Address Register..27
Hnh 3 9
Hnh 3 10
Hnh 3 11
iv
Lun vn tt nghip
Hnh 3 12
Hnh 3 13
Hnh 3 14
Layout..31
Hnh 4 1
Hnh 4 2
Hnh 4 3
Hnh 4 4
Hnh 4 5
Hin th ch s...59
Lun vn tt nghip
vi
Lun vn tt nghip
1. GII THIU
1.1 Tng quan
Ngy nay, khoa hc k thut pht trin khng ngng v c nhng tc ng mnh m,
tch cc n cuc sng ca con ngi, gp phn lm cho cht lng cuc sng c ngy
mt nng cao. Vit Nam, khoa hc k thut ngy cng c vai tr quan trng trong i sng,
trong cng nghip v c trong nng nghip, thc y qu trnh cng nghip ha, hin i ha
t nc.
L mt sinh vin khi k thut cng ngh, ti nhn thy cn t gic nghin cu, nng
cao k nng v hiu bit ca mnh c th gp sc to ra nhng sn phm cng c gi tr
cho x hi. T lu, ti lun hng th vi vic ng dng kin thc in t, k nng lp trnh
ca mnh to ra nhng sn phm c th ng dng vo thc t, gip ci thin hiu qu lao
ng ca con ngi hay h tr con ngi trong nhng cng vic lp i lp li gy nhm chn.
Vi s tp np ca cuc sng hin nay, thnh vin trong mt h gia nh kh m nh
c nhng vic n gin nh l ghi ch s in k, ch s nc cho nhn vin thu tin hang
thng. Mt thit b nhc nh, thng bo v gip hin th ch s in k, nc cng nh
gip lu tr, qun l tin in nc l iu rt cn thit mi chuyn linh hot hn.
Vi s hng dn tn tnh ca Thy Nguyn Ngc Quyn ti chn ti ny
lm lun vn tt nghip cho mnh.
Lun vn tt nghip
Lun vn tt nghip
2. L THUYT
2.1 Khi qut v vi iu khin PIC16F877A v trnh bin dch CCS
2.1.1 Cc dng s chn
Lun vn tt nghip
Hnh 2 - 2:
Lun vn tt nghip
Lun vn tt nghip
B nh chng trnh
Lun vn tt nghip
B nh d liu:
B nh d liu ca PIC l b nh EEPROM c chia ra lm nhiu bank. i vi
PIC16F877A b nh d liu c chia ra lm 4 bank. Mi bank c dung lng 128 byte, bao
gm cc thanh ghi c chc nng c bit SFG (Special Function Register) nm cc vng a
ch thp v cc thanh ghi mc ch chung GPR (General Purpose Register) nm vng a
ch cn li trong bank. Cc thanh ghi SFR thng xuyn c s dng (v d nh thanh ghi
STATUS) s c t tt c cc bank ca b nh d liu gip thun tin trong qu trnh
truy xut v lm gim bt lnh ca chng trnh.
Lun vn tt nghip
Lun vn tt nghip
#include <18F4431.h>
1) header file
2) Cc lnh tin khai bo :
#use delay.
#fuses
#use rs232 .
Lun vn tt nghip
MAIN ()
{ .
..
Gi cc chng trnh con
..
..
}
10
Lun vn tt nghip
11
Lun vn tt nghip
Lun vn tt nghip
Ban u khi cha thc hin qu trnh giao tip, c hai ng SDA v SCL u mc
cao (SDA = SCL = HIGH). Lc ny bus I2C c coi l di (bus free), sn sng cho mt
giao tip. Hai iu kin START v STOP l khng th thiu trong vic giao tip gia cc
thit b I2C vi nhau.
13
Lun vn tt nghip
14
Lun vn tt nghip
15
Lun vn tt nghip
16
Lun vn tt nghip
Cc gi tr tc truyn d liu chun :50, 75, 110, 750, 300, 600, 1200,
2400, 4800, 9600, 19200,2 8800, 38400....56600, 115200 bps.
2.3.3 Cc mc in p ng truyn
RS 232 s dng phng thc truyn thng khng i xng, tc l s dng tn hiu
in p chnh lch gia mt dy dn v t. Do ngay t u tin ra i n mang v li
thi ca chun TTL, n vn s dng cc mc in p tng thch TTL m t cc mc
logic 0 v 1. Ngoi mc in p tiu chun cng c nh cc gi tr tr khng ti c u
vo bus ca b phn v cc tr khng ra ca b pht.
Mc in p ca tiu chun RS232C ( chun thng dng by gi) c m t nh
sau:
17
Lun vn tt nghip
ASCII( c th l 5,6,7 hay 8 bit d liu) Sau l mt Parity bit ( Kim tra bit chn, l hay
khng) v cui cng l bit dng - bit stop c th l 1, 1,5 hay 2 bit dng.
Hnh 2 13:
2.3.5 Tc Baud
y l mt tham s c trng ca RS232. Tham s ny chnh l c trng cho qu
trnh truyn d liu qua cng ni tip RS232 l tc truyn nhn d liu hay cn gi l tc
bit. Tc bit c nh ngha l s bit truyn c trong thi gian 1 giy hay s bit
truyn c trong thi gian 1 giy. Tc bit ny phi c thit lp bn pht v bn nhn
u phi c tc nh nhau ( Tc gia vi iu khin v my tnh phi chung nhau 1 tc
truyn bit)
Ngoi tc bit cn mt tham s m t tc truyn l tc Baud. Tc Baud
lin quan n tc m phn t m ha d liu c s dng din t bit c truyn cn
tc bit th phn nh tc thc t m cc bit c truyn.V mt phn t bo hiu s m
ha mt bit nn khi hai tc bit v tc baud l phi ng nht
Mt s tc Baud thng dng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600,
19200, 28800, 38400, 56000, 115200
18
Lun vn tt nghip
Khi s dng chun ni tip RS232 th yu cu khi s dng chun l thi gian chuyn
mc logic khng vt qu 4% thi gian truyn 1 bit. Do vy, nu tc bit cng cao th thi
gian truyn 1 bit cng nh th thi gian chuyn mc logic cng phi nh. iu ny lm gii
hn tc Baud v khong cch truyn.
2.3.6 Bit chn l hay Parity bit
y l bit kim tra li trn ng truyn. Thc cht ca qu trnh kim tra li khi
truyn d liu l b xung thm d liu c truyn tm ra hoc sa mt s li trong qu
trnh truyn . Do trong chun RS232 s dng mt k thut kim tra chn l.
Mt bit chn l c b sung vo d liu c truyn ch thy s lng cc bit "1"
c gi trong mt khung truyn l chn hay l.
Mt Parity bit ch c th tm ra mt s l cc li ch hn nh 1,3,,5,7,9... Nu nh mt
bit chn c mc li th Parity bit s trng gi tr vi trng hp khng mc li v th khng
pht hin ra li. Do trong k thut m ha li ny khng c s dng trong trng hp
c kh nng mt vi bit b mc li.
19
Lun vn tt nghip
20
Lun vn tt nghip
21
Lun vn tt nghip
22
Lun vn tt nghip
Vcc: ngun cho giao din I2C, thng l 5V v dng chung vi vi iu khin.
Ch l nu Vcc khng c cp ngun nhng VBAT c cp th DS1307 vn
ang hot ng (nhng khng ghi v c c).
SCL v SDA l 2 ng giao xung nhp v d liu ca giao din I2C m chng ta
tm hiu trong bi TWI ca AVR.
Hnh 3 4: S kt ni DS1307
23
Lun vn tt nghip
24
Lun vn tt nghip
Lun vn tt nghip
phn thng thng, khng phi m BCD, do chng ta cn vit cc chng trnh con
quy i t s thp nh phn (hoc thp phn thng) sang BCD, phn ny s c trnh by
trong lc lp trnh giao tip vi DS1307. Thot nhn, mi ngi u cho rng s BCD ch lm
vn n thm rc ri, tuy nhin s BCD rt c u im trong vic hin th nht l khi hin th
tng ch s nh hin th bng LED 7 on chng hn. Quay li v d 42 pht, gi s chng ta
dng 2 LED 7-on hin th 2 ch s ca s pht. Khi c thanh ghi MINUTES chng ta
thu c gi tr 66 (m BCD ca 42), do 66=01000010 (nh phn), hin th chng ta ch
cn dng phng php tch bit thng thng tch s 01000010 thnh 2 nhm 0100 v
0010 (tch bng ton t shift >> ca C hoc instruction LSL, LSR trong asm) v xut trc
tip 2 nhm ny ra LED v 0100 = 4 v 0010 =2, rt nhanh chng. Thm ch, nu chng ta ni
2 LED 7-on trong cng 1 PORT, vic tch ra tng digit l khng cn thit, hin th c
s, ch cn xut trc tip ra PORT. Nh vy, vi s BCD, vic tch v hin th digit c
thc hin rt d dng, khng cn thc hin php chia (rt tn thi gian thc thi) cho c s 10,
100, 1000nh trong trng hp s thp phn.
Thanh ghi giy (SECONDS): thanh ghi ny l thanh ghi u tin trong b nh ca
DS1307, a ch ca n l 0x00. Bn bit thp ca thanh ghi ny cha m BCD 4-bit ca ch
s hng n v ca gi tr giy. Do gi tr cao nht ca ch s hng chc l 5 (khng c giy
60 !) nn ch cn 3 bit (cc bit SECONDS6:4) l c th m ha c (s 5 =101, 3 bit). Bit
cao nht, bit 7, trong thanh ghi ny l 1 iu khin c tn CH (Clock halt treo ng h), nu
bit ny c set bng 1 b dao ng trong chip b v hiu ha, ng h khng hot ng. V
vy, nht thit phi reset bit ny xung 0 ngay t u.
Thanh ghi pht (MINUTES): c a ch 0x01, cha gi tr pht ca ng h. Tng t
thanh ghi SECONDS, ch c 7 bit ca thanh ghi ny c dng lu m BCD ca pht, bit 7
lun lun bng 0.
Thanh ghi gi (HOURS): c th ni y l thanh ghi phc tp nht trong DS1307.
Thanh ghi ny c a ch 0x02. Trc ht 4-bits thp ca thanh ghi ny c dng cho ch s
hng n v ca gi. Do DS1307 h tr 2 loi h thng hin th gi (gi l mode) l 12h (1h
n 12h) v 24h (1h n 24h) gi, bit6 (mu green trong hnh 4) xc lp h thng gi. Nu
bit6=0 th h thng 24h c chn, khi 2 bit cao 5 v 4 dng m ha ch s hng chc ca
gi tr gi. Do gi tr ln nht ca ch s hng chc trong trng hp ny l 2 (=10, nh phn)
nn 2 bit 5 v 4 l m ha. Nu bit6=1 th h thng 12h c chn, vi trng hp ny
ch c bit 4 dng m ha ch s hng chc ca gi, bit 5 (mu orange trong hnh 4) ch bui
26
Lun vn tt nghip
trong ngy, AM hoc PM. Bit5 =0 l AM v bit5=1 l PM. Bit 7 lun bng 0. (thit k ny
hi d, nu di hn 2 bit mode v A-P sang 2 bit 7 v 6 th s n gin hn).
Thanh ghi th (DAY ngy trong tun): nm a ch 0x03. Thanh ghi DAY ch
mang gi tr t 1 n 7 tng ng t Ch nht n th 7 trong 1 tun. V th, ch c 3 bit thp
trong thanh ghi ny c ngha.
Cc thanh ghi cn li c cu trc tng t, DATE cha ngy trong thng (1 n 31),
MONTH cha thng (1 n 12) v YEAR cha nm (00 n 99). Ch , DS1307 ch dng
cho 100 nm, nn gi tr nm ch c 2 ch s, phn u ca nm do ngi dng t thm vo
(v d 20xx).
Ngoi cc thanh ghi trong b nh, DS1307 cn c mt thanh ghi khc nm ring gi
l con tr a ch hay thanh ghi a ch (Address Register). Gi tr ca thanh ghi ny l a ch
ca thanh ghi trong b nh m ngi dng mun truy cp. Gi tr ca thanh ghi a ch (tc
a ch ca b nh) c set trong lnh Write m chng ta s kho st trong phn tip theo.
Lun vn tt nghip
28
Lun vn tt nghip
Lun vn tt nghip
Chn 9 : Ring Indicate (RI) : Bo chung cho bit l b nhn ang nhn tn
hiu rung chung.
Max232 l IC chuyn dng cho giao tip gia RS232 v thit b ngoi vi. Max232 l
IC ca hng Maxim. y l IC chay n nh v c s dng ph bin trong cc mch giao
tip chun RS232. Gi thnh ca Max232 ph hp (12K hay 10K) v tch hp trong hai
knh truyn cho chun RS232. Dng tn hiu c thit k cho chun RS232 . Mi u
truyn ra v cng nhn tn hiu u c bo v chng li s phng tnh in ( hnh nh l
15KV). Ngoi ra Max232 cn c thit k vi ngun +5V cung cp ngun cng sut nh.
Mch giao tip nh sau :
Lun vn tt nghip
31
Lun vn tt nghip
32
Lun vn tt nghip
33
Lun vn tt nghip
#include
<16F_877A.h>
#fuses
NOWDT,PUT,HS,NOPROTECT,NOLVP
#USE
delay(clock=20000000)
const
unsigned
char
dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x
82,0xf8,0x80,0x90};
#use fast_io(b)
int8
#use fast_io(a)
hour,min,sec,day,mont,year,ch,dv,tam,luu,
#define
RTC_SCL
PIN_C3
#define
RTC_SDA
PIN_C4
#use
i2c(master,fast,SDA=RTC_SDA,
SCL=RTC_SCL)
doc;
int8
chg,dvg,chp,dvp,chs,dvs,chn,dvn,cht,dvt,c
hy,dvy,i;
int8
rs232(baud=9600,parity=N,xmit=PIN_C6,
ngat,dem,tcai,ltcai,tam2,khoa,bchuong,kho
rcv=PIN_C7)
a1,value,k,l,j,h,b,g,m,n,tx,ty;
int8
gio,phut,ngay,gio1,phut1,ngay1,gio2,phut2
,ngay2,q1,q2,q3,q4,q5,q6,q;
#bit ok = porta.4
#bit edittime = porta.3
int16
Tiendien,Tiennuoc,dien,nuoc,tong,a,d;
vao DS1307
ch=gtri/10;
dv=gtri%10;
ch=ch<<4;
ch=ch|dv;
tam=ch;
Lun vn tt nghip
chy=ch;
dvy=dv;
{ tam=tam1;
dv=tam%10;
7 doan
ch=tam/10;
void hienthi()
dv=dig[dv];
dv=dv<<1;
portb=chg;
ch=dig[ch];
led1=0;
ch=ch<<1;
delay();
led1=1;
delay_us(20);
void chuyendoi()
{ chuyendoi1(hour);
chg=ch;
dvg=dv;
chuyendoi1(min);
chp=ch;
dvp=dv;
chuyendoi1(sec);
chs=ch;
dvs=dv;
chuyendoi1(day);
chn=ch;
dvn=dv;
chuyendoi1(mont);
cht=ch;
dvt=dv;
portb=dvg;
led2=0;
delay();
led2=1;
delay_us(20);
// -- hien thi phut -portb=chp;
led3=0;
delay();
led3=1;
delay_us(20);
portb=dvp;
led4=0;
delay();
led4=1;
delay_us(20);
// -- hien thi giay --
chuyendoi1(year);
35
Lun vn tt nghip
portb=chs;
delay();
led5=0;
led10=1;
delay();
delay_us(20);
led5=1;
delay_us(20);
portb=chy;
portb=dvs;
led11=0;
led6=0;
delay();
delay();
led11=1;
led6=1;
delay_us(20);
delay_us(20);
portb=dvy;
led12=0;
portb=chn;
delay();
led7=0;
led12=1;
delay();
delay_us(20);
led7=1;
delay_us(20);
portb=dvn;
led8=0;
delay();
{ i2c_start();
giao tiep I2C
led8=1;
delay_us(20);
// -- hien thi thang -portb=cht;
led9=0;
i2c_write(0xd0);
vung dia chi
i2c_write(add);
doc gia tri
i2c_start();
giao tiep I2C
delay();
led9=1;
delay_us(20);
portb=dvt;
led10=0;
i2c_write(0xd1);
du lieu
doc=i2c_read(0);
tu che do giao tiep I2C
// nhan du lieu
i2c_stop();
tiep I2C
36
Lun vn tt nghip
ch=doc&0xf0;
i2c_write(tam);
ch=ch>>4;
chuyen(min);
ch=ch*10;
i2c_write(tam);
dv=doc&0x0f;
chuyen(hour);
doc=ch+dv;
i2c_write(tam);
chuyen(0x02);
i2c_write(tam);
chuyen(day);
void docthoigian()
i2c_write(tam);
chuyen(mont);
read_RTC(0x00);
i2c_write(tam);
sec=doc;
chuyen(year);
read_RTC(0x01);
i2c_write(tam);
min=doc;
read_RTC(0x02);
hour=doc;
i2c_stop();
}
read_RTC(0x04);
day=doc;
void init_RTC()
read_RTC(0x05);
mont=doc;
i2c_start();
read_RTC(0x06);
i2c_write(0xd0);
year=doc;
i2c_write(0x07);
chuyen(10);
i2c_write(tam);
void ghi_RTC()
i2c_start();
i2c_write(0xd0);
i2c_write(0x00);
chuyen(sec);
#INT_EXT
void ngat_ngoai()
{ read_RTC(0x00);
37
Lun vn tt nghip
sec=doc;
if(sec==0)
{ min++;
else
if(min>=60)
{ switch(ngat)
{ min=0;
hour++;
case 1:
chuyendoi1(hour);
dvg=dv; break;
chg=ch;
case 2: chuyendoi1(min);
dvp=dv; break;
chp=ch;
case 3:
chuyendoi1(day);
dvn=dv; break;
chn=ch;
case 4:
chuyendoi1(mont);
dvt=dv; break;
cht=ch;
case 5:
chuyendoi1(year);
dvy=dv; break;
chy=ch;
if(hour>=24)
{ hour=0;
read_RTC(0x04);
day=doc;
read_RTC(0x05);
mont=doc;
read_RTC(0x06);
year=doc;
}
if(dem>9)
dem=0;
set_timer1(3035);
// ngat 100 ms
void ngat_timer1()
{ dem++;
{ if(dem<5)
disable_interrupts(int_ext);
{ switch(ngat)
enable_interrupts(INT_TIMER1);
set_timer1(3035);
dem=0;
ngat=1;
enable_interrupts(global);
for(i=0;i<80;i++) hienthi();
38
Lun vn tt nghip
lap3:
if(up==0)
ngat=3;
for(i=0;i<80;i++)
hour++;
hienthi();
lap52:
if(hour>=24)
if(up==0)
hour=0;
{ day++;
if(day>=32)
if(down==0)
if(down==0)
{ if(day==1) day=31;
for(i=0;i<40;i++) hienthi();
if(ok==1)
for(i=0;i<40;i++)
goto lap3;
if(ok==1)
day=1;
hienthi();
goto lap52;
ngat=2;
ngat=4;
for(i=0;i<80;i++) hienthi();
for(i=0;i<80;i++)
lap41:
else day--;
hienthi();
lap63:
if(up==0)
if(up==0)
{ min++;
if(min>=60)
min=0;
if(down==0)
{if(mont==1) mont=12; else mont--;}
if(down==0)
for(i=0;i<40;i++)
{ if(min==0)
if(ok==1)
min=59;
else min--;
}
for(i=0;i<40;i++)
hienthi();
goto lap63;
hienthi();
for(i=0;i<80;i++)
if(ok==1)
lap74:
goto lap41;
if(up==0)
hienthi();
{ year++; if(year>=100)
year=00;}
39
Lun vn tt nghip
if(down==0)
switch(tcai)
{ if(year==00)
year=99;
for(i=0;i<40;i++)
if(ok==1)
else year--;}
hienthi();
goto lap74;
portb=0xff;
disable_interrupts(INT_TIMER1);
ghi_RTC();
delay_ms(500);
chuyendoi();
for(i=0;i<40;i++)
hienthi();
ext_int_edge(h_to_l);
enable_interrupts(int_ext);
for(i=0;i<20;i++)
enable_interrupts(global);
hienthi();
if(ok==0)
// ---------------------------------------------
tcai++;
void ctcai()
{ while(tcai==ltcai)
switch(tcai)
{ if(up==0)
{ tam2++;
if(tam2>=10)
tam2=0;
}
if(down==0)
{ if(tam2==0)
tam2=9;
else tam2--;
chs=dig[q2]<<1;
}
case 8: q2=tam2; chy=dig[q2]<<1;
break;
40
Lun vn tt nghip
case 9: q3=tam2;
break;
dvy=tong%10;
dvy=dig[dvy]<<1;
tong=tong/10;
chy=tong%10;
chy=dig[chy]<<1;
tong=tong/10;
dvt=tong%10;
// -------------------------------
dvt=dig[dvt]<<1;
void chuyendoid()
tong=tong/10;
{ tong=dien;
cht=tong%10;
dvs=tong%10;
cht=dig[cht]<<1;
dvs=dig[dvs]<<1;
tong=tong/10;
tong=tong/10;
dvn=tong%10;
chs=tong%10;
dvn=dig[dvn]<<1;
chs=dig[chs]<<1;
tong=tong/10;
dvp=tong%10;
chn=0xff;
}
dvp=dig[dvp]<<1;
tong=tong/10;
void caidat()
chp=tong%10;
{ disable_interrupts(int_ext);
chp=dig[chp]<<1;
tong=tong/10;
chuyendoi1(gio);
dvg=tong%10;
chg=ch;
dvg=dig[dvg]<<1;
dvg=dv;
chg=0xff;
chuyendoi1(phut);
chp=ch;
// -------------------------------
dvp=dv;
void chuyendoin()
chuyendoi1(ngay);
{ tong=nuoc;
chn=ch;
dvn=dv;
41
Lun vn tt nghip
chs=0xff;
gio=23;
dvs=0xff;
else gio--;
cht=0xff;
chuyendoi1(gio);
dvt=0xff;
chg=ch;
chy=0xff;
dvg=dv;
dvy=0xff;
for(i=0;i<20;i++)
hienthi();
// cai dat gio bao thuc
for(i=0;i<15;i++)
hienthi();
chg=0xff;
dvg=0xff;
for(i=0;i<20;i++)
hienthi();
i(ok==1)
goto lap11;
// cai dat phut bao thuc
chuyendoi1(gio);
chp=0xff;
chg=ch;
dvp=0xff;
dvg=dv;
for(i=0;i<20;i++)
for(i=0;i<20;i++)
hienthi();
lap11:
hienthi();
chuyendoi1(phut);
chp=ch;
if(up==0)
dvp=dv;
{ gio++;
for(i=0;i<20;i++)
if(gio>=24)
gio=0;
hienthi();
lap12:
chuyendoi1(gio);
if(up==0)
chg=ch;
{ phut++;
dvg=dv;
}
if(phut>=60)
phut=0;
if(down==0)
chuyendoi1(phut);
{ if(gio==0)
chp=ch;
42
Lun vn tt nghip
dvp=dv;
chuyendoi1(ngay);
chn=ch;
if(down==0)
dvn=dv;
{ if(phut==0)
phut=59;
else phut--;
}
if(down==0)
{ if(ngay==0)
chuyendoi1(phut);
ngay=31;
chp=ch;
else ngay--;
dvp=dv;
chuyendoi1(ngay);
chn=ch;
for(i=0;i<15;i++)
dvn=dv;
hienthi();
if(ok==1)
for(i=0;i<15;i++)
goto lap12;
hienthi();
if(ok==1)
chn=0xff;
goto lap13;
dvn=0xff;
for(i=0;i<20;i++)
chuyendoi1(gio1);
hienthi();
chg=ch;
chuyendoi1(ngay);
dvg=dv;
chn=ch;
chuyendoi1(phut1);
dvn=dv;
chp=ch;
for(i=0;i<20;i++)
dvp=dv;
hienthi();
chuyendoi1(ngay1);
lap13:
chn=ch;
if(up==0)
dvn=dv;
{ ngay++;
chs=0xff;
if(ngay>=32)
dvs=0xff;
ngay=0;
43
Lun vn tt nghip
cht=0xff;
chuyendoi1(gio1);
dvt=0xff;
chg=ch;
chy=0xff;
dvg=dv;
dvy=0xff;
for(i=0;i<20;i++)
for(i=0;i<15;i++)
hienthi();
hienthi();
if(ok==1)
chg=0xff;
goto lap14;
dvg=0xff;
for(i=0;i<20;i++)
chp=0xff;
hienthi();
dvp=0xff;
chuyendoi1(gio1);
for(i=0;i<20;i++)
chg=ch;
hienthi();
dvg=dv;
chuyendoi1(phut1);
for(i=0;i<20;i++)
chp=ch;
hienthi();
dvp=dv;
lap14:
if(up==0)
{ gio1++;
for(i=0;i<20;i++)
hienthi();
lap15:
if(gio1>=24)
if(up==0)
gio1=0;
{ phut1++;
chuyendoi1(gio1);
if(phut1>=60)
chg=ch;
phut1=0;
dvg=dv;
chuyendoi1(phut1);
chp=ch;
if(down==0)
dvp=dv;
{ if(gio1==0)
gio1=23;
if(down==0)
else gio1--;
{ if(phut1==0)
44
Lun vn tt nghip
phut1=59;
if(down==0)
else phut1--;
{ if(ngay1==0)
chuyendoi1(phut1);
ngay1=31;
chp=ch;
else ngay1--;
dvp=dv;
chuyendoi1(ngay1);
chn=ch;
for(i=0;i<15;i++)
dvn=dv;
hienthi();
if(ok==1)
for(i=0;i<15;i++)
goto lap15;
hienthi();
if(ok==1)
chn=0xff;
goto lap16;
dvn=0xff;
for(i=0;i<20;i++)
chuyendoi1(gio2);
hienthi();
chg=ch;
chuyendoi1(ngay1);
dvg=dv;
chn=ch;
chuyendoi1(phut2);
dvn=dv;
chp=ch;
for(i=0;i<20;i++)
dvp=dv;
hienthi();
chuyendoi1(ngay2);
lap16:
chn=ch;
if(up==0)
dvn=dv;
{ ngay1++;
chs=0xff;
if(ngay1>=32)
dvs=0xff;
ngay1=0;
cht=0xff;
chuyendoi1(ngay1);
dvt=0xff;
chn=ch;
chy=0xff;
dvn=dv;
dvy=0xff;
}
45
Lun vn tt nghip
chg=0xff;
if(ok==1)
dvg=0xff;
goto lap17;
for(i=0;i<20;i++)
hienthi();
chp=0xff;
chuyendoi1(gio2);
dvp=0xff;
chg=ch;
for(i=0;i<20;i++)
dvg=dv;
hienthi();
for(i=0;i<20;i++)
chuyendoi1(phut2);
hienthi();
chp=ch;
lap17:
dvp=dv;
if(up==0)
for(i=0;i<20;i++)
{ gio2++;
hienthi();
if(gio2>=24)
lap18:
gio2=0;
if(up==0)
chuyendoi1(gio2);
{ phut2++;
chg=ch;
if(phut2>=60)
dvg=dv;
phut2=0;
chuyendoi1(phut2);
if(down==0)
chp=ch;
{ if(gio2==0)
dvp=dv;
gio2=23;
else gio2--;
if(down==0)
chuyendoi1(gio2);
{ if(phut2==0)
chg=ch;
phut2=59;
dvg=dv;
else phut2--;
chuyendoi1(phut2);
for(i=0;i<15;i++)
chp=ch;
hienthi();
dvp=dv;
}
46
Lun vn tt nghip
for(i=0;i<15;i++)
dvn=dv;
hienthi();
if(ok==1)
for(i=0;i<15;i++)
goto lap18;
hienthi();
if(ok==1)
chn=0xff;
goto lap19;
dvn=0xff;
write_eeprom(100,gio);
for(i=0;i<20;i++)
write_eeprom(101,phut);
hienthi();
write_eeprom(102,ngay);
chuyendoi1(ngay2);
write_eeprom(103,gio1);
chn=ch;
write_eeprom(104,phut1);
dvn=dv;
write_eeprom(105,ngay1);
for(i=0;i<20;i++)
write_eeprom(106,gio2);
hienthi();
write_eeprom(107,phut2);
lap19:
write_eeprom(108,ngay2);
if(up==0)
{ ngay2++;
if(ngay2>=32)
void baothuc()
ngay2=0;
{ if(min==phut)
chuyendoi1(ngay2);
chn=ch;
dvn=dv;
{ if(hour==gio)
{ if(day==ngay)
{ while(1)
{ chuong=0;
if(down==0)
if(ok==0)
{ if(ngay2==0)
{ chuong=1;
ngay2=31;
break;
else ngay2--;
chuyendoi1(ngay2);
chn=ch;
}
}
47
Lun vn tt nghip
dvt=tong%10;
dvt=dig[dvt]<<1;
else chuong=0;
tong=tong/10;
cht=tong%10;
cht=dig[cht]<<1;
void chuyendn()
tong=tong/10;
{ tong=dien;
dvn=tong%10;
dvs=tong%10;
dvn=dig[dvn]<<1;
dvs=dig[dvs]<<1;
chn=dig[0]<<1;
tong=tong/10;
chs=tong%10;
void ghi_eeprom_dien()
chs=dig[chs]<<1;
tong=tong/10;
b=dien/255;
dvp=tong%10;
g=dien%255;
dvp=dig[dvp]<<1;
if(khoa==0)
tong=tong/10;
{ write_eeprom(0,b);
chp=tong%10;
write_eeprom(1,g);
chp=dig[chp]<<1;
tong=tong/10;
if(khoa==2)
dvg=tong%10;
{ write_eeprom(2,b);
dvg=dig[dvg]<<1;
write_eeprom(3,g);
chg=dig[0]<<1;
tong=nuoc;
if(khoa==4)
dvy=tong%10;
{ write_eeprom(4,b);
dvy=dig[dvy]<<1;
write_eeprom(5,g);
tong=tong/10;
chy=tong%10;
if(khoa==6)
chy=dig[chy]<<1;
{ write_eeprom(6,b);
tong=tong/10;
write_eeprom(7,g);
48
Lun vn tt nghip
if(khoa==6)
if(khoa==8)
{ write_eeprom(26,b);
{ write_eeprom(8,b);
write_eeprom(27,g);
write_eeprom(9,g);
if(khoa==8)
if(khoa==10)
{ write_eeprom(28,b);
{ write_eeprom(10,b);
write_eeprom(29,g);
write_eeprom(11,g);
if(khoa==10)
if(khoa==12)
{ write_eeprom(30,b);
{ write_eeprom(12,b);
write_eeprom(31,g);
write_eeprom(13,g);
if(khoa==12)
{ write_eeprom(32,b);
void ghi_eeprom_nuoc()
write_eeprom(33,g);
{ b=nuoc/255;
g=nuoc%255;
if(khoa==0)
void doc_eeprom_dien()
{ write_eeprom(20,b);
write_eeprom(21,g);
}
if(khoa==0)
{ m=read_eeprom(0);
if(khoa==2)
{ write_eeprom(22,b);
write_eeprom(23,g);
}
n=read_eeprom(1);
}
if(khoa==2)
{ m=read_eeprom(2);
if(khoa==4)
{ write_eeprom(24,b);
write_eeprom(25,g);
}
n=read_eeprom(3);
}
if(khoa==4)
{ m=read_eeprom(4);
49
Lun vn tt nghip
n=read_eeprom(5);
n=read_eeprom(23);
if(khoa==6)
if(khoa==4)
{ m=read_eeprom(6);
{ m=read_eeprom(24);
n=read_eeprom(7);
n=read_eeprom(25);
if(khoa==8)
if(khoa==6)
{ m=read_eeprom(8);
{ m=read_eeprom(26);
n=read_eeprom(9);
n=read_eeprom(27);
if(khoa==10)
if(khoa==8)
{ m=read_eeprom(10);
{ m=read_eeprom(28);
n=read_eeprom(11);
n=read_eeprom(29);
if(khoa==12)
if(khoa==10)
{ m=read_eeprom(12);
{ m=read_eeprom(30);
n=read_eeprom(13);
n=read_eeprom(31);
dien=m;
if(khoa==12)
dien=dien*255+n;
{ m=read_eeprom(32);
n=read_eeprom(33);
void doc_eeprom_nuoc()
nuoc=m;
if(khoa==0)
nuoc=nuoc*255+n;
{ m=read_eeprom(20);
n=read_eeprom(21);
}
void NhapDienNuoc()
{
if(khoa==2)
{ m=read_eeprom(22);
portb=0xff;
50
Lun vn tt nghip
delay_ms(100);
dvp=0xff;
chuyendoid();
tam2=0;
chuyendoin();
for(i=0;i<20;i++)
q=dvs;
hienthi();
dvs=0xff ;
dvp=q;
for(i=0;i<20;i++)
tam2=0;
hienthi();
tcai=1;
ctcai();
ltcai=1;
for(i=0;i<20;i++)
ltcai=tcai;
hienthi();
q=chp;
dvs=q;
chp=0xff;
for(i=0;i<20;i++)
tam2=0;
hienthi();
for(i=0;i<20;i++)
ctcai();
hienthi();
chp=q;
ltcai=tcai;
for(i=0;i<20;i++)
q=chs;
hienthi();
chs=0xff;
ctcai();
tam2=0;
for(i=0;i<20;i++)
ltcai=tcai;
hienthi();
q=dvg;
chs=q;
dvg=0xff;
for(i=0;i<20;i++)
tam2=0;
hienthi();
for(i=0;i<20;i++)
ctcai();
hienthi();
dvg=q;
ltcai=tcai;
for(i=0;i<20;i++)
q=dvp;
hienthi();
51
Lun vn tt nghip
ctcai();
chy=q;
for(i=0;i<20;i++)
dien=q5;
hienthi();
dien=dien*10+q4;
ctcai();
dien=dien*10+q3;
dien=dien*10+q2;
ltcai=tcai;
dien=dien*10+q1;
q=dvt;
dvt=0xff;
portb=0xff;
tam2=0;
delay_ms(100);
for(i=0;i<20;i++)
chuyendoin();
hienthi();
dvt=q;
ltcai=tcai;
for(i=0;i<20;i++)
q=dvy;
hienthi();
dvy=0xff;
ctcai();
tam2=0;
for(i=0;i<20;i++)
ltcai=tcai;
hienthi();
q=cht;
dvy=q;
cht=0xff;
for(i=0;i<20;i++)
tam2=0;
hienthi();
for(i=0;i<20;i++)
ctcai();
hienthi();
cht=q;
ltcai=tcai;
for(i=0;i<20;i++)
q=chy;
hienthi();
chy=0xff;
ctcai();
tam2=0;
for(i=0;i<20;i++)
ltcai=tcai;
hienthi();
q=dvn;
52
Lun vn tt nghip
dvn=0xff;
set_tris_c(0x98);
tam2=0;
set_tris_d(0x00);
for(i=0;i<20;i++)
set_tris_e(0x00);
hienthi();
init_RTC();
gio=read_eeprom(100);
dvn=q;
phut=read_eeprom(101);
for(i=0;i<20;i++)
ngay=read_eeprom(102);
hienthi();
ctcai();
gio1=read_eeprom(103);
phut1=read_eeprom(104);
ngay1=read_eeprom(105);
gio2=read_eeprom(106);
nuoc=q5;
phut2=read_eeprom(107);
nuoc=nuoc*10+q4;
ngay2=read_eeprom(108);
nuoc=nuoc*10+q3;
chuong=1;
nuoc=nuoc*10+q2;
khoa=read_eeprom(200);
nuoc=nuoc*10+q1;
portb=0xff;
delay_ms(100);
khoa=khoa+2;
if(khoa>12)
khoa=0;
write_eeprom(200,khoa);
ghi_eeprom_dien();
ghi_eeprom_nuoc();
setup_timer_1(T1_INTERNAL|T1_DIV_
BY_8);
disable_interrupts(INT_TIMER1)
ext_int_edge(h_to_l);
enable_interrupts(int_ext);
enable_interrupts(global);
}
//
read_RTC(0x00);
void main()
delay_ms(400);
docthoigian();
if(sec>59)
{
set_tris_b(0x01);
set_tris_a(0x3f);
{ i2c_start();
i2c_write(0xd0);
i2c_write(0x00);
53
Lun vn tt nghip
sec=0;
i2c_write(tam);
if(edittime==0)
i2c_stop();
while(1)
while(1)
{ docthoigian();
chuyendoi();
docthoigian();
for(i=0;i<40;i++)
if((sec==0)||((min>=phut1)&&(min<=phut
2)))
hienthi();
{ baothuc();
if((min>=phut1)&&(min<phut2))
{ if((hour>=gio1)&&(hour<=gio2))
{ if((day>=ngay1)&&(day<=ngay2)
{ khoa=read_eeprom(200);
doc_eeprom_dien();
doc_eeprom_nuoc();
while(1)
{ docthoigian();
if(ok==0)
caidat();
if(set==0)
chinhtime();
if(view==0)
break;
}
}
}
}
if(sec==0)
{ if(min>=phut2)
{ if(hour>=gio2)
{ if(day>=ngay2)
break;
}}}
chuyendn();
for(i=0;i<40;i++)
hienthi(); } } } }
if(set==0)
{
54
Lun vn tt nghip
55
Lun vn tt nghip
Lun vn tt nghip
Lun vn tt nghip
5. KT QU THC HIN
58
Lun vn tt nghip
Hnh 5 2 : Hin th ch s
59
Lun vn tt nghip
u im:
o Mch nhp cc ch s v hin th kh n nh.
o Ch hin th theo thi gian ci t nn tit kim nng lng.
o Mch lu tr tt, khi mt ngun khng mt d liu v khi c ngun li vn hot
ng bnh thng.
o Giao din ngi dung n gin, d s dng.
Nhc im:
o V l bng thng bo nn phi t ngoi cng, c bt tin khi nhp ch s
o Do thut ton cha tt nn cng cha hon chnh v ti cc chc nng.
o ti mi dng li mch demo, cha to thnh sn phm hon chnh.
60
Lun vn tt nghip
61