ds18b20程序uchar code ditab[16] ={0x00,0x01,0x01.......}为什么有重复的

在DS18B20数码管温度显示程序中:1.ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05... 在DS18B20数码管温度显示程序中:
1.uchar code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

为什么要重复0x01,0x01, 0x03,0x03等。

2.P0 =LEDData[display[1]]; //显示个位
DIN = 0; //小数点为什么在显示个位时清零呢?
P2 = 0xfb;
Delay(250);
求高人指点这两个问题
展开
 我来答
Cindere鞡
推荐于2016-02-25 · TA获得超过7251个赞
知道大有可为答主
回答量:1148
采纳率:84%
帮助的人:500万
展开全部
你好:

1.这个数组是DS小数部分所需要的温度对应的值,但为何是这样的,你可以想想DS的小数部分的特性。
第3位是小数最高位,代表2^(-1)=0.5℃,第2位是小数的次高位,代表2^(-2)=0.25℃....,共四位小数,精确到0.0625摄氏度;那么吧所有低4位以二进制加起来,比如0011代表0.0625摄氏度,近似约为0.1摄氏度,那么取值的就是0x01,那么0010代表0.125摄氏度,近似约为0.1摄氏度,所以还是取0x01,以此类推,后边的都是这么计算的。

2.没看懂你意思。

希望我的回答能帮助到你。
炫酷白凤凰
2019-09-29
知道答主
回答量:2
采纳率:0%
帮助的人:1368
展开全部
因为0000 0000=0*0.625=0℃ 0000 0001=1*0.0625≈0.1℃ 0000 0010=2*0.0625≈0.1℃ 0000 0011=3*0.0625≈0.2℃ 以此类推可知对应于0x(16进制)的数应为多少
小数表分别对应 .0 .1 .1 .2 .3 .3 .4 .4 .5 以此类推的小数点温度
0x(16进制)的数值是直接送去显示器去的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式