存储器功能的数字温度计-DS1624技术应用与原理分析
存储器功能的数字温度计-DS1624技术应用与原理分析
点击数:7888 次 录入时间:03-04 11:36:41 整理:http://www.55dianzi.com 51单片机
}
else
{
i_stop();
delay();
return(0);
}
}
bit read_temperature_T(unsigned char *p)
{
i_start();
if(i_send(0x90))
{
if(i_send(0xaa))
{
i_start();
if(i_send(0x91))
{
*(p+1)=i_receive();
i_ack();
*p=i_receive();
i_stop();
delay();
return(1);
}
else
{
i_stop();
delay();
return(0);
}
}
else
{
i_stop();
delay();
return(0);
}
}
else
{
i_stop();
delay();
return(0);
}
}
void main(void)
{
P1=0xff;
timecount=0;
displaycount=0;
TMOD=0x21;
TH1=0x06;
TL1=0x06;
TR1=1;
ET1=1;
ET0=1;
EA=1;
if(start_temperature_T()) //向DS1624发送启动A/D温度转换命令,成功则启动T0定时1s。
{
secondflag=0;
secondcount=0;
TH0=55536/256;
TL0=55536%6;
TR0=1;
}
while(1)
{
if(secondflag==1)
{
secondflag=0;
TR0=0;
if(read_temperature_T(temperdata)) //T0定时1s时间到,读取DS1624的温度值
{
for(x=0;x<8;x++)
{
displaybuffer[x]=16;
}
x=2;
result=temperdata[1]; //将读取的温度值进行数据处理,并送到显示缓冲区
while(result/10)
{
displaybuffer[x]=result;
result=result/10;
x++;
}
displaybuffer[x]=result;
result=temperdata[0];
result=result>>3;
displaybuffer[0]=(dotcode[result]);
displaybuffer[1]=(dotcode[result])/10;
if(start_temperature_T()) //温度值数据处理完毕,重新启动DS1624开始温度转换
{
secondflag=0;
secondcount=0;
TH0=55536/256;
TL0=55536%6;
TR0=1;
}
}
}
}
}
void t0(void) interrupt 1 using 0 //T0用于定时1s时间到
{
secondcount++;
if(secondcount==100)
{
secondcount=0;
secondflag=1;
}
TH0=55536/256;
TL0=55536%6;
}
void t1(void) interrupt 3 using 0 //T1定时1ms用数码管的动态刷新
上一页 [1] [2] [3] [4] 下一页
本文关键字:技术 存储器 数字温度计 51单片机,单片机-工控设备 - 51单片机