找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2530|回复: 4
收起左侧

单片机DS18B20显示程序的分析,百位是怎么显示的?

[复制链接]
ID:516297 发表于 2019-4-19 23:42 | 显示全部楼层 |阅读模式
DS18B20中的定义之后为什么显示百位调用第一个,显示十位调用第二个,显示各位调用第一个???并且用举例子的方法解释一下百位是怎么显示的???


unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};


void display(uint temp)            //显示程序
{
   uchar A1,A2,A2t,A3,ser;
   ser=temp/10;
   SBUF=ser;
   A1=temp/100;
   A2t=temp%100;
   A2=A2t/10;
   A3=A2t%10;
   dula=0;
   P0=table[A1];        //显示百位
   dula=1;
   dula=0;

   wela=0;
   P0=0xfe;
   wela=1;
   wela=0;
   delay(1);

   dula=0;
   P0=table1[A2];        //显示十位
   dula=1;
   dula=0;

   wela=0;
   P0=0xfd;
   wela=1;
   wela=0;
   delay(1);

   P0=table[A3];        //显示个位
   dula=1;
   dula=0;

   P0=0xfb;
   wela=1;
   wela=0;
   delay(1);
}

uint tmp()               //get the temperature
{
  float tt;
  uchar a,b;
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);
  tmpwritebyte(0xbe);
  a=tmpread();
  b=tmpread();
  temp=b;
  temp<<=8;             //two byte  compose a int variable
  temp=temp|a;
  tt=temp*0.0625;
  temp=tt*10+0.5;
  return temp;
}


回复

使用道具 举报

ID:213173 发表于 2019-4-20 09:30 | 显示全部楼层
void display(uint temp)//temp是包含1位小数的温度值,放大10倍后成为整数
{
   uchar A1,A2,A2t,A3,ser;
   ser=temp/10;//把整数部分赋值给ser
   SBUF=ser;        //串口发送实际温度的整数
   A1=temp/100;//分离百位数(实际是温度的十位数)
   A2t=temp%100;//分离百位以下整数
   A2=A2t/10;//分离十位数(实际是温度的个位数)
   A3=A2t%10;//分离个位数(实际是温度的小数)
        ......
        ......
}
回复

使用道具 举报

ID:277550 发表于 2019-4-20 10:00 | 显示全部楼层
  temp=tt*10+0.5;    放大了10位

A1=temp/100;     百位
   A2t=temp%100; 十位和个位
   A2=A2t/10;       十位
   A3=A2t%10;      个位
回复

使用道具 举报

ID:501535 发表于 2019-4-22 16:34 | 显示全部楼层
放大了10位
回复

使用道具 举报

ID:479806 发表于 2019-4-25 08:40 | 显示全部楼层
好像用sprintf语句不用这么麻烦的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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