您的位置 首页 主动

ADC0809电压表 数据收集与处理办法

使用ADC0809制作5V电压表时,遇到新的知识——模数转换,赶紧记下自己的心得以供以后参考。ADC0809数据8位输出OUT1~OUT8,与单片机硬件连接

运用ADC0809制造5V电压表时,遇到新的常识——模数转化,赶忙记下自己的心得以供今后参阅。

ADC0809数据8位输出OUT1~OUT8,与单片机硬件衔接时最好为整个8位PX(P0、P1、P2、P3)口,下面为数据收集与处理参阅程序剖析:
假定运用void ADC(unsigned char ad_dat)函数来进行转化,那么在main中调用时可以直接写ADC(PX);将整个PX口的数据以unsigned char(uchar)类型读取进来。在ADC函数里这样写(此处只写出对已收到的数据处理,省掉了芯片的发动电平缓是否完结转化判别等等):
float temp;//浮点保存小数点后边六位,最终一位四舍五入
uchar val_int;//用于存储整数位
uint val_decimal;//存小数位
temp = ad_dat * (5/255);//主要是这个当地的原理比较重要:首要输出数据的8个口,可以表明的无符号整数规模是0~255。而丈量电压的规模是0~5V(以参阅电压衔接决议),所以接收到的整数与想要得到的电压值存在 5/255 的数量联系。为了坚持精度,所以temp用的是float类型。
val_int = (uchar) temp;//强制转化,保存temp的整数部分,留意,这儿并不会改动temp的数据
val_decimal = (uint) ((temp – val_int) * 100);//把整数部分减去为0之后。把想要保存的小数提上来,这样数码管显现的时分作为整数来处理。
尽管程序没仿真过,现在也还没出制品,不过这个新的常识,感觉挺理论的,不能忘了
更正过错:temp = ad_dat * (5/255);这条语句中,(5/255)必须用算出值0.0196078。原句改为:temp = ad_dat * 0.0196078; 不然转化值满是0。原因还未探明,信任与数据类型有联系。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/256756.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部