基于DS18B20与TMS320LF2407A的温度测量系统

时间:2012-07-07来源:网络

#define PIN_LEAVE() {DATA_PORT=DATA_PORT(~DATA_OUT)|DATA_BIT;}
/* 传感器复位程序 */
unchar reset(void)
{ unchar retval;
unint loopindex="0";
PIN_HIGH();
nop();nop();nop();nop(); /* 延时1us*/
PIN_LOW();
for(loopindex=0;loopindex213;loopindex++){;} /*置总线为低电平并保持至少480us */
PIN_HIGH();
for(loopindex=0;loopindex26;loopindex++){;} /*等电阻拉高总线并保持15-60us */
PIN_LEAVE(); /*接受应答信号*/
nop();
if((DATA_PORT DATA_BIT) == 0x0000)
{ retval = 0; }
else
{ retval = 1; }
PIN_HIGH();
for(loopindex=0;loopindex106;loopindex++){;} /*延时60-240us */
return(retval); /*返回应答信号 */
}
/* 从传感器中读一个字节 */
void read_byte(unchar *ReadByte)
{
int i;
unchar temp="0";
unint loopindex="0";
PIN_HIGH();
for(i=0;i8;i++)
{
temp="temp">>1;
PIN_LOW();
nop();nop();nop();nop(); /*延时2us */
nop();nop();nop();nop();
PIN_HIGH();
for(loopindex=0;loopindex6;loopindex++){;} /* 延时14us */
PIN_LEAVE();
nop();
if((DATA_PORT DATA_BIT) == 0x0000)
{ temp="temp" 0x7F; }
else
{ temp="temp" | 0x80; }
PIN_HIGH();
for(loopindex=0;loopindex26;loopindex++){;} /* 延时60us */
}
*ReadByte=temp;
return;
}
/* 将读得的温度转化为十进制 */
float transform(unchar *T)
{
unchar temp="0";
float temprature="0";
temp=temp|(*(T+1)8);
temp=temp|*T;
if((temp0x0F800)==0x0F800)
{ temprature="0-"((~temp)+1)*0.0625; }
else
{ temprature="temp"*0.0625; }
return(temprature);
}
/* 读取温度主函数,返回十进制温度数 */
float read_temp()
{
Unchar buff[2];
float temprature="0";
unint loopindex="0";
while (reset()==1){}; /* 复位等待从机应答 */
write_byte(0xCC); /* 忽略ROM匹配 */
write_byte(0x44); /* 发送温度转化命令 */
for(loopindex=0;loopindex65535;loopindex++){;} /* 延时300ms,等待数模转换 */
for(loopindex=0;loopindex65535;loopindex++){;}
while(reset()==1){}; /* 再次复位,等待从机应答 */
write_byte(0xCC); /* 忽略ROM匹配 */
write_byte(0xBE); /* 发送读温度命令 */
read_byte(buff); /* 读出温度低8位 */
read_byte(buff+1); /* 读出温度高8位 */
temprature="transform"(buff);
PIN_HIGH(); /* 释放总线 */
return(temprature);
}

  4 结束语

  DS18B20是一款非常优秀的单总线数字式传感器。硬件设计简单,运行可靠。通过分析C语言编译后的汇编语言可以很明确的计算出软件延时的时间,从而满足单线总线通讯的时序要求,从而可以出色的完成DSP与DS18B20通讯的软件设计。

  5 本文创新点有两个:

  1、通过C编译器编译出来的相应的C语言的延时程序,从而得到其对应的汇编语言,再通过定时器计时,能够知道单指令周期的时间,从而能够精确的计算出软件延时程序的延时时间。

  2、通常DS18B20都是与单片机配合使用的,而本文则详细的介绍了DS18B20与DSP的结合使用方法,其区别主要是在端口的操作上和延时的控制上。

1 2

关键词: DS18B20 TMS320LF2407A 温度测量

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版