您的位置 首页 主动

根据ARM9的18B20温度传感器程序

18B20温度传感器,典型的时序操作器件,用51单片机写很方便,可是把这现成的程序移植到FPGA、ARM、430上面,还需要一定的翻译功底。—–

18B20温度传感器,典型的时序操作器材,用51单片机写很便利,但是把这现成的程序移植到FPGA、ARM、430上面,还需要必定的翻译功底。

//————————————————————————————-
//函数称号:dmsec //进口参数:count //函数功用:延时子程序
//————————————————————————————-
void dmsec(uint count) { uchar i;
while(count–) {
for(i=0;
i<125;
i++);
}
}
//————————————————————————————-
//函数称号:tmreset //进口参数:无 //函数功用:
//————————————————————————————-
void tmreset(void) {
ushort i;
dq=0;
i=343;
while(i>0) i–;
//大约900us dq=1;
i=13;
while(i>0) i–;
} //————————————————————————————-
//函数称号:tmpre //进口参数:无 //函数功用:等候DS18B20应对
//————————————————————————————-
void tmpre(void) {
uchar i;
while(dq);
while(~dq);
i=13;
while(i>0) i–;
} //————————————————————————————-
//函数称号:tmrbit //进口参数:无 //返回值: dat //函数功用:在总线上读一位
//————————————————————————————-
bit tmrbit(void) {
uchar i;
bit dat;
dq=0;
i++;
dq=1;
i++;
i++;
dat=dq;
i=30;
while(i>0) i–;
return(dat);
} //————————————————————————————-
//函数称号:tmrbyte //进口参数:无 //返回值: dat //函数功用:读一个字节
//————————————————————————————-
uchar tmrbyte(void) {
uchar i,j,dat=0;
for(i=1;i<=8;i++) {
j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
} //————————————————————————————-
//函数称号:tmwbyte //进口参数:dat //函数功用:写指令
//————————————————————————————-
void tmwbyte(uchar dat) {
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++) {
testb=dat&0x01;
dat=dat>>1;
if(testb) {
dq=0;
//写1 i++;
i++;
dq=1;
i=27;
while(i>0) i–;
}
else {
dq=0;
//写0 i=27;
while(i>0) i–;
dq=1;
i++;
i++;
}
}
} //————————————————————————————-
//函数称号:tmrbyte //进口参数:无 //函数功用:读取温度值
//————————————————————————————-
void read_tr() {
uchar a,b;
ushort y;
tmreset();
tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0x44);
dmsec(100);
tmreset();
tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
a=tmrbyte();
//l b=tmrbyte();
//h y=b&0x0f;
y=y<<8;
y=a|y;
if(y>0x800) {
y=0x1000-y;
bjTr=cal12bit(y);
bjTr=bjTr+0x8000;
}
else
{
bjTr=cal12bit(y);
}
} //12位精度
void temp_init(void) {
tmreset();
tmpre();
tmwbyte(0xcc);
tmwbyte(0x4e);
tmwbyte(0x88);
tmwbyte(0x44);
tmwbyte(0x7f);
tmreset();
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/259992.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部