娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月21日(星期三)

2019年05月21日 | DS18B20-Onewire Bus-單總線 單片機讀取溫度

發布者:Lihua521 來源: eefocus關鍵字:DS18B20  單總線  單片機  讀取溫度 手機看文章 掃描二維碼
隨時隨地手機看文章

DS18B20,單片機,11.0592MHZ


#ifndef __DELAY_H__

#define __DELAY_H__

/*------------------------------------------------

 uS延時函數,含有輸入參數 unsigned char t,無返回值

 unsigned char 是定義無符號字符變量,其值的范圍是

 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時

 長度如下 T=tx2+5 uS 

------------------------------------------------*/

void delay(unsigned int i);

 

#endif

 


DS18B20_H


 


#ifndef __DS18B20_H__

#define __DS18B20_H__

 

#include     //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

#include

 

#define uchar unsigned char

#define uint   unsigned int;

/*------------------------------------------------

                    端口定義

------------------------------------------------*/

 

/*------------------------------------------------

                  函數聲明

------------------------------------------------*/

unsigned int ReadTemperature(void);

void Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(unsigned char dat);

void delay(unsigned int i);

 

#endif


delay.c


 


 


 


 


#include "delay.h"

/*------------------------------------------------

 uS延時函數,含有輸入參數 unsigned char t,無返回值

 unsigned char 是定義無符號字符變量,其值的范圍是

 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時

 長度如下 T=tx2+5 uS 

------------------------------------------------*/

/******************************************************************/

/*                    延時函數                                    */

/******************************************************************/

void delay(unsigned int i)//延時函數

{

 while(i--);

}

 


/*-----------blog.csdn.net/liuzongming1988--------------------------------------

  名稱:18B20溫度傳感器

  網站:blog.csdn.net/liuzongming1988

  內容:18B20單線溫度檢測的應用樣例程序

------------------------------------------------*/

#include"delay.h"

#include"18b20.h"

 

 

sbit DQ=P1^3;//ds18b20 端口

 

/******************************************************************/

/*                    初始化                                      */

/******************************************************************/

void Init_DS18B20(void)

{

 unsigned char x=0;

 DQ = 1;    //DQ復位

 delay(8);  //稍做延時

 DQ = 0;    //單片機將DQ拉低

 delay(300); //精確延時 大于 480us

 DQ = 1;    //拉高總線

 delay(10);

 x=DQ;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗

 delay(5);

}

 

/******************************************************************/

/*                    讀一個字節                                  */

/******************************************************************/

unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

 {

  DQ = 0; // 給脈沖信號

  dat>>=1;

  DQ = 1; // 給脈沖信號

  if(DQ)

   dat|=0x80;

  delay(5);

 }

 return(dat);

}

 

/******************************************************************/

/*                 寫一個字節                                     */

/******************************************************************/

void WriteOneChar(unsigned char dat)

{

 unsigned char i=0;

 for (i=8; i>0; i--)

 {

  DQ = 0;

  DQ = dat&0x01;

  delay(5);

  DQ = 1;

  dat>>=1;

 }

delay(5);

}

 

/******************************************************************/

/*                   讀取溫度                                     */

/******************************************************************/

unsigned int ReadTemperature(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳過讀序號列號的操作

 

WriteOneChar(0x44); // 啟動溫度轉換

delay(200);

 

Init_DS18B20();

WriteOneChar(0xCC); //跳過讀序號列號的操作 

WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度

a=ReadOneChar();   //低位

b=ReadOneChar();   //高位

 

b<<=8;

t=a+b;

 

return(t);

}

 


 


 


 


/*-----------blog.csdn.net/liuzongming1988---------------------

  名稱:DS18b20數碼管顯示

  編寫:blog.csdn.net/liuzongming1988

  內容:顯示格式 符號 xxx.x C 

        可以顯示負溫度

------------------------------------------------*/

#include //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

#include

#include

 

#include "18b20.h"

#include "delay.h"

#define uchar unsigned char

#define uint   unsigned int;

/******************************************************************/

/*                    定義端口                                    */

/******************************************************************/

sbit seg1=P2^0;

sbit seg2=P2^1;

sbit seg3=P2^2;

 

sfr dataled=0x80;//顯示數據端口

/******************************************************************/

/*                    全局變量                                    */

/******************************************************************/

uint temp;

uchar flag_get,count,num,minute,second;

uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

                                               //7段數碼管段碼表  共陰極 顯示段碼值0~ 9

//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};//

uchar  str[6];

 

void Init_Timer0(void);

 

/*------------------------------------------------

                    主函數

------------------------------------------------*/

void main (void)

{                  

unsigned char TempH,TempL,j;

Init_Timer0();

P2=0x00;  

count=0;

temp=ReadTemperature();

temp=ReadTemperature();

 

 

while(1)

{

   str[5]=0x39;         //顯示C符號

   str[1]=tab[TempH/100]; //百位溫度

   str[2]=tab[(TempH%100)/10]; //十位溫度

   str[3]=tab[(TempH%100)%10]|0x80; //個位溫度,帶小數點

   str[4]=tab[TempL];

  if(flag_get==1)       //定時讀取當前溫度

    {

  temp=ReadTemperature();

  if(temp&0x8000)

     {

     str[0]=0x40;//負號標志

     temp=~temp;  // 取反加1

temp +=1;

}

  else

     str[0]=0;

 

  TempH=temp>>4;

  TempL=temp&0x0F;

  TempL=TempL*6/10;//小數近似處理

  flag_get=0;

    }

  }

}

 

/*------------------------------------------------

                    定時器初始化子程序

------------------------------------------------*/

void Init_Timer0(void)

{

 

TMOD|=0x01;//定時器設置

TH0=0xef;

TL0=0xf0;

 

//IE=0x82;

EA=1;            //總中斷打開

ET0=1;           //定時器中斷打開

 

TR0=1;           //定時器開關打開

}

/*------------------------------------------------

                 定時器中斷子程序

------------------------------------------------*/

void Timer0_isr(void) interrupt 1 using 1

{

TH0=0xef;//定時器重裝值

TL0=0xf0;

num++;

if (num==50)

    {num=0;

  flag_get=1;//標志位有效

      }

count++;

if(count==1)

   {P2=0;

    dataled=str[0];}//數碼管掃描

if(count==2)

   {P2=1;

    dataled=str[1];}

if(count==3)

   { P2=2;

     dataled=str[2];

     }

if(count==4)

   { P2=3;

     dataled=str[3];

     }

if(count==5)

   { P2=4;

     dataled=str[4];

     }

if(count==6)

   { P2=5;

     dataled=str[5];

     count=0;}

}



關鍵字:DS18B20  單總線  單片機  讀取溫度 引用地址:DS18B20-Onewire Bus-單總線 單片機讀取溫度

上一篇:KEIL v3添加STC系列單片機庫文件 方法+頭文件庫
下一篇:IIC讀寫AT24C02代碼2——串口命令控制多頁讀寫

推薦閱讀

  從2014年“人工智能”開始成為資本關注的方向,至今有超過500家投資機構,累計投入600多億真金白銀(數據來源:億歐智庫AI創投數據庫)。尤其在2017年下半年之后,各細分賽道的市場競爭格局初定,投資階段進入中后期,一些企業的融資額已經高得令人咂舌:單筆融資金額超十億,總融資金額過百億。下面就隨網絡通信小編一起來了解一下相關內容吧?! 』蚱?..
IT之家5月16日消息 昨天,摩托羅拉推出了旗下最新手機One Vision,該機是一款Android One機型,定位中端,采用了21:9打孔屏幕,搭載三星Exynos 9609處理器。現在這款手機的國行版本也宣布了,定名為 Motorola P50,6月發布。 據悉,摩托羅拉One Vision采用6.3英寸的FHD +顯示屏,21:9的比例,左上角有一個孔用于放置2500萬像素的自拍攝...
  近日河北秦皇島科技局印發《2020年秦皇島市市級科學技術研究與發展計劃項目申報指南》,其中重點支持光伏光熱發電、風力發電、先進儲能、氫能、核能、生物質能及新能源汽車等方面開發形成一批共性關鍵技術和填補空白產品。   以下為原文 秦皇島市科學技術局關于組織申報2020年市級科學技術研究與發展計劃項目(財政資金支持部分)的通知  ...
在我們的一些物質檢測中,很多是有害的物質,如果我們對他們進行檢查時,出現接觸問題,就有可能對自己的健康造成危害,比如一些關卡檢測時,有可能存在爆炸物質,這個時候拿去檢測就會發現威脅很大,那么現在能不能找到一種辦法來解決呢?今天小編給大家推薦一個無接觸的檢測手段-拉曼光譜分析儀。山東霍爾德電子科技拉曼光譜分析儀HED-LM具有很大的優勢,...

史海拾趣

問答坊 | AI 解惑

電動汽車充電器電路拓撲的設計考慮2

4 變換器拓撲選擇 根據SAE J-1773給出的感應耦合器等效電路元件值,及上述的設計考慮,這里對適用于三種不同充電模式的變換器拓撲進行了考察。 如圖2所示,電動汽車車載部分包括感應耦合器的插孔部分及AC/DC整流及容?濾波電路。首先,對直接連 ...…

查看全部問答∨

電子溝通QQ群,39036974邀請加入

電子溝通QQ群,39036974邀請電子,軟件,硬件工程朋友加入,共同發展.牛氣沖天.…

查看全部問答∨

tsb41

老師,我做簡易數字頻率計要對輸入信號進行放大,我用高頻放大器集成塊UA733,相關資料在壓縮包中,老師看看這個行不?…

查看全部問答∨

西安外資公司尋覓終端固件開發及驗證工程師

西安某外資公司尋覓終端固件開發及驗證工程師,有興趣的請聯系我:Email:job@elite-china.cn 薪資豐厚 需要幾名…

查看全部問答∨

AD轉換后的緩存模塊

哪位大蝦做過這方面的問題:我10位的并行AD輸出,要進行緩存,打算用quartus提供的存儲模塊,但是我希望能用個雙端口的RAM來存,除了將高6位補0進行16位存儲外,又沒有直接的可10位存儲的雙端口RAM模塊   謝ing…

查看全部問答∨

GTM900 TCP 連接 數據丟包?

GTM900 TCP 丟包問題.. GTM900 在TCP 用IPSEND發送數據時, 發送十個數據,只收到6個數據.延時時間為1S,不知何因?…

查看全部問答∨

幫忙看看 drWaston的LOG

那位兄弟能幫忙解讀下面的LOG信息,謝謝! State Dump for Thread Id 0xe8c eax=00000000 ebx=033f5400 ecx=14f50038 edx=01875700 esi=07e2f2a4 edi=15753c38 eip=00f3018d esp=07e2c240 ebp=07e2f13c iopl=0        ...…

查看全部問答∨

WINCE 6.0下如何安裝驅動

有個觸摸屏裝的WINCE 6.0,想增加一個串口,使用了USB轉串口的轉換器,但是驅動不知道怎么裝上去,轉換器的驅動只有一個DLL文件和一個INF文件,請問如何安裝?…

查看全部問答∨

LF2407a的PWM+ADC+PID,不能調占空比

我用LF2407A通過PID控制PWM占空比來穩定輸出電壓在3V,但占空比不隨ADCIN0輸入的電壓而變化,不知問題在哪里?請各位高手指教?。。〕绦蛉缦拢?             .title    \\"ex.asm\\"  & ...…

查看全部問答∨

.out轉化為.hex

我把工程中生成的.out文件和hex500轉換工具和編寫的.cmd文件拷貝到同一個文件夾下,執行HEX500.EXE,沒有反應? 應該是怎么做呢?還是DOS下輸入什么命令??? 哪位大俠幫助一下,不勝感激?。。 ?

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 资中县| SHOW| 石台县| 册亨县| 阿鲁科尔沁旗| 韶山市| 友谊县| 来安县| 汝城县| 麟游县| 延川县| 台中市| 宝丰县| 县级市| 周至县| 西贡区| 油尖旺区| 美姑县| 莫力| 宁蒗| 喀喇| 玛沁县| 丰县| 新巴尔虎左旗| 怀化市| 东阿县| 依安县| 七台河市| 于都县| 南平市| 漠河县| 永宁县| 钦州市| 新郑市| 西贡区| 鹤峰县| 长武县| 滁州市| 岐山县| 桦甸市| 名山县|