标题:
DS18B20头文件和零部件配置,很好用的
[打印本页]
作者:
丶LW丶
时间:
2017-5-12 23:57
标题:
DS18B20头文件和零部件配置,很好用的
这里是一些常用的头文件和零部件配置。很好用的,大家可以试试。
0.png
(65.8 KB, 下载次数: 78)
下载附件
2017-5-13 03:51 上传
单片机源程序如下:
#include <STC12C5A60S2.H>
#include "ds18b20.h"
#include "delay.h"
sbit IO_18B20 = P3^5; //DS18B20通信引脚
unsigned int temp;
float f;
bit Get18B20Ack()
{
bit ack;
EA = 0;
IO_18B20 = 0;
delay_us(500); //500us复位脉冲
IO_18B20 = 1;
delay_us(60); //延时60us
ack = IO_18B20; //读取存在脉冲
while(!IO_18B20);//等待脉冲结束
EA = 1;
return ack;
}
void Write18B20(unsigned char dat)
{
unsigned char mask;
EA = 0;
for(mask=0x01; mask!= 0; mask<<=1) //低位在先,依次移出8个bit
{
IO_18B20 = 0;
delay_us(2); //产生2us低电平脉冲
if((mask&dat) == 0) //输出bit值
IO_18B20 = 0;
else
IO_18B20 = 1;
delay_us(60); //延时60us后拉高通信引脚
IO_18B20 = 1;
}
EA = 1;
}
unsigned char Read18B20()
{
unsigned char dat;
unsigned char mask;
EA = 0;
for(mask=0x01; mask!=0; mask<<=1) //低位在先,依次采集8位bit
{
IO_18B20 = 0;
delay_us(2); //2us低电平脉冲
IO_18B20 = 1; //结束低电平脉冲,等待18B02输出数据
delay_us(3); //延时
if(!IO_18B20)
dat &= ~mask;
else
dat |= mask;
delay_us(60);
}
EA = 1;
return dat;
}
bit Start18B20()
{
bit ack;
ack = Get18B20Ack(); //执行总线复位,并获取应答
if(ack == 0)
{
Write18B20(0xCC); //跳过ROM操作
Write18B20(0x44); //启动一次温度转换
}
return ~ack;
}
unsigned int Get18B20Temp()
{
bit ack;
unsigned char LSB, MSB; //定义16bit温度值的低字节
Start18B20(); //每次读取都要设置18b20模式
delay_ms(750); //温度转换启动后,等待它转换完毕
ack = Get18B20Ack();
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
DS18B20.zip
(36.1 KB, 下载次数: 20)
2017-5-12 23:57 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
tt98
时间:
2020-5-29 08:50
看贴回贴是美德!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1