Professional Documents
Culture Documents
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ế)
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
26 RC6/TX/CK RB3/PGM 35
27 RC7/RX/DT RB2 34
28 RD4/PSP4 RB1 33
29 RD5/PSP5 RB0/INT
30 RD6/PSP6
RD7/PSP7
22pF 4
RA2/AN2 5
RA3/AN3
10MHz 6
RA4 7 Q3
RA5/AN4
13 8 4K7
OSC1/CLKI RE0/AN5
14 9
15 OSC2/CLKO RE1/AN6
RC0/T1CKI RE2/AN7
10 T3 SPEAKER
22pF 16
RC1/CCP2
17
RC2/CCP1
18
RC3/SCK/SCL
4K7 19
RD0/PSP0
20 32
RD1/PSP1 VDD1
4K7 31
VSS1
3 3
RA1/AN1
11 2 VR10K
VDD RA0/AN0
1 10K LM335Z
VPP
12
VSS 1K
PIC16F877A
SW2
#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
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();
value = (value - 558.5)/2.048; //for 5V supply
if (i==150) { convert_bcd((int8)value);i=0;}
if(((int8)value > 40) || ((int8)value < 15)) bao_dong();
display();
}
}
Lưu ý:
●Tại sao khi gắn a[low] =PORTB thì LED 1 lại hiển thị giá trị của low?
Bởi vì mảng hằng số:
a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
sẽ tương đương với mảng giá trị các số nhị phân như sau:
a[10] =
{11000000,11111001,10100100,10110000,10011001,10010010,10000010,
11111000,10000000,10010000};
Kể từ phải qua trái (bỏ qua số nhị phân cuối cùng bởi vì ta không sử dụng chan
RB7 của PORTB) các số nhị phân này chỉ ra mức điện áp ở các thanh
a,b,c,d,e,f,g,h của LED
Tức là mảng này tương ứng với các giá trị hiển thị trên LED là các số:
0,1,2,3,4,5,6,7,8,9
●Một số các hàm trong CCS đã được sử dụng 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 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
#byte PCL =0x02
#byte STATUS =0x03
#byte FSR =0x04
#byte PORTA =0x05
#byte PORTB =0x06
#byte PORTC =0x07
#byte PORTD =0x08
#byte PORTE =0x09
// 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