Professional Documents
Culture Documents
net
ĐỀ TÀI
Hà Nội 05-2006
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
Đo và hiển thị nhiệt độ của môi trường ở một điểm bất kỳ trong
khoảng -400C đến 1000C
Báo động khi nhiệt độ của môi trường ở trong một khoảng nào đó mà
ta chọn
PHẦN MỞ ĐẦU
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
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
®−î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 bµi to¸n mét c¸ch hiÖu qu¶ vÒ mÆt gi¸
thµnh 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 bµi to¸n vÒ mÆt c«ng suÊt tÝnh to¸n, gi¸ thµnh 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 nµo 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 bµi 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 nµy ®Æ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 vµo – ra, bé ®Þnh thêi, sè ng¾t trªn chÝp.
+ Kh¶ n¨ng dÔ dµng n©ng cÊp cho hiÖu suÊt cao hoÆc gi¶m c«ng suÊt tiªu thô.
+ Gi¸ thµnh cho mét ®¬n vÞ: §iÒu nµy quan träng quyÕt ®Þnh gi¸ thµnh 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å vµo 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
+ Bé ®Õm xung thêi gian (WDT) víi nguån dao ®éng trªn chÝp (nguån
dao
®é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 /EEPROM nguån møc thÊp ,tèc ®é cao.
+ ThiÕt kÕ hoµn toµn 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 uA víi nguån 3V, 32 kHz
< 1 uA 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 ngoµi.
+ 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µ I2C(chñ/phô)
+ Bé truyÒn nhËn th«ng tin ®ång bé, dÞ bé(USART/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.
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
*Cæng P0: Cã d¹ng cùc m¸ng hë vµ cã 8 ch©n (8 bit) lµ cæng vµo/ra hoÆc
lµ cæng chuyÓn d÷ liÖu vµ ®Þa chØ.
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
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:
Ngoµi 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 nµy 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 nµy 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
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
PHẦN I
Khối xử lý chung
Còn bộ biến đổi ADC , ta dùng ADC của PIC là ADC 10 bít
Ta dùng LED 7 thanh để hiển thị nhiệt độ của môi trường và dùng loa để
phát ra cảnh báo khi nhiệt độ môi trường ở trong khoảng nguy hiểm. Cụ thể
trong mạch này ta dùng Hai LED 7 thanh Anot chung (chúng ta cũng có thể
dùng LCD thay thế)
Sơ đồ nguyên lý
5
g
b
f
f
VCC
VCC
DOT
DOT
Vcc
Vcc
e
d
c
c
10
10
9
21 40
A1015 A1015 22 RD2/PSP2 RB7/PGD 39
T1 T2
23
24
RD3/PSP3
RC4/SDI/SDA
RB6/PGC
RB5
38
37
25 RC5/SDO RB4 36
HI RC6/TX/CK RB3/PGM
26 35
27 RC7/RX/DT RB2 34
28 RD4/PSP4 RB1 33
29 RD5/PSP5 RB0/INT
30 RD6/PSP6
22pF RD7/PSP7 4
RA2/AN2 5
10MHz RA3/AN3 6
RA4 7 Q3
13 RA5/AN4 8 4K7
OSC1/CLKI RE0/AN5
14
15 OSC2/CLKO RE1/AN6
RC0/T1CKI RE2/AN7
9
10 T3 SPEAKER
22pF 16
17 RC1/CCP2
RC2/CCP1
HI
18
4K7 19 RC3/SCK/SCL
20 RD0/PSP0 32
4K7 RD1/PSP1 VDD1 31
VSS1
2
HI
3 3
11 RA1/AN1 2 VR10K
VDD RA0/AN0 1 LM335Z
12 VPP 10K
VSS 1K
1
SW_PB_SPST
PIC16F877A
HI
HI
HI
SW2
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 đến
RB6 được thiết lập là các chân output của PORTB), các chân này được nối với
LED 7 thanh để hiển thị nhiệt độ, khi LED được phân cực đúng thì nếu các chân
này ở mưc cao thì LED sẽ sáng. Chân 2 là chân Input, là chân vào Analog của
ADC
Các chân 11,12,31,32 là các chân cấp nguồn cho VĐK, 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 việc thiêt lập xung Clock
cho VĐK
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
PHẦN II
#include <16F877A.h> //Khai báo con PIC ta sử dụng và file khai báo các
bít,các
// thanh ghi quan trọng trong con PIC này
#include <def_877a.h> //Khai báo sự định ngiã các thanh ghi và các bít quan
trọng
#device *=16 adc=10 // Khai báo dùng poiter 16 bít và ADC 10 bít
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT //Khai báo các config
#use delay(clock=20000000) //Khai báo sử dụng hàm Delay và tần số dao động
sử dụng
PORTB=a[high]; // LED 2
RD1=0;
delay_ms(2);
RD1=1;
}
//Chương trình con thục hiện việc 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 tiếng
}
// Chương trình chính
void main() {
float value;
int16 i;
trisb = 0x00; //thiết lập các chân của PORTB là các chân Output
trisc = 0x00; // thiết lập các chân của PORTC là các chân Output
trisd = 0x00; // thiết lập các chân của PORTD là các chân Output
trise = 0x00; // thiết lập các chân của PORTE là các chân Output
trisa = 0xff; // thiết lập các chân của PORTa là các chân Intput
portC = 0xff; // thiết lập các chân của PORTC xuất ra điện áp ở mức cao
portD = 0xff; // thiết lập các chân của PORTd xuất ra điện áp ở mức cao
delay_us(10); //Trễ 10 us
value=(float)read_adc();
value = (value - 558.5)/2.048;
convert_bcd((int8)value);
i=0;
//Vòng lặp vô tận
while(1)
{
i++;
value = (float)read_adc();
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
hàm này dùng để xác định cách thức hoạt động của bộ biến đổi ADC, cụ thể
là xác định thời gian lấy mẫu bằng một 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 lấy tín hiệu Analog là chân AN0
---------------------------------------------------------------------------------------------------
// register definitions
#define W 0
#define F 1
// register files
#byte INDF =0x00
#byte TMR0 =0x01
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
// 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
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net
//ADCON0
#bit CHS0 =0x1F.3
#bit CHS1 =0x1F.4
#bit CHS2 =0x1F.5
Tài liệu này được upload & download miễn phí tại website: http://hutonline.net