新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)的ds18b20驅(qū)動(dòng)程序

51單片機(jī)的ds18b20驅(qū)動(dòng)程序

作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
//////////////////////////////////////////////////////頭文件///////////////////////////////////////////////////////
/*******************************************************************************
* 標(biāo)題: 18b20溫度芯片驅(qū)動(dòng)程序 *
* 文件: 18b20.h 18b20.c *
* 日期: 2010-3-11 *
* 版本: 1.12(試驗(yàn)通過版)可用51hei單片機(jī)開發(fā)板 *
* 郵箱: acsdf139@163.com qq:526083029 *
* 網(wǎng)站: 無 *
********************************************************************************
* 描述: *
* 用法:首先在主程序內(nèi)添加頭文件#include"18b20.c" *
* 在程序中使用ReadTemp();獲取溫度芯片內(nèi)數(shù)據(jù) *
* 使用 temp_to_str();函數(shù)將時(shí)間數(shù)據(jù)轉(zhuǎn)換液晶字符 *
* *
********************************************************************************
*【版權(quán)】自己參照網(wǎng)上,朋友,以及書本資料上寫的,所以沒有版權(quán) *
*【聲明】此程序,可用于學(xué)習(xí),參考及實(shí)際設(shè)計(jì)中,歡迎轉(zhuǎn)載復(fù)制以及建議批評 *
*【技術(shù)支持】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 // 報(bào)警搜索指令
#define wrscratchpad1820 0x4E // 寫暫存寄存器指令
#define rescratchpad1820 0xBE // 讀暫存寄存器指令
#define copyscratchpad1820 0x48 // 復(fù)制暫存寄存器指令
#define convert1820 0x44 // 啟動(dòng)溫度轉(zhuǎn)換指令
#define recalle21820 0xB8 // 重新調(diào)出E2PROM的數(shù)據(jù)
/***********ds18b20延遲子函數(shù)*******/
extern void delaydq(uchar i);
/**********ds18b20初始化函數(shù)**********************/
extern void dqinit(void);
/***********ds18b20讀一個(gè)字節(jié)**************/
extern uchar re1820b(void);
/*************ds18b20寫一個(gè)字節(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í)
參數(shù):i(秒數(shù))
返回:無
備注:無
*************************************/
void delaydq(uchar i)
{
while(i--);
}
/*************************************
函數(shù)名:dqinit
函數(shù)功能:初始化
參數(shù):無
返回:無
備注:無
*************************************/
void dqinit(void)
{
uchar x=0;
DQ = 1; //DQ復(fù)位
delaydq(8); //稍做延時(shí)
DQ = 0; //單片機(jī)將DQ拉低
delaydq(80); //精確延時(shí) 大于 480us
DQ = 1; //拉高總線
delaydq(14);
x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
delaydq(20);
}
上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉