找回密码
 立即注册

QQ登录

只需一步,快速开始

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

哪位大哥帮看看,那个temp为什么总不对

[复制链接]
跳转到指定楼层
楼主
ID:53274 发表于 2013-8-20 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit DQ=P2^2;   //温度数据
uint temp;
float ftemp;        float tt;
uchar timecount;
uchar tflag,sflag;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                                0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,};
void delay(uint x)
{
        while(x--);
}
/*
delay(1)          延时 7us
delay(7)          延时63us
delay(100)         延时 611us
*/
void delay1(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}

void init_18b20()
{
        uint i;
        i=3000;
        DQ = 1;
        delay(1);         
        DQ = 0;             
        delay(100);          
        DQ=1;
        while(DQ==0&&i>0) i--;
        delay(80);
        DQ=1;
}

//读字节
uchar readonebyte( )
{
        bit flag = 0;       
       
        uchar i = 0, temp2 = 0;
       
        for(i = 0; i < 8; i++)
        {       
                temp2=temp2>>1;
                DQ=1;
                _nop_();
                DQ = 0;
                delay(1);       
                DQ = 1;                       
                delay(1);               
                flag = DQ;               
                if(flag == 1)
                        temp2= temp2|0x80;
                delay(7);               

                DQ = 1;                       
                _nop_();               
                _nop_();
        }

        return temp2;
}


//写字节
void writeonebyte(uchar date)
{
        uchar temp1= 0, i = 0;

        temp1= date;

        for(i = 0; i < 8; i++)
        {
                DQ = 0
                delay(2);                  
                DQ = temp1 & 0x01;  
                delay(7);                  
                DQ = 1;                           
                temp1= temp1>>1;
        }
}

void readtemp()
{
        uchar a=0,b=0;

        init_18b20();
        writeonebyte(0xcc);
        writeonebyte(0x44);
        delay1(1000);
        init_18b20();
        writeonebyte(0xcc);
        writeonebyte(0xbe);
       
        a=readonebyte();
        delay1(5);
        b=readonebyte();
        temp=b;
        temp<<=8;
        temp=temp|a;
        tt=temp*0.0625;

}


void display(uint temp1)                        //显示程序
{
        dula=1;
        P0=table[temp1/1000];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        delay(5);
       
/*        dula=1;
        P0=table[temp%100/10+10];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfd;
        wela=0;
        delay(5);

        dula=1;
        P0=table[temp%100%10];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfb;
        wela=0;
        delay(5);*/
}

void main()
{
        while(1)
        {
                readtemp();
                display(temp);
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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