找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为啥这个温度控制不管用

[复制链接]
回帖奖励 55 黑币 回复本帖可获得 11 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:241873 发表于 2018-2-5 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>

sbit DSPORT=P3^7;
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;

#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}

unsigned char Speed=2;
unsigned        int        DQ;

void Delay1ms(unsigned int y)
{
        unsigned int x;
        for(y;y>0;y--)
                for(x=110;x>0;x--);
}
/*******************************************************************************
* ???         : Ds18b20Init
* ????                   : ???
* ??           : ?
* ??                  : ???????1,????0
*******************************************************************************/

unsigned char Ds18b20Init()
{
        unsigned int i;
        DSPORT=0;                         //?????480us~960us
        i=70;        
        while(i--);//??642us
        DSPORT=1;                        //??????,??DS18B20???????15us~60us?????
        i=0;
        while(DSPORT)        //??DS18B20????
        {
                i++;
                if(i>5000)//??>5MS
                        return 0;//?????        
        }
        return 1;//?????
}

/*******************************************************************************
* ???         : Ds18b20WriteByte
* ????                   : ?18B20??????
* ??           : com
* ??                  : ?
*******************************************************************************/

void Ds18b20WriteByte(unsigned char dat)
{
        unsigned int i,j;
        for(j=0;j<8;j++)
        {
                DSPORT=0;                        //???????????????1us
                i++;
                DSPORT=dat&0x01; //????????,??????
                i=6;
                while(i--); //??68us,??????60us
                DSPORT=1;        //??????,??1us??????????????????
                dat>>=1;
        }
}
/*******************************************************************************
* ???         : Ds18b20ReadByte
* ????                   : ??????
* ??           : com
* ??                  : ?
*******************************************************************************/


unsigned char Ds18b20ReadByte()
{
        unsigned char byte,bi;
        unsigned int i,j;        
        for(j=8;j>0;j--)
        {
                DSPORT=0;//??????1us
                i++;
                DSPORT=1;//??????
                i++;
                i++;//??6us??????
                bi=DSPORT;         //????,????????
                /*?byte????,??????7???bi,???????????0?*/
                byte=(byte>>1)|(bi<<7);                                                  
                i=4;                //???????48us?????????
                while(i--);
        }                                
        return byte;
}
/*******************************************************************************
* ???         : Ds18b20ChangTemp
* ????                   : ?18b20??????
* ??           : com
* ??                  : ?
*******************************************************************************/

void  Ds18b20ChangTemp()
{
        Ds18b20Init();
        Delay1ms(1);
        Ds18b20WriteByte(0xcc);                //??ROM????                 
        Ds18b20WriteByte(0x44);            //??????
//        Delay1ms(100);        //??????,???????????,????????

}
/*******************************************************************************
* ???         : Ds18b20ReadTempCom
* ????                   : ????????
* ??           : com
* ??                  : ?
*******************************************************************************/

void  Ds18b20ReadTempCom()
{        

        Ds18b20Init();
        Delay1ms(1);
        Ds18b20WriteByte(0xcc);         //??ROM????
        Ds18b20WriteByte(0xbe);         //????????
}
/*******************************************************************************
* ???         : Ds18b20ReadTemp
* ????                   : ????
* ??           : com
* ??                  : ?
*******************************************************************************/

int Ds18b20ReadTemp()
{
        int temp=0;
        unsigned char tmh,tml;
        Ds18b20ChangTemp();                                 //???????
        Ds18b20ReadTempCom();                        //????????????????
        tml=Ds18b20ReadByte();                //??????16?,?????
        tmh=Ds18b20ReadByte();                //?????
        temp=tmh;
        temp<<=8;
        temp|=tml;
        return temp;
}
void        main()
{
        unsigned int j,tp,i;
        tp=Ds18b20ReadTemp;
                Coil_OFF;
        while(1)
        {
                        if(tp>570)
                {
                        Coil_A1      
     Delay1ms(Speed);
     Coil_AB1               
     Delay1ms(Speed);                       
           Coil_B1      
     Delay1ms(Speed);
     Coil_BC1
     Delay1ms(Speed);
           Coil_C1      
     Delay1ms(Speed);
     Coil_CD1
     Delay1ms(Speed);
           Coil_D1      
     Delay1ms(Speed);
     Coil_DA1
     Delay1ms(Speed);
          for(i=0;i<100;i++)
            {
                        Coil_A1      
     Delay1ms(Speed);
     Coil_AB1               
     Delay1ms(Speed);                       
           Coil_B1      
     Delay1ms(Speed);
     Coil_BC1
     Delay1ms(Speed);
           Coil_C1      
     Delay1ms(Speed);
     Coil_CD1
     Delay1ms(Speed);
           Coil_D1      
     Delay1ms(Speed);
     Coil_DA1
     Delay1ms(Speed);
                                Delay1ms(1);
          }
        for(j=0;j<6;j++)
            {        
             Coil_OFF;
             Delay1ms(100);
                                                }               
                    }
                else
                {
                        Coil_OFF;
                         Delay1ms(100);
                }
    }
}

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

使用道具 举报

沙发
ID:284230 发表于 2018-2-16 21:52 | 只看该作者
你这代码写的我也是醉了,能编译过?
  tp=Ds18b20ReadTemp;???这是什么鬼,这不是函数调用,是把函数的地址附给变量。
而且你这个取温度不放到循环里那就是只运行一次。就是只取上电时的温度用来做控制。
别的没看。不知道你的输出是怎么连接的。需要说明一下别人才可能看的懂。
回复

使用道具 举报

板凳
ID:473159 发表于 2019-2-5 21:06 | 只看该作者
应该是网上下的还没有调过就直接编辑了

评分

参与人数 2黑币 +50 收起 理由
Trump1438 + 15
shuisheng60 + 35

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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