跪求会C8051F020单片机的,要用C语言写出测量电压,就是AD转换的程序

跪求会C8051F020单片机的,要用C语言写出测量电压,就是AD转换的程序,第1张

void Timer3_Init()

{

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。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12223032.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存