Mình có xem một đoạn code phần chuyển đổi ADC của con pic, nhưng có vài chỗ ko hiểu? Mong mọi người giúp mình với
với ADC 10 bit tại sao lại có dòng kqadc=kqadc*4.887;
và nếu mình sử dụng adc 8 bit thì hệ số có còn là 4.887 nữa hay ko?Mong nhận được sự giúp đỡ của mọi người
Code:
#include <16f877a.h> #include <def_877a.h> #device ADC=10 #fuses nowdt,noprotect,nolvp,hs #use delay(clock=4000000) const unsigned char ma7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int16 kqadc; int dem,dv,ch,tr,ng,i; unsigned char mdv,mch,mtr,mng; void giaima7doan(int16 tam) { ng=tam/1000; tam=tam%1000; tr=tam/100; tam=tam%100; ch=tam/10; dv=tam%10; mng=ma7[ng]; mtr=ma7[tr]; mch=ma7[ch]; mdv=ma7[dv]; mch=mch&0x7f; } //hien thi quet led void hienthi() { output_d(mdv); output_low(pin_b2); delay_us(100); output_high(pin_b2); output_d(mch); output_low(pin_b3); delay_us(100); output_high(pin_b3); output_d(mtr); output_low(pin_b4); delay_us(100); output_high(pin_b4); output_d(0x9c); output_low(pin_b1); delay_us(100); output_high(pin_b1); output_d(0xc6); output_low(pin_b0); delay_us(100); output_high(pin_b0); } void main() { set_tris_A(0b00000001); set_tris_D(0x00); set_tris_b(0x00); output_b(0xff); setup_ADC(ADC_clock_div_32); setup_adc_ports(AN0); set_adc_channel(0); while(1) { kqadc=read_adc(); kqadc=kqadc*4.887; giaima7doan(kqadc); for(i=0;i<=30;i++) { hienthi(); } } }
và nếu mình sử dụng adc 8 bit thì hệ số có còn là 4.887 nữa hay ko?Mong nhận được sự giúp đỡ của mọi người
Comment