新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機的ds18b20驅動程序

51單片機的ds18b20驅動程序

作者: 時間:2016-12-01 來源:網絡 收藏
//////////////////////////////////////////////////////頭文件///////////////////////////////////////////////////////
/*******************************************************************************
* 標題: 18b20溫度芯片驅動程序 *
* 文件: 18b20.h 18b20.c *
* 日期: 2010-3-11 *
* 版本: 1.12(試驗通過版)可用51hei單片機開發(fā)板 *
* 郵箱: acsdf139@163.com qq:526083029 *
* 網站: 無 *
********************************************************************************
* 描述: *
* 用法:首先在主程序內添加頭文件#include"18b20.c" *
* 在程序中使用ReadTemp();獲取溫度芯片內數(shù)據(jù) *
* 使用 temp_to_str();函數(shù)將時間數(shù)據(jù)轉換液晶字符 *
* *
********************************************************************************
*【版權】自己參照網上,朋友,以及書本資料上寫的,所以沒有版權 *
*【聲明】此程序,可用于學習,參考及實際設計中,歡迎轉載復制以及建議批評 *
*【技術支持】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的數(shù)據(jù)
/***********ds18b20延遲子函數(shù)*******/
extern void delaydq(uchar i);
/**********ds18b20初始化函數(shù)**********************/
extern void dqinit(void);
/***********ds18b20讀一個字節(jié)**************/
extern uchar re1820b(void);
/*************ds18b20寫一個字節(jié)****************/
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;
/*************************************
函數(shù)名:delaydq
函數(shù)功能:延時
參數(shù):i(秒數(shù))
返回:無
備注:無
*************************************/
void delaydq(uchar i)
{
while(i--);
}
/*************************************
函數(shù)名:dqinit
函數(shù)功能:初始化
參數(shù):無
返回:無
備注:無
*************************************/
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);
}
上一頁 1 2 下一頁

評論


技術專區(qū)

關閉