51单片机十六进制转换十进制

[复制链接]
12196|37
ayb_ice 发表于 2007-6-9 16:58 | 显示全部楼层

随便说说

signed char result8;
signed int  result16;
result16 = result8;
mohanwei 发表于 2007-6-9 20:51 | 显示全部楼层

估计就是过采样了,想用8位的AD,得到16位“分辨率”的结果

 楼主| ilovecr 发表于 2007-6-9 20:53 | 显示全部楼层

谢谢

不好意思,在忙于搭建AD421的电路
现在是这样的
我用STC12C4052AD自带的A/D转换
A/D转换读入的数据是0~FF (十进制0~255)    因为他的进度只有8位
选用AD421 做4~20mA输出(16位精度)0~FFFF(十进制0~65535)
输入和输出必需要有个对应的关系
最开始的思路就是十六进制-十进制-十六进制
不知道还有没有更好的思路!
谢谢大家

floater 发表于 2007-6-9 22:27 | 显示全部楼层

不明白LZ说什么

说清楚一点,
8位的AD,读出来16位的数据,什么意思呢
conwh 发表于 2007-6-9 22:39 | 显示全部楼层

就是为了保持以前的格式,对吧LZ。

是要进行转换的,否则前后的程序不能保持一直性。因为分辨率不同,如前面(12位)表达的1为4095,而8位的则表达为255。
conwh 发表于 2007-6-10 10:19 | 显示全部楼层

直接放到高位字节就行了,因为你人为地减小了256倍,所以

时,要放大256倍。
 楼主| ilovecr 发表于 2007-6-10 13:48 | 显示全部楼层

哥们我说的很明白了!

 楼主| ilovecr 发表于 2007-6-10 13:56 | 显示全部楼层

我说的很明白了

比如说测量0~5V     A/D转换的数是0~255
输出是16位精度的DA  0~65535


我是想让0~255与0~65535有个成比例的线性对应关系


比如读数是1  输出就是256
读数是10     输出就是2560

但是应用到程序上输入输出都是16进制的
在16进制上怎么处理这个对应关系

楼上说的放在高危是不可行的
我用的AD421是4~20mA输出相应的就是0~FFFF
ayb_ice 发表于 2007-6-10 14:11 | 显示全部楼层

随便说说

按LZ的意思,人家不用做16~24位的AD,DA。。。
conwh 发表于 2007-6-10 15:29 | 显示全部楼层

这不是大整帐的事吗,使用8位的替代16位的牺牲的是精度

难道你还想用8位的完全替代16位的?缩小256倍,你就得放大256倍,具体中间的可能不能一一对应。
gyt 发表于 2007-6-10 17:45 | 显示全部楼层

26楼

从楼主26楼的说明来看,就是把8位的数据放到高字节,OK!
4101523 发表于 2007-6-11 01:27 | 显示全部楼层

恢复

多读几位!!
 楼主| ilovecr 发表于 2007-6-11 08:40 | 显示全部楼层

怎么多读

conwh 发表于 2007-6-11 09:02 | 显示全部楼层

读256遍

gyt 发表于 2007-6-11 18:05 | 显示全部楼层

这样最好

读256的办法最好,如果时间允许的话,应该这样做:)
conwh 发表于 2007-6-11 19:05 | 显示全部楼层

GYT是最了解人的,呵呵。

 楼主| ilovecr 发表于 2007-6-11 21:20 | 显示全部楼层

我的程序编完了

 楼主| ilovecr 发表于 2007-6-11 21:24 | 显示全部楼层

采用左移8位的方法

在读数是FF时候进行移位,完事低位字节加FF
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部