#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit DQ=P3^4;
uint temp;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint x)
{
uchar i;
while(x--);
for(i=0;i<120;i++);
}
void delay1(uint a)
{
while(--a);
}
void disp(uchar num)//显示函数
{
uchar shi,ge;
shi=num/10;
ge=num%10;
dula=1;
P0=table[shi];
dula=0;
P0=xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
uchar init_18b20()
{
uchar a;
DQ=1;
//高电平 的延时
delay1(8);
//拉低总线
DQ=0;
//480-960us;
delay1(90);
DQ=1;//释放总线
_nop_();
_nop_();
a=DQ;//检测总线
delay1(100);
DQ=1;//拉高总线
return(a);
}
void write(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;//0000 0001
delay1(5);
DQ=1;
dat>>=1
}
}
uchar read()
{
uchar i;dat=0;
DQ=1;
_nop_();
for(i=0;i<8;i++)
{
DQ=0;
_nop_();
_nop_();
dat>>=1;
DQ=1;
_nop_();
_nop_();
if(DQ)
dat|=0x80;
delay1(30);
DQ=1;
}
return(dat)
}
void read_tu()
{ uchar a,b;
init_18b20();
write(0xcc);
write(0x44);
init_18b20();
write(0xcc);
write(0xbe);
a=read();
b=read()
b<<=4;
b+=(a&0xf0)>>4;
return b;
}
void main()
{
delay(30);
while(1);
{
temp=read_tu();
disp(temp);
}
}
这是温度报警器的程序,设置了高于70度低于-20度 报警,我想把数值改下,要怎么改啊
-
一周热门 更多>