标题: ds13b20问题,求高手赐教。。 [打印本页]

作者: danpianji529    时间: 2015-10-10 11:49
标题: ds13b20问题,求高手赐教。。
unsigned char code smg_du【17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                               0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void smg_Display(int temp)
{
           float tp;  
        if(temp< 0)                                //当温度值为负数
          {
                DisplayData[0] = 0x40;
               
                temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;       
               
          }
        else
          {                       
                DisplayData[0] = 0x00;
                tp=temp;
                temp=tp*0.0625*100+0.5;       
               
        }
        DisplayData[1] = smg_du[temp / 10000];
        DisplayData[2] =smg_du[temp % 10000 / 1000];
        DisplayData[3] =smg_du[temp % 1000 / 100] | 0x80;
        DisplayData[4] =smg_du[temp % 100 / 10];
        DisplayData[5] =smg_du[temp % 10];
        DigDisplay();                                           //扫描显示
}
  这是ds13b20测量温度并用数码管显示的实验,请问以下代码怎么理解??
        
        DisplayData[1] = smg_du[temp / 10000];
        DisplayData[2] =smg_du[temp % 10000 / 1000];
        DisplayData[3] =smg_du[temp % 1000 / 100] | 0x80;
        DisplayData[4] =smg_du[temp % 100 / 10];
        DisplayData[5] =smg_du[temp % 10];



作者: 青苹果    时间: 2015-10-10 11:53
万、千、百、十、个位提取出来
作者: danpianji529    时间: 2015-10-10 11:56
青苹果 发表于 2015-10-10 11:53
万、千、百、十、个位提取出来

大概知道那个意思,可是不理解怎么装换的,能具体说说怎么转换的吗?
作者: 电子爱好者life    时间: 2015-10-10 14:36
danpianji529 发表于 2015-10-10 11:56
大概知道那个意思,可是不理解怎么装换的,能具体说说怎么转换的吗?

C语言中“/”是向零取整,比如 98/10 在数学中等于9.8 向零取整就等于9了 这样99%10(取余)就等于8,这样就分离了两位数。
作者: 小强强    时间: 2015-10-11 20:41
就是提取各个位,比如你的temp是12345,那么temp / 10000就是1,依次temp % 10000 / 1000就是2……
作者: danpianji529    时间: 2015-10-14 11:27
电子爱好者life 发表于 2015-10-10 14:36
C语言中“/”是向零取整,比如 98/10 在数学中等于9.8 向零取整就等于9了 这样99%10(取余)就等于8,这 ...

嗯,谢谢。
作者: danpianji529    时间: 2015-10-14 11:28
小强强 发表于 2015-10-11 20:41
就是提取各个位,比如你的temp是12345,那么temp / 10000就是1,依次temp % 10000 / 1000就是2……

嗯,谢谢啦。
作者: baymax    时间: 2015-10-15 20:57
储示波器
作者: 向前走    时间: 2015-10-16 11:53
这个就是把读出来的数的每个位分开来,比如3455/1000,就得到3;3455%1000/100就得到4




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1