哪位大神帮我改一下,单片机测定温度上下线为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:
}
}
}
#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积分