有一段程序看不懂:
for(n = 0; n < 8; n++) {
?? dis[2] = ad_data[n] / 51?? //测得值转换为3位BCD码,最大为5.00V
?? dis[4] = ad_data[n] % 51;? //余数暂存
?? dis[4] = dis[4] * 10;????? //计算小数第一位
?? dis[1] = dis[4] / 51;
?? dis[4] = dis[4] % 51;
?? dis[4] = dis[4] * 10;????? //计算小数第二位
?? dis[0] = dis[4] / 51;
??? .....
ad_data[n] 是A/D后的数据,dis[]是要送去显示的数。
那些注释都是书上写的。还是看不明白!!请问那程序是怎么处理数据。尤其那51是什么意思。
悬赏分:0 - 解决时间:2010-1-15 20:42
;------------------------------------------------------
最佳答案:
AD转换,一般是将外接的0~5V的电压,变换成为8位二进制数,即:0~255。
如果想要用这些二进制数字,显示出来0.00~5.00V,除以51,则是很正常的。
-
AD转换,对初学者是个比较费解的问题,泛泛的讲,不如说一个具体的例子。
假设,当外接的电压是3.29V,经过AD转换后,送到单片机的数据将是168。
由这个数字变换成329的运算步骤,只需复习一下小学的知识,且看下面插图中的竖式:
?????????????????????

计算步骤:
1.168除以51,整数部分是3,余数部分是15;
2.15后面添上0,即余数部分乘以10;
3.150除以51,整数部分是2,余数部分是48;
4.48后面添上0,即余数部分乘以10;
5.480除以51,整数部分是9,余数部分是21;
-
此时,就得到 329 了,如果要求精度较高,可以继续除下去。
写到这一步,相信大家都可以看懂楼主给出的程序了。
;------------------------------------------------------
回答者:? 做而论道 - 十二级?? 2009-12-31 18:11
提问者对于答案的评价:XX
原文网址:http://zhidao.baidu.com/question/131473045.html;------------------------------------------------------