微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 哪位大神帮我改一下,单片机测定温度上下线为25度和30度

哪位大神帮我改一下,单片机测定温度上下线为25度和30度

时间:10-02 整理:3721RD 点击:
//部分代码修改自网络   18B20数码管显示温度
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS1=P3^4;     
sbit DS2=P3^5;  
sbit DS3=P3^6;
sbit ledlk=P1^0;
sbit smglk=P1^1;
sbit smgbitlk=P1^2;
//****************************动态扫描多个管脚数据***************************************
#define DatCount        3               //管脚个数
uint     >真美妙AT[DatCount] = {1,2,3};                        //各个管脚的标志数据
uint     TMP[DatCount];                        //读取的所有测试点的温度
uchar    SIGN[DatCount];                       //结果是否为负温,“+”为正温,“-”负温。
uint set1820_ss=3;
uint set1820_sg=0;
uint set1820_xs=2;
uint temp;
uchar a,flag;
void delay(uint ms)
{
uint i,j;
for (j=0;j<ms;j++)
  for (i=0;i<120;i++);
}
void delayus(uint us)
{
uint i,j;
for (j=0;j<us;j++)
  for (i=0;i<12;i++);
}
void showsmg(uchar smg,uchar value)
{
uchar code tablesmg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code table[]={ 0x3f , 0x06 ,0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71 , 0x00,0x80};
  smglk=1;
  P2=tablesmg[smg];
  smglk=0;
  smgbitlk=1;
  P2=table[value];
  smgbitlk=0;
     delay(3);
}  
void dsreset1(uint flag)   
{
  switch (flag) {
case 1:
{
   DS1=0;
      delayus(10);
      DS1=1;
      delayus(10);      
};
case 2:
{
   DS2=0;
      delayus(10);
      DS2=1;
      delayus(10);      
};
case 3:
{
   DS3=0;
      delayus(10);
      DS3=1;
      delayus(10);      
};
//default:
}
  
  
}

bit tmpreadbit1(uint flag)  
{
  // uint i;
   bit dat;
   switch (flag) {
case 1:
{
    DS1=0;
       DS1=1;  
       dat=DS1;
       delayus(1);
       return (dat);
};
case 2:
{
     DS2=0;
        DS2=1;  
        dat=DS2;
       delayus(1);
        return (dat);
};
case 3:
{
    DS3=0;
       DS3=1;  
       dat=DS3;
      delayus(1);
       return (dat);
};
//default:
}
}

uchar tmpread1(uint flag)
{
  uchar i,j,dat;
  dat=0;
  for(i=1;i<=8;i++)
  {
    j=tmpreadbit1(flag);
    dat=(j<<7)|(dat>>1);
  }
  return(dat);
}

void tmpwritebyte1(uchar dat,uint flag)
{
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++)
  {
    testb=dat&0x01;
    dat=dat>>1;
switch (flag) {
     case 1:
     {
       if(testb)  
          {
             DS1=0;
             i++;i++;
             DS1=1;
             i=8;while(i>0)i--;
          }
          else
          {
             DS1=0;
             i=8;while(i>0)i--;
             DS1=1;
             i++;
          //i++;
           }  
     };
     case 2:
     {
       if(testb)  
          {
             DS2=0;
             i++;i++;
             DS2=1;
             i=8;while(i>0)i--;
          }
          else
          {
             DS2=0;
             i=8;while(i>0)i--;
             DS2=1;
             i++;
          //i++;
           }     
     };
  case 3:
     {
       if(testb)  
          {
             DS3=0;
             i++;i++;
             DS3=1;
             i=8;while(i>0)i--;
          }
          else
          {
             DS3=0;
             i=8;while(i>0)i--;
             DS3=1;
             i++;
          //i++;
           }     
     };
     //default:
     }

   
  }
}


已退回3积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top