Ðăng Nhập

View Full Version : [cần giúp đỡ] cách lấy mẫu ADC


dungeonlegend
17-05-2013, 01:07 PM
Chào các anh chị và các bạn.

Mình là thành viên mới, và mình mong nhận được sự giúp đỡ rất nhiều từ các bạn. Hiện tại mình đang làm đề tài lấy tín hiệu ADC để hiển thị & vẽ đồ thị lên điện thoại di động.

Mình có đọc thử 1 số tài liệu thì họ bảo để vẽ được cần phải lấy mẫu ADC. Mình gặp vấn đề lớn tại chỗ này vì mình ko hiểu và ko biết cách code thế nào. Hiện tại kết quả mình đạt được chỉ là hiển thi được ADC lên điện thoại thông qua UART.

Code C mình viết bằng CCS Compile PWD chỉ dừng lại là read_adc() mà thôi :

#include <16F887.h>
#device pic16f887*=16 ADC=10
#fuses NOWDT, PUT, HS, NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#Use delay(clock = 20000000)
#use rs232 (baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7)

int value;
void main()
{
set_tris_d(0x00);
ENABLE_INTERRUPTS(GLOBAL);
setup_adc_ports(ALL_ANALOG);
setup_ADC(ADC_CLOCK_DIV_32);
set_adc_channel(0);

while(1)
{
int t;
delay_ms(500);
value=read_adc();
t = 35 + value*0.02745098039;
printf("%d\n\r",t);

}
}

trong code C mình phải thêm những yêu cầu lấy mẫu thế nào, và đối với phần nhận là điện thoại thì yêu cầu đặt ra phải làm là gì. Mình thực sự rất cần sự giúp đỡ của mọi ng.

Mình mới tìm hiểu về ADC, mong các bạn chỉ giáo cho mình nhiều. Cảm ơn mọi ng

tuonghiendk7.1
21-05-2013, 12:35 AM
int16 value;
void main()
{
set_tris_a(0xff);

ENABLE_INTERRUPTS(GLOBAL);
setup_adc_ports(ALL_ANALOG); hoặc setup_adc_ports(an0);
setup_ADC(ADC_CLOCK_DIV_32);//tùy bạn
set_adc_channel(0);

while(1)
{
int t;
delay_ms(500); // mình nghĩ ko cần
value=read_adc();

Đây là một số thứ theo mình biết bạn dùng ADC 10 bit bạn khai báo value ở chế độ int16 thì hợp lý hơn.