/****************************************Copyright (c)****************************************************
**
**
**
**--------------File Info---------------------------------------------------------------------------------
** File name:
** Last modified Date:
** Last Version:
** Descriptions:
**--------------------------------------------------------------------------------------------------------
** Created by: FiYu
** Created date: 2015-7-8
** Version: 1.0
** Descriptions: DS18B20温度传感器实验
**--------------------------------------------------------------------------------------------------------
** Modified by: FiYu
** Modified date:
** Version:
** Descriptions:
** Rechecked by:
**********************************************************************************************************/
/****-----参考:宏晶科技的有关资料及程序-------***********/
#include "ds18b20.h"
/**************************************
功能描述:延时函数
入口参数:uint x ,该值为1时,延时1ms
返回值:无
***************************************/
void delay_ms(unsigned int x)
{
unsigned int j,i;
for(j=0;j<x;j++)
{
for(i=0;i<1100;i++);
}
}
/**************************************
功能描述:延时函数
入口参数:uint x ,该值为1时,延时1us
返回值:无
***************************************/
void DelayXus(unsigned char n)
{
while (n--) //DJNZ 4
{
_nop_(); //NOP 1+1=12
_nop_();
}
}
/******************************************************************************
* 描 述 : ds18b20初始化
* 入 参 : 无
* 返回值 : 初始化成功:0
* 初始化失败:1
*****************************************************************************/
unsigned char Init_Ds18b20(void)
{
unsigned char Status = 0x00;
unsigned int CONT_1 = 0;
unsigned char Flag_1 = 1;
Ds18b20IO = 1; //DQ复位
DelayXus(260); //稍做延时
Ds18b20IO = 0; //单片机将DQ拉低
DelayXus(750); //精确延时 大于 480us 小于960us
Ds18b20IO = 1; //拉高总线
while((Ds18b20IO != 0)&&(Flag_1 == 1)) //等待ds18b20响应,具有防止超时功能
{ //等待约60ms左右
CONT_1++;
DelayXus(10);
if(CONT_1 > 8000)Flag_1 = 0;
Status = Ds18b20IO;
}
Ds18b20IO = 1;
DelayXus(100);
return Status; //返回初始化状态
}
/******************************************************************************
* 描 述 : Ds18b20写操作:写入1个字节
* 入 参 : 无
* 返回值 : 无
*****************************************************************************/
void Ds18b20Write(unsigned char dat)
{
unsigned int i;
for(i=0;i<8;i++)
{
if((dat & 0x01))
{
Ds18b20IO = 0;
DelayXus(1);
Ds18b20IO = 1;
DelayXus(60);
}
else
{
Ds18b20IO = 0;
DelayXus(60);
Ds18b20IO = 1;
DelayXus(1);
}
dat >>= 1;
}
}
/******************************************************************************
* 描 述 : Ds18b20读操作:读出1个字节
* 入 参 : 无
* 返回值 : 读取的1字节数据
*****************************************************************************/
unsigned char Ds18b20Read(void)
{
unsigned char Value = 0x00;
unsigned int i;
Ds18b20IO = 1;
DelayXus(10);
for(i=0;i<8;i++)
{
Value >>= 1;
Ds18b20IO = 0;// 给脉冲信号
DelayXus(1);
Ds18b20IO = 1;// 给脉冲信号
DelayXus(1);
if(Ds18b20IO == 1) Value |= 0x80;
DelayXus(60);
}
return Value;
}
/******************************************************************************
* 描 述 : 温度读取函数 不带小数位
* 入 参 : 无
* 返回值 : 温度值
*****************************************************************************/
unsigned char ReadDs18B20(void)
{
unsigned char V1,V2; //定义高低8位 缓冲
unsigned char temp; //定义温度缓冲寄存器
Init_Ds18b20();
Ds18b20Write(0xcc); // 跳过读序号列号的操作
Ds18b20Write(0x44); // 启动温度转换
Init_Ds18b20();
Ds18b20Write(0xcc); //跳过读序号列号的操作
Ds18b20Write(0xbe); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
V1 = Ds18b20Read(); //低位
V2 = Ds18b20Read(); //高位
temp = ((V1 >> 4)+((V2 & 0x07)*16)); //转换数据
return temp;
}
/*********************************END FILE*************************************/
没有合适的资源?快使用搜索试试~ 我知道了~
STC15W4K32S4单片机 - DS18B20温度传感器 串口调试助手显示实验例程KEIL源码.zip
共19个文件
bak:2个
c:2个
lst:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 18 下载量 68 浏览量
2022-04-12
19:26:56
上传
评论 4
收藏 58KB ZIP 举报
温馨提示
STC15W4K32S4单片机 DS18B20温度传感器 串口调试助手显示实验例程KEIL源码 int main() { unsigned char strTemp[6]; unsigned char ucTemp; ///////////////////////////////////////////////// // 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用 //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 ///////////////////////////////////////////////// P0M1 = 0; P0M0 = 0; //设置P0.0~P0.7为准双向口 P1M1 = 0; P1M0 = 0; //设置P1.0~P1.7为准双向口 P2M1 = 0; P2M0 = 0; //设置P2.0~P2.7为准双向口 P3M
资源推荐
资源详情
资源评论
收起资源包目录
IAP15W4K61S4 单片机 - DS18B20温度传感器 串口调试助手显示实验例程KEIL源码.zip (19个子文件)
IAP15W4K61S4 单片机 - DS18B20温度传感器 串口调试助手显示实验例程KEIL源码
DS18B20
main.OBJ 10KB
DS18B20.uvproj 13KB
DS18B20.uvgui_qin.bak 71KB
DS18B20.uvgui.qin 71KB
DS18B20.plg 515B
main.c 4KB
ds18b20.c 5KB
DS18B20.uvgui.lenovo 71KB
main.LST 7KB
DS18B20 19KB
DS18B20.M51 14KB
ds18b20.LST 8KB
ds18b20.OBJ 10KB
DS18B20.lnp 59B
DS18B20.hex 2KB
ds18b20.h 420B
DS18B20.uvopt 6KB
DS18B20.uvgui_lenovo.bak 71KB
STC15F2K60S2.h 13KB
共 19 条
- 1
探索者我有我路向
- 粉丝: 283
- 资源: 1815
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页