骑着蜗牛狂奔 发表于 2014-6-27 19:28:27

CS18b20 显示温度,,总是不成功


把显示函数给屏蔽了!设置成>30度   小灯亮;我屋里的温度也就25度、为什么打开小灯就亮;

请帮我看看 代码呗、、谢谢


#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit QD=P2^2;
//sbit dula=P2^6;
//sbit wela=P2^7;
/*
signed char temp1[]={0};
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};

*/

float wendu ;
uchar aa, bb,cc,dd;

void display(uchar aa,uchar bb,uchar cc);
void delay(uchar z);
uchar chushihua();
void xie(uchar a);
void read()        ;
uchar du();
//uchar ds18b20_V()
//{
//        return(QD);
//}


void main()
{       
        wendu=0;
       


        while(1)
        {
                read();
                if(wendu>30.0)
                {
                P1=0XFE;               
                }
       
        }

}

/*************************************/
uchar chushihua()        //初始化
{
        uchar n,i;
        QD=0;
        for(i=240;i>0;i--);
        QD=1;
        for(i=40;i>0;i--);
        n=QD;
        for(i=200;i>0;i--);
        return(n);
}



/*************************************/


uchar du()                //读函数
{
        uchar i,temp,j;
        for(i=8;i>0;i--)
                {
                        temp>>=1;
                        QD=0;
                        for(j=2;j>0;j--);//4um
                        QD=1;
                        for(j=4;j>0;j--); //8um
                        if(QD)
                        {
                                temp|=0x08;       
                        };
                        for(j=15;j>0;j--);
                        QD=1;
                }       
                return(temp);
}


/*************************************/

void xie(uchar a)           //写函数
{
        uchar i,j;
        for(i=8;i>0;i--)
        {
        QD=0;
        for(j=7;j>0;j--);
        if((bit)(a&0x01)==1)
        {
           QD=1;
        }
        else
        {
                QD=0;
        }
        for(j=30;j>0;j--);
        QD=1;
        a>>=1;
        }
}

          



/*************************************/

void read()                                //读温度函数
{
        uchar i;
        chushihua();        //初始化
        xie(0xcc);           //写命令 跳过ROM
        xie(0x44);           //写命令 启动温度转换
        chushihua();        //初始化
        xie(0xcc);           //写命令 跳过ROM
        xie(0xbe);           //读暂存器里的温度命令
        for(i=0;i>2;i++)
        {
               temp1= du();
        }
        chushihua();//结束读温度
        wendu = (temp1<<8 | temp1) * 0.0625;
}

/*************************************/


void delay(uchar z)           //延时
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);

}




/*
void display(uchar aa,uchar bb,uchar cc)
{
      dula=1;
                P0=table;
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfe;
                wela=0;
                delay(5);

               dula=1;
                P0=table;
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfd;
                wela=0;
                delay(5);

       dula=1;
                P0=table;
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfb;
                wela=0;
                delay(5);
      
}                                           */



骑着蜗牛狂奔 发表于 2014-6-28 15:18:21

:dizzy::dizzy:没有人帮助、、

沉思的牛 发表于 2014-7-14 23:07:42

骑着蜗牛狂奔 发表于 2014-6-28 15:18
没有人帮助、、

待会帮你看看

骑着蜗牛狂奔 发表于 2014-7-18 19:19:44

沉思的牛 发表于 2014-7-14 23:07
待会帮你看看

:handshake    谢谢、、

沉思的牛 发表于 2014-7-23 19:14:31

楼主你能正常显示吗?

骑着蜗牛狂奔 发表于 2014-7-29 13:26:47

沉思的牛 发表于 2014-7-23 19:14
楼主你能正常显示吗?

不能正常显示。。。我终于自己憋出来程序了。。。谢谢楼主哈哈哈。。

沉思的牛 发表于 2014-7-29 19:01:47

骑着蜗牛狂奔 发表于 2014-7-29 13:26
不能正常显示。。。我终于自己憋出来程序了。。。谢谢楼主哈哈哈。。

这就是好样的!{:5_106:}
记住,写程序不能总让别人改~

tao819tao 发表于 2014-8-6 00:33:17

void read()                              //读温度函数
{
      uchar i;
      chushihua();      //初始化
      xie(0xcc);         //写命令 跳过ROM
      xie(0x44);         //写命令 启动温度转换
      chushihua();      //初始化
      xie(0xcc);         //写命令 跳过ROM
      xie(0xbe);         //读暂存器里的温度命令
      for(i=0;i>2;i++)
      {
               temp1= du();
      }
      chushihua();//结束读温度
      wendu = (temp1<<8 | temp1) * 0.0625;
}
自己看

骑着蜗牛狂奔 发表于 2014-8-6 15:41:53

tao819tao 发表于 2014-8-6 00:33
void read()                              //读温度函数
{
      uchar i;


:loveliness:
页: [1]
查看完整版本: CS18b20 显示温度,,总是不成功