PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   dieu khien adc trong pic16f77a (http://www.picvietnam.com/forum/showthread.php?t=872)

smile 15-01-2007 11:42 AM

dieu khien adc trong pic16f77a
 
Toi dang lam ve phan dieu khien 8 kenh adc trong pic16f877a hien thi gia tri tuong tu dau vao tren lcd. Toi thay kho khan trong viec chuyen doi gia tri adc nhan duoc thanh gia tri tuong tu dau vao. Toi co thay ky thuat lap bang tra. Co ban nao biet cach phuong phap lap bang tra thi bao minh voi. Neu viet bang ngon ngu C thi cang tot. Mong moi nguoi het suc giup do.

ngohaibac 15-01-2007 11:53 AM

ADC trong 16F877A là 10bit tức 1024 mức (mức 0 đến mức 1023)=> giá trị điện áp của 1 mức là:
= Vref/1023;

=> giá trị tương tự = (giá trị 10 bit trên 2 thanh ghi )* Vref/1024;

Bạn có thể viết như sau: (giả sử Vref = 5V)

Code:

unsigned int number;
number=(ADRESH<<8)|ADRESL;               
number=(unsigned int) (number* 4.8876);                (4.8876 = 5/1023).

ADRESH và ADRESL là 2 thanh ghi kết quả của chuyển đổi ADC. Sau đó bạn chuyển đổi số number thành kí tự hoặc tách thành từng số rùi chuyển lên LCD nhé.

Bạn có thể xem bài viết số 20 của mình tại đây:
http://www.picvietnam.com/forum//sho...p?t=339&page=2

Chúc bạn thành công.

riquelme 15-01-2007 02:00 PM

Nếu bác viết bằng ASM hoặc muốn đơn giản thì lấy 8 bit trong giá trị đầu ra của ADC 10 bit sẽ đơn giản hơn trong tính toán. Muốn vậy mình để canh trái dữ liệu ra (ADFM = 0), lúc này, ta chỉ cần lấy 8 bit ra chính là 8 bit trong thanh ghi ADRESH. (Ở đây vì ta canh trái nên 2 bit bỏ đi thuộc về ADRESL trở thành các bit LSbits, do đó sai số sẽ nhỏ), bác viết công thức sai số giữa dùng 8 bit và 10 bit ra thì sẽ thấy, sai số gần như không ảnh hưởng.


Múi giờ GMT. Hiện tại là 01:50 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam