Upload
tuu-vu
View
223
Download
0
Embed Size (px)
Citation preview
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 1/20
TRƯNG I HC BÁCH KHOA HÀ NI
KHOA IN T VIN THÔNG00O00
BÁO CÁO BÀI TP L N MÔN VI X LÝ
TÀI
MCH O NHIT VÀ CNH BÁO
Thy giáo hư ng dn: ThS. Hàn Huy DũngSinh Viên thc hin:
Nguyn Th L i ng ình Tài Nguyn Huy Hoàng Ngô Thanh Xuân ng c Cư ng
L p : T2-K48
Hà Ni 05-2006
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 2/20
Ch c năng ca tài
o và hin th nhit ca môi trư ng mt im bt kỳ trongkhong -400C n 1000C
Báo ng khi nhit ca môi trư ng trong mt khong nào ó mà
ta chn
PHN M U
GI I THIU VK 8 BÍT PIC16F877 VÀ SO SÁNHV I VK 8051
Ngy nay, c¸c bé vi ®iÒu khiÓn ®ang cã øng dông ngy cng réng ri trong c¸c lÜnh
vùc kü t huËt v ®êi sèng x héi, ®Æc biÖt l trong kü thuËt tù ®éng ho ̧v ®iÒu khiÓn tõ xa. Giê ®©y víi nhu cÇu chuyªn dông ho¸, tèi − u (thêi gian, kh«ng gian, gi ̧thnh), b¶o mËt, tÝnh chñ ®éng trong c«ng viÖc... ngy cng ®ßi hái kh¾t khe. ViÖc ®− a ra c«ng nghÖ míi trong lÜnh vù c chÕ t¹o m¹ch ®iÖn tö ®Ó ®¸p øng nh÷ng yªu cÇu trªn l hon ton cÊp thiÕt mang tÝnh thùc tÕ cao.
Kh¸i niÖm vÒ bé vi ® i Òu khiÓn §Ó hiÓu kh¸i niÖm vÒ bé vi ®iÒu khiÓn, ta cã thÓ lm phÐp so s¸nh nã víi bé
vi xö lý c«ng dông chung nh− sau: Ta biÕt r»ng, c¸c bé vi xö lý c«ng dông chung nh− hä Intel x86 (8086,
80286, 80386, 80486 v Pentium) hoÆc hä Motorola 680x0(6800, 68010, 68020,
68030, 68040 vv...) kh«ng cã RAM, ROM v kh«ng cã c¸c cæng ra vo trªn chip... Víi lý do ®ã m chóng ®− îc gäi l c¸c bé vi xö lý c«ng dông chung.
Mét nh thiÕt kÕ hÖ thèng sö dông mét bé vi xö lý c«ng dông chung ch¼ng h¹n nh− Pentium hay 68040 sÏ ph¶i bæ xung thªm RAM, ROM, c¸c cæng vo ra v c¸c bé ®Þnh thêi ngoi ®Ó lm cho chóng ho¹t ®éng ®− îc. MÆc dï viÖc bæ xung c¸c RAM, ROM, c¸c cæng vo ra sÏ lm cho hÖ thèng cång kÒnh lªn nh− ng nã l¹i cã − u ®iÓm khi sö dông c¸c bé vi xö lý ny l rÊt linh ho¹t . Ch¼ng h¹n nh− ng − êi thiÕt kÕ cã thÓ quyÕt ®Þnh vÒ sè l− îng RAM, ROM, v c¸c cæng vo ra cÇn thiÕt sao cho phï hîp víi kh¶ n¨ng, môc ®Ých sö dông cña hÖ thèng.
§iÒu ny kh«ng thÓ cã ®èi víi c¸c bé vi ®iÒu khiÓn. Bëi v×, mét bé vi ®iÒu khiÓn
® cã mét CPU (mét bé vi xö lý) cïng víi mét sè l− îng RAM, ROM, c¸c cæng vo ra v mét bé ®Þnh thêi trªn cïng mét chÝp. Hay nãi c¸ch kh¸c l bé vi xö lý, RAM, ROM, c¸c cæng vo ra v mét bé ®Þnh thêi cïng ®− îc nhóng trªn mét chip. Do vËy ng − êi thiÕt kÕ kh«ng thÓ bæ xung thªm bé nhí ngoi, sè c¸c cæng vo ra hoÆc bé ®Þnh thêi cho nã. Víi sè l− îng RAM, ROM v sè c¸c cæng vo ra cè ®Þnh nh− vËy l mét mÆt h¹n chÕ (kÐm linh ho¹t) x ong nã l¹i thËt sù lý t − ëng ®èi víi nh÷ng øng dông mang tÝnh chuyªn biÖt, tèi − u vÒ gi ̧thnh, tèi − u vÒ kh«ng gian...
HiÖn nay trªn thÞ truêng cã c¸c bé vi ®iÒu khiÓn 8 bÝt chÝnh l. 6811 cña Motorola, 8051 cña Intel, Z8 cña Xilog v Pic16x cña Microchip Technology. Mçi lo¹i trªn ®©y ®Òu cã mét t Ëp lÖnh v thanh ghi riªng duy nhÊt, nªn chóng
®Òu kh«ng t − ¬ng thÝch lÉn nhau. Còng cã nh÷ng bé vi ®iÒu khiÓn 16 bÝt v 32 bÝt
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 3/20
®− îc s¶n xuÊt ra bëi c¸c hng s¶n xuÊt chÝp kh¸c nhau.
Nh÷ng yªu cÇu ®Ó lùa chän mét bé vi ®iÒu khiÓn l:
+ §¸p øng nhu cÇu tÝ nh to¸n cña bi to¸n mét c¸ch hiÖu qu¶ vÒ mÆt gi ̧thnh v ®Çy ®ñ chøc n¨ng cã thÓ nh×n thÊy ®− îc, (kh¶ dÜ).
+ Cã s½n c¸c c«ng cô ph¸t triÓn phÇn mÒm ch¼ng h¹n nh− c¸c tr×nh biªn dÞch
tr×nh hîp ng÷ v gì rèi. + Nguån c¸c bé vi ®iÒu khiÓn cã s½n nhiÒu v tin cËy.
C¸c tiªu chuÈn l ùa chän mét bé vi ®iÒu khiÓn: Tiªu chuÈn ®Çu tiªn v tr− íc hÕt trong lùa chän mét bé vi ®iÒu khiÓn l nã
ph¶i ®¸p øng nhu cÇu bi to¸n vÒ mÆt c«ng suÊt tÝ nh to¸n, gi ̧thnh v hiÖu qu¶. Trong khi ph©n tÝch c¸c nhu cÇu cña mét dù ¸n dùa trªn bé vi ®iÒu khiÓn, chóng ta tr− íc hÕt ph¶i biÕt l bé vi ®iÒu khiÓn no l 8 bÝt, 16 bÝt hay 32 bÝt cã thÓ ®¸p øng tèt nhÊt nhu cÇu tÝnh to¸n cña bi to¸n mét c¸ch hiÖu qu¶ nhÊt.
+ Nh÷ng tiªu chuÈn ®− îc ®− a ra ®Ó c©n nh¾c l: + Tèc ®é: Tèc ®é lín nhÊt m bé vi ®iÒu khiÓn hç trî l bao nhiªu.
+ KiÓu ®ãng vá: §ã l kiÓu 40 ch©n DIP hay QFP hay l kiÓu ®ãng vá kh¸c. §©y l ®iÒu quan träng ®èi víi yªu cÇu vÒ kh«ng gian, kiÓu l¾p r¸p v t¹o mÉu thö cho s¶n phÈm cuèi cïng.
+ C«ng suÊt tiªu thô: §iÒu ny ®Æc biÖt kh¾t khe ®èi víi nh÷ng s¶n phÈm dïng pin, ¾c quy.
+ Dung l− îng bé nhí RAM v ROM trªn chÝp. + Sè ch©n vo – ra, bé ®Þnh thêi, sè ng¾t trªn chÝp. + Kh¶ n¨ng dÔ dng n©ng cÊp cho hiÖu suÊt cao hoÆc gi¶m c«ng suÊt tiªu thô. + Gi¸ thnh cho mét ®¬n vÞ: §iÒu ny quan träng quyÕt ®Þnh gi¸ thnh cuèi cïng cña
s¶n phÈm m mét bé vi ®iÒu khiÓn ®− îc sö dông.
Bé Vi ®iÒu khiÓn 8 bit PIC16F877 §Æc tÝnh næi bËt cña bé vi xö lÝ.
+ Sö dông c«ng nghÖ tÝch hîp cao RISC CPU. + Ng − êi sö dông cã thÓ lËp tr×nh víi 35 c©u lÖnh ®¬n gi¶n. + TÊt c¶ c¸c c©u lÖnh thùc hiÖn trong mét chu k× lÖnh ngo¹i trõ mét sè c©u lÖnh rÏ nh¸nh thùc hiÖn trong 2 chu k× lÖnh. + Tèc ®é ho¹t ®éng l: - Xung ®ång hå vo l DC- 20MHz
- Chu kú lÖnh thùc hiÖn trong 200ns + Bé nhí ch− ¬ng tr×nh Flash 8Kx14 words + Bé nhí Ram 368x8 bytes + Bé nhí EFPROM 256x 8 bytes
Kh¶ n¨ng cña bé vi xö lÝ ny + Kh¶ n¨ng ng¾t ( lªn tíi 14 ng uån ng¾t trong v ng¾t ngoi ) + Ng¨n nhí Stack ®− îc ph©n chia lm 8 møc + Truy cËp bé nhí b»ng ®Þa chØ trùc tiÕp hoÆc gi¸n tiÕp. + Nguån khëi ®éng l¹i (POR) + Bé t¹o xung thêi gian (PWRT) v bé t¹o dao ®éng (OST)
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 4/20
+ Bé ®Õm xung thêi gian (W DT) víi nguån dao ®éng trªn chÝp (nguåndao ®éng RC ) ho¹t ®éng ®¸ng tin cËy. + Cã m ch− ¬ng tr×nh b¶o vÖ. + Ph− ¬ng thøc cÊt gi÷ SLEEP + Cã b¶ng lùa chän dao ®éng. + C«ng nghÖ CMOS FLASH /EEPRO M nguån møc thÊp ,tèc ®é cao. + ThiÕt kÕ hon ton tÜnh . + M ¹ch ch− ¬ng tr×nh nèi tiÕp cã 2 ch©n. + Xö lý ®äc /ghi tíi bé nhí ch− ¬ng tr×nh . + D¶i ®iÖn thÕ ho¹t ®éng réng : 2.0V ®Õn 5.5V + Nguån sö dông hiÖn t¹i 25 mA + Dy nhiÖt ®é c«ng nghiÖp v thuËn lîi . + C«ng suÊt tiªu thô thÊp:
< 0.6mA víi 5V, 4MHz
20 u A víi nguån 3V, 32 kHz < 1 u A nguån dù phßng.
C¸c ®Æc tÝ nh næi bËt cña thiÕt bÞ ngo¹i vi trªn chip + Timer0: 8 bÝt cña bé ®Þnh thêi, bé ®Õm víi hÖ sè tû lÖ tr− íc + Timer1: 16 bÝt cña bé ®Þnh thêi, bé ®Õm víi hÖ sè tû lÖ tr− íc, cã kh¶ n¨ng
t¨ng trong khi ë chÕ ®é Sleep qua xung ®ång hå ®− îc cung cÊp bªn ngoi. + Timer 2: 8 bÝt cña bé ®Þnh thêi, bé ®Õm víi 8 bÝt cña hÖ sè tû lÖ tr− íc, hÖ sè
tû lÖ sau
+ Cã 2 chÕ ®é b¾t gi÷, so s¸nh, ®iÒu chÕ ®é réng xung(PWM). + ChÕ ®é b¾t gi÷ víi 16 bÝt, víi tèc ®é 12.5 ns, chÕ ®é so s¸nh víi 16 bÝt , tèc®é gi¶i quyÕt cùc ®¹i l 200 ns, chÕ ®é ®iÒu chÕ ®é réng xung víi 10 bÝ t. + Bé chuyÓn ®æi tÝn hiÖu sè sang t − ¬ng tù víi 10 bÝ t . + Cæng truyÒn th«ng nèi tiÕp SSP víi SPI ph− ¬ng thøc chñ v I 2C(chñ/phô) + Bé truyÒn nhËn t h«ng tin ®ång bé, dÞ bé(USAR T/SCL) cã kh¶ n¨ng ph¸t
hiÖn 9 bÝt ®Þa chØ. + Cæng phô song song (PSP) víi 8 bÝt më réng, víi RD, WR v CS
®iÒu khiÓn.
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 5/20
S¬ ®å c¸c ch©n PIC16F87X.
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 6/20
S¬ ®å khèi bé vi ®iÒu khiÓn PIC16F87X
So s¸nh víi bé vi ®iÒu khiÓn 8051 * Bé vi ®iÒ u khiÓn 8051 l bé V§K ®Çu tiªn thuéc hä V§K x51 ®− îc s¶n xuÊt
bëi c«ng ty Intel, Siemens, Advanced Micro Devices, Fujitsu, Philips. C¸c ®Æc ®iÓm chung cña bé V§K ny:
+ 4KB ROM + 128 B RAM + 4 cæng I/O 8 bit + 2 Timer 16 bit
+ Cã kh¶ n¨ng qu¶n lý ®− îc 64 KB bé nhí m ch− ¬ng tr× nh ngoi (ROM ngoi). + Cã kh¶ n¨ng qu¶n lý ®− îc 64 KB bé nhí d÷ liÖu ngoi (RAM ngoi) + Cã bé xö lý logic riªng (thao t¸c trªn c¸c bit) + Cã thÓ thao t¸c trùc tiÕp ®− îc 210 bit (c¸c bit ny ® ®− îc ®Þa chØ ho¸) + Cã 5 ng¾t + Dïng nguån dao ®éng ngoi
+ Dïng ®iÖn ¸p 5V ®Ó cho chip ho¹t ®éng
*Cæng P0: Cã d¹ng cùc m¸ng hë v cã 8 ch©n (8 bit) l cæng vo/ra hoÆc l cæng chuyÓn d÷ liÖu v ®Þa chØ.
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 7/20
*Cæng P1: L cæng vo/ra cã 8 ch©n (8 bit). *Cæng P2: Cã 8 ch©n (8 bit) l cæng vo/ra hoÆc l cæng chuyÓn d÷ liÖu v
®Þa chØ. *Cæng P3: Cã 8 ch©n, cæng ny cã thÓ l cæng vo/ra 8 bit hay cßn cã c¸c
chøc n¨ng quan träng kh¸c nh− phôc vô cho ng¾t, c¸c bé ®Þnh thêi, viÖc truyÒnnhËn d÷ liÖu truyÒn th«ng nèi tiÕp, ®äc v ghi c¸c bé nhí ngoi…
S¬ ®å khèi cña V§K 8051
Nh− vËy cã thÓ thÊy ®Æc ®iÓm ®Çu tiªn m PIC16F877 ®em l¹i v næi bËt so víi V§K 8051 l dßng PIC16F877 nh÷ng ® Æc tÝnh kÜ thuËt h¬n h¼n so víi bé
V§K 8051 thÓ hiÖn ë nh÷ng ®iÓm sau:
V§K8051 V§K PIC16F877 §Æc tÝ nh Sè l− îng §Æc tÝnh Sè l− îng
ROM trªn chÝp RAM Bé ®Þnh thêi C¸c ch©n vo ra Cæng nèi tiÕp Nguån ng¾t
4K byte 128 byte 2 32 1 6
ROM trªn chÝp RAM Bé ®Þnh thêi C¸c ch©n vo ra Cæng nèi tiÕp Nguån ng¾t
8K 368 byte 3 40 2 14
Ngoi nh÷ng ®Æc tÝnh trªn th× bé vi ®iÒu khiÓn PIC16F877 cßn cã mét ®Æc ®iÓm h¬n h¼n so víi 8051 l cã 10 bÝt chuyÓn ®æi A/ D trªn chÝp ®iÒu ny sÏ gióp chóng ta kh«ng ph¶i mÊt mét bé chuyÓn ®æi (sÏ dÉn ®Õn kÕt nèi d©y trë nªn phøc t¹p).
Mét ®Æc ®iÓm n÷a l bé vi ®iÒu khiÓn PIC16F877 cã bé t¹o dao ®éng chñ trªn chÝp ®iÒu ny sÏ tr¸nh ®− îc nh÷ng sai sè kh«ng cÇn thiÕ t trong viÖc t¹o xung ng, V K PIC16F877 có kh n ăng t RESET b ng b W T, và có thêm 256 byte EEPROM
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 8/20
PHN I
THIT K PHN C NG
Sơ khi ca mch
♣ Khi x lý nhit và khi ADC : Là mt sensor nhit LM335 và mt b ADC 10 bitSơ ca sensor nhit LM335
LM335 c u vào là nhit môi trư ng và u ra là din áp Chân 1 là chân mang du “-”, thư ng ư c ni t khi phân
cc Chân 2 là chân mang du “+”, ư c ni v i V+ thông qua mt
in tr và chân 2 cũng là u ra ca LM335 Chân 3 là chân mang ch “ADJ”, thư ng ư c ni v i mt
bin tr iu chnh nhit ban u cho phù h p
Ngư i ta thư ng phân cc cho nó như sau:
Nhit môi trư ng
Khi x lýnhit
Khi hinth và cnh
báo
KhiADC
Khi x lývào ra
Khi x lý chung
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 9/20
Còn b bin i ADC , ta dùng ADC ca PIC là ADC 10 bít
Nguyên lý làm vic và các công th c tính toán:
o nhit môi trư ng ti mt im thông qua sensor nhit LM335 (Chitit v LM335 xem thêm trong datasheet). LM335 là sensor o nhit, o ư cnhit trong khong t -400C n 1000C, u ra là 10mV/K. u ra này ư cưa vao chân Analog ca b ADC (C th ây là ưa vào Chân AN0 ).Vì âylà tính theo K nên o C ta cn có công thc chuyn i giá tr t Ksang C. ây ta dùng ADC ca PIC là 10 bit => max=1023, Vref =Vcc, gi thitlà Vcc = 5V nên ti 0 C hay 273K thì u ra ca LM335 có giá tr là 2.73V.Như vy khi mun tính toán ra C ta cn phi tr i mc in áp là 2.73V. Lyví d: nhit là 30 C = 303K -> out = 303 x 10mV/K =3.03V. Ta tính toángiá tr c ư c t ADC 10 bit (ADC_Vin là in áp ưa vào chân ADC ca PIC,ADC_value là giá tr u ra ca ADC dư i dng thp phân):
ADC_Vin = 5V => ADC_value = 1023ADC_Vin = 2.73V => ADC_value = (1023/5)x2.73=558.558 (tươ ng ng
0 C)ADC_Vin = 3.03V => ADC_value = (1023/5)x3.03=619.938 (tươ ng ng
30 C)Mt khác do V_ref = Vcc =5V nên ADC_value=1 tươ ng ng 5/1023 =
4.887mV(~ 5mV). Trong khi ó LM335 cho ra in áp là 10mV/1K nên giá tr ADCthay i 1 ơ n v thì nhit phi thay i là 0.5K (hay gn 5mV) T ó ta cócông thc y sau tính giá tr C:
C=(ADC_value - 558.558)x(4.887mV/10mV)=> C=(ADC_value - 558.6)/ 2.046
♣Khi hin th và cnh báo
Ta dùng LED 7 thanh hin th nhit ca môi trư ng và dùng loa phát ra cnh báo khi nhit môi trư ng trong khong nguy him. C th trong mch này ta dùng Hai LED 7 thanh Anot chung (chúng ta cũng có th dùng LCD thay th)
Sau ây là sơ mch nguyên lý:
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 10/20
Sơ nguyên lý
LM335Z
1
2
3
10K
4 5
7 9 1 0
2 1 3
8 6
a b
c d e
f g
V C C
V c c
D O T
11
12
21
22
23
24
25
26
27
28
14
13
16
17
40
39
38
37
36
35
34
33
4
5
6
7
8
9
10
29
18
19
20
1
2
3
15
30
32
31
VDD
VSS
RD2/PSP2
RD3/PSP3
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DTRD4/PSP4
RD5/PSP5
OSC2/CLKO
OSC1/CLKI
RC1/CCP2
RC2/CCP1
RB7/PGD
RB6/PGC
RB5
RB4
RB3/PGM
RB2RB1
RB0/INT
RA2/AN2
RA3/AN3
RA4
RA5/AN4
RE0/AN5
RE1/AN6
RE2/AN7
RD6/PSP6
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
VPP
RA0/AN0
RA1/AN1
RC0/T1CKI
RD7/PSP7
VDD1
VSS1
H I
A1015
4K7
SPEAKER
4K7
HI
4K7
22pF
A1015
22pF
SW2
S W
_ P B
_ S P S T
H I
H I
10MHz
VR10K
1K
Q3
PIC16F877A
H I
H I
4 5
7 9 1 0
2 1 3
8 6
a b
c d e
f g
V C C
V c c
D O T
Gii thích sơ nguyên lý:
Các Transistor A1015 (chúng ta gi là các èn T1, T2, T3) ư c cp ngun 5V chân E , chân C ca T1 và T2 ư c ni v i 2 chân Vcc ca LED 7 thanh, cácchân B ca T1, T2 ư c ni ln lư t v i các chân 20 và 19 ca VKPIC16F877A (c th là ni v i các chân RD0 và RD1 là các chân output caPORTB). Khi RD1 mc thp thì u C ca èn T1 s mc cao lúc ó LED 1
ư c phân cc úng và có th sáng, ngư c li thì LED 1 b phân cc sai lúc ó nós không sáng. Tươ ng t cho chân RD0 và LED còn li. èn T3 cũng như vynhưng thay LED bng mt cái Loa (và chân output là chân RE0 ca PORTE)dùng cnh báo .u ra ca sensor nhit LM335 s ư c ưa vào chân 2 ca VK (là chân AnalogAN0 ca ADC 10 bít tích h p sn trong VK PIC, chân AN0 này s ư c thitlp là chân vào Analog ca ADC) .Cui cùng là VK PIC16F877A, ây ta ch nói n nhng tính năng mà ta dùngcho tài này, nó là mt con VK tích h p rt nhiu chc năng mà chúng ta cóth tham kho thêm trong Datasheet ca nó. Nhìn vào sơ nguyên lý ta có th
thy ngay rng các chân 19, 20 là các chân output (ã ư c nói trên) ,ngoài ra
T1 T2
T3
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 11/20
còn có các chân 33 n 39 cũng là các chân output (chính là các bít RB0 nRB6 ư c thit lp là các chân output ca PORTB), các chân này ư c ni v iLED 7 thanh hin th nhit , khi LED ư c phân cc úng thì nu các chânnày mưc cao thì LED s sáng. Chân 2 là chân Input, là chân vào Analog caADCCác chân 11,12,31,32 là các chân cp ngun cho VK, riêng chân Vpp (chân 1)
chính là chân RESET. Chân 13, 14 là các chân dùng cho vic thiêt lp xung Clockcho VK
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 12/20
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 13/20
PORTB=a[high]; // LED 2 RD1=0;delay_ms(2);RD1=1;
} // Chươ ng trình con thc hin vic báo ng
void bao_dong(){int8 i;for(i=0;i<200;i++){
RE0=0;delay_us(100);RE0=1;delay_us(100);
} // Kêu 200 ting } // Chươ ng trình chính void main() {
float value;int16 i;
trisb = 0x00; // thit lp các chân ca PORTB là các chân Outputtrisc = 0x00; // thit lp các chân ca PORTC là các chân Outputtrisd = 0x00; // thit lp các chân ca PORTD là các chân Output trise = 0x00; // thit lp các chân ca PORTE là các chân Output trisa = 0xff; // thit lp các chân ca PORTa là các chân Intput portC = 0xff; // thit lp các chân ca PORTC xut ra in áp mc cao portD = 0xff; // thit lp các chân ca PORTd xut ra in áp mc cao
// Thit lp cho ADC setup_adc(ADC_CLOCK_INTERNAL); //Ch ra cách thc hot ng ca
ADC là th i // gian ly mu bng xung clock
//Thit lâp.chân ly tín hiu Analog là chân AN0setup_adc_ports(AN0);setup_ADC_channel(0)
delay_us(10); //Tr 10 usvalue=(float)read_adc();value = (value - 558.5)/2.048;convert_bcd((int8)value);i=0;
// Vòng lp vô tn while(1){i++;value = (float)read_adc();
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 14/20
value = (value - 558.5)/2.048; //for 5V supplyif (i==150) { convert_bcd((int8)value);i=0;}if(((int8)value > 40) || ((int8)value < 15)) bao_dong();display();}
}
-------------------------------------------------------------------------------------------------- Lư u ý:
●Ti sao khi gn a[low] =PORTB thì LED 1 li hin th giá tr ca low?B i vì mng hng s:
a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};s tươ ng ươ ng v i mng giá tr các s nh phân như sau:a[10] ={11000000,11111001,10100100,10110000,10011001,10010010,10000010,11111000,10000000,10010000};K t phi qua trái (b qua s nh phân cui cùng b i vì ta không s dng chan
RB7 ca PORTB) các s nh phân này ch ra mc in áp các thanha,b,c,d,e,f,g,h ca LEDTc là mng này tươ ng ng v i các giá tr hin th trên LED là các s:0,1,2,3,4,5,6,7,8,9
●Mt s các hàm trong CCS ã ư c s dng là:Hàm
delay_us(time)
delay_ms(time)
ví d : delay_us(2) ; //t o tr 2us
delay_ms(2); //t o tr 2ms
Hàm: setup_adc(ADC_CLOCK_INTERNAL);
hàm này dùng xác nh cách th c hot ng ca b bi n i ADC, c th là xác nh th i gian l y m u b ng mt xung clock
Hàm:setup_adc_ports(AN0);
setup_ADC_channel(0)
các hàm này dùng xác nh chân ly tín hiu Analog là chân AN0
Còn ây là file nh ng ĩ a “def_877a.h” mà ta ã khai báo trên:--------------------------------------------------------------------------------------------------- // register definitions
#define W 0#define F 1
// register files#byte INDF =0x00#byte TMR0 =0x01
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 15/20
#byte PCL =0x02#byte STATUS =0x03#byte FSR =0x04#byte PORTA =0x05#byte PORTB =0x06#byte PORTC =0x07
#byte PORTD =0x08#byte PORTE =0x09
#byte EEDATA =0x10C#byte EEADR =0x10D#byte EEDATH =0x10E#byte EEADRH =0x10F#byte ADCON0 =0x1F#byte ADCON1 =0x9F#byte ADRESH =0x9F
#byte ADSESL =0x9F
#byte PCLATH =0x0a#byte INTCON =0x0b#byte PIR1 =0x0c#byte PIR2 =0x0d#byte PIE1 =0x8c#byte PIE2 =0x8d
#byte OPTION_REG =0x81
#byte TRISA =0x85#byte TRISB =0x86#byte TRISC =0x87#byte TRISD =0x88#byte TRISE =0x89
#byte EECON1 =0x18C#byte EECON2 =0x18D
#byte SSPBUF =0x13
#byte SSPCON =0x14#byte SSPCON2 =0x91#byte SSPADD =0x93#byte SSPSTAT =0x94 // SSPCON bit#bit SSPWCOL = 0x14.7#bit SSPOV = 0x14.6#bit SSPEN = 0x14.5#bit SSPCKP = 0x14.4#bit SSPM3 = 0x14.3#bit SSPM2 = 0x14.2
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 16/20
#bit SSPM1 = 0x14.1#bit SSPM0 = 0x14.0 // SSPSTAT bit#bit SSPSMP = 0x94.7#bit SSPCKE = 0x94.6#bit SSPDA = 0x94.5
#bit SSPP = 0x94.4#bit SSPS = 0x94.3#bit SSPRW = 0x94.2#bit SSPUA = 0x94.1#bit SSPBF = 0x94.0
//DINH NGHIA BIT#bit ra5 =0x05.5#bit ra4 =0x05.4#bit ra3 =0x05.3
#bit ra2 =0x05.2#bit ra1 =0x05.1#bit ra0 =0x05.0
#bit rb7 =0x06.7#bit rb6 =0x06.6#bit rb5 =0x06.5#bit rb4 =0x06.4#bit rb3 =0x06.3#bit rb2 =0x06.2
#bit rb1 =0x06.1#bit rb0 =0x06.0
#bit rC7 =0x07.7#bit rC6 =0x07.6#bit rC5 =0x07.5#bit rC4 =0x07.4#bit rC3 =0x07.3#bit rC2 =0x07.2#bit rC1 =0x07.1
#bit rC0 =0x07.0#bit rD7 =0x08.7#bit rD6 =0x08.6#bit rD5 =0x08.5#bit rD4 =0x08.4#bit rD3 =0x08.3#bit rD2 =0x08.2#bit rD1 =0x08.1#bit rD0 =0x08.0
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 17/20
#bit rE2 =0x09.2#bit rE1 =0x09.1#bit rE0 =0x09.0
#bit trisa5 =0x85.5
#bit trisa4 =0x85.4#bit trisa3 =0x85.3#bit trisa2 =0x85.2#bit trisa1 =0x85.1#bit trisa0 =0x85.0
#bit trisb7 =0x86.7#bit trisb6 =0x86.6#bit trisb5 =0x86.5#bit trisb4 =0x86.4
#bit trisb3 =0x86.3#bit trisb2 =0x86.2#bit trisb1 =0x86.1#bit trisb0 =0x86.0
#bit 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
#bit trisd7 =0x88.7#bit trisd6 =0x88.6#bit trisd5 =0x88.5#bit trisd4 =0x88.4#bit trisd3 =0x88.3#bit trisd2 =0x88.2
#bit trisd1 =0x88.1#bit trisd0 =0x88.0
#bit trise2 =0x89.2#bit trise1 =0x89.1#bit trise0 =0x89.0
// INTCON Bits for C#bit gie = 0x0b.7#bit peie = 0x0b.6#bit tmr0ie = 0x0b.5
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 18/20
#bit int0ie = 0x0b.4#bit rbie = 0x0b.3#bit tmr0if = 0x0b.2#bit int0if = 0x0b.1#bit rbif = 0x0b.0
// 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
//PIR2 for C#bit cmif = 0x0d.6#bit eeif = 0x0d.4#bit bclif = 0x0d.3#bit ccp2if = 0x0d.0
// 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
//PIE2 for C#bit osfie = 0x8d.7#bit cmie = 0x8d.6#bit eeie = 0x8d.4
// OPTION Bits#bit not_rbpu = 0x81.7#bit intedg = 0x81.6#bit t0cs = 0x81.5#bit t0se = 0x81.4#bit psa = 0x81.3#bit ps2 = 0x81.2#bit ps1 = 0x81.1#bit ps0 = 0x81.0
// EECON1 Bits
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 19/20
#bit eepgd = 0x18c.7#bit free = 0x18C.4#bit wrerr = 0x18C.3#bit wren = 0x18C.2#bit wr = 0x18C.1#bit rd = 0x18C.0
//ADCON0#bit CHS0 =0x1F.3#bit CHS1 =0x1F.4#bit CHS2 =0x1F.5
8/3/2019 Đo và cảnh báo nhiệt độ PIC16f877 [machdientu.net]
http://slidepdf.com/reader/full/do-va-canh-bao-nhiet-do-pic16f877-machdientunet 20/20
PHN TNG KT
1. Nhn xét kt qu nhn ưcNhit o dưc khá chun xác, tuy nhiên sai s vn còn khá ln
(ti mt C), iu này ta có th khc phc ưc bng cách dùng ba
LED hin th, lúc ó sai s s gim xung còn 0,1oC (bi vì ADCtrong con PIC này là 10 bít => giá tr nó xut ra ti 1023). Nu munchun xác hơn na ta có th dùng ADC ngoài có s bít cao hơn, hocdùng LCD hin th
ng dng ca tài rt rng rãi trong cuc sng, nht là trongcác nhà máy bia, các h thng làm lnh trong vic kim soát nhit
2.Hưng phát trin m rng tài:- Nâng cao chính xác hin th bng cách dùng ADC có phân giicao hơn (có th dùng ADC ngoài)- Thêm bàn phím giao tip có th thay i trc tip khong nhit theo dõi, cùng vi ó ta thêm vào LED 7 hin th hai giá tr nhit này- S dng EEPROM lưu giá tr nhit mà ngưi dùng thit lp, cácln thay i khác...- Ghép ni máy tính truyn giá tr nhit n máy tính- Ghép ni LCD và mt mch m thi gian thc (DS1307) ng vimi thi im chương trình s t ng chn khong thit lp nhit thích hp theo tng mùa, tng thi im nh trưc...
- S dng PID trong iu khin t ng kt hp vi các mch iukhin tăng gim nhiêt m bo nhit luôn bám theo mt giátr cho trưc, h n nh nhit (giá tr thay i là rt nh)