找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3599|回复: 8
打印 上一主题 下一主题
收起左侧

ds13b20问题,求高手赐教。。

[复制链接]
跳转到指定楼层
楼主
ID:92037 发表于 2015-10-10 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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];


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:27916 发表于 2015-10-10 11:53 | 只看该作者
万、千、百、十、个位提取出来
回复

使用道具 举报

板凳
ID:92037 发表于 2015-10-10 11:56 | 只看该作者
青苹果 发表于 2015-10-10 11:53
万、千、百、十、个位提取出来

大概知道那个意思,可是不理解怎么装换的,能具体说说怎么转换的吗?
回复

使用道具 举报

地板
ID:79908 发表于 2015-10-10 14:36 | 只看该作者
danpianji529 发表于 2015-10-10 11:56
大概知道那个意思,可是不理解怎么装换的,能具体说说怎么转换的吗?

C语言中“/”是向零取整,比如 98/10 在数学中等于9.8 向零取整就等于9了 这样99%10(取余)就等于8,这样就分离了两位数。
回复

使用道具 举报

5#
ID:72577 发表于 2015-10-11 20:41 | 只看该作者
就是提取各个位,比如你的temp是12345,那么temp / 10000就是1,依次temp % 10000 / 1000就是2……
回复

使用道具 举报

6#
ID:92037 发表于 2015-10-14 11:27 | 只看该作者
电子爱好者life 发表于 2015-10-10 14:36
C语言中“/”是向零取整,比如 98/10 在数学中等于9.8 向零取整就等于9了 这样99%10(取余)就等于8,这 ...

嗯,谢谢。
回复

使用道具 举报

7#
ID:92037 发表于 2015-10-14 11:28 | 只看该作者
小强强 发表于 2015-10-11 20:41
就是提取各个位,比如你的temp是12345,那么temp / 10000就是1,依次temp % 10000 / 1000就是2……

嗯,谢谢啦。
回复

使用道具 举报

8#
ID:92575 发表于 2015-10-15 20:57 | 只看该作者
储示波器
回复

使用道具 举报

9#
ID:92621 发表于 2015-10-16 11:53 | 只看该作者
这个就是把读出来的数的每个位分开来,比如3455/1000,就得到3;3455%1000/100就得到4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表