Professional Documents
Culture Documents
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
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.
Cng vic
Phn cng
C nhm
Cng + Vinh
Trng A
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.
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.
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
Bank
00
01
10
11
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
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
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
11
Chc nng
Vss
Vdd
Vee
RS
12
R/W
7-14
DB0-
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.
#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.
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.
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 );
*/
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.
273.
282.
290.
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_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
25
Website :
Google.com
Picvietnam.com
Dientuvietnam.net
Ebook :
26