You are on page 1of 26

TRNG I HC BCH KHOA H NI

VIN IN T VIN THNG

BI TP LN VI X L
ti : Thit k mch ng h thi gian thc s dng DS1307 v
PIC16F877A v hin th ln LCD

Gio vin hng dn : V Song Tng


Sinh vin thc hin

: Nguyn Vn Trng 20082842 (A)

Nguyn Vn Trng 20083543 (B)


c Cng 20083278
Nguyn Ngc Vinh 20083169

Lp

:in t 3-K53

Mc Lc
1.Li ni u :1
2.Gii thiu v nhm v timeline cng vic :...................................................................2
3. M t h thng : .................................................................................................5
4. S m phng trn PROTEUS......................................................................4
5. Tng quan v cc khi : ....................................................................................5
a. Tng quan v PIC16F877A : ............................................................................6
b. Khi thi gian thc DS1307:.............................................................................9
c. Khi mn hnh LCD1602................................................................................11
S chn ca LCD 1602a .....................................................................................12
d. Code ca chng trnh m phng : ................................................................14
6. Kt qu m phng : .........................................................................................22
7. Mc hon thnh cng vic :.......................................................................24
8. Cc phn mm s dng trong qu trnh m phng :..............................23
9. Ti liu tham kho : .........................................................................................25

LI NI U
Ngy nay, cc h thng nhng tr nn ph bin v ng vai tr quan trng
trong i sng con ngi. V d quanh ta c rt nhiu sn phm nhng nh l
vi sng, ni cm in, iu ha, in thoi di ng, t, my bay, tu thy, cc
u o, c cu chp hnh thng minh, robot v.v ta c th thy hin nay h
thng nhng c mt mi lc mi ni trong cuc sng ca chng ta.
Qua mn hc K thut Vi x l, chng em hiu thm v cc h thng nhng
trong thc t, v c im, tnh u vit cng nh tnh ng dng ca chng i
vi con ngi. Vi mong mun lm r cc kin thc hc v gii thiu cc
ng dng c bn ca h thng nhng, nhm chng em a ra m hnh thit k
ng h thi gian thc mt sn phm rt quen thuc v cn thit trong i
sng.
Do thi gian thc hin v kin thc cn hn ch nn cn nhiu sai st trong qu
trnh thc hin ti, rt mong c s b sung ng gp ca cc thy c v
cc bn.
Chng em xin chn thnh cm n cc thy c trong Vin in t Vin thng,
cm n thy V Song Tng tn tnh hng dn v gip chng em thc
hon thnh ti ny.

2.Gii thiu v nhm v timeline cng vic:


Nhm chng em gm 4 thnh vin nh sau :

1. Nguyn Vn Trng SHSV:20082842 (A) ( trng nhm)


2. Nguyn Vn Trng 20083543 (B)
3. c Cng 20083278
4. Nguyn Ngc Vinh 20083169

3.Timeline cng vic ca nhm:

Cng vic

Phn cng

Nghin cu ti,tm hiu ti liu

C nhm

V mch bng Orcad, M phng bng Proteus

Cng + Vinh

Thit k mch bng tay

Trng A

Giao tip vi my tnh

Trng B

Vit bo co

Cng

4.M t h thng :
ti nhm thit k 1 b ng h thi gian thc m bo t cp nht thi gian
ca h thng v hin th gi tr ln LCD . Vi thit k s dng c ngun ngoi v PIN
VBat lm cho h thng hot ng c khi mt in th h thng thi gian thc vn hot
ng.
Ngoi ra ti cn c tng tc vi phm bm nhm Reset h thng.

5.S m phng trn PROTEUS

R3

R4

R5

4.7k

4.7k

1k

U2
6
5

7
3

LED-YELLOW

D1

SCL
SDA

X1

X1
CRYSTAL

SOUT
VBAT X2

DS1307
LM016L

R1

R2
4.7k

33
34
35
36
37
38
39
40

PIC16F887

19
20
21
22
27
28
29
30
8
9
10

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

15
16
17
18
23
24
25
26

RS
RW
E

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7

4
5
6

2
3
4
5
6
7
14
13

RE3/MCLR/VPP

1
2
3

U1
1

VSS
VDD
VEE

4.7k

LCD1

1.

Tng quan v cc khi :


a. Tng quan v PIC16F877A :
S chn ca Pic16f877a :

Pic16f877a c 5 cng vo ra: PortA(RA0-RA5), PortB(RB0-RB7), PortC(RC0RC7), PortD(RD0-RD7), PortE(RE0-RE2). C 3 b nh thi: Timer0, Timer1,
Timer2. 8K b nh chng trnh flash.
T chc b nh :
6

C 3 khi b nh trong pic16F877A: b nh chng trnh ,b nh d liu v


khi b nh EEPROM. B nh chng trnh v b nh d liu c ng bus ring v
vy c th truy cp vo tng b nh mt cch ring r.
B m chng trnh c 13 bit v vy khng gian a ch s l 8k word x 8bit.
Truy cp ngoi vng khng gian trn s gy li.
B nh d liu c chia thnh 4 bank (Bank0Bank3) ,trong cc bank cha cc
thanh ghi thng v cc thanh ghi chc nng c bit. Bank c chn ph thuc vo
bit RP1 v RP0 (bit th 6 v bit th 5) ca thanh ghi trng thi status.
RP1:RP0

Bank

00

01

10

11

Cc thanh ghi chc nng c bit c CPU v b ngoi vi s dng iu khin cc


thit b. Cc thanh ghi ny hot ng nh mt thanh RAM tnh.
Thanh ghi trng thi cha trng thi s hc ca ALU,trng thi Reset v cc bit
chn bank b nh d liu.
Cc cng vo ra ca pic:
+ Port A: c 6 bit (tng ng vi 6 chn RA0RA5) cc chn ca cng A c tch hp
mt s chc nng ngoi vi, nu mt thit b ngoi vi c enable th cng ny s khng
hot ng nh mt cng vo ra .
7

Bnh thng Port A s l mt cng vo ra 2 chiu. Thanh ghi xc inh chiu tng ng
ca cc chn port A l thanh ghi TrisA. Cc bit thanh ghi TrisA bng 1 s xc nh
cc chn port A l u vo ngc li s l u ra.
+ Port B: rng 8 bit(tng ng vi 8 chn RB0RB7), l mt cng vo ra 2 chiu.
Thanh ghi qui inh chiu ca cng B l thanh ghi Tris B. Thit lp cc bit thanh ghi
TrisB bng 1 s lm cho cng B l cng vo ngc li s l cng ra.
+ Port C: rng 8 bit(tng ng vi cc chn RC0RC7), bnh thng n l mt cng
vo ra 2 chiu, thanh ghi qui nh chiu ca cng l thanh ghi TrisC. Cc chn
RC3,RC4 dng kt ni truyn nhn thng tin vi cc thit b ngoi vi.
+ Port D: rng 8 bit (RD0RD7),n c th l cng vo hoc cng ra. Port D c th
c cu hnh nh mt cng vi x l rng 8 bit (cng slave song song) bng cch
thit lp bit iu khin PSPSTATUS (TrisE.4). ch ny th u vo la tn hiu
TTL.
+ Port E: rng 3 bit(RE0RE2), c cu hnh l u ra hoc u vo. Port E c th l
u vo iu khin I/O khi bit PSPSTATUS (TrisE.4) c thit lp.
T hnh v ta c th thy, pic16F877A c 2 chn Vcc v 2 chn GND, pic c
th hot ng c ta phi cp ngun cho tt c cc chn ny.
Ngoi cp ngun cung cp ta phi cp ngun xung dao ng cho vi iu khin hot
ng. ta s dng mt thch anh 20MHz cp xung dao ng. ngun dao ng c cp
thng qua 2 chn 13 v 14 ca pic.
Mch reset cho vi iu khin l mt cng tc h thng qua chn MCLR ca vi iu
khin. mch s thc hin reset khi chn ny t mc logic 1 xung logic 0. khi cng tc
h th chn ny lun mang mc logic 1 do lun c ni vi ngun thng qua mt
in tr hn dng R1, in tr ny phi c gi tr nh hn hoc bng 10k m bo
in p cung cp cho vi iu khin.
8

b. Khi thi gian thc DS1307:


DS1307 l chip thi gian thc hay RTC (Read time clock). y l mt IC tch
hp cho thi gian bi v tnh chnh xc v thi gian tuyt i cho thi gian : Th,
ngy,thng, nm, gi, pht, giy. Chip ny c 7 thanh ghi 8 bit mi thanh ghi ny
cha : Th , ngy, thng, nm, gi , pht, giy. Ngoi ra DS1307 cn cha 1 thanh
ghi iu khin ng ra ph v 56 thanh ghi trng cc thanh ghi ny c th dng nh l
RAM. DS1307 c c thng qua chun truyn thng I2C nn do c c v
ghi t DS1307 thng qua chun truyn thng ny. Do n c giao tip chun I2C
nn cu to bn ngoi n rt n gin.

R3

R4

R5

4.7k

4.7k

1k

U2
6
5

7
3

SCL
SDA

X1

X1
CRYSTAL

SOUT
VBAT

X2

D1

DS1307
LED-YELLOW

- DS1307 l mt IC thi gian thc vi ngun cung cp nh, dng cp nht thi
gian v ngy thng vi 56 bytes SRAM. a ch v d liu c truyn ni tip qua 2
ng bus 2 chiu. N cung cp thng tin v gi, pht, giy, th, ngy, thng,
9

nm.Ngy cui thng s t ng c iu chnh vi cc thng nh hn 31 ngy, bao


gm c vic t ng nhy nm. ng h c th hot ng dng 24h hoc 12h vi
ch th AM/PM. DS1307 c mt mch cm bin in p dng d cc in p li v
t ng ng ngt vi ngun pin cung cp.
- DS 1307 hot ng vi vai tr slave trn ng bus ni tip. Vic truy cp c thi
hnh vi ch th START v mt m thit b nht nh c cung cp bi a ch cc
thanh ghi. Tip theo cc thanh ghi s c truy cp lin tc n khi ch th STOP
c thc thi.
M t hot ng ca cc chn:
+ X1 v X2 l u vo dao ng cho DS1307. Cn dao ng thch anh 32.768Khz.
Vbat l ngun nui cho chip. Ngun ny t ( 2V- 3.5V) ta ly pin c ngun 3V.
y l ngun cho chip hot ng lin tc khi khng c ngun Vcc m DS1307 vn
hot ng theo thi gian.
+ Vcc l ngun cho giao tip I2C. in p cung cp l 5V chun v c dng
chung vi vi iu khin. Nu Vcc khng c m Vbat c th DS1307 vn hot ng
bnh thng nhng m khng ghi v c d liu c.
+) GND l ngun MASS chung cho Vcc v VBAT
+ SCL(serial clock input): SCL c s dng ng b s chuyn d liu
trn ng dy ni tip.
+ SDA(serial data input/out): l chn vo ra cho 2 ng dy ni tip. Chn
SDA thit k theo kiu cc mng h , i hi phi c mt in tr ko trong khi
hot ng.
+ SQW/OUT(square wave/output driver)- khi c kch hot th bit SQWE
c thit lp 1, chn SQW/OUT pht i 1 trong 4 tn s
(1Hz,4kHz,8kHz,32kHz). Chn ny cng c thit k theo kiu cc mng h
10

v vy n cng cn c mt in tr ko trong. Chn ny s hot ng khi c Vcc


v Vbat c cp.
c. Khi mn hnh LCD1602.
LCD1
LM016L

R1

R2
4.7k

2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7

15
16
17
18
23
24
25
26

RS
RW
E

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RE3/MCLR/VPP

4
5
6

U1
1

1
2
3

VSS
VDD
VEE

4.7k

19
20
21
22
27
28
29
30
8
9
10

PIC16F887

hin th cc thng s trong qu trnh giao tip gia ngi iu khin vi h


thng nh xem ngy gi v xem cc thng s khi thc hin iu khin h thng
(Active).S dng LCD text 16x2.

11

S chn ca LCD 1602a


Chc nng cc chn:
Chn s Tn

Chc nng

Chn ni t cho LCD, khi thit k mch ta ni chn ny vi

Vss

GND ca mch iu khin


2

Vdd

Chn cp ngun cho LCD, khi thit k mch ta ni chn ny vi


VCC=5V ca mch iu khin

Vee

Chn ny dng iu chnh tng phn ca LCD.

RS

Chn chn thanh ghi (Register select). Ni chn RS vi logic 0


(GND) hoc logic1 (VCC) chn thanh ghi.
+ Logic 0: Bus DB0-DB7 s ni vi thanh ghi lnh IR ca
LCD ( ch ghi -write) hoc ni vi b m a ch ca
LCD ( ch c - read)

12

+ Logic 1: Bus DB0-DB7 s ni vi thanh ghi d liu DR bn


trong LCD.
5

R/W

Chn chn ch c/ghi (Read/Write). Ni chn R/W vi logic


0 LCD hot ng ch ghi, hoc ni vi logic 1
LCD ch c.

Chn cho php (Enable). Sau khi cc tn hiu c t ln bus


DB0-DB7, cc lnh ch c chp nhn khi c 1 xung cho php
ca chn E.
+ ch ghi: D liu bus s c LCD chuyn vo(chp
nhn) thanh ghi bn trong n khi pht hin mt xung (high-tolow transition) ca tn hiu chn E.
+ ch c: D liu s c LCD xut ra DB0-DB7 khi pht
hin cnh ln (low-to-high transition) chn E v c LCD gi
bus n khi no chn E xung mc thp.

7-14

DB0-

Tm ng ca bus d liu dng trao i thng tin vi MPU.

DB7

C 2 ch s dng 8 ng bus ny :
+ Ch 8 bit : D liu c truyn trn c 8 ng, vi bit
MSB l bit DB7.
+ Ch 4 bit : D liu c truyn trn 4 ng t DB4 ti
DB7, bit MSB l DB7.

15

Lamp+

n LCD

16

Lamp-

n LCD

13

d.

2.
3.

Code ca chng trnh m phng :

#define W 0
#define F 1

4.

// register files
6. #byte INDF
7. #byte TMR0
8. #byte PCL
9. #byte STATUS
10. #byte FSR
11. #byte PORTA
12. #byte PORTB
13. #byte PORTC
14. #byte PORTD
15. #byte PORTE
5.

=0x00
=0x01
=0x02
=0x03
=0x04
=0x05
=0x06
=0x07
=0x08
=0x09

16.
17. #byte
18. #byte
19. #byte
20. #byte
21. #byte
22. #byte
23. #byte
24. #byte

EEDATA
EEADR
EEDATH
EEADRH
ADCON0
ADCON1
ADRESH
ADSESL

=0x10C
=0x10D
=0x10E
=0x10F
=0x1F
=0x9F
=0x9F
=0x9F

25.
26. #byte
27. #byte
28. #byte
29. #byte
30. #byte
31. #byte

PCLATH
INTCON
PIR1
PIR2
PIE1
PIE2

=0x0a
=0x0b
=0x0c
=0x0d
=0x8c
=0x8d

32.
33. #byte
34. #byte
35. #byte
36. #byte
37. #byte

OPTION_REG
TRISA
TRISB
TRISC
TRISD

=0x81
=0x85
=0x86
=0x87
=0x88
14

38. #byte

TRISE

=0x89

39.
40. #byte

EECON1
41. #byte EECON2

=0x18C
=0x18D

42.
43. //DINH
44. #bit
45. #bit
46. #bit
47. #bit
48. #bit
49. #bit

NGHIA BIT
ra5 =0x05.5
ra4 =0x05.4
ra3 =0x05.3
ra2 =0x05.2
ra1 =0x05.1
ra0 =0x05.0

50.
51. #bit
52. #bit
53. #bit
54. #bit
55. #bit
56. #bit
57. #bit
58. #bit

rb7
rb6
rb5
rb4
rb3
rb2
rb1
rb0

=0x06.7
=0x06.6
=0x06.5
=0x06.4
=0x06.3
=0x06.2
=0x06.1
=0x06.0

rC7
rC6
rC5
rC4
rC3
rC2
rC1
rC0

=0x07.7
=0x07.6
=0x07.5
=0x07.4
=0x07.3
=0x07.2
=0x07.1
=0x07.0

rD7
rD6
rD5
rD4
rD3
rD2
rD1
rD0

=0x08.7
=0x08.6
=0x08.5
=0x08.4
=0x08.3
=0x08.2
=0x08.1
=0x08.0

59.
60. #bit
61. #bit
62. #bit
63. #bit
64. #bit
65. #bit
66. #bit
67. #bit
68.
69. #bit
70. #bit
71. #bit
72. #bit
73. #bit
74. #bit
75. #bit
76. #bit

15

77.
78. #bit

rE2
79. #bit rE1
80. #bit rE0

=0x09.2
=0x09.1
=0x09.0

81.
82.
83. #bit
84. #bit
85. #bit
86. #bit
87. #bit
88. #bit

trisa5
trisa4
trisa3
trisa2
trisa1
trisa0

=0x85.5
=0x85.4
=0x85.3
=0x85.2
=0x85.1
=0x85.0

trisb7
trisb6
trisb5
trisb4
trisb3
trisb2
trisb1
trisb0

=0x86.7
=0x86.6
=0x86.5
=0x86.4
=0x86.3
=0x86.2
=0x86.1
=0x86.0

89.
90. #bit
91. #bit
92. #bit
93. #bit
94. #bit
95. #bit
96. #bit
97. #bit
98.
99. #bit
100.
101.
102.
103.
104.
105.
106.

trisc7
=0x87.7
#bit trisc6
=0x87.6
#bit trisc5
=0x87.5
#bit trisc4
=0x87.4
#bit trisc3
=0x87.3
#bit trisc2
=0x87.2
#bit trisc1
=0x87.1
#bit trisc0
=0x87.0

107.
108.
109.
110.
111.
112.
113.
114.
115.

#bit
#bit
#bit
#bit
#bit
#bit
#bit
#bit

trisd7
trisd6
trisd5
trisd4
trisd3
trisd2
trisd1
trisd0

=0x88.7
=0x88.6
=0x88.5
=0x88.4
=0x88.3
=0x88.2
=0x88.1
=0x88.0
16

116.
117.
118.
119.

#bit trise2
#bit trise1
#bit trise0

=0x89.2
=0x89.1
=0x89.0

120.
121.
122.
123.
124.
125.
126.
127.
128.
129.

// INTCON Bits for C


#bit gie = 0x0b.7
#bit peie = 0x0b.6
#bit tmr0ie = 0x0b.5
#bit int0ie = 0x0b.4
#bit rbie = 0x0b.3
#bit tmr0if
= 0x0b.2
#bit int0if
= 0x0b.1
#bit rbif
= 0x0b.0

130.
131.
132.
133.
134.
135.
136.
137.
138.
139.

// PIR1 for C
#bit pspif = 0x0c.7
#bit adif
= 0x0c.6
#bit rcif
= 0x0c.5
#bit txif
= 0x0c.4
#bit sspif
= 0x0c.3
#bit ccp1if
= 0x0c.2
#bit tmr2if
= 0x0c.1
#bit tmr1if
= 0x0c.0

140.
141.
142.
143.
144.
145.

//PIR2 for C
#bit cmif
= 0x0d.6
#bit eeif
= 0x0d.4
#bit bclif = 0x0d.3
#bit ccp2if
= 0x0d.0

146.
147.
148.
149.
150.
151.
152.
153.
154.

// PIE1 for C
#bit adie
= 0x8c.6
#bit rcie
= 0x8c.5
#bit txie
= 0x8c.4
#bit sspie
= 0x8c.3
#bit ccp1ie
= 0x8c.2
#bit tmr2ie
= 0x8c.1
#bit tmr1ie
= 0x8c.0
17

155.
156.
157.
158.
159.

//PIE2 for C
#bit osfie
= 0x8d.7
#bit cmie
= 0x8d.6
#bit eeie = 0x8d.4

160.
161.
162.
163.
164.
165.
166.
167.
168.
169.

// OPTION Bits
#bit not_rbpu =
#bit intedg
#bit t0cs
#bit t0se
#bit psa
#bit ps2
#bit ps1
#bit ps0

0x81.7
= 0x81.6
= 0x81.5
= 0x81.4
= 0x81.3
= 0x81.2
= 0x81.1
= 0x81.0

// EECON1 Bits
#bit eepgd
=
#bit free
=
#bit wrerr
=
#bit wren
=
#bit wr
=
#bit rd
=

0x18c.7
0x18C.4
0x18C.3
0x18C.2
0x18C.1
0x18C.0

170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.

//ADCON0
#bit CHS0
#bit CHS1
#bit CHS2

=0x1F.3
=0x1F.4
=0x1F.5

183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.

void write_DS1307(int8 address,int8 data)


{
short int status;
i2c_start();
i2c_write(0xd0);
i2c_write(address);
i2c_write(data);
i2c_stop();
i2c_start();
status=i2c_write(0xd0);
18

194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.

while(status==1)
{
i2c_start();
status=i2c_write(0xd0);
}
}
//==========================
// read data one byte from DS1307
//==========================
int8 read_DS1307(int8 address)
{
BYTE data;
i2c_start();
i2c_write(0xd0);
i2c_write(address);
i2c_start();
i2c_write(0xd1);
data=i2c_read(0);
i2c_stop();
return(data);
}
// ----------------void ds1307_int(void)
{
int temp;
temp=read_DS1307(0x00);
temp=temp&0x80;
if(temp==0x80)
write_DS1307(0x00,0x00);
temp=read_DS1307(0x07);
temp=temp&0x90;
if(temp!=0x90)
write_DS1307(0x07,0x90);
}

228.
229.

#include <stddef.h>

230.
231.
232.

#define LCD_RS
//#define LCD_RW

PIN_D2
PIN_A1
19

233.

#define LCD_EN

PIN_D3

#define
#define
#define
#define

LCD_D4
LCD_D5
LCD_D6
LCD_D7

PIN_D4
PIN_D5
PIN_D6
PIN_D7

// misc
#define
#define
#define

display definesLine_1
0x80
Line_2
0xC0
Clear_Scr
0x01

234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.

// prototype statements
#separate void LCD_Init ( void );// ham khoi tao

LCD
#separate void LCD_SetPosition ( unsigned int cX
);//Thiet lap vi tri con tro
248.
#separate void LCD_PutChar ( unsigned int cX );//
Ham viet1kitu/1chuoi len LCD
249.
#separate void LCD_PutCmd ( unsigned int cX) ;//
Ham gui lenh len LCD
250.
#separate void LCD_PulseEnable ( void );// Xung
kich hoat
251.
#separate void LCD_SetData ( unsigned int cX );//
Dat du lieu len chan Data
252.
// D/n Cong
253.
#use standard_io (C)
254.
#use standard_io (D)
247.

255.

//khoi tao
LCD**********************************************
257.
#separate void LCD_Init ( void )
258.
{
259.
LCD_SetData ( 0x00 );
260.
delay_ms(200);
/* wait enough time after
Vdd rise >> 15ms */
261.
output_low ( LCD_RS );// che do gui lenh
262.
LCD_SetData ( 0x03 );
/* init with specific
nibbles to start 4-bit mode */
256.

20

263.
264.
265.
266.

LCD_PulseEnable();
LCD_PulseEnable();
LCD_PulseEnable();
LCD_SetData ( 0x02 );

/* set 4-bit interface

*/
LCD_PulseEnable();
hereafter, MSN first */
268.
LCD_PutCmd ( 0x2C );
lines, 5x7 characters) */
269.
LCD_PutCmd ( 0x0C );
off, no blink */
270.
LCD_PutCmd ( 0x06 );
increment & scroll left */
271.
LCD_PutCmd ( 0x01 );
272.
}
267.

/* send dual nibbles


/* function set (all
/* display ON, cursor
/* entry mode set,
/* clear display */

273.

#separate void LCD_SetPosition ( unsigned int cX )


275.
{
276.
/* this subroutine works specifically for 4-bit
Port A */
277.
LCD_SetData ( swap ( cX ) | 0x08 );
278.
LCD_PulseEnable();
279.
LCD_SetData ( swap ( cX ) );
280.
LCD_PulseEnable();
281.
}
274.

282.

#separate void LCD_PutChar ( unsigned int cX )


284.
{
285.
/* this subroutine works specifically for 4-bit
Port A */
286.
output_high ( LCD_RS );
287.
LCD_PutCmd( cX );
288.
output_low ( LCD_RS );
289.
}
283.

290.

#separate void LCD_PutCmd ( unsigned int cX )


292.
{
293.
/* this subroutine works specifically for 4-bit
Port A */
291.

21

294.

LCD_SetData ( swap ( cX ) );

/* send high

LCD_PulseEnable();
LCD_SetData ( swap ( cX ) );

/* send low

nibble */
295.
296.

nibble */
297.
298.
299.
300.
301.
302.
303.
304.
305.

LCD_PulseEnable();
}
#separate void LCD_PulseEnable ( void )
{
output_high ( LCD_EN );
delay_us ( 3 );
// was 10
output_low ( LCD_EN );
delay_ms ( 3 );
// was 5
}

306.
307.
308.
309.
310.
311.
312.
313.

#separate void
{
output_bit
output_bit
output_bit
output_bit
}

LCD_SetData ( unsigned int cX )


(
(
(
(

LCD_D4,
LCD_D5,
LCD_D6,
LCD_D7,

6.Kt qu m phng :

22

cX
cX
cX
cX

&
&
&
&

0x01
0x02
0x04
0x08

);
);
);
);

R3

R4

R5

4.7k

4.7k

1k

U2
6
5

7
3

LED-YELLOW

D1

SCL
SDA

X1

X1
CRYSTAL

SOUT
VBAT X2

DS1307
LM016L

R1

R2
4.7k

33
34
35
36
37
38
39
40

19
20
21
22
27
28
29
30
8
9
10

PIC16F887

Mch in :

23

D0
D1
D2
D3
D4
D5
D6
D7

15
16
17
18
23
24
25
26

7
8
9
10
11
12
13
14

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7

RS
RW
E

RE3/MCLR/VPP

4
5
6

2
3
4
5
6
7
14
13

1
2
3

U1
1

VSS
VDD
VEE

4.7k

LCD1

7.Mc hon thnh cng vic :


Nhn chung d n hon thnh v mch m phng v chy n nh khu ca
bi tp ln.

8.Cc phn mm s dng trong qu trnh m phng :


MPlab Ver 8.4 , Proteus ver 7.7 , Visual Studio 2010, Orcad 10.5
24

25

9.Ti liu tham kho :

Website :

Google.com
Picvietnam.com
Dientuvietnam.net

Ebook :

Tutorial PIC 16F877A


Library Microchip
Datasheet Pic16f877a , DS1307 , LCD 1602.

26

You might also like