Giới thiệu ADC Analog to Digital Converter là bộ chuyển đổi tín hiệu tương tự sang số.. Giới thiệu Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit số tương ứng và đư
Trang 1Bài 5: ADC
Nội dung
Modul ADC trong PIC16F877A
Ứng dụng của ADC
Trang 2Giới thiệu
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu tương tự sang số
PIC16F877A có 8 ngõ vào analog ( AN7:AN0)
Hiệu điện thế chuẩn có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn được xác lập trên hai chân RA2
và RA3
Trang 3Giới thiệu
Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu
số là 10 bit số tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL
Khi quá trình chuyển đổi hoàn tất , bit
(ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được set
Trang 4Quy trình chuyển đổi ADC
1 Thiết lập các thông số cho bộ chuyển đổi ADC:
-Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghi ADCON1).
bit 7 ADFM: A/D Result Format Select bit bit 6 ADCS2: A/D Conversion Clock Select bit
Trang 51 Thiết lập các thông số cho ADC
bit 3-0 PCFG3:PCFG0: A/D Port Configuration Control bits
Trang 61 Thiết lập các thông số cho ADC
-Chọn kênh chuyển đổi AD (thanh ghi ADCON0)
-Chọn xung clock cho kênh chuyển đổi AD (thanh ghi
ADCON0)
-Cho phép bộ chuyển đổi AD hoạt động (thanh ghi
ADCON0)
Bit 7,6 ADCS1:ADCS0 A/D Conversion Clock Select bit
Trang 71 Thiết lập các thông số cho ADC
Bit 5-3 CHS2:CHS0 - Analog Channel Select bit
Các bit này dùng để chọn kênh chuyển đổi ADC
000 kênh 0 (AN0)
001 kênh 1 (AN1)…
111 kênh 7 (AN7) Bit 2 A/D Conversion Status bit
(Khi ADON = 1)
=1 A/D đang hoạt động(set bit này sẽ làm khởi động ADC và tự xóa khi quá trình chuyển đổi kết thúc)
=0 A/D không hoạt động Bit 0 ADON - A/D On bit(ADON = 1 bật A/D)
Trang 8Quy trình chuyển đổi ADC
2 Thiết lập các cờ ngắt cho bộ AD( không bắt buộc)
• Clear bit ADIF(ADC Interrupt Flag bit =0 chưa hoàn thành chuyển
đổi)
• Set bit ADIE( ADC Interrupt Enable bit=1 cho phép ngắt ADC )
• Set bit PEIE( Peripheral Interrupt Enable bit = 1 cho phép tất cả các
ngắt ngoại vi)
• Set bit GIE(Global Interrupt Enable bit= 1 cho phép tất cả các ngắt)
Trang 9Quy trình chuyển đổi ADC
3 Đợi 1 khoảng thời gian cần thiết( 20us).
4 Bắt đầu quá trình chuyển đổi (set bit )
5 Đợi cho tới khi quá trình chuyển đổi hoàn tất
bằng cách:
Dò bit GO/DONE có bị xóa chưa, hoặc chờ ngắt A/D( nếu dùng ngắt)
6 Đọc kết quả chuyển đổi và xóa cờ ngắt ADIF ( nếu dùng ngắt) , set bit GO/DONE ( nếu cần
tiếp tục chuyển đổi)
Trang 11CCS
Trang 12Các lệnh trong CCS
- #device ADC=xx
với xx là số bit Với PIC16F877A thì xx=08 hoặc xx=10
- Setup_ADC(mode)
Mode có thể là:
ADC_OFF // Tắt ADC
ADC_CLOCK_DIV_2 //thời gian lấy mẫu bằng xung Clock/2 ADC_CLOCK_DIV_4 //thời gian lấy mẫu bằng xung Clock/4 ADC_CLOCK_DIV_8 //thời gian lấy mẫu bằng xung Clock/8 ADC_CLOCK_DIV_16 //thời gian lấy mẫu bằng xung Clock/16 ADC_CLOCK_DIV_32 //thời gian lấy mẫu bằng xung Clock/32 ADC_CLOCK_DIV_64 //thời gian lấy mẫu bằng xung Clock/64 ADC_CLOCK_INTERNAL //thời gian lấy mẫu 2-6us
Trang 13Các hàm trong CCS
- Setup_ADC_ports(Value)
Dùng để xác định chân lấy tín hiệu analog và điện thế chuẩn sử dụng Value là:
Trang 14Các hàm trong CCS
- Set_ADC_channel(channel)
chọn chân để đọc vào giá trị analog bằng lệnh
Read_adc().Với PIC16F877A channel=0->7
- Read_adc([mode])
Dùng đọc giá trị ADC từ thanh ghi(cặp thanh ghi) chứa kết quả biến đổi ADC
Mode không bắt buộc:
ADC_START_AND_READ ADC_START_ONLY
ADC_READ_ONLY
- adc_done( )
Nó trả về TRUE nếu đã thực hiện chuyển đổi A/D, FALSE nếu vẫn còn bận
Trang 15Bài toán
Đọc giá trị ADC 8 bit ở chân AN0(điều chỉnh bằng biến trở 10k), đọc và xuất ra dãy led ở portd
Trang 16Sơ đồ thuật toán
Chương trình chính
Đọc giá trị ADC
Hiển thị ADC lên PORTD
Trang 17Chương trình
#include<16f877a.h>
#include <def_877a.h>
#fuses NOWDT,HS,PUT,NOPROTECT
#device 16f877a*=16 adc=8
#use delay(clock=20000000)
int8 adc;
main()
{
trisd=0;//dau ra
setup_adc(adc_clock_internal);//thoi gian lay mau 2-6us setup_adc_ports(an0);//AN0 nhan analog
set_adc_channel(0);//chon chan de doc
delay_ms(10);
while(1)
{adc=read_adc();
portd=adc;
}
}
Trang 18Bài toán
Đo nhiệt độ sử dụng LM35 trên chân AN1