You are on page 1of 26

Hng dn lp trnh PIC 16F877A

Bin son: L MINH TR 1


Bi 1. Khi qut vi iu khin.
Vi iu khin (microcontroller_ thng c vit tt l uC, MCU) l mt mch tch hp, bn trong c cu
to bi cc nhn x l, b nh v c kh nng lp trnh giao tip vi thit b ngoi vi. Cc b vi iu khin
thng c s dng trong cc sn phm, thit b iu khin t ng, cc h thng iu khin t xa, v cc
h thng nhng.
Cc thnh phn c bn ca vi iu khin:
Hnh 1.1 Cu trc c bn mt vi iu khin PIC.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 2
B nh (Memory)
B nh c s dng lu tr d liu v chng trnh.
Hnh 1.2 B nh trong vi iu khin.
Hnh 1.3 Cc thanh ghi trong b nh vi iu khin.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 3
n v x l trung tm-CPU
L ni x l d liu: nhn, chia, cng, tr hay di chuyn d liu t b nh ny n b nh khc.
Hnh 1.4 CPU trong vi iu khin.
Bus.
Cc ng dn c gi l ng bus. V vt l, n i din ca 8, 16, hay nhiu hn s lng dy trong
mt ng bus. C hai loi bus: bus a ch v bus d liu.
Hnh 1.5 Cc dng Bus.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 4
n v ng vo ng ra.
Cc ng nhp xut ca vi iu khin c gi l cc port. C nhiu loi port: port ng nhp, port ng xut,
hay port hai hng.
Hnh 1.6 Cc n v nhp xut.
Truyn thng ni tip.
L dng truyn thng vi s lng ng dy truyn dn t, c th chng ta s thc hin s dng ba ng
dy dn, v mt trong cc ng dy dn c s dng nh l ng truyn d liu, dy dn khc c
s dng nh l ng nhn d liu, cn ng dn th ba c s dng nh mt ng chun cho c nhp
v xut. D liu trn ng truyn l cc mc logic 0 v 1.
Hnh 1.7 Truyn thng ni tip.
B nh thi(Timer)
Hnh 1.8 B nh thi.
Tuy nhin, s dng trong cng nghip chng ta cn thm mt vi khi. Mt trong cc khi l khi
timer m n quan trng i vi chng ta bi v n c th cho chng ta thng tin v thi gian, khong thi
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 5
gian, nghi thc, n v c bn ca timer l b m t do (free-run counter), trong thc t n l mt
thanh ghi m gi tr s ca n tng ln 1 trong cc khong thi gian bng nhau, nhn ly gi tr ca n
trong sut khong T1 v T2 v trn c s ca cc im khc nhau ca n chng ta c th quyt nh thi
gian tri qua bao lu. l mt phn quan trng ca vi iu khin.
Watchdog.
Mt yu cu cn ch l chc nng hon chnh ca vi iu khin sut thi gian chy ca n. Gi s rng khi
c mt tr ngi (iu ny thng xy ra trong cng nghip) vi iu khin ca chng ta ngng thc thi
chng trnh, hay t hn, n lm vic khng ng.
Hnh 1.9 Watchdog.
D nhin, nu iu xy ra vi my tnh, chng ta n gin ch vic reset n v n s tip tc lm vic. Tuy
nhin, khng c nt reset a vo vi iu khin v gii quyt vn ca chng ta. gii quyt vn
, chng ta cn a ra mt khi c gi l watchdog. S tht khi ny l mt b m chy t do khc,
ti chng trnh chng ta cn ghi mt bit 0 trong mi ln thc thi ng. Trong trng hp chng trnh b
nghn, bit 0 s khng c ghi, v b m s reset vi iu khin t gi tr ti a ca n. N s lm
chng trnh thc thi li. l thnh phn quan trng ca mi ln lp trnh c th nhn ra m khng cn
gim st.
Chuyn i tng t sang s.
Khi ny c chc nng h tr vi iu khin giao tip vi cc tn hiu ngi vi. Tn hiu tng t bn ngi
s c ly mu v lng t ha thnh 0 v 1 vi iu khin c th x l.
Hnh 1.10 B ADC.
Lp trnh cho vi iu khin.
Vit chng trnh l mt cng vic c bit vi vi iu khin, l vic s dng cc ngn ng lp trnh to lp
iu khin qu trnh hot ng cho vi iu khin.
Lp trnh c th c thc hin trong mt vi ngn ng nh Assembler(hp ng), C v Basic, m n c
s dng thng dng. Hp ng thuc v mc ngn ng cp thp vi kh nng lp trnh chm, nhng n s
chim khong b nh t v cho kt qu tt nht. Lp trnh trong ngn ng C th n d dng hn vit, d
dng hiu, nhng thc thi chm hn so vi hp ng. Basic l d nht hc, v cu trc ngn ng ca n
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 6
gn vi chng ta, nhng ging ngn ng C n cng chm hn hp ng trong vic thc thi. Trong nhiu
trng hp, chng ta cn ch n yu cu v tc x l, kch c b nh la chn ngn ng.
Hnh 1.11 Lp trnh v bin dch.
lp trnh cho vi iu khin, chng ta cn c cc thnh phn: my tnh, phn mm bin dch (compiler), b
lp trnh (kit np). Phn mm bin dch s bin dch ngn ng lp trnh thnh file bin hoc l file hex. B lp
trnh s truyn cc file bin(hay file hex) vo trong b nh chng trnh ca vi iu khin v lu tr di
dng m nh phn 0 v 1.
Hnh 1.12 Qu trnh lp trnh, bin dch v np cho vi iu khin.
Vi iu khin c kt ni vi thit b ngi vi. Mi khi c cp ngun, vi iu khin s thc hin cc thao
tc theo chng trnh c thit lp iu khin cc thit b ngi vi.
Mt s loi vi iu khin thng gp trn th trng hin nay:
- Vi iu khin h 8051: AT89C51, AT89C52,.....
- Vi iu khin h AVR: AT90S8515, AT90S8535, ATMega32,....
- Vi iu khin PIC: 16F84, 16F877A, Pic18F, Pic24C, dsPic,....
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 7
Bi 2. S lc PIC16F877A
2.1Gii thiu:
PIC 16F877A c c im chnh nh sau:
- C 5 Port xut nhp.
- C 8 knh chuyn i ADC 10-bit.
- C 2 knh PWM 10-bit.
- C 256bytes b nh d liu EEPROM.
- Ngoi ra c tch hp cc dng giao tip I2C, SPI, serial,....
2.2S chn v chc nng cc chn:
Hnh 2.1 S chn PIC16F877A.
Chc nng cc chn:
Chn
PP
V MCRL/ (1) c 2 chc nng:
* MCRL: l ng vo Reset tch cc mc thp.
* V
PP
: khi lp trnh cho PIC th ng vai tr l ng vo nhn in p lp trnh.
Chn RA0/AN0(2) c 2 chc nng:
* RA0: nhp/ xut s.
* AN0: ng vo tng t knh th 0.
Chn RA1/AN1(3) c 2 chc nng:
* RA1: nhp/ xut s.
* AN1: ng vo tng t knh th 1.
Chn RA2/AN2/VREF-/CVREF (4)
* RA2: nhp/ xut s.
* AN2: ng vo tng t knh th 2.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 8
* VREF-: ng vo in p chun(thp) ca b A/D.
* CVREF: in p tham chiu VREF ng ra b so snh.
Chn RA3/AN3/VREF+ (5)
* RA3: nhp/ xut s.
* AN3: ng vo tng t knh th 3.
* VREF+: ng vo in p chun(cao) ca b A/D.
Chn RA4/T0CKI/C1OUT (6):
* RA4: nhp/ xut s.
* T0CKI: ng vo xung clock bn ngi cho Timer.
* C1OUT: ng ra b so snh 1.
Chn OUT C SS AN RA 2 / / 4 / 5 (7):
* RA5: nhp/ xut s.
* AN4: ng vo tng t knh th 4.
* SS : ng vo chn la SPI ph.
* C2OUT: ng ra b so snh 2.
Chn RB0/INT (33):
* RB0: nhp/xut s.
* INT: ng vo nhn tn hiu ngt ngi.
Chn RB1 (34), RB2 (35): nhp / xut s.
Chn RB3/PGM(36)
* RB3: nhp/ xut s.
* PGM: Chn cho php lp trnh in p thp ICSP.
Chn RB4 (37), RB5 (38): nhp / xut s.
Chn RB6/PGC(39)
* RB6: nhp/ xut s.
* PGC: xung clock lp trnh ICSP.
Chn RB7/PGD(40)
* RB7: nhp/ xut s.
* PGD: mch g ri v d liu lp trnh ICSP.
Chn RC0/T1OCO/T1CKl (15):
* RC0: nhp/ xut s.
* T1OCO: ng vo b dao ng Timer1.
* T1CKl: ng vo xung clock bn ngoi Timer1
Chn RC1/T1OSI/CCP2 (16):
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 9
* RC1: xut/ nhp s.
* T1OSI: ng vo b dao ng Timer1.
* CCP2: Ng vo Capture 2, ng ra Compare 2, ng ra PWM 2.
Chn RC2/CCP1 (17):
* RC2: xut/ nhp s.
* CCP1: ng vo Capture 1, ng ra Compare 1, ng ra PWM1.
Chn RC3/SCK/SCL (18):
* RC3: xut/nhp s.
* SCK: ng vo xung clock ni tip ng b/ ng ra ca ch SPI.
* SCL: xung clock ch I2C.
Chn RC4/SDI/SDA (23):
* RC4: xut/nhp s.
* SDI: d liu vo SPI.
* SDA: d liu I2C.
Chn RC5/SDO (24):
* RC5: xut/ nhp s.
* SDO: d liu ra SPI.
Chn RC6/TX/CK (25):
* RC6: xut/nhp s.
* TX: truyn bt ng b USART.
* CK: xung ng b USART.
Chn RC7/RX/DT (26):
* RC7: xut/nhp s.
* RX: nhn bt ng b USART.
* DT: d liu ng b USART.
Chn RD0/PSP0 (19):
* RD0: xut/ nhp s.
* PSP0: d liu port slave song song.
Cc chn: RD1/PSP1 (20), RD2/PSP2 (21), RD3/PSP3 (22), RD4/PSP4 (27), RD5/PSP5 (28),
RD6/PSP6 (29), RD7/PSP7 (30) tng t nh trn.
Chn 5 / / 0 AN RD RE (8):
* RE0: xut/nhp s.
* RD: iu khin c port slave song song.
* AN5: ng vo tng t 5.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 10
Chn 6 / / 1 AN WR RE (9):
* RE1: xut/nhp s.
*WR: iu khin ghi port slave song song.
* AN6: ng vo tng t 6.
Chn 7 / / 2 AN CS RE (10):
* RE2: xut/nhp s.
*CS : iu khin ghi port slave song song.
* AN7: ng vo tng t 7.
Chn OSC1/CLKI (13):
* OSC1: ng vo dao ng thch anh.
* CLKI: ng vo ngun xung bn ngoi.
Chn OSC2/CLKO (14):
* OSC2: ng ra dao ng thch anh.
* CLKO: ch RC, ng ra ca OSC2, bng tn s ca OSC1, v chnh l tc chu k cu
lnh.
Chn VDD(11, 32) v VSS(12, 31): cc chn ngun ca PIC.
2.3Port nhp xut v cc thanh ghi nh hng.
Tng s chn nhp xut trong PIC c l 35 chn, cc chc nng kt ni vi hu ht cc thit b ngoi
vi, to thnh nhiu ng dng. 35 chn nhp xut ny c chia thnh 5 port vi tn gi: Port A, Port B, Port
C, Port D, Port E. Mi Port ca PIC c mt thanh ghi nh hng TRIS qui nh cc chn ca Port l ng
vo hay ng ra: khi thanh ghi TRIS = 0 th Port tng ng ng vai tr ng ra, khi thanh ghi TRIS = 1 th
Port tng ng ng vai tr ng vo. V d: PortA kt ni vi cc thit b ngoi vi; vi nt nhn, tn hiu t
cc mch logic l cc thnh phn ng vo, do khai bo cc chn c TRIS = 1; vi cc thnh phn cn
iu khin nh rle, led th cn khai bo cc chn c TRIS = 0.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 11
Hnh 2.2 iu khin vo ra cc PORT vi iu khin.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 12
Bi 3. S dng phn mmbin dch PIC C Compiler.
C rt nhiu phn mm dng son tho v bin dch ngn ng C cho vi iu khin PIC: MPLAB
C18, Hitech C Compiler,.... chuyn ny, chng ta s s dng phn mm PIC C Compiler.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 13
3.1Cc bc to mt Project trong PIC C Compiler.
Khi ng PIC C Complier:
Hnh 3.1 Khi ng PIC C Compiler.
To Project mi:
Hnh 3.2 To mt Project mi.
t tn cho Project:
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 14
Hnh 3.3 t tn Project mi.
Chn PIC v thch anh s dng:
Hnh 3.4Chn loi PIC lp trnh.
Hon thnh to Project:
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 15
Hnh 3.4 Giao din lp trnh.
3.2Vit chng trnh, bin dch v np cho PIC.
Vit chng trnh:
Hnh 3.5 Cch vit chng trnh.
Bin dch: trn Menu Compile chn Compile, trnh bin dch to ra file Hex.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 16
Hnh 3.6 Bin dch chng trnh.
3.3 Np chng trnh vo PIC dng PICkit 2 Programmer
Khi ng PICkit 2:
Hnh 3.7 Giao din PICkit2.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 17
Vo Menu File chn Import Hex, chn file hex va bin dch xong. Nhn Write np vo PIC.
Hnh 3.8 Np PIC dng PICkit2.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 18
Bi 4. S dng phn mm Proteus m phng Vi iu khin.
Phn mm Proteus ca hng Labcenter Electronics h tr m phng cc mch in t, c bit l m
phng vi iu khin.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 19
Khi ng Proteus:
Hnh 4.1Khi ng Proteus.
Ly linh kin:
Hnh 4.2Ly linh kin t th vin.
Chn PIC 16F877A, nhn OK
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 20
Hnh 4.3Nhp tn linh kin cn ly.
t linh kin vo giao din:
Hnh 4.4 t linh kin.
Ly LED t th vin linh kin:
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 21
Hnh 4.5 Ly n Led t th vin.
t 8 led vo giao din:
Hnh 4.6 t n Led.
Ly in tr:
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 22
Hnh 4.7 Ly in tr.
V t in tr vo giao din:
Hnh 4.8 t in tr.
Thay i gi tr in tr bng cch click phi vo in tr, chn Edit Properties, ca s Edit Component cho
php thay i gi tr in tr. i gi tr 10K thnh 180Ohm
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 23
Hnh 4.9Ca s Edit Component.
Ly GND:
Hnh 4.10Ly GND.
Kt ni dy bng cch click chut vo cc chn cn kt ni v i dy.
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 24
Hnh 4.11 Ni dy.
Kt ni cc thnh phn Reset v thch anh:
Hnh 4.12 Thnh phn Reset v b dao ng thch anh.
Mch sau khi hon thnh:
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 25
Hnh 4.13 Mch kt ni hon chnh.
Np File ONOFF.hex vo PIC:
Click phi PIC chn Edit Properties, ti v tr Program File click tr n file ONOFF.hex.
Hnh 4.14 Np file Hex cho PIC.
Vo Menu Debug, chn Start chy m phng:
Hng dn lp trnh PIC 16F877A
Bin son: L MINH TR 26
Hnh 4.15 Thc hin m phng.
Kt qu hin th:
Hnh 4.16 Kt qu hin th.

You might also like