
{
TMR3CN = 0x02
TMR3R = -44236//定时2ms
TMR3= 0xffff
EIE2 &= ~0x01
TMR3CN |= 0x04
}
void ADC0_Init(void)
{
AMX0SL=0x00//选择通道0
AMX0CF=0x00//选择AIN0和AIN1为独立输入
REF0CN=0x03//选择外部的电压液薯衫为基准电压
ADC0CF=(SYSCLK/2500000)<<3//时钟手拿为 ,增益为1
ADC0CN=0x84//ADC0使能且为ADCBUSY的开启方式
EIE2|=0x02//开启ADC0的中断
}
void ADC0_ISR() interrupt 15
{
static unsigned int_dec=INT_DEC
static long accumulator=0L
AD0INT = 0 // 清 ADC 中断标志位
accumulator += ADC0 // 累加ADC采样数据
int_dec-- // 指针减1
if (int_dec == 0) /闹腔/ 累加完了吗?
{
int_dec = INT_DEC // 指针复位
result = accumulator >>8
accumulator = 0L // 累加和变量清0
t=1
}
}ADC0转换,定时器3开启的方式
电压=(最大输入电压/0831的位数)×读回后的值最大输入电压是你的设计电压比如5V,那么分成256份后就是0.02V,将读回后的值×0.02V就迅乱得到实际电压值了。若10V太高可采用电阻分压卖昌侍后得到,并且可以设计不同的分压电阻来切换档位。若要求较高可采用运放来完成0.1-N倍中吵放大后即可。
假设ADC的参考电压是Vref,ADC转换结果是X所示实际电压V是:V=Vref×X÷256
要得到两位小数?如果使用C语言编写告仿那就没有问题了。但是还有一种方法,假设Vref=2.56V,即2560mV,所以V=2560×X÷256=10×X,单位是mV,只要握咐自己加袜皮纤小数点就行了,比如X=65H=101,则V=1010mV=1.01V。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)