新聞中心

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

        51單片機的ds18b20驅動程序

        作者: 時間:2016-12-01 來源:網絡 收藏
        //////////////////////////////////////////////////////頭文件///////////////////////////////////////////////////////
        /*******************************************************************************
        * 標題: 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);
        }
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 桐城市| 资溪县| 乐山市| 彭阳县| 上蔡县| 陵川县| 云安县| 乌兰县| 江源县| 监利县| 六枝特区| 环江| 甘德县| 图木舒克市| 右玉县| 会昌县| 上饶市| 丘北县| 四川省| 万宁市| 建昌县| 额济纳旗| 河南省| 嘉定区| 新民市| 麦盖提县| 罗平县| 文登市| 富锦市| 澄江县| 东山县| 广宗县| 绵竹市| 灵寿县| 民权县| 楚雄市| 张掖市| 河间市| 铁岭县| 吴江市| 乌兰浩特市|