当前位置:文档之家› 温度传感器数码管显示C程序

温度传感器数码管显示C程序

#include
#include
sbit DQ=P3^2;
sbit P2_0=P2^0;
sbit P2_1=P2^1;

void Numbershow();
void delay(unsigned char time)
{
unsigned char n;
n=0;
while(nreturn;
}
void main()
{
while(1)
{

Numbershow();
delay(10);
}
}
unsigned char Init_DS18B20(void)
{
unsigned char x=0;
DQ=1;
delay(8);
DQ=0;
delay(85);
DQ=1;
delay(14);
x=DQ;
delay(20);
return x;
}
unsigned char ReadOneChar( void)
{
unsigned char i=0;
unsigned char dat=0;
for(i=0;i<8;i++)
{
DQ=1;
delay(1);
DQ=0;
dat>>=1;
DQ=1;
delay(2);
if(DQ) dat|=0x80;
delay(4);
}
return (dat);
}
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
DQ=0;
delay(2);
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
unsigned char ReadTemperature(void)
{
unsigned char tempL=0;
unsigned char tempH=0;
unsigned char temperature;
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0x44);
delay(125);
Init_DS18B20();
WriteOneChar(0x44);
WriteOneChar(0xee);
tempL=ReadOneChar();
tempH=ReadOneChar();
temperature=((tempH*256)+tempL)>>4;
delay(200);
return(temperature);

}
void Numbershow(unsigned char num)
{

unsigned char ten,one;
unsigned char LED[]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F};
ten=num/10;
one=num%10;
P2_0=0;
P1=LED[one];
delay(10);
P2_1=0;
P1=LED[ten];
delay(10);

}

相关主题
文本预览
相关文档 最新文档