Người báo cáo: Nguyn Trung Chính Tài liu: TUT01.03
Ngày: 7/12/2005 Trang: 1/14
Tutorial 01.03
Gi đến: Đoàn Hip, Doãn Minh Đăng, picvietnam@googlegroups.com
Ni dung: BÀI 1: PIC16F877A T D TI KHÓ
MICROSOFT WORD
Tóm tt:
Tutorial post lên lung “PIC16F877A T D TI KHÓ” thuc chuyên mc “CƠ BN V VI
ĐIU KHIN VÀ PIC”. Bài đầu tiên bao gm ni dung sau:
ng dng đơn gin nht dành cho vi điu khin PIC16F877A, đó là xut d liu ra mt port
nào đó ca vi điu khin. Các bước tiến hành bao gm:
_ Bước 1: Xây dng mch test.
_ Bước 2: Xây dng chương trình.
_ Bước 3: Nhn xét và kết lun.
Mt s đặc đim v các port điu khin ca vi điu khin PIC16F877A.
Chương trình và sơ đồ nguyên lí mch test đi kèm.
1. Điu khin các port I/O
Đây là mt trong nhng ng dng đơn gin nht giúp ta làm quen vi vi điu khin.
Trong ng dng này ta s xut mt giá tr nào đó ra mt PORT ca vi điu khin, chng
hn như PORTB. Giá tr đưa ra PORTB s được kim tra bng cách gn các LED vào các
chân I/O ca PORT đó.
1.1. Xây dng mch test cho ng dng
Trước tiên ta cùng xây dng mch test cho ng dng này. Ngoi tr vi điu khin
PIC16F877A, các thành phn còn li trong mch đều rt thông dng và d dàng tìm thy
trên th trường, do đó hãy thi công mch test này để ta có th xem xét các hiu ng c th
ca vi điu khin mt cách trc quan và nghiêm túc, vì sau bài này, các bn s thy rng ta
không th ngi mt ch đọc sách hay tài liu mà có th lường trước được hết nhng hiu
ng mà vi điu khin to ra, thm chí là các hiu ng t ng dng đơn gin nht này.
Do đây là bài đầu tiên, cho nên các bước tiến hành s rt nghiêm túc và thn trng. Nào,
bt đầu!
Người báo cáo: Nguyn Trung Chính Tài liu: TUT01.03
Ngày: 7/12/2005 Trang: 2/14
Ta có vi điu khin PIC16F877A vi sơ đồ chân như sau:
PIC16F877A
8
9
10
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
13
2
3
4
5
6
733
34
35
36
37
38
39
40
11
32
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
GND
OSC2/CLKOUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
GND
MCLR/VPP
OSC1/CLKIN
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/TOCKI/C1OUT
RA5/AN4/SS/C2OUT RBO/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
VDD
VDD
Hình 1.1 Vi điu khin PIC16F877A.
Bây gi ta hãy cp ngun cho vi điu khin hat động, và câu hi đặt ra là cp ngun
như thế nào? Tt nhiên, ngun cung cp s là ngun 5V, vn đề đây là, vi điu khin
PIC16F877A có đến hai chân cp ngun VCC và hai chân GND.c bn có cm thy bi ri
và thc mc là ti sao li có đến 4 chân cp ngun như vy không? Và sau đây là câu tr li,
ta phi cp ngun vào tt c các chân ngun trên, như vy thì vi điu khin mi hot động
được. Và mch nguyên lí sau khi cp ngun như sau:
Người báo cáo: Nguyn Trung Chính Tài liu: TUT01.03
Ngày: 7/12/2005 Trang: 3/14
HI
PIC16F877A
8
9
10
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
13
2
3
4
5
6
7 33
34
35
36
37
38
39
40
11
32
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
GND
OSC2/CLKOUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
GND
MCLR/VPP
OSC1/CLKIN
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/TOCKI/C1OUT
RA5/AN4/SS/C2OUT RBO/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
VDD
VDD
0
0
HI
Hình 1.2 Vi điu khin PIC16F877A sau khi cp ngun.
Tiếp theo, ngoài ngun cung cp, ta cn phi cung cp xung hot động cho vi điu
khin. PIC16F877A và các vi điu khin nói chung cho phép nhiu cách cung cp xung hot
động khác nhau. đây ta s dùng thch anh làm ngun xung, và công vic ca ta là gn
thch anh vào hai chân 13 và 14 ca vi điu khin. Tuy nhiên các bn cũng biết rng, các
xung dao động do thch anh to ra cũng không thc s n định mt cách tuyt đối, và cách
khc phc là gn thêm các t lc vào thch anh. Như vy, cn phi gn các t như thế nào
và giá tr bao nhiêu? Câu tr li nm trong cái datasheet. Các bn lt cái datasheet
PIC16F87xA do Microchip cung cp ra. Trang 145, hình 4.1 hướng dn cách gn các t C1,
C2 vào thch anh, và trang 146, bng 14-2 hướng dn cách chn giá tr cho t. đây la
dùng thch anh 4 MHz nên t C1 và C2 s có giá tr 15 pF. Mt đim đáng chú ý na là
cht lượng thch anh ti th trường Vit Nam không thc s tt, cho nên để tăng s n
định, ta s dùng t 30 pF. Xong! Và sau đây là mch nguyên lí sau khi gn thêm thch anh:
Người báo cáo: Nguyn Trung Chính Tài liu: TUT01.03
Ngày: 7/12/2005 Trang: 4/14
HI
PIC16F877A
8
9
10
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
13
2
3
4
5
6
733
34
35
36
37
38
39
40
11
32
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
GND
OSC2/CLKOUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
GND
MCLR/VPP
OSC1/CLKIN
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/TOCKI/C1OUT
RA5/AN4/SS/C2OUT RBO/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
VDD
VDD
C1
30 pF
0
4 MHz
0
HI
0
C2
30 pF
Hình 1.3 PIC16F877A sau khi cp ngun và thêm thch anh.
Bây gi là mch reset cho vi điu khin s dng chế độ reset t chân MCLR ca vi điu
khin (chân s 1). Ta đã biết vi điu khin s được reset khi chân MCLR chuyn t mc
logic 1 xung mc logic 0 và ta s dng mt công tc cơ khí để thc hin viêc chuyn đổi
đó, như vy ta mi có th tác động cho vi điu khin reset bng tay. Li mt câu hi na,
phi thiết kế mch như thế nào để thưc hin được công vic đó? D thôi, ta có th thiết kế
như hình 1.4. Bình thường công tc h, chân MCLR ca vi điu khin mang mc logic 1 (vì
được ni vi ngun qua đin tr hn dòng R1). Đin tr R1 phi có giá tr nh hơn 40K để
bo đảm đin áp cung cp cho vi điu khin. Khi n công tc, chân MCLR được ni vi
GND nên mang mc logic 0, khi đó vi điu khin s được reset.
Người báo cáo: Nguyn Trung Chính Tài liu: TUT01.03
Ngày: 7/12/2005 Trang: 5/14
4 MHz
HI
R1
0
HI
SW1
12
0
0
0
HI
PIC16F877A
8
9
10
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
13
2
3
4
5
6
733
34
35
36
37
38
39
40
11
32
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
GND
OSC2/CLKOUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
GND
MCLR/VPP
OSC1/CLKIN
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/TOCKI/C1OUT
RA5/AN4/SS/C2OUT RBO/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
VDD
VDD
C1
30 pF
C2
30 pF
Hình 1.4 PIC16F877A sau khi tiếp tc thêm vào mch seset.
Đến đây xem như ta đã hoàn thành nhng thành phn cơ bn nht cho mt mch test
dành cho vi điu khin PIC16F877A. Ta tiếp tc phát trin các thành phn tiếp theo để test
các port ca vi điu khin.
PORTB ca vi điu khin s được test đầu tiên. Mc đích ca mch test là kim tra xem
các giá tr ta xut ra port bng chương trình có đúng hay không, và để phát hin được các
giá tr đó mt cách trc quan, ta s dng 8 LED gn vào 8 chân trong PORTB ca vi điu
khin. Khi ta xut giá tr mang mc logic 1 ra môt chân nào đó trong PORTB ca vi điu
khin, LED tương ng gn vi chân đó s sáng lên (do lúc này đin áp chân ca vi điu
khin là 5V) và ngược li, nếu giá tr xut ra mang mc logic 0 thì LED s không sáng (do
lúc này đin áp chân ca vi điu khin là 0V). Tuy nhiên, ta cn chú ý đến mt đim quan
trng na, đó là để LED sáng bình thường, đin áp đặt vào hai đầu ca LED vào khong
1,8V đến 2,2V, trong khi đin áp ti chân I/O ca vi điu khin khi ta xut ra mc logic 1 s