Tải bản đầy đủ (.ppt) (18 trang)

Báo cáo vi xử lý pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (415.48 KB, 18 trang )

NHÓM 16: MSSV GVHD
1.PHẠM DUY LÂM 05101084 TRƯƠNG NGỌC ANH
2.PHẠM HOÀNG MINH 05101101
3.NGUYỄN VŨ TRỌNG NGUYÊN 05101110
4.PHÙNG TIẾN TÀI 05101140
5.BÙI XUÂN THỊNH 05101163
GIỚI THIỆU CẢM BIẾN LM35 &
KHỐI ADC TRONG PIC16F877A
PHẦN CỨNG KẾT NỐI
LƯU ĐỒ & CHƯƠNG TRÌNH C
LƯU ĐỒ & CHƯƠNG TRÌNH ASSEMLY
ĐO NHIỆT ĐỘ SỬ DỤNG LM35
HIỂN THỊ LED 7 ĐOẠN
MÔ PHỎNG
PHẦN MỞ RỘNG
GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35 VÀ
KHỐI ADC
A. CẢM BIẾN NHIỆT ĐỘ LM35:

Khoảng nhiệt độ mà cảm biến còn hoạt động chính xác là từ
-55ºC150 ºC.

Cảm biến gồm chân GND, chân Vcc (5V12V) và chân
OUT(điện áp).

Điện áp ngõ ra của cảm biến thay đổi tỉ lệ thuận tương ứng với
sự thay đổi nhiệt độ trên thân cảm biến (10mV/ºC). Và khi nhiệt
độ ở 0ºC thì điện áp ở ngõ ra là 0V.

Hình dạng một số cảm biến nhiệt độ trên thị trường:
Nhiệt độ hoạt động từ - 60 ~ 150 độ C.


GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35 VÀ
KHỐI ADC
Nhiệt độ hoạt động từ -65 ~ 150 độ C.
GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35
VÀ KHỐI ADC

Công thức tính độ phân giải:

N : số nhị phân chuyển đổi được.

Vi : giá trị điện áp ngỏ vào.

Vref+, vref- : điện áp tham chiếu.

Khi nhiệt độ tăng lên 1 độ C thì Vout tăng 10mV , chọn
Vref - = 0, N = 1 .

Vref + = 2.56
B. KHỐI ADC TRONG VI ĐIỀU KHIỂN PIC 16F877A:
GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35
VÀ KHỐI ADC

Giới thiệu các thanh ghi thông dụng trong khối ADC:
1. ADCON0 (ADDRESS 1FH):

ADCS0 ~ADCS1: các bit lựa chọn xung chuyển đổi AD.
GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35 VÀ
KHỐI ADC

CHS2 ~ CHS0: các bit lựa chọn kênh tương tự.

000 = kênh 0
001 = kênh 1
010 = kênh 2
011 = kênh 3
100 = kênh 4
101 = kênh 5
110 = kênh 6
111 = kênh 7
GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35
VÀ KHỐI ADC

GO/DONE : Bit báo trạng thái chuyển đổi ADC

Bit này bằng 1 chuyển đổi ADC đang diễn ra và bit sẽ
bị xóa về 0 khi chuyển đổi kết thúc.

Bit 1: chưa dùng.

Bit ADON: bit mở nguồn cho ADC hoạt động.

Bit này bằng 1 khối chuyển đổi ADC được mở nguồn,
bit này bằng 0 thì thì chuyển đổi ADC được tắt nguồn để
giảm công suất tiêu thụ.
GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35
VÀ KHỐI ADC
2. ADCON1 (ADDRESS 9FH):

Bit ADFM : lựa chọn định dạng kết quả ADC.

Bit =1 canh lề phải, ngược lại canh lề trái.

GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ LM35
VÀ KHỐI ADC

ADCS2 : Bit lựa chọn xung clock cho chuyển đổi ADC.

Bit 5, 4: chưa dùng.

PCFG3 ~ PCFG0 : Bit điều khiển ADC.

Ngoài ra còn 2 thanh ghi ADRESH và ADRESL chứa kết quả 10
bit của chuyển đổi, khi chuyển đổi hòan thành thì kết quả được nạp
vào thanh ghi kết quả.
PHẦN CỨNG KẾT NỐI
Bắt đầu
Nút
Khởi tạo port C,D
xuất, port B nhập
Khởi tạo
ADC kênh 0
Đọc ADC
Chuyể
n Mod
Đúng
Sai
Đúng
Delay 10us
Mod =
11
Hex _ BCD
Hiển thị

Kết thúc
Sai
Đổi sang
độ F
LƯU ĐỒ CHƯƠNG TRÌNH C
CHƯƠNG TRÌNH C
#include<16F877A.h>
#include<def_16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(d)
#use fast_io(b)
#bit N=portD.4
int8 i,tram,chuc,donvi,mod;
signed int16 tam,doc;
const unsigned char
tra[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6,0x8e,0xbf};
void hex_bcd()
{
tram=tam/100;
tam=tam%100;
chuc=tam/10;
donvi=tam%10;
}
void hienthi()
{
i=0;
while(i<100)
{
portb=tra[chuc];

portd=0x02;
delay_us(5);
portd=0x00;
portb=tra[donvi];
portd=0x04;
delay_us(5);
portd=0x00;
portb=tra[mod];
portd=0x08;
delay_us(5);
portd=0x00;
if((doc<55)&&(mod==10)||(doc<37)&&(mod==11))
{
portb=tra[12];
portd=0x01;
delay_us(5);
portd=0x00;
}

else
{
portb=tra[tram];
portd=0x01;
delay_us(5);
portd=0x00;
}
i++;
}
}
void main()

{
set_tris_d(0x10); //thiet lap d0-d3 xuat,d4 nhap
set_tris_b(0x0); //thiet lap xuat cho port b
adfm=1; //canh phai ket qua chuyen doi(6 bit cao cua ADRESH=0)
setup_adc(adc_clock_internal); //thoi gian lay mau bang xung clock IC(2-6us)
setup_adc_ports(an0_an1_vss_vref); //A0 A1 VRef+=A3, VRef-=0
set_adc_channel(0); //chon chan 0 doc tin hieu analog
delay_us(10); //delay 10us roi moi dung ham read_ADC dam bao ket qua
dung
mod=10;
While(1)
{
if(N==1)
{
delay_us(50);
while(N==1)
{
if(mod==10) tam=Abs(doc-55);
if(mod==11) tam=Abs((doc-55)*9/5+32);
hex_bcd();
hienthi();
};

if(mod==10) mod=11;
else mod=10;
};
doc=read_adc();
if(mod==10) tam=abs(doc-55);
if(mod==11) tam=abs((doc-55)*9/5+32);
hex_bcd();

hienthi();
};
}
LƯU ĐỒ CHƯƠNG TRÌNH ASM
BCD – 7ĐOẠN
HIỂN THỊ
END
HEX - BCD
BEGIN
KHỞI TẠO PORT C,D
KHỞI TẠO ADC
ĐỌC GIÁ TRỊ TỪ ADC
CHƯƠNG TRÌNH CHÍNH
CHƯƠNG TRÌNH HEX - BCD
LƯU ĐỒ CHƯƠNG TRÌNH ASM
CHƯƠNG TRÌNH ASM
PHẦN CỨNG MỞ RỘNG
CHƯƠNG TRÌNH C MỞ RỘNG
MÔ PHỎNG
CHƯƠNG TRÌNH ASSEMLY
CHƯƠNG TRÌNH C
CHƯƠNG TRÌNH MỞ RỘNG

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×