1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU VỀ ADC CỦA VI ĐIỀU KHIỂN PIC 16F877A

13 2K 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 549,21 KB

Nội dung

GIỚI THIỆU VỀ ADC CỦA PIC ADC là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số... Bộ chuyển đổi ADC có cấu trúc độc lập để có thể hoạt động trong khi vi điều khiển đang ở chế độ Slee

Trang 1

TÌM HIỂU VỀ ADC CỦA VI ĐIỀU KHIỂN

PIC 16F877A

I GIỚI THIỆU VỀ ADC CỦA PIC

ADC là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số

Trang 3

PIC 16F877A có 8 ngõ vào Analog ( RA0:RA4 and RE0:RE2) và mỗi kênh ADC là 10 bit với chip 40 chân Hiệu điện thế chuẩn V REF 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 2 chân RA2, RA3

Bộ chuyển đổi ADC có cấu trúc độc lập để có thể hoạt động trong khi vi điều khiển đang ở chế độ Sleep, xung cung cấp cho ADC lấy từ dao động RC bên trong của khối ADC

Kết quả chuyển đổi từ tín hiệu tương tự sang số là 10 Bit số tương ứng và được lưu trong 2 thanh ghi:

lưu trong 2 thanh ghi: ADRESH, ADRESL

Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thông thường khác Khi quá trình chuyển đổi hoàn tất, kết quả

sẽ được lưu vào 2 thanh ghi

sẽ được lưu vào 2 thanh ghi ADRESH, ADRESL Bit

được xóa về

được xóa về 0 và cờ ngắtvà cờ ngắt ADIF đượcđược SET

II. KHỐI ADC TRONG PIC

Các thanh ghi liên quan đến bộ chuyển đổi ADC

Trang 4

Ø Thanh ghi ADCON0 ( ADDRESS 1FH): có chức năng điều khiển hoạt động

của thanh ghi ADC

Bit 6-7: các bit lựa chọn xung chuyển đổi AD.

Bit 3-5: các bit lựa chọn kênh tương tự.

Bit 2 : bit báo trạng thái chuyển đổi ADC

Bit 1 : Chưa dùng nếu đọc là ‘0’

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

Bit 7,6 : Dùng lựa chọn tần số chuyển đổi

Trang 5

Bit 5-3 : CHS2:CHS0: Các bit lựa chọn kênh tương tự

Trang 6

Ø Bit 2: GO/DONE:

Bit này bằng 1 khi chuyển đổi ADC đang diễn ra.

Bit này bằng 0 khi quá trình chuyển đổi kết thúc.

Ø Bit 0: ADON

Bit này bằng 1 thì khối ADC được mở nguồn

Bit này bằng 0 thì khối ADC bị tắt nguồn để giảm bớt công suất tiêu thụ.

Thanh ghi ADCON1 ( ADDRESS 9FH) :

Thiết lập chức năng cho các chân của Port là ngõ vào nhận tương tự hoặc chân xuất nhập I/O

Trang 7

Bit 7 : bit 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

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

Trang 8

Bit 5-4: chưa dùng nếu đọc sẻ có giá trị là ‘0’ Bit 3-0: bit điều khiển ADC.

Trang 9

THANH GHI ADRESH, ADRESL

Chứa kết quả 10 bits của chuyển đổi

III Quy trình chuyển đổi từ tương tự sang số gồm những bước sau

ŒThiết lập các thông số cho bộ chuyển đổi ADC

ghi ADCON1).

Thiết lập các cờ ngắt cho bộ ADC Thiết lập các cờ ngắt cho bộ ADC

Ø Clear bit ADIF(ADC Interrupt Flag bit =0 chưa hoàn thành chuyển đổi)

Trang 10

Ø 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)

Ž Đợi cho quá trình lấy mẫu hoàn tất Đợi cho quá trình lấy mẫu hoàn tất

 Bắt đầu quá trình chuyển đổi ( Set Bit )

 Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:

Kiểm tra Bit Nếu Bit =0 thì quá trình chuyển đổi

hoàn tất.

Kiểm tra cờ ngắt.

‘ Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit ( nếu cần tiếp tục chuyển đổi).

’Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo

IV BÀI TOÁN

Trang 11

Đọc giá trị ADC 8 bit ở chân AN0 (điều chỉnh bằng biến trở 10k), và kiểm tra nếu áp ngõ vào analog > 2.5V thì bật các LED gắn ở PORTB lên

#include <pic.h>

CONFIG(0X3F7A);

#define _XTAL_FREQ 20000000

void port_init(void);

void adc_init(void);

void int_init(void);

void interrupt isr(void);

// -void port_init(// -void)

{

TRISA0 = 1; //khai bao RA0 la Input de doc ADC

Trang 12

TRISB = 0X00; //khai bao PortB xuat LED nen la OutPut

PORTB = 0xFF; // Tat het LED o portB

}

// -void adc_init(// -void) { PCFG0=0; //chon dien ap mau dua tren cac thong so cua thanh ghi ADCON1 PCFG1=0; // VREF+ =VDD, VREF- = VSS

PCFG2=0;

PCFG3=0;

ADCS1 = 0; // chon tan so lay mau // ADC conversion clock: = Fosc/8 ADCS0 = 1;

// Select Input chanel: AN0 CHS1 = 0; // CHS <2:0> = 000 Select AN0

CHS2 = 0; CHS0 = 0;

ADFM = 1; // ADFM = 1 Right justified ADFM = 0 Left justified Result format ADON = 1; // Turn on ADC Module delay_ms (1); //delay to wait for adc module init }

// -//interrupt initialization THIET LAP CO NGAT CHO BO ADC void int_init() { GIE = 1; //Global Interrupt Enable //cho phep tat cac cac ngat xay ra PEIE = 1; //Peripheral Interrupt Enable // cho phep tat ca ngat ngoai vi ADIE = 1; //ADC Interrupt Enable // cho phep ngat adc ADIF = 0; //Clear ADC Interrupt Flag // xoa co ngat }

// -void interrupt isr() { int ADC_result; if (ADIF== 1) //neu ngat adc xay ra {

ADIF = 0; //Clear ADC Interrupt Flag//Read ADC result

Trang 13

ADC_result = (ADRESH<<8)|ADRESL;

if (ADC_result> 512) //V_in > 2.5V <=> ADC_result > 512

{

PORTB = 0; //bat cac led o port b

}

else

{

PORTB = 0xFF;

}

}

}

void main(void)

{

port_init();

adc_init();

int_init();

while(1)

{

delay_us(50); //delay between 2 AD conversions //delay giua 2 lan chuyen doi GO_DONE = 1; //Set GODONE bit to start conversion //BAT BIT GO/DONE

DE BAT DAU LAN CHUYEN DOI TIEP THEO

};

}

Ngày đăng: 05/04/2015, 17:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w