久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2582|回復: 0
打印 上一主題 下一主題
收起左側

18b20的初始化程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:114851 發表于 2016-4-18 01:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "DSP28x_Project.h"
/************************************************************************
以下是DS18B20的操作程序
************************************************************************/
        //設置全局變量,專門用于嚴格延時

#define nop() {asm(" NOP ");}
#define DATA_PORT  GpioCtrlRegs.GPBDIR.all
#define DATAIN     GpioDataRegs.GPBDAT.bit.GPIO34
#define PIN_HIGH() {EALLOW;DATA_PORT|=0x000F;EDIS;DATAIN=1;}      //
#define PIN_LOW()  {EALLOW;DATA_PORT|=0x000F;EDIS;DATAIN=0;}
#define PIN_LEAVE() {EALLOW;DATA_PORT&=~0x000F;EDIS;}//
/*****************************************************
函數功能:將DS18B20傳感器初始化,讀取應答信號
出口參數:flag
***************************************************/
unsigned char Init_DS18B20(unsigned char xx)
{
unsigned char flag;         //儲存DS18B20是否存在的標志,flag=0,表示存在;flag=1,表示不存在
flag=xx;
PIN_HIGH();           //先將數據線拉高
DELAY_US(6); //略微延時約6微秒

PIN_LOW();           //再將數據線從高拉低,要求保持480~960us
DELAY_US(600);  //略微延時約600微秒
              //以向DS18B20發出一持續480~960us的低電平復位脈沖
PIN_HIGH(); //釋放數據線(將數據線拉高)
DELAY_US(1);

DELAY_US(30);  //延時約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)
PIN_LEAVE();
  if(DATAIN==0)
flag=0;          //讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在)
  else
          flag=1;
DELAY_US(600);  //延時足夠長時間,等待存在脈沖輸出完畢

return (flag);    //返回檢測成功標志
}
/*************************************************/
/*                讀字節子函數                  */
/*************************************************/
unsigned char ReadOneChar(void)
  {
    unsigned char i=0,dat=0;
    for (i=8;i>0;i--)
    {
      dat>>=1;//讀到數據后右移一位
      PIN_LOW();
          DELAY_US(6);//6us
          PIN_HIGH();        //數據線置高電平,釋放總線
      DELAY_US(8);//延時8us
     PIN_LEAVE();
      if(DATAIN)
              dat|=0x80;//取回最高位數據
      else
              dat|=0x00;
      DELAY_US(30);//延時30us
         PIN_HIGH();         //釋放總線,恢復高電平
    }
   return(dat);
  }
/*************************************************/
/*                寫字節子函數                  */
/*************************************************/
void WriteOneChar(unsigned char dat)
  {

        unsigned char i;
    for(i=8;i>0;i--)
     {
       PIN_LOW();
                DELAY_US(14);//14us延時
       if(dat&0x01==1)          //寫入一位數據
                   PIN_HIGH();
       if(dat&0x01==0)
               PIN_LOW();
                    DELAY_US(40);        //延時40微秒,等待DS18B20采樣
              PIN_HIGH(); //釋放總線
        dat>>=1;          //右移一位數據
        DELAY_US(4);
     }   }



/*****************************************************
函數功能:做好讀溫度的準備
***************************************************/
unsigned char ReadyReadTemp(unsigned char xx)
{
        unsigned char flag;
     flag= Init_DS18B20(xx);     //將DS18B20初始化
                WriteOneChar(0xCC); // 跳過讀序號列號的操作
                WriteOneChar(0x44); // 啟動溫度轉換
                 DELAY_US(20000); //轉換一次需要延時一段時間

                flag=Init_DS18B20(flag);     //將DS18B20初始化
                WriteOneChar(0xCC); //跳過讀序號列號的操作
                WriteOneChar(0xBE); //讀取溫度寄存器,前兩個分別是溫度的低位和高位
                return(flag);
}



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久久久久网站 | 成人三级在线播放 | 伊人伊成久久人综合网站 | 精品欧美乱码久久久久久1区2区 | 亚洲精品一区中文字幕乱码 | 99精品国产一区二区三区 | 欧美激情视频网站 | 日本一二三区在线观看 | 在线色网址 | 一区二区久久精品 | 亚洲精品视频观看 | 亚洲高清在线 | www..com18午夜观看 | a在线观看| 亚洲第1页 | 国产免费福利小视频 | 伊人性伊人情综合网 | 日韩av在线中文字幕 | 国产综合精品一区二区三区 | 国产成人精品免费视频大全最热 | 中文字幕精品一区二区三区在线 | 久久99精品国产自在现线小黄鸭 | 久久精品久久久 | 免费黄色的网站 | 麻豆精品一区二区三区在线观看 | 91就要激情 | 中文字幕视频一区 | a看片 | 欧美 日韩 国产 成人 在线 | 金莲网 | 亚洲人人 | 国产在线一区二区 | 日韩欧美中文字幕在线视频 | 日韩成人av在线播放 | 久久久久国产成人精品亚洲午夜 | 精品国产乱码久久久久久蜜柚 | 性色av一区 | 一区二区三区视频在线观看 | 亚洲成人三级 | 亚洲欧美在线一区 | 日日夜夜天天久久 |