发布网友 发布时间:2024-10-21 17:06
共5个回答
热心网友 时间:2024-10-26 12:58
实际上二进制 十进制 都是数字的值而已
我们看到的 只是 他的表达方法不同 实际上一个意思 一样的值 所以可以相乘
那么你的问题 如果你把值通过pc显示 那么 pc会自己类型转换 成你要的
如果你用液晶显示 那么恭喜你 你要自己做一个小数显示 或者转换成字符串
如果你用串口调试工具 那么看这个工具是否支持
再看你的例子 0x4b*5/255 能行 但是注意类型 类型不对小心 单片机会取整
一般 用a*1.0这种方式~~
最后 多多试验
热心网友 时间:2024-10-26 13:01
完全可以,单片机最后编译成汇编执行的,汇编语言用16进制表示,但执行时是二进制。汇编里没有乘法的概念,你C里的乘法汇编要用好几条语句来实现的。所以,只要你C写得没问题,可以得到预想的结果的。
热心网友 时间:2024-10-26 13:02
楼主可能是想得确实太多了
你不是就是想用一个数与另一个数相乘吗?
就和3*10一样的,这里当然是十进制的
那我用(0x03)*(0x0a)得到的难道就不是一个结果了吗,肯定是十进制的30,十六进制的
1E,数值上时一样的
希望你能听懂吧
热心网友 时间:2024-10-26 13:05
voltage = 5.00*a /256;
disdata = (uint)(voltage*1000);
disdata%10,disdata/10%10,disdata/100%10,disdata/1000
这样就把数据分离了 我这是分离成四位 你改改分离成两位就行了
热心网友 时间:2024-10-26 12:58
我使用的是 V=a*5/256
这样做对吗??能得到对应的电压值吗??
对的呀。能得到对应的电压值,a 是0-255
AD转换器得到的数字是 二进制的,而用它跟十进制的数字相乘,能得到十进制的一个数字吗??都是二进制的,不是十进制的。V 最后想输出成10进制,则需要转换。
C51没怎么用过。
先计算V= a*5 (a==P0), V是16位,前8位是小数点前面的整数,后8位是小数点后面的。
分别进行10进制转换
由于前八位小于5不用转换。
只要对小数点的进行转换即可,具体看一下成熟的算法