您的位置 首页 汽车

DS18B20延时函数版

程序运行效果图:晶振12MHZ常温下测量0–999度includereg51h>includeintrinsh>defineucharunsignedchardefineuint

程序运转效果图:

//晶振12MHZ 常温下丈量0–99.9度

#include
#include
#define uchar unsigned char
#define uint unsigned int
sfr wdtrst=0xa6;
uchar code seg7[]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60}; //数码管整数
sbit dec=P0^5;//数码管小数位
sbit Dq=P3^4; //DS18B20读写口
sbit alarm=P3^3; //喇叭报警位
uint warning=0;//报警温度变量
//——————-
void rst() //看门狗体系复位函数晶振是12MHZ则看门狗主动复位时刻为16ms
{
wdtrst=0x1e;
wdtrst=0xe1;
}
//—————————-
void alarmstart()interrupt 3 //报警中止子函数
{
if(warning>270)//温度大于27度喇叭报警
{alarm=~alarm;}
TH1=0xff;
TL1=0x60;
TF1=0;
EA=1;
ET1=1;
}

//—————————–延时函数集———————
void delay10us() //延时10us
{
_nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_();
}
//———-
void delay610us() //延时610us
{
uchar i,j;
for(i=0;i<2;i++)
for(j=0;j<100;j++);
}

//———-
void delay34us() //延时34us
{
uchar i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++);
}
//———-
void delay(uint k) //常用延时函数
{
uchar i,j;
for(i=0;ifor(j=0;j<100;j++);
}

//—————–DS18B20初始化函数———-
uchar init18b20()
{
uint k=0;
Dq=0;
delay610us(); //延时610us
Dq=1; //开释总线
delay10us(); //延时10us
while(Dq==1) //18b20应对信号判别是否超时
{
if(k<800)k++;
else return 1;
}
k=0;
while(Dq==0) //18b20是否开释判别
{
if(k<800)k++;
else return 2;
}
return 3; //发动成功回来 3
}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部