//////////////////////////////////////////////////////头文件///////////////////////////////////////////////////////
/*******************************************************************************
* 标题: 18b20温度芯片驱动程序 *
* 文件: 18b20.h 18b20.c *
* 日期: 2010-3-11 *
* 版别: 1.12(实验经过版)可用51hei单片机开发板 *
* 邮箱: acsdf139@163.com qq:526083029 *
* 网站: 无 *
********************************************************************************
* 描绘: *
* 用法:首先在主程序内增加头文件#include”18b20.c” *
* 在程序中运用ReadTemp();获取温度芯片内数据 *
* 运用 temp_to_str();函数将时刻数据转化液晶字符 *
* *
********************************************************************************
*【版权】自己参照网上,朋友,以及书本材料上写的,所以没有版权 *
*【声明】此程序,可用于学习,参阅及实践规划中,欢迎转载仿制以及主张批判 *
*【技术支持】qq:526083029 小张 *
********************************************************************************/
#ifndef _18B20_H_
#define _18B20_H_
#define uchar unsigned char
#define rerom1820 0x33 // 读ROM指令
#define matchrom1820 0x55 // 匹配ROM指令
#define skiprom1820 0xCC // 越过ROM指令
#define searchrom1820 0xF0 // 查找ROM指令
#define alarmsearch1820 0xEC // 报警查找指令
#define wrscratchpad1820 0x4E // 写暂存寄存器指令
#define rescratchpad1820 0xBE // 读暂存寄存器指令
#define copyscratchpad1820 0x48 // 仿制暂存寄存器指令
#define convert1820 0x44 // 发动温度转化指令
#define recalle21820 0xB8 // 从头调出E2PROM的数据
/***********ds18b20推迟子函数*******/
extern void delaydq(uchar i);
/**********ds18b20初始化函数**********************/
extern void dqinit(void);
/***********ds18b20读一个字节**************/
extern uchar re1820b(void);
/*************ds18b20写一个字节****************/
extern void wr1820b(uchar dat);
extern void ReadTemp(void);
extern void temp_to_str();
#endif
///////////////////////////////////////////////////////////c程序//////////////////////////////////////////////
#include
#include “18b20.h”
#include
//管脚界说
sbit DQ=P3^0;
uchar TempBuffer[8];
uchar temp_value,temp2,xs,fflag;
/*************************************
函数名:delaydq
函数功用:延时
参数:i(秒数)
回来:无
补白:无
*************************************/
void delaydq(uchar i)
{
while(i–);
}
/*************************************
函数名:dqinit
函数功用:初始化
参数:无
回来:无
补白:无
*************************************/
void dqinit(void)
{
uchar x=0;
DQ = 1; //DQ复位
delaydq(8); //稍做延时
DQ = 0; //单片机将DQ拉低
delaydq(80); //准确延时 大于 480us
DQ = 1; //拉高总线
delaydq(14);
x=DQ; //稍做延时后 假如x=0则初始化成功 x=1则初始化失利
delaydq(20);
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/255007.html