# include & ltstdio.h & gt
#定義uchar無符號字符
#定義uint無符號整數
sbit ds=p2^2;
sbit dula=p2^6;
sbit wela=p2^7;
sbit beep=p2^3;
單位溫度;
浮點f _ temp
uint warn _ 11 = 270;
uint warn _ 12 = 250;
uint warn _ h 1 = 300;
uint warn _ h2 = 320
sbit led0=p1^0;
sbit led1=p1^1;
sbit led2=p1^2;
sbit led3=p1^3;
無符號字符碼表[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0x ef };
void delay(uint z)//延遲
{
uint x,y;
for(x = z;x & gt0;x -)
for(y = 110;y & gt0;y-);
}
void ds reset(void)//ds 18b 20初始化。
{
uint I;
ds = 0;
I = 103;
while(I & gt;0)I-;
ds = 1;
I = 4;
while(I & gt;0)I-;
}
bittempreadbit(void)//讀取數據函數。
{
uint I;
bit dat
ds = 0;i++;
ds = 1;i++;i++;
dat = ds
I = 8;while(I & gt;0)I-;
return(dat);
}
uchartempread(void)//讀取壹個字節函數。
{
uchar i,j,dat
dat = 0;
for(I = 1;我& lt=8;i++)
{
j = tempreadbit();
dat =(j & lt;& lt7)|(dat & gt;& gt1);
}
return(dat);
}
voidtempwritebyte(uchardat)//寫壹個字節數據函數。
{
uint I;
uchar j;
位testb
for(j = 1;j & lt=8;j++)
{
dat & amp0x 01;
dat = dat & gt& gt1;
如果(測試b)
{
ds = 0;
i++;i++;
ds = 1;
I = 8;while(I & gt;0)I-;
}
其他
{
ds = 0;
I = 8;while(I & gt;0)I-;
ds = 1;
i++;i++;
}
}
}
void temp change(void)//溫度采集和轉換
{
dsreset();
延時(1);
tempwritebyte(0x cc);
tempwritebyte(0x 44);
}
uint get_temp()
{
烏恰爾a、b、坦普拉;
dsreset();
延時(1);
tempwritebyte(0x cc);
tempwritebyte(0x be);
a = tempread();
b = tempread();
temp = b;
temp & lt& lt=8;
temp = templa
f _ temp = temp * 0.0625
temp = f _ temp * 10+0.5;
f _ temp = f _ temp+0.05;
返回溫度;
}
空顯示(uchar數字,uchar數據)
{
烏恰爾壹世;
杜拉= 0;
P0 =表[dat];
杜拉= 1;
杜拉= 0;
wela = 0;
i = 0xff
i = i & amp(~(0x 01)& lt;& lt(num));
P0 = I;
wela = 1;
wela = 0;
延時(1);
}
無效溫度(單位溫度)
{
烏恰爾壹世;
I = t/100;
display(0,I);
I = t % 100/10;
顯示(1,I+10);
I = t % 100% 10;
顯示(2,I);
}
無效警告(單位s,單位led)
{
烏恰爾壹世;I = s;
嗶聲= 0;
p 1 = ~(led);
當(我-)
{
dis _ temp(get _ temp());
}
嗶聲= 1;
p 1 = 0x ff;
I = s;
當(我-)
{
dis _ temp(get _ temp());
}
}
無效交易
{
烏恰爾壹世;
如果((t & gtwarn _ 12)& amp;& amp(t & lt=warn_11))
{
warn(40,0x 01);
}
else if(t & lt;=warn_12)
{
warn(10,0x 03);
}
else if((t & lt;warn _ H2)& amp;& amp(t & gt=warn_h1))
{
warn(40,0x 04);
}
else if(t & gt;=warn_h2)
{
warn(10,0x0c);
}
其他
{
i = 40
當(我-)
{
dis _ temp(get _ temp());
}
}
}
void init_com(無效)
{
TMOD = 0x 20;
PCON = 0x 00;
SCON = 0x 50;
th 1 = 0x FD;
TL 1 = 0x FD;
tr 1 = 1;
}
void comm(char*parr)
{
做
{
SBUF = * parr++;
而(!TI);
TI = 0;
}
while(* parr);
}
void main()
{
uchar buff[4],我;
杜拉= 0;
wela = 0;
init _ com();
while(1)
{
temp change();
for(I = 10;我& gt0;我-)
{
dis _ temp(get _ temp());
}
交易(臨時);
sprintf(buff," %f ",f _ temp);
for(I = 10;我& gt0;我-)
{
dis _ temp(get _ temp());
}
comm(buff);
for(I = 10;我& gt0;我-)
{
dis _ temp(get _ temp());
}
}
}