您的位置 首页 电路

51单片机驱动DS18B20温度传感器程序及心得

关于DS18B20温度传感器,在没有硬件设备的辅助下,写内部程序有些困难,因为看不到实际信号波形。对于单片机,我。。。渐渐的有些心灰意冷

关于DS18B20温度传感器,在没有硬件设备的辅佐下,写内部程序有些困难,由于看不到实践信号波形。关于单片机,我。。。逐渐的有些灰心丧气。。尽管把握了1_WIRE总线,却少了许多高兴,下雨了。。。它是我的喜好,我付出了许多,可是我看不到实践的远景。。以我个人之力,要步入顶级芯片范畴,很困难,在这里,采棉花是个普遍性的大问题,大型机械设备缺点许多,假如以微操控芯片进步精度,我想效益会相当可观,可是技能瓶颈难以逾越。。。硬件研制,失利了,一切投入赴之东流,成功了,报答丰盛。现在,各行各业都处于饱满,没有老练先进的技能,很难有立锥之地,,,,,我开端从头审视我的挑选。。。。。。困难。。

/*
树立时刻: 2013年5月2日;

前语: 我用软件仿真,测算延时时刻,作用不错,可是依据教程,复位时,先开释总线
(wd高电平),然后主机拉低wd,继续时刻为400–960奇妙.后主机拉高wd,继续15-
60奇妙,后 从机,会拉低电平继续时刻是60–240奇妙(此刻表明复位成功),假如
从机没有将总线拉低,则复位失利.然后,主机拉高电平60–240奇妙.复位完毕;
可,试验证明,在,从机,拉低总线电平后,继续必定时刻,从机还会将总线拉高!这
是教程中的一个严重过错!
temperature sensor reset module finishing time: 23:08:00
( 温度 传感器 复位 模块 完结 时刻 )
temperature sensor 操作过程:
1. reset DS18B20;
2. 宣布Skip ROM 指令(CCH); (跳动ROM指令)
3. 宣布Convert T指令(44H); (温度转化指令)
4. reset DS18B20;
5. 宣布Skip ROM指令(CCH);(跳动ROM指令)
6. 宣布读取指令(BEH);
7. 读出两个字节的温度;
8. 温度格局转化;

2013年5月8日22:56:44

DS18B20 Temperaturesensorread data module accomplish;
( 温度传感器读 数据 模块 完结 )

现在还有温度显现模块没有完结,硬件是1602液晶屏……
2013年5月9日19:32:31
今日,温度传感器的程序主体结构悉数完结!!!!!
不容易啊,值得庆祝一下!!!!!!
总共写了7天程序!{陆陆续续};
喝个 品酸乳果汁…….
*/
#include
typedef unsigned char uint8 ;
typedef unsigned int uint16;

sbit wd = P3^2; //界说数据单总线;
sbit e =P1^5; // 界说1602液晶显现器数据使能端口;
sbit rs=P1^0; // 界说数据/指令挑选端口;
sbit rw=P1^1; // 界说 读/写 挑选端口;
sbit BF=P0^7; // 界说繁忙位;
bit w=0; //界说一个大局一位变量;

//===========1602液晶显现器模块;===============
busy() //液晶屏繁忙检测函数;
{ e=0;
rs=0;
rw=0;
P0=0xff;
do
{ e=0; //使能位清零;
rs=0; //指令;
rw=1; //读;
e=1; //数据传输发动;
}while(BF); //假如BF==0;则液晶处于闲暇状况;
e=0;
}
play_data(uint8 wr) //液晶写入数据;
{
busy(); //繁忙检测;
P0=wr; //装载数据;
rs=1; //数据;
rw=0; //写入;
e=1; //传输开端;
e=0; //传输完毕;
}
play_cmd(uint8 cmd) //液晶写入指令;
{
busy(); //繁忙检测;
P0=cmd; //装载数据;
rs=0; //指令;
rw=0; //写入;
e=1; //传输开端;
e=0; //传输完毕;
}
reset_1602() //1602液晶显现器初始化函数;
{
play_cmd(0x38);
play_cmd(0x0c);
play_cmd(0x06);
play_cmd(0x01);

}

//=========温度传感器延时模块============================

// sbit led= P1^0;
delay(uint8 num ) //假如unm等于1;延时16.28奇妙;
{
while(num–); //假如num大于一,则16.28+(num-1)*6.51.
}
delay2() //此函数延时3.26微秒;
{
uint8 j=0;
j=9;

}

delay3()
{
uint16 s=60000;
while(s–);

}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部