51單片機(jī)的ds18b20驅(qū)動(dòng)程序
/*******************************************************************************
* 標(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);
關(guān)鍵詞:
51單片機(jī)ds18b20驅(qū)動(dòng)程
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論