温度大于32度之后,数码管显示正常,小于32度只显示0或者8
#include
#include"intrins.h"
#define uchar unsigned char
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
***it rs=P2^2;
***it duan=P2^6;
***it wei=P2^7;
delay(t)
{
int i,j;
for(i=0;i for(j=0;j<10;j++);
}
display(t)
{
int ge,shi,bai;
ge=t%10;
shi=t%100/10;
bai=t/100;
wei=1;
P0=0xdf;
wei=0;
duan=1;
P0=table[ge];
duan=0;
delay(20);
wei=1;
P0=0xef;
wei=0;
duan=1;
P0=table[shi]+0x80;
duan=0;
delay(20);
wei=1;
P0=0xf7;
wei=0;
duan=1;
P0=table[bai];
duan=0;
delay(20);
wei=1;
P0=0xff;
wei=0;
delay(50);
}
bitread()
{bit tembit;
int i;
rs=1;
rs=0;
i++;
rs=1;
i++;i++;
tembit=rs;
i=15;while(i--);
return(tembit);
}
byteread()
{ int i;
unsigned char tembyte,j;
tembyte=0;
for(i=0;i<8;i++)
{
j=bitread();
tembyte=(j<<7)|(tembyte>>1);
}
return tembyte;
}
bytewrite(char com)
{
int i,k;
bit j;
for(i=0;i<8;i++)
{rs=1;
j=com&0x01;
com=com>>1;
if(!j)
{
rs=0;
k=8;while(k--);
rs=1;
k=2;while(k--);
}
else{
rs=0;
k++;k++;
rs=1;
k=8;while(k--);
}
}
}
reset()
{
rs=1;
rs=0;
delay(5);
rs=1;
delay(1);
}
change()
{
reset();
delay(20);
bytewrite(0xcc);
bytewrite(0x44);
}
temp()
{char a,b;
float tt;
int tem;
reset();
delay(20);
bytewrite(0xcc);
bytewrite(0xbe);
a=byteread();
b=byteread();P1=a;
tem=b;
tem<<=8; //two byte compose a int variable
tem=tem|a;
tt=tem*0.0625;
tem=tt*10+0.5;
return tem;
}
void main()
{
int i;
change();
P0=0xff;
duan=1;
duan=0;
P0=0xff;
wei=1;
wei=0;
while(1){
change();
delay(20);
for(i=0;i<8;i++){
display( temp());
}
}
}
0