stc12c5a60s2这款单片机的ad功能,测5v电压的话理论上十位ad可以达到11024精度,问一下如何编程实现呢

stc12c5a60s2这款单片机的ad功能,测5v电压的话理论上十位ad可以达到11024精度,问一下如何编程实现呢,第1张

请贴出你全部程序,看看你的变量定义都是什么型

主要是你变量定义的问题,定义成float就有小数了,int型就不行了,自动省略了小数,那就误差大了

你先用float计算,然后最后结果取int型进行四舍五入会好些,不然误差太大,

adc_data=(ADC_RES&0x03)256+ADC_RESL

0x03就是00000011将ADC_RES&0x03就是将ADC_RES与0x03 ,这样就是取ADC_RES低二位,作为10位ad的高两位,乘256转成10进制,然后加上低八位ADC_RESL,就是实际采集数据转化的10ad值

AMX0SL是一个寄存器,用来选择ADC转换的通道,而channel是函数传过来的通道号,ADC0INT是ADC0中断标志位,因为下边要用软件查询的方式进行判断转换完成,所以这里要清0。ADC0的软件启动方式有定时器启动和向ADC0BUSY位写1等方式启动,下边的就是等待ADC0转换结束,因为转换结束后ADC0INT会由硬件置1,当为0时,说明未完成转换,程序会一直执行while,直到转换结束后跳出,然后就是读取转换的结果了,c8051的ADC0是12位ad,所以转换的结果会存到两个寄存器里边ADC0H存放高4位,ADC0L存放低8位。高4位乘256加上低8位就是最终的转换结果,最后再把结果返回。

以上就是关于stc12c5a60s2这款单片机的ad功能,测5v电压的话理论上十位ad可以达到1/1024精度,问一下如何编程实现呢全部的内容,包括:stc12c5a60s2这款单片机的ad功能,测5v电压的话理论上十位ad可以达到1/1024精度,问一下如何编程实现呢、一段C8051的ADC转换程序求帮忙分析一下、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9715833.html

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

发表评论

登录后才能评论

评论列表(0条)

保存