You are on page 1of 69

I HC QUC GIA TP.

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

GVHD: KS. Nguyn Ngc Quyn


SVTH: L Thanh V
MSSV: 40903344

TP. H CH MINH, THNG 12 NM 2014

I HC QUC GIA TP.H CH MINH CNG HA X HI CH NGHA VIT NAM


TRNG I HC BCH KHOA
c lp T do Hnh phc.
---------S: ______ /BKT
Khoa: in in t
B Mn: in T

----------

NHIM V LUN VN TT NGHIP


1.

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

PHN DNH CHO KHOA, B MN:


Ngi duyt (chm s b):.......................
n v:......................................................
Ngy bo v : ...........................................
im tng kt: .........................................
Ni lu tr lun vn: ...............................

NGI HNG DN CHNH

Li cm n

GVHD: Thy Nguyn Ngc Quyn

LI CM N

Sau khong thi gian c hc tp v rn luyn ti trng i Hc Bch Khoa


TP.HCM, di s dy d tn tnh ca cc thy c trong cc phng khoa, nay em gn hon
tt kho hc, ang trong giai on hon thnh lun vn tt nghip v sp sa tr thnh mt
ngi k s in t c th gp sc xy dng cho s pht trin x hi, t nc. c nh
ngy hm nay em v cng bit n tt c cc thy c trong in in T tn tnh ging
dy, hng dn, truyn t nhng kin thc, kinh nghim qu bu cho em trong khong thi
gian c hc tp, rn luyn ti trng. c bit em xin gi li cm n su sc n Thy
Nguyn Ngc Quyn, ngi thy ch bo, nh hng, gip v hng dn em rt nhiu
trong sut qu trnh thc hin lun vn tt nghip. Em cng khng th no qun gi li cm
n n cc anh ch em sinh vin cc kho cng em hc tp v chia s kin thc tip thu
trong qu trnh theo hc ti trng. ng thi em cng xin gi li cm n n cha m, anh
ch, bn b nhng ngi lun ng bn cnh em ng vin, an i, ng h v vt cht ln
tinh thn trong sut khong thi gian qua.
Vi lng bit n chn thnh, em xin gi li chc sc kho v nhng g tt p nht n
cc thy c trong khoa, trong nh trng, nhng bc cha m, anh ch ng knh v ton th
cc bn b hin ang cn hc hoc khng cn hc ti trng i Hc Bch Khoa TP.HCM.

Tp. H Ch Minh, ngy 16 thng 12 nm 2014

Sinh vin

L Thanh V

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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:
-

Khi iu khin v lu tr s dng PIC16F877A.

Khi hin th gm 12 LED 7 on hin th ch s in k v nc.

Khi thi gian thc s dng IC DS1307 hn gi thng bo nhp ch s in k,


nc v hn gi hin th.

Khi nt nhn nhp ch s in k v nc.

Khi giao tip vi my tnh s dng cng com chun RS232.

Giao din qun l trn my tnh vit bng Visual basic 6.

ii

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

MC LC
1.

GII THIU ....................................................................................................................................1


1.1

Tng quan.................................................................................................................................1

1.2

Nhim v lun vn ...................................................................................................................2

2.

L THUYT ...................................................................................................................................3

3.

THIT K V THC HIN PHN CNG ............................................................................... 21

4.

THIT K V THC HIN PHN MM (NU C) ............................................................... 32

5.

KT QU THC HIN ............................................................................................................... 58

6.

KT LUN V HNG PHT TRIN .................................................................................... 60

7.

6.1

Kt lun ................................................................................................................................. 60

6.2

Hng pht trin ................................................................................................................... 60

TI LIU THAM KHO ............................................................................................................. 61

iii

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

DANH SCH HNH MINH HA

Hnh 2 1

Vi iu khin PIC16F877A/PIC16F874A v cc dng s chn.....................................3

Hnh 2 - 2

S khi vi iu khin PIC16F877A ..............................................................................4

Hnh 2 3

B nh chng trnh PIC16F877A......................................7

Hnh 2 4

B nh d liu PIC16F877A8

Hnh 2 5

Giao din trnh bin dch CCS9

Hnh 2 6

Kt ni thit b vo bus I2C.11

Hinh 2 7

Truyn nhn d liu gia ch/t ..12

Hnh 2 8

iu kin START v STOP ca bus I2C.13

Hnh 2 9

Qu trnh truyn 1 bit d liu14

Hnh 2 10

D liu truyn trn bus I2C.14

Hnh 2 11

Bit ACK trn bus I2C.14

Hnh 2 12

Lu thut ton qu trnh truyn nhn d liu.15

Hnh 2 13

Truyn d liu RS232..18

Hinh 2 14

Giao din Visual Basic.20

Hnh 3 1

S khi ca thit b...21

Hnh 3 2

Khi vi iu khin v lu tr..22

Hnh 3 3

S chn IC DS1307.23

Hnh 3 4

S kt ni DS1307..23

Hnh 3 5

Cc thanh ghi ca DS130724

Hnh 3 6

T chc thanh ghi theo tng bit..25

Hnh 3 7

Gi tr lu trong cc thanh ghi l BCD.25

Hnh 3 8

Address Register..27

Hnh 3 9

S chn LED 7 on28

Hnh 3 10

Khi hin th28

Hnh 3 11

Linh kin ghp ni..29

iv

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Hnh 3 12

S chn cng com 9 chn..29

Hnh 3 13

Ghp ni cng com v IC MAX232..30

Hnh 3 14

Layout..31

Hnh 4 1

S gii thut chng trnh chnh..32

Hnh 4 2

S gii thut nhp ch s in k - nc.33

Hnh 4 3

Giao din giao tip my tnh...55

Hnh 4 4

Mch hon chnh.58

Hnh 4 5

Hin th ch s...59

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

DANH SCH BNG S LIU


Bng 1 Tm tt c im ca VDK PIC 16F877 ......................................................................................6

vi

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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

GVHD: Thy Nguyn Ngc Quyn

1.2 Nhim v lun vn


Da vo nh hng ni dung ti l khng phi tp trung nghin cu mt lnh vc
mi m tp trung vo ng dng nhng k thut, cng ngh ang ph bin vo ch to mt sn
phm c th, c tnh ng dng v bm st thc t. T ti bao gm cc nhim v t ra
nh sau:
-

Tm hiu v vi iu khin PIC16F877A v ngn ng lp trnh cho PIC.

Tm hiu v giao tip vi LED 7 on.

Tm hiu v giao tip I2C, giao tip UART.

Tm hiu v ngn ng lp trnh Visual Basic.

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

2. L THUYT
2.1 Khi qut v vi iu khin PIC16F877A v trnh bin dch CCS
2.1.1 Cc dng s chn

Hnh 2 1: Vi iu khin PIC16F877A/PIC16F874A v cc dng s chn

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

2.1.2 S khi vi iu khin PIC16F877A

Hnh 2 - 2:

S khi vi iu khin PIC16F877A

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

2.1.3 c im ca vi iu khin PIC16F877A


y l vi iu khin thuc h PIC16Fxxx vi tp lnh gm 35 lnh c di 14 bit.
Mi lnh u c thc thi trong mt chu k xung clock. Tc hot ng ti a cho php l
20 MHz vi mt chu k lnh l 200ns. B nh chng trnh 8Kx14 bit, b nh d liu 368
byte RAM v b nh d liu EEPROM vi dung lng 256 byte. S PORT I/O l 5 vi 33
pin I/O. C 8 knh chuyn i A/D.

Cc c tnh ngoi vi bao gmcc khi chc nng sau:


o Timer0: b m 8 bit vi b chia tn s 8 bit.
o Timer1: b m 16 bit vi b chia tn s, c th thc hin chc nng m da vo
xung clock ngoi vi ngay khi vi iu khin hot ng ch sleep.
o Timer2: b m 8 bit vi b chia tn s, b postcaler.
o Hai b Capture/so snh/iu ch rng xung.
o Cc chun giao tip ni tip SSP (Synchronous Serial Port), SPI v I2C.
o Chun giao tip ni tip USART vi 9 bit a ch.
o Cng giao tip song song PSP (Parallel Slave Port) vi cc chn iu khin RD,
WR,

Bn cnh l mt vi c tnh khc ca vi iu khin nh:


o B nh flash vi kh nng ghi xa c 100.000 ln.
o B nh EEPROM vi kh nng ghi xa c 1.000.000 ln.
o D liu b nh EEPROM c th lu tr trn 40 nm.
o Kh nng t np chng trnh vi s iu khin ca phn mm.
o Np c chng trnh ngay trn mch in ICSP (In Circuit Serial Programming)
thng qua 2 chn.
o Watchdog Timer vi b dao ng trong.
o Chc nng bo mt m chng trnh.
o Ch Sleep.
o C th hot ng vi nhiu dng Oscillator khc nhau.

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Bng 1: Tm tt c im ca VDK PIC 16F877


2.1.4 T chc b nh

B nh chng trnh

B nh chng trnh ca vi iu khin PIC16F877A l b nh flash, dung lng b


nh 8K word (1 word = 14 bit) v c phn thnh nhiu trang (t page0 n page 3) . Nh
vy b nh chng trnh c kh nng cha c 8*1024 = 8192 lnh (v mt lnh sau khi m
ha s c dung lng 1 word (14bit). m ha c a ch ca 8K word b nh chng
trnh, b m chng trnh c dung lng 13 bit (PC<12:0>).
Khi vi iu khin c reset, b m chng trnh s ch n a ch 0000h (Reset
6

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

vector). Khi c ngt xy ra, b m chng trnh s ch n a ch 0004h (Interrupt vector).


B nh chng trnh khng bao gm b nh stack v khng c a ch ha bi b
m chng trnh. B nh stack s c cp c th trong phn sau.

Hnh 2 3: B nh chng trnh PIC16F877A

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

GVHD: Thy Nguyn Ngc Quyn

Hnh 2 4: S b nh d liu PIC16F877A

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

2.1.5 Trnh bin dch CCS

Giao din ca CCS:

Hnh 2 5: Giao din trnh bin dch CCS

Cu trc ca 1 chng trnh vit trn CCS:

#include <18F4431.h>

1) header file
2) Cc lnh tin khai bo :

#use delay.

#use delay(clock=20000000) =>

#fuses

khai bo tn s thch anh (Hz)


s dng hm delay

#use rs232 .

#use rs232 => khai bo s dng


cng thu pht ni tip

Khai bo bin ton cc

3) Khai bo tn v kiu bin s


dng, c th khai bo bin cc b

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn


bn trong chng trnh con v
bn trong hm MAIN

Chng trnh ngt

4) Chng trnh ngt

chng trnh con 1

5) Chng trnh con

chng trnh con 2

6) Chng trnh chnh

MAIN ()
{ .
..
Gi cc chng trnh con
..
..
}

2.2 Gii thiu chung v I2C


Ngy nay trong cc h thng in t hin i, rt nhiu ICs hay thit b ngoi vi cn
phi giao tip vi cc ICs hay thit b khc giao tip vi th gii bn ngoi. Vi mc tiu
t c hiu qu cho phn cng tt nht vi mch in n gin, Phillips pht trin mt
chun giao tip ni tip 2 dy c gi l I2C. I2C l tn vit tt ca cm t Inter
Intergrated Circuit Bus giao tip gia cc IC vi nhau.
I2C mc d c pht trin bi Philips, nhng n c rt nhiu nh sn xut IC
trn th gii s dng. I2C tr thnh mt chun cng nghip cho cc giao tip iu khin, c
th k ra y mt vi tn tui ngoi Philips nh: Texas Intrument (TI), MaximDallas, analog
Device, National Semiconductor Bus I2C c s dng lm bus giao tip ngoi vi cho rt
nhiu loi IC khc nhau nh cc loi Vi iu khin 8051, PIC, AVR, ARM, chp nh nh
RAM tnh (Static Ram), EEPROM, b chuyn i tng t s (ADC), s tng t (DAC), IC
iu khin LCD, LED

10

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

2.2.1 c im giao tip I2C


Mt giao tip I2C gm c 2 dy: Serial Data (SDA) v Serial Clock (SCL). SDA l
ng truyn d liu 2 hng, cn SCL l ng truyn xung ng h v ch theo mt
hng. Nh hnh v, khi mt thit b ngoi vi kt ni vo ng I2C th chn SDA ca n s
ni vi dy SDA ca bus, chn SCL s ni vi dy SCL.

Hnh 2 6: Kt ni thit b vo bus I2C


Mi dy SDA hay SCL u c ni vi in p dng ca ngun cp thng qua mt
in tr ko ln (pullup resistor). S cn thit ca cc in tr ko ny l v chn giao tip
I2C ca cc thit b ngoi vi thng l dng cc mng h (opendrain or opencollector). Gi
tr ca cc in tr ny khc nhau ty vo tng thit b v chun giao tip, thng dao ng
trong khong 1K n 4.7K.
Mt thit b hay mt IC khi kt ni vi bus I2C, ngoi mt a ch (duy nht) phn
bit, n cn c cu hnh l thit b ch (master) hay t (slave). Ti sao li c s phn bit
ny ? l v trn mt bus I2C th quyn iu khin thuc v thit b ch (master). Thit b
ch nm vai tr to xung ng h cho ton h thng, khi gia hai thit b ch/t giao tip th
thit b ch c nhim v to xung ng h v qun l a ch ca thit b t trong sut qu
trnh giao tip. Thit b ch gi vai tr ch ng, cn thit b t gi vai tr b ng trong vic
giao tip.

11

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Hnh 2 7: Truyn nhn d liu gia ch/t


Nhn hnh trn ta thy xung ng h ch c mt hng t ch n t, cn lung d
liu c th i theo hai hng, t ch n t hay ngc li t n ch.
V d liu truyn trn bus I2C, mt bus I2C chun truyn 8bit d liu c hng trn
ng truyn vi tc l 100Kbits/s Ch chun (Standard mode). Tc truyn c
th ln ti 400Kbits/s Ch nhanh (Fast mode) v cao nht l 3,4Mbits/s Ch cao
tc (Highspeed mode).
Mt bus I2C c th hot ng nhiu ch khc nhau:

Mt ch mt t (one master one slave)

Mt ch nhiu t (one master multi slave)

Nhiu ch nhiu t (Multi master multi slave)

D ch no, mt giao tip I2C u da vo quan h ch/t. Gi thit mt thit b


A mun gi d liu n thit b B, qu trnh c thc hin nh sau:

Thit b A (Ch) xc nh ng a ch ca thit b B (t), cng vi vic xc


nh a ch, thit b A s quyt nh vic c hay ghi vo thit b t

Thit b A gi d liu ti thit b B

Thit b A kt thc qu trnh truyn d liu

Khi A mun nhn d liu t B, qu trnh din ra nh trn, ch khc l A s nhn d


liu t B. Trong giao tip ny, A l ch cn B vn l t. Chi tit vic thit lp mt giao tip
gia hai thit b s c m t chi tit trong cc mc di y.
2.2.2 START and STOP conditions
START v STOP l nhng iu kin bt buc phi c khi mt thit b ch mun thit
lp giao tip vi mt thit b no trong mng I2C. START l iu kin khi u, bo hiu
bt u ca giao tip, cn STOP bo hiu kt thc mt giao tip. Hnh di y m t iu
kin START v STOP.
12

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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.

Hnh 2 8: iu kin START v STOP ca bus I2C


iu kin START: mt s chuyn i trng thi t cao xung thp trn ng SDA
trong khi ng SCL ang mc cao (cao = 1; thp = 0) bo hiu mt iu kin START.
iu kin STOP: Mt s chuyn i trng thi t mc thp ln cao trn ng SDA
trong khi ng SCL ang mc cao.
C hai iu kin START v STOP u c to ra bi thit b ch. Sau tn hiu
START, bus I2C coi nh ang trong trang thi lm vic (busy). Bus I2C s ri, sn sng cho
mt giao tip mi sau tn hiu STOP t pha thit b ch.
Sau khi c mt iu kin START, trong qua trnh giao tip, khi c mt tn hiu
START c lp li thay v mt tn hiu STOP th bus I2C vn tip tc trong trng thi bn.
Tn hiu START v lp li START u c chc nng ging nhau l khi to mt giao tip.
2.2.3 nh dng d liu truyn
D liu c truyn trn bus I2C theo tng bit, bit d liu c truyn i ti mi sn
dng ca xung ng h trn dy SCL, qu trnh thay i bit d liu xy ra khi SCL ang
mc thp.

13

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Hnh 2 9: Qu trnh truyn 1 bit d liu


Mi byte d liu c truyn c di l 8 bits. S lng byte c th truyn trong
mt ln l khng hn ch. Mi byte c truyn i theo sau l mt bit ACK bo hiu
nhn d liu. Bit c trng s cao nht (MSB) s c truyn i u tin, cc bt s c
truyn i ln lt. Sau 8 xung clock trn dy SCL, 8 bit d liu c truyn i. Lc ny
thit b nhn, sau khi nhn 8 bt d liu s ko SDA xung mc thp to mt xung
ACK ng vi xung clock th 9 trn dy SDA bo hiu nhn 8 bit. Thit b truyn
khi nhn c bit ACK s tip tc thc hin qu trnh truyn hoc kt thc.

Hnh 2 10 : D liu truyn trn bus I2C

Hnh 2 11: Bit ACK trn bus I2C

14

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Hnh 2 12: Lu thut ton qu trnh truyn nhn d liu


Mt byte truyn i c km theo bit ACK l iu kin bt buc, nhm m bo cho qu
trnh truyn nhn c din ra chnh xc. Khi khng nhn c ng a ch hay khi mun
kt thc qu trnh giao tip, thit b nhn s gi mt xung NotACK (SDA mc cao) bo
cho thit b ch bit, thit b ch s to xung STOP kt thc hay lp li mt xung START
bt u qu trnh mi.
2.2.4 Cch thc s dng Module I2C trong CCS
Trong vic lp trnh cho PIC s dng giao tip I2C ca n trong cc ng dng, ngi
lp trnh c th thc hin mt cch d dng vi trnh dch CCS. Ni d dng y l ch v
mt c php lnh, ta khng cn s dng nhiu cu lnh kh nh nh trong lp trnh ASM.
Vic khi to, chn ch hot ng v thc hin giao tip ca I2C c cc hm dng sn
ca CCS thc hin. Cc hm lit k di y l ca phin bn CCS 3.242, l:

i2c_isr_state(): Thng bo trng thi giao tip I2C

i2c_start(): To iu kin START

i2c_stop(): To iu kin STOP

i2c_read(): c gi tr t thit b I2C, tr v gi tr 8 bit

i2c_write(): Ghi gi tr 8 bit n thit b I2C

15

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

s dng khi I2C ta s dng khai bo sau:


#use i2c(ch_, tc , sda = PIN_C4, scl=PIN_C3)

Ch : Master hay Slave

Tc : Slow (100KHz) hay Fast (400KHz)

SDA v SCL l cc chn i2c tng ng ca PIC

Sau khai bo trn, ta c th s dng cc hm nu trn thc hin, x l cc giao tip


i2c vi cc thit b ngoi vi khc.

2.3 Tng quan v chun giao tip RS232


Vn giao tip gia PC v vi iu khin rt quan trng trong cc ng dng iu
khin, o lng... Ghp ni qua cng ni tip RS232 l mt trong nhng k thut c s
dng rng ri ghp ni cc thit b ngoi vi vi my tnh.N l mt chun giao tip ni tip
dng nh dng khng ng b, kt ni nhiu nht l 2 thit b , chiu di kt ni ln nht cho
php m bo d liu l 12.5 n 25.4m, tc 20kbit/s i khi l tc 115kbit/s vi
mt s thit b c bit. ngha ca chun truyn thng ni tip ngha l trong mt thi im
ch c mt bit c gi i dc theo ng truyn.
Cc my tnh thng c 1 hoc 2 cng ni tip theo chun RS232 c gi l cng
Com. Chng c dng ghp ni cho chut, modem, thit b o lng...Trn main my tnh
c loi 9 chn hoc li 25 chn ty vo i my v main ca my tnh. Vic thit k giao tip
vi cng RS232 cng tng i d dng, c bit khi chn ch hot ng l khng ng
b v tc truyn d liu thp.
2.3.1 u im chun giao tip RS232

Kh nng chng nhiu ca cc cng ni tip cao

Thit b ngoi vi c th tho lp ngay c khi my tnh ang c cp in

Cc mch in n gin c th nhn c in p ngun nui qua cng ni


tip.

2.3.2 Nhng c im cn lu trong chun RS232

Trong chun RS232 c mc gii hn trn v di (logic 0 v 1) l +-12V.


Hin nay ang c c nh tr khng ti trong phm vi t 3000 m - 7000
m.

16

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Mc logic 1 c in p nm trong khong -3V n -12V, mc logic 0 t +3V n 12V

Tc truyn nhn d liu cc i l 100kbps ( ngy nay c th ln hn)

Cc li vo phi c in dung nh hn 2500pF

Tr khng ti phi ln hn 3000 m nhng phi nh hn 7000 m

di ca cp ni gia my tnh v thit b ngoi vi ghp ni qua cng ni


tip RS232 khng vt qua 15m nu chng ta khng s model

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:

Mc logic 0 : +3V , +12V

Mc logic 1 : -12V, -3V

Cc mc in p trong phm vi t -3V n 3V l trng thi chuyn tuyn. Chnh v t


- 3V ti 3V l phm vi khng c nh ngha, trong trng hp thay i gi tr logic t thp
ln cao hoc t cao xung thp, mt tn hiu phi vt qua qung qu trong mt th gian
ngn hp l. iu ny dn n vic phi hn ch v in dung ca cc thit b tham gia v
ca c ng truyn.
2.3.4 Qu trnh truyn d liu
Truyn d liu qua cng ni tip RS232 c thc hin khng ng b. Do vy nn
ti mt thi im ch c mt bit c truyn (1 k t). B truyn gi mt bit bt u (bit start)
thng bo cho b nhn bit mt k t s c gi n trong ln truyn bit tip the . Bit ny
lun bt u bng mc 0.. Tip theo l cc bit d liu (bits data) c gi di dng m

17

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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:

Truyn d liu RS232

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

GVHD: Thy Nguyn Ngc Quyn

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.

2.4 Tng quan v Visual Basic


2.4.1 Gii thiu v Visual Basic
Visual Basic l mt ngn ng lp trnh cp cao 32 bit c s dng vit cc
chng trnh chy trong mi trng Windown, Visual Basic s dng kiu lp trnh Visual
hay RAD ( Rapid Application Development) trong vic to cc ca s, cc iu khin v
cch ng x ca cc ca s cng nh cc iu khin c thc hin mt cch d dng nhanh
chng bng cc thao tc vi Mouse khng cn phi khai bo, tnh ton vi nhiu cu lnh
phc tp.
Visual Basic l mt ngn ng theo kiu hng i tng. N khc vi kiu lp trnh
c l kiu TOP DOWN.

Lp trnh Top Down: chng trnh c b tr v thc hin t trn xung. Vi


kiu lp trnh ny vic b tr s tr nn rt kh khn cho cc chng trnh ln.

Lp trnh hng i tng OOP (opject oriented programming): Cc thnh


phn c phn thnh cc i tng v vit cch ng x ring cho mi i
tng sau kt hp chng li thnh mt chng trnh.

19

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

2.4.2 Giao din ca Visual Basic

Hnh 2 14: Giao din Visual Basic

20

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

3. THIT K V THC HIN PHN CNG


3.1 S khi

Hnh 3 1: S khi ca thit b


PIC16F877A l trung tm iu khin mi hot ng ca thit b. Cc tn hiu t nt
nhn, t khi RTC (DS1307), t giao tip RS232 gi v y t a ra cc tn hiu iu
khin cng nh hin th trn LED 7 on.

21

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

3.2 Khi iu khin v lu tr

Hnh 3 2: Khi vi iu khin v lu tr

3.3 Khi thi gian thc RTC


DS1307 l chip ng h thi gian thc (RTC : Real-time clock), khi nim thi gian
thc y c dng vi ngha thi gian tuyt i m con ngi ang s dng, tnh bng
giy, pht, giDS1307 l mt sn phm ca Dallas Semiconductor (mt cng ty thuc
Maxim Integrated Products). Chip ny c 7 thanh ghi 8-bit cha thi gian l: giy, pht, gi,
th (trong tun), ngy, thng, nm. Ngoi ra DS1307 cn c 1 thanh ghi iu khin ng ra
ph v 56 thanh ghi trng c th dng nh RAM. DS1307 c c v ghi thng qua giao
din ni tip I2C (TWI ca AVR) nn cu to bn ngoi rt n gin. DS1307 xut hin 2
gi SOIC v DIP c 8 chn nh trong hnh.

22

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Hnh 3 3: S chn IC DS1307


Cc chn ca DS1307 c m t nh sau:

X1 v X2: l 2 ng kt ni vi 1 thch anh 32.768KHz lm ngun to dao ng


cho chip.

VBAT: cc dng ca mt ngun pin 3V nui chip.

GND: chn mass chung cho c pin 3V v Vcc.

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).

SQW/OUT: mt ng ph to xung vung (Square Wave / Output Driver), tn s


ca xung c to c th c lp trnh. Nh vy chn ny hu nh khng lin
quan n chc nng ca DS1307 l ng h thi gian thc, chng ta s b trng
chn ny khi ni mch.

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.

C th kt ni DS1307 bng mt mch in n gin nh trong hnh sau:

Hnh 3 4: S kt ni DS1307

23

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Cu to bn trong DS1307 bao gm mt s thnh phn nh mch ngun, mch dao


ng, mch iu khin logic, mch giao in I2C, con tr a ch v cc thanh ghi (hay
RAM). Do a s cc thnh phn bn trong DS1307 l thnh phn cng nn chng ta khng
c qu nhiu vic khi s dng DS1307. S dng DS1307 ch yu l ghi v c cc thanh ghi
ca chip ny. V th cn hiu r 2 vn c bn l cu trc cc thanh ghi v cch truy xut
cc thanh ghi ny thng qua giao din I2C.
Nh ti trnh by, b nh DS1307 c tt c 64 thanh ghi 8-bit c nh a ch t
0 n 63 (t 0x00 n 0x3F theo h hexadecimal). Tuy nhin, thc cht ch c 8 thanh ghi
u l dng cho chc nng ng h (ti s gi l RTC) cn li 56 thanh ghi b trng c th
c dng cha bin tm nh RAM nu mun. By thanh ghi u tin cha thng tin v thi
gian ca ng h bao gm: giy (SECONDS), pht (MINUETS), gi (HOURS), th (DAY),
ngy (DATE), thng (MONTH) v nm (YEAR). Vic ghi gi tr vo 7 thanh ghi ny tng
ng vi vic ci t thi gian khi ng cho RTC. Vic c gi t 7 thanh ghi l c thi
gian thc m chip to ra. V d, lc khi ng chng trnh, chng ta ghi vo thanh ghi
giy gi tr 42, sau 12s chng ta c thanh ghi ny, chng ta thu c gi tr 54. Thanh
ghi th 8 (CONTROL) l thanh ghi iu khin xung ng ra SQW/OUT (chn 6). Tuy nhin,
do chng ta khng dng chn SQW/OUT nn c th b qua thanh ghi th 8. T chc b nh
ca DS1307 c trnh by trong hnh sau:

Hnh 3 5: Cc thanh ghi ca DS1307


V 7 thanh ghi u tin l quan trng nht trong hot ng ca DS1307, chng ta s
kho st cc thanh ghi ny mt cch chi tit. Trc ht hy quan st t chc theo tng bit ca
cc thanh ghi ny

24

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Hnh 3 6: T chc thanh ghi theo tng bit


iu u tin cn ch l gi tr thi gian lu trong cc thanh ghi theo dng BCD.
BCD l vit tt ca cm t Binary-Coded Decimal, tm dch l cc s thp phn theo m nh
phn. V d bn mun ci t cho thanh ghi MINUTES gi tr 42. Nu quy i 42 sang m
thp lc phn th chng ta thu c 42=0x2A. Theo cch hiu thng thng chng ta ch cn
gn MINUTES=42 hoc MINUTES=0x2A, tuy nhin v cc thanh ghi ny cha gi tr BCD
nn mi chuyn s khc.

Hnh 3 7: Gi tr lu trong cc thanh ghi l BCD


Vi s 42, trc ht n c tch thnh 2 ch s (digit) 4 v 2. Mi ch s sau
c i sang m nh phn 4-bit. Ch s 4 c i sang m nh phn 4-bit l 0100 trong khi
2 c i thnh 0010. Ghp m nh phn ca 2 ch s li chng ta thu c mt s 8 bit,
l s BCD. Vi trng hp ny, s BCD thu c l 01000010 (nh phn) = 66. Nh vy,
t s pht 42 cho DS1307 chng ta cn ghi vo thanh ghi MINUTES gi tr 66 (m BCD ca
42). Tt c cc phn mm lp trnh hay thanh ghi ca chip iu khin u s dng m nh
25

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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

GVHD: Thy Nguyn Ngc Quyn

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.

Hnh 3 8 : Address Register

3.4 Khi hin th


LED 7 on l mt cng c thng dng c dng hin th cc thng s di dng
cc s t 0 n 9.Mc d cng c LCD gip ta th hin cc thng s mt cch linh ng hn
27

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

nhng LED 7 on vn c s dng nhiu trong cng nghip do cc u th ca n nh: t


chu nh hng ca nhit , d to s ch v gc nhn rng.
LED 7 on bao gm 7 on LED c nh du l cc k t a, b, c, d, e, f, g v mt
du chm thp phn k hiu l dp.Ta c th xem LED 7 on l mt t hp gm 8 LED.8
LEDny c mt u (Anode hoc Cathode) c ni chung v c b tr theo mtqui tc
nht nh dng hin th cc ch s thp phn.
C hai loi LED 7 on, l loi Anode chung (cc Anode ca cc LED c ni
chung vi nhau) v loi Cathode chung (cc Cathode ca cc LED c ni chung vi nhau).
Ty theo tng loi LED m ta c cc phng php iu khin cc LED trong t hp sng
tt mt cch thch hp.i vi loi Anode chung, mt LED s c bt sang nu mc logic
a vo chn iu khin on LED l mc logic 0.i vi loi Cathode chung, mt LED
s c bt sang nu mc logic a vo chn iu khin on LED o l mc logic 1.

Hnh 3 9: S chn LED 7 on

Hnh 3 10: Khi hin th

28

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

3.5 Khi giao tip RS232


Ngy nay cc thit b o lng, iu khin ... u phi giao tip vi my tnh quan
st thng s v ch hot ng ca thit b nh th no? Chun giao tip c coi l n
gin v d dng l cng RS232. Hu nh cc thit b u c giao tip vi my tnh
thng qua chun ny.

Hnh 3 11: Linh kin ghp ni


Hu ht cc my tnh c nhn hin nay u c trang b t nht l 1 cng Com hay
cng ni tip RS232. S lng cng Com c th ln ti 4 ty tng loi main my tnh. Khi
cc cng Com c nh du l Com 1, Com 2, Com 3...Trn c 2 loi u ni c s
dng cho cng ni tip RS232 loi 9 chn (DB9) hoc 25 chn (DB25). Tuy hai loi u ni
ny c cng song song nhng hai loi u ni ny c phn bit bi cng c (DB9) v
cng ci (DB25)
Ta xt s chn cng Com 9 chn:

Hnh 3 12: S chn cng com 9 chn


29

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Chc nng ca cc chn nh sau:

Chn 1 : Data Carrier Detect (DCD) : Pht tn hiu mang d liu

Chn 2: Receive Data (RxD) : Nhn d liu

Chn 3 : Transmit Data (TxD) : Truyn d liu

Chn 4 : Data Termial Ready (DTR) : u cui d liu sn sng c kch


hot bi b phn khi mun truyn d liu

Chn 5 : Singal Ground ( SG) : Mass ca tn hiu

Chn 6 : Data Set Ready (DSR) : D liu sn sng, c kch hot bi b


truyn khi n sn sng nhn d liu

Chn 7 : Request to Send : yu cu gi,b truyn t ng ny ln mc hot


ng khi sn sng truyn d liu

Chn 8 : Clear To Send (CTS) : Xa gi ,b nhn t ng ny ln mc


kch hot ng thng bo cho b truyn l n sn sng nhn tn hiu

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 :

Hnh 3 13: ghp ni cng com v IC MAX232


30

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

3.6 Layout Orcad

Hnh 3 14: Layout

31

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

4. THIT K V THC HIN PHN MM


4.1 Lp trnh cho PIC16F877A
4.1.1 S gii thut

S gii thut vng Main

Hnh 4 1: S gii thut chng trnh chnh

32

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

S gii thut nhp ch s in k - nc

Hnh 4 2: S gii thut nhp ch s in k - nc

33

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

4.1.2 Code chng trnh


#include<16f877a.h>

#bit chuong= porte.0

#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)

// khai bao che do

doc;
int8
chg,dvg,chp,dvp,chs,dvs,chn,dvn,cht,dvt,c
hy,dvy,i;

giao tiep I2C


#use

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;

#bit set = porta.0


#bit up = porta.1
#bit down = porta.2

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

#bit view = porta.5

Tiendien,Tiennuoc,dien,nuoc,tong,a,d;

#bit led4 = portc.2

// chuong trinh con chuyen gia tri de ghi

#bit led1 = portc.5

vao DS1307

#bit led12 = portc.0

void chuyen(int8 gtri)

#bit led11 = portc.1

ch=gtri/10;

#bit led5 = portd.0

dv=gtri%10;

#bit led6 = portd.1

ch=ch<<4;

#bit led3 = portd.2

ch=ch|dv;

#bit led2 = portd.3

tam=ch;

#bit led10 = portd.4

#bit led9= portd.5


#bit led8= portd.6
#bit led7= portd.7
34

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

// chuong trinh con chuyen so hex sang

chy=ch;

chuc va don vi de hien thi

dvy=dv;

void chuyendoi1(int8 tam1)

{ tam=tam1;

// chuong trinh con dung de hien thi len led

dv=tam%10;

7 doan

ch=tam/10;

void hienthi()

dv=dig[dv];

{ // -- hien thi gio --

dv=dv<<1;

portb=chg;

ch=dig[ch];

led1=0;

ch=ch<<1;

delay();

led1=1;

// chuong trinh con chuyen doi tat ca de


hien thi len led 7 doan

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

GVHD: Thy Nguyn Ngc Quyn

portb=chs;

delay();

led5=0;

led10=1;

delay();

delay_us(20);

led5=1;

// -- hien thi nam --

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;

// -- hien thi ngay --

led12=0;

portb=chn;

delay();

led7=0;

led12=1;

delay();

delay_us(20);

led7=1;

delay_us(20);

// chuong trinh con doc gia tri tu realtime

portb=dvn;

tuong ung voi vung dia chi

led8=0;

void read_RTC(int add)

delay();

{ i2c_start();
giao tiep I2C

led8=1;
delay_us(20);
// -- hien thi thang -portb=cht;
led9=0;

i2c_write(0xd0);
vung dia chi

// bat dau che do


// bat dau ghi

i2c_write(add);
doc gia tri

// ghi dia chi can

i2c_start();
giao tiep I2C

// bat dau che do

delay();
led9=1;
delay_us(20);
portb=dvt;
led10=0;

i2c_write(0xd1);
du lieu

// bat dau nhan

doc=i2c_read(0);
tu che do giao tiep I2C

// nhan du lieu

i2c_stop();
tiep I2C

// dung che do giao

36

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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);

// chuong trinh con dung de doc thoi gian


tu DS1307

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);

// chuong trinh con khoi tao realtime tao


xung 1s

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);

// chuong trinh con ghi gia tri vao Realtime

i2c_write(tam);

void ghi_RTC()

// chuong trinh con ngat ngoai 1s tu


DS1307

i2c_start();
i2c_write(0xd0);
i2c_write(0x00);
chuyen(sec);

#INT_EXT
void ngat_ngoai()
{ read_RTC(0x00);
37

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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;

// chuong trinh con ngat Timer 1


#INT_TIMER1

set_timer1(3035);

// ngat 100 ms

void ngat_timer1()

{ dem++;

// chuong trinh con dung de chinh thoi gian

{ if(dem<5)

disable_interrupts(int_ext);

{ switch(ngat)

enable_interrupts(INT_TIMER1);

{case 1: chg=0xff; dvg=0xff; break;

set_timer1(3035);

case 2: chp=0xff; dvp=0xff; break;

dem=0;

case 3: chn=0xff; dvn=0xff; break;

ngat=1;

case 4: cht=0xff; dvt=0xff; break;

enable_interrupts(global);

case 5: chy=0xff; dvy=0xff; break;

for(i=0;i<80;i++) hienthi();

38

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

lap3:

// ---- chuong trinh chinh ngay ---------

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(hour==0) hour=23; else hour--;

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)

// ---- chuong trinh chinh phut --------

day=1;

hienthi();

goto lap52;

// ---- chuong trinh chinh thang --------

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++;

{ mont++; if(mont>=13) mont=1;}

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;

// ---- chuong trinh chinh nam ---------ngat=5;

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

GVHD: Thy Nguyn Ngc Quyn

if(down==0)

switch(tcai)

{ if(year==00)

year=99;

for(i=0;i<40;i++)
if(ok==1)

else year--;}

{ case 1: dvs=dig[tam2]<<1; break;

hienthi();

case 2: chs=dig[tam2]<<1; break;

goto lap74;

case 3: dvp=dig[tam2]<<1; break;

// ------ luu vao trong DS1307 ------------

case 4: chp=dig[tam2]<<1; break;

portb=0xff;

case 5: dvg=dig[tam2]<<1; break;

disable_interrupts(INT_TIMER1);

case 6: dvy=dig[tam2]<<1; break;

ghi_RTC();

case 7: chy=dig[tam2]<<1; break;

delay_ms(500);

case 8: dvt=dig[tam2]<<1; break;

chuyendoi();

case 9: cht=dig[tam2]<<1; break;

for(i=0;i<40;i++)

hienthi();

case 10: dvn=dig[tam2]<<1; break;

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

{ case 2: q1=tam2; dvs=dig[q1]<<1;


break;
case 3: q2=tam2;
break;

chs=dig[q2]<<1;

case 4: q3=tam2; dvp=dig[q3]<<1;


break;
case 5: q4=tam2; chp=dig[q4]<<1;
break;
case 6: q5=tam2; dvg=dig[q5]<<1;
break;
case 7: q1=tam2; dvy=dig[q1]<<1;
break;

}
case 8: q2=tam2; chy=dig[q2]<<1;
break;
40

Lun vn tt nghip
case 9: q3=tam2;
break;

GVHD: Thy Nguyn Ngc Quyn


dvt=dig[q3]<<1;

dvy=tong%10;
dvy=dig[dvy]<<1;

case 10: q4=tam2; cht=dig[q4]<<1;


break;

tong=tong/10;
chy=tong%10;

case 11: q5=tam2; dvn=dig[q5]<<1;


break;

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;

// chuong trinh con dung de dat bao thuc,


hien thi gia tri dien,nuoc

tong=tong/10;

void caidat()

chp=tong%10;

{ disable_interrupts(int_ext);

chp=dig[chp]<<1;

// cai dat thoi gian bao thuc

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

GVHD: Thy Nguyn Ngc Quyn

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

GVHD: Thy Nguyn Ngc Quyn

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();

// cai dat ngay bao thuc

if(ok==1)

chn=0xff;

goto lap13;

dvn=0xff;

// nhap gio hien thi

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

GVHD: Thy Nguyn Ngc Quyn

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();

// cai dat gio hien thi

if(ok==1)

chg=0xff;

goto lap14;

dvg=0xff;

// cai dat phut hien thi

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

GVHD: Thy Nguyn Ngc Quyn

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();

// cai dat ngay hien thi

if(ok==1)

chn=0xff;

goto lap16;

dvn=0xff;

// cai dat gio tat hien thi

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

GVHD: Thy Nguyn Ngc Quyn

chg=0xff;

if(ok==1)

dvg=0xff;

goto lap17;

for(i=0;i<20;i++)

// cai dat phut tat hien thi

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

GVHD: Thy Nguyn Ngc Quyn

for(i=0;i<15;i++)

dvn=dv;

hienthi();

if(ok==1)

for(i=0;i<15;i++)

goto lap18;

hienthi();

// cai dat ngay tat hien thi

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++;

// kiem tra chuong

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

GVHD: Thy Nguyn Ngc Quyn

dvt=tong%10;

dvt=dig[dvt]<<1;

else chuong=0;

tong=tong/10;

cht=tong%10;

// chuyen hien thi gia tri dien va nuoc

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

GVHD: Thy Nguyn Ngc Quyn

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

GVHD: Thy Nguyn Ngc Quyn

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)

//nhap chi so dien ke

{ m=read_eeprom(22);

portb=0xff;
50

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

delay_ms(100);

dvp=0xff;

chuyendoid();

tam2=0;

chuyendoin();

for(i=0;i<20;i++)

q=dvs;

hienthi();

dvs=0xff ;

dvp=q;

// ---- dien 1 -------------------

for(i=0;i<20;i++)

tam2=0;

hienthi();

tcai=1;

ctcai();

ltcai=1;

//---- dien 4 --------------------

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();

//---- dien 2 --------------------

chp=q;

ltcai=tcai;

for(i=0;i<20;i++)

q=chs;

hienthi();

chs=0xff;

ctcai();

tam2=0;

//---- dien 5 --------------------

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();

//---- dien 3 --------------------

dvg=q;

ltcai=tcai;

for(i=0;i<20;i++)

q=dvp;

hienthi();
51

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

ctcai();

chy=q;

// tong hop gia tri tien dien

for(i=0;i<20;i++)

dien=q5;

hienthi();

dien=dien*10+q4;

ctcai();

dien=dien*10+q3;

//---- nuoc 3 --------------------

dien=dien*10+q2;

ltcai=tcai;

dien=dien*10+q1;

q=dvt;

// nhap chi so nuoc

dvt=0xff;

portb=0xff;

tam2=0;

delay_ms(100);

for(i=0;i<20;i++)

chuyendoin();

hienthi();

//---- nuoc 1 --------------------

dvt=q;

ltcai=tcai;

for(i=0;i<20;i++)

q=dvy;

hienthi();

dvy=0xff;

ctcai();

tam2=0;

//---- nuoc 4 --------------------

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();

//---- nuoc 2 --------------------

cht=q;

ltcai=tcai;

for(i=0;i<20;i++)

q=chy;

hienthi();

chy=0xff;

ctcai();

tam2=0;

//---- nuoc 5 --------------------

for(i=0;i<20;i++)

ltcai=tcai;

hienthi();

q=dvn;
52

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

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);

// cap nhat gia tri nuoc

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);

bat dau chuong trinh chinh

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;

GVHD: Thy Nguyn Ngc Quyn


NhapDienNuoc();

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

GVHD: Thy Nguyn Ngc Quyn

4.2 Giao din giao tip trn my tnh


4.2.1 Giao din giao tip

Hnh 4 3: Giao din giao tip my tnh


4.2.2 Code Visual Basic
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputLen = 3
MSComm1.InputMode = 0
MSComm1.PortOpen = True
End Sub
Private Sub cm8_Click()

55

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

If MSComm1.PortOpen = True Then


MSComm1.PortOpen = False
End If
End
End Sub
Private Sub cmd1_Click()
MSComm1.Output = "1"
End Sub
Private Sub cmd10_Click()
MSComm1.Output = "b"
End Sub
Private Sub cmd11_Click()
MSComm1.Output = "c"
End Sub
Private Sub cmd12_Click()
MSComm1.Output = "d"
End Sub
Private Sub cmd13_Click()
MSComm1.Output = "e"
End Sub
Private Sub cmd14_Click()
MSComm1.Output = "f"
End Sub
Private Sub cmd2_Click()
MSComm1.Output = "2"
End Sub
Private Sub cmd3_Click()
MSComm1.Output = "3"
End Sub
56

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Private Sub cmd4_Click()


MSComm1.Output = "4"
End Sub
Private Sub cmd5_Click()
MSComm1.Output = "5"
End Sub
Private Sub cmd6_Click()
MSComm1.Output = "6"
End Sub
Private Sub cmd9_Click()
MSComm1.Output = "a"
End Sub
Private Sub MSComm1_OnComm()
Dim x, y, z As String
Dim a, b, c As Integer
x=y=z=""
If MSComm1.CommEvent = comEvReceive Then
x = MSComm1.Input
If Left(x, 1) = "a" Then
If Len(x) = 3 Then
y = Left(Right(x, 2), 1)
z = Right(Right(x, 2), 1)
c = Asc(y) + Asc(z) * 256
TxtNum1.Text = c
End If
End If
x=y=z=""
End If
End Sub
57

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

5. KT QU THC HIN

Mch sau khi thi cng

Hnh 5 1: Mch hon chnh

58

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

Mch s dng ngun l Adapter 5V.


Sau khi cp ngun kh n nh. Nhp ch s, lu tr cng nh hin th ng vi yu
cu ca ti.

Hnh 5 2 : Hin th ch s

59

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

6. KT LUN V HNG PHT TRIN


6.1 Kt lun
ti ny theo ti c th ng dng trong thc t, gip linh ng hn trong sinh hot
hng ngy.
Trong qu trnh thc hin ti tm hiu cc thng tin, cc mng kin thc lin quan
n ti. Qua tch ly cho mnh c mt s k nng v lng kin thc c gi tr:

K nng t nghin cu, c ti liu, tm kim thng tin.

Rn luyn thm ting Anh chuyn ngnh.

Kin thc v k nng lp trnh cho Pic

Kin thc v cc chun giao tip I2C, RS232

K nng lp trnh v thit k giao din Visual Basic


Thng qua kt qu thc hin, ti rt ra c mt s u - nhc im sau:

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.

6.2 Hng pht trin


Trong thi gian ti ti c th pht trin thm cc tnh nng nh nhp ch s bng
remote. To thm 1 mch tng t nhng ch hin th v mch ny s t trc nh, cn 1
mch t trong nh. Hai mch kt ni vi nhau bng cng ngh truyn tn hiu qua ng dy
dn in PLC ( Power-Line Communication). Nhp ch s ln mch trong nh v iu khin
hin th mch bn ngoi.

60

Lun vn tt nghip

GVHD: Thy Nguyn Ngc Quyn

7. TI LIU THAM KHO


[1] UMB tech, Datasheet PIC16F877A , http://www.datasheets.com
[2] Lp trnh C cho PIC16F877A .[Online] http://tailieuhoctap.vn/chi-tiet-sach/205-nganhkhoa-hoc-ky-thuat/tu-dong-hoa/775763-lap-trinh-c-bang-ccs-cho-pic16f877a
[3] H Thanh Tm, Lp trnh giao tip my tnh bng Visual Basic. [ Online]
http://www.dieukhientudong.net
[4] Din n. [ Online] http://www.dientuvietnam.net, http://www.picvietnam.com

61

You might also like