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

歷史上的今天

今天是:2025年03月28日(星期五)

正在發生

2020年03月28日 | stm32---DS18b20

發布者:溫文儒雅 來源: eefocus關鍵字:stm32  DS18b20  溫度傳感器 手機看文章 掃描二維碼
隨時隨地手機看文章

一個一線接口的溫度傳感器

DS18B20 發送所有的命令和數據都是字節的低位在前

每個器件都有自己的地址序列號

可以設置測量精度有四種,9---12位(0.5℃,0.25℃,0.125℃和 0.0625℃。),出場默認12位最高精度


高5位是0-->溫度大于0, 高5位是1-->溫度小于0

12位精度時,測量溫度大于0,溫度 = 測量數值 x 0.0625;

測量溫度小于0, 溫度 = (測量數值取反+1) x 0.0625


初始化時序

復位 : 引腳配置為輸出模式。主機輸出低電平 時間 480us ~ 960us,以產生復位脈沖后輸出高電平線延時 15~60 us。

檢查 :引腳配置為接收模式。接著 DS18B20 拉低總線 60~240 us,以產生低電平應答脈沖,若為低 電平,還要做延時,其延時的時間從外部上拉電阻單總線拉高算起最少要 480 us


寫1 :主機輸出低電平延時2us,然后輸出高電平延時60us

寫0 :主機輸出高電平延時60us,然后輸出低電平延時2us


讀時序:主機輸出低電平延時 2us,然后主機轉入輸入模式延 時 12us,然后讀取單總線當前的電平,然后延時 50us。


DS18B20 的典型溫度讀取過程為:復位→發 SKIP ROM 命令( 0XCC)→發開始 轉換命令( 0X44)→延時→復位→發送 SKIP ROM 命令( 0XCC)→發讀存儲器 命令( 0XBE)→連續讀出兩個字節數據(即溫度)→結束。


ds18b20.c


#include "ds18b20.h"

#include "SysTick.h"

 

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

* 函 數 名         : DS18B20_IO_IN

* 函數功能         : DS18B20_IO輸入配置    

* 輸    入         : 無

* 輸    出         : 無

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

void DS18B20_IO_IN(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

    

    GPIO_InitStructure.GPIO_Pin=DS18B20_PIN;

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉輸入

    GPIO_Init(DS18B20_PORT,&GPIO_InitStructure);

}

 

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

* 函 數 名         : DS18B20_IO_OUT

* 函數功能         : DS18B20_IO輸出配置    

* 輸    入         : 無

* 輸    出         : 無

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

void DS18B20_IO_OUT(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

    

    GPIO_InitStructure.GPIO_Pin=DS18B20_PIN;

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出

    GPIO_Init(DS18B20_PORT,&GPIO_InitStructure);

}

 

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

* 函 數 名         : DS18B20_Reset

* 函數功能         : 復位DS18B20  

* 輸    入         : 無

* 輸    出         : 無

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

void DS18B20_Reset(void)       

{                 

    DS18B20_IO_OUT(); //SET PG11 OUTPUT

    DS18B20_DQ_OUT=0; //拉低DQ

    delay_us(750);    //拉低750us

    DS18B20_DQ_OUT=1; //DQ=1 

    delay_us(15);     //15US

}

 

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

* 函 數 名         : DS18B20_Check

* 函數功能         : 檢測DS18B20是否存在

* 輸    入         : 無

* 輸    出         : 1:未檢測到DS18B20的存在,0:存在

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

u8 DS18B20_Check(void)     

{   

    u8 retry=0;

    DS18B20_IO_IN();//SET PG11 INPUT     

    while (DS18B20_DQ_IN&&retry<200)

    {

        retry++;

        delay_us(1);

    };

    if(retry>=200)return 1;

    else retry=0;

    while (!DS18B20_DQ_IN&&retry<240)

    {

        retry++;

        delay_us(1);

    };

    if(retry>=240)return 1;     

    return 0;

}

 

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

* 函 數 名         : DS18B20_Read_Bit

* 函數功能         : 從DS18B20讀取一個位

* 輸    入         : 無

* 輸    出         : 1/0

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

u8 DS18B20_Read_Bit(void)            // read one bit

{

    u8 data;

    DS18B20_IO_OUT();//SET PG11 OUTPUT

    DS18B20_DQ_OUT=0; 

    delay_us(2);

    DS18B20_DQ_OUT=1; 

    DS18B20_IO_IN();//SET PG11 INPUT

    delay_us(12);

    if(DS18B20_DQ_IN)data=1;

    else data=0;     

    delay_us(50);           

    return data;

}

 

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

* 函 數 名         : DS18B20_Read_Byte

* 函數功能         : 從DS18B20讀取一個字節

* 輸    入         : 無

* 輸    出         : 一個字節數據

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

u8 DS18B20_Read_Byte(void)    // read one byte

{        

    u8 i,j,dat;

    dat=0;

    for (i=1;i<=8;i++) 

    {

        j=DS18B20_Read_Bit();

        dat=(j<<7)|(dat>>1);

    }                           

    return dat;

}

 

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

* 函 數 名         : DS18B20_Write_Byte

* 函數功能         : 寫一個字節到DS18B20

* 輸    入         : dat:要寫入的字節

* 輸    出         : 無

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

void DS18B20_Write_Byte(u8 dat)     

{             

    u8 j;

    u8 testb;

    DS18B20_IO_OUT();//SET PG11 OUTPUT;

    for (j=1;j<=8;j++) 

    {

        testb=dat&0x01;

        dat=dat>>1;

        if (testb) 

        {

            DS18B20_DQ_OUT=0;// Write 1

            delay_us(2);                            

            DS18B20_DQ_OUT=1;

            delay_us(60);             

        }

        else 

        {

            DS18B20_DQ_OUT=0;// Write 0

            delay_us(60);             

            DS18B20_DQ_OUT=1;

            delay_us(2);                          

        }

    }

}

 

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

* 函 數 名         : DS18B20_Start

* 函數功能         : 開始溫度轉換

* 輸    入         : 無

* 輸    出         : 無

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

void DS18B20_Start(void)// ds1820 start convert

{                                          

    DS18B20_Reset();       

    DS18B20_Check();     

    DS18B20_Write_Byte(0xcc);// skip rom

    DS18B20_Write_Byte(0x44);// convert

 

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

* 函 數 名         : DS18B20_Init

* 函數功能         : 初始化DS18B20的IO口 DQ 同時檢測DS的存在

* 輸    入         : 無

* 輸    出         : 1:不存在,0:存在

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

u8 DS18B20_Init(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

 

    RCC_APB2PeriphClockCmd(DS18B20_PORT_RCC,ENABLE);

 

    GPIO_InitStructure.GPIO_Pin=DS18B20_PIN;

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

    GPIO_Init(DS18B20_PORT,&GPIO_InitStructure);

 

    DS18B20_Reset();

    return DS18B20_Check();

}  

 

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

* 函 數 名         : DS18B20_GetTemperture

* 函數功能         : 從ds18b20得到溫度值

* 輸    入         : 無

* 輸    出         : 溫度數據

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

float DS18B20_GetTemperture(void)

{

    u16 temp;

    u8 a,b;

    float value;

    DS18B20_Start();                    // ds1820 start convert

    DS18B20_Reset();

    DS18B20_Check();     

    DS18B20_Write_Byte(0xcc);// skip rom

    DS18B20_Write_Byte(0xbe);// convert     

    a=DS18B20_Read_Byte(); // LSB   

    b=DS18B20_Read_Byte(); // MSB   

[1] [2]
關鍵字:stm32  DS18b20  溫度傳感器 引用地址:stm32---DS18b20

上一篇:stm32---紅外遙控
下一篇:stm32---DMA基礎

推薦閱讀

3月27日,重慶市經濟和信息化委員會、重慶市兩江新區管委會與紫光集團正式簽約,設立紫光智能安防+人工智能產品基地、紫光金融信息服務有限公司、紫光云(南方)總部、數字重慶技術有限公司。重慶市唐良智市長、吳存榮常務副市長等市領導出席了簽約儀式。這標志著重慶市人民政府與紫光集團的戰略合作,進入了全面落地實施階段。產業項目均在未來戰略性新興...
根據市場調研公司eMarketer 的數據顯示,2017 年,3,560 萬美國消費者每個月至少使用一次聲控設備,并且該數字以近 50% 的復合年均增長率增長。 未來的市場預測也比較樂觀。Juniper Research 預測,到 2022 年,大多數美國家庭中都將安裝Amazon Echo、Google Home、Apple HomePod 和Sonos One 等智能設備。他們還預測,將會有7,000萬家庭在...
Part1 棧初始化一、滿/空棧1.1 滿棧:當堆棧指針SP總是指向最后壓入堆棧的數據(ARM采用)1.2 空棧:當堆棧指針SP總是指向下一個將要放入數據的空位置 二、升/降 棧根據入棧時,SP指針的移動方向分:若從低——》高 為升棧,從高到低為降棧(ARM使用)三、棧幀定義:一個函數所使用的那一部分棧,稱為棧幀棧幀的兩個邊界 :fp(r11) 、 sp(r13)三、...
——國網冀北公司新能源云應用紀實 在今年全國政協十三屆四次會議新聞發布會上,新聞發言人郭衛民表示,北京冬奧會、冬殘奧會競賽場館已全部完工,籌辦工作進入全力沖刺關鍵時期。2022年北京冬奧會將在奧運史上首次實現全部場館100%綠色電能供應,冀北電網肩負著為“綠色冬奧”提供清潔安全、經濟高效電能的重要使命。 張北換流站 為促進新能源...

史海拾趣

問答坊 | AI 解惑

LED車燈將成未來車用照明市場主流

說到LED大家都應該不陌生,并且應該對三星一款全新LED電視廣告有著深刻印象吧,顛覆傳統電視標準,革新靚光畫質,2.99cm纖薄如紙的機身,無鉛綠色環保的同時還節能省電,如此一來便受到廣大消費者的青睞,LED電視以超薄、節能的亮點成為新寵兒隨著L ...…

查看全部問答∨

請教串口程序問題

#include #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]=\"I get \"; void init() {         TMOD=0x20;     //確定T1的工作方式     & ...…

查看全部問答∨

關于KEIL生成文件大小問題

我寫了個小程序,最后生成文件顯示Program Size: data=8.0 xdata=0 code=2038 我不是很明白 data xdata  code 代表什么意思,請高手指教, 還有就是他生成的HEX文件是5.54K真是搞不懂,我用的是AT89C2051不知到能不能裝下?!?

查看全部問答∨

[求助]關于Tomasulo算法軟件模擬的問題

關于Tomasulo算法軟件模擬的問題 如果預約站滿的話,取指是否等待? 如果等待,在取得預約站時取得的操作數如何避免被后面指令刷新? 例如:  1 DIVD F5,F2,F1       2 LD F5,F3,111 當第一條指令取指時預約站滿 如 ...…

查看全部問答∨

GPRS模塊工作特性問題,請高手賜教

各位誰能準確的解答這個問題?有相關的實驗依據 當一個GPRS模塊正在接受數據時,如果一個新的彩信通知到了或者有振鈴通知,模塊會怎么處理?這個彩信通知會打斷原有接受過程,還是彩信通知丟失,在串口上是否會有CMTI的顯示?…

查看全部問答∨

編譯WINCE4.2生成鏡像中的錯誤

我是個初學嵌入式的菜鳥,在用WINCE4.2生成鏡像的時候出錯,我也是按照書上做的啊,可是編譯的時候出現 DIRECTX_MODULES= ceplayer mp3dmod wmvdmod wmadmod wmsdmod quartz msdxm msdmo dxmasf acmdwrap QUARTZ0_COMPONENTS=amutil fgctl filgra ...…

查看全部問答∨

關于assert的錯誤

在有些時候,建好工程后調試會出現assert的錯誤,這個錯誤不知道是怎么回事,好象跟設置和程序都沒關系.請問這個錯誤怎么處理的…

查看全部問答∨

10.1深入學習NOIS,結伴學習,詳情請

深入學習NOIS,有興趣的話大家一起學習,詳情群65386851…

查看全部問答∨

LPC1114硬件掃描模式采樣值不準問題

我最近做一個項目,需要用到兩路AD采樣,給固定電壓值給采樣口,用JLINK仿真發現BURST模式的讀取的數字每次都不一樣,而相差很大。大家有沒有用BURST模式進行采樣啊,能不能交流交流呢?…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 广宗县| 噶尔县| 偏关县| 固阳县| 霍城县| 四川省| 西城区| 内乡县| 阜城县| 滨州市| 自贡市| 教育| 丹阳市| 汽车| 呼伦贝尔市| 彭山县| 白银市| 砀山县| 嘉禾县| 平果县| 榆林市| 观塘区| 体育| 新龙县| 宜君县| 大兴区| 炉霍县| 云浮市| 兴业县| 武宁县| 莆田市| 蚌埠市| 明光市| 班戈县| 修文县| 宁德市| 诸城市| 瑞昌市| 治多县| 宜宾市| 佳木斯市|