intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Nội dung ADC

Chia sẻ: Bui Duc To | Ngày: | Loại File: PPT | Số trang:18

332
lượt xem
135
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo nội dung ADC

Chủ đề:
Lưu

Nội dung Text: Nội dung ADC

  1. Bài 5: ADC Nội dung  Modul ADC trong PIC16F877A  Ứng dụng của ADC
  2. Giớ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.
  3. 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à được lưu trong hai thanh ghi ADRESH:ADRESL  Khi quá trình chuyển đổi hoàn tất , bit (ADCON0) được xóa về 0 và cờ ngắt ADIF được set.
  4. Quy 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
  5. 1. Thiết lập các thông số cho ADC bit 3-0 PCFG3:PCFG0: A/D Port Configuration Control bits
  6. 1. 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
  7. 1. 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)
  8. Quy 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)
  9. Quy 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)
  10. CCS
  11. Cá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
  12. Cá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à:
  13. Cá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.
  14. Bà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.
  15. Sơ đồ thuật toán Chương trình chính Đọc giá trị ADC Hiển thị ADC lên PORTD
  16. Chương trình #include #include #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; } }
  17. Bài toán Đo nhiệt độ sử dụng LM35 trên chân AN1.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2