女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DS18B20溫度傳感器溫度值傳送到USART HMI上顯示

冬至子 ? 來源:清晨的小樹洞 ? 作者:清晨。 ? 2023-11-08 16:51 ? 次閱讀

一、DS18B20溫度傳感器

DS18B20是常用的數字溫度傳感器,其輸出的是數字信號,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。DS18B20數字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。

主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。

二、DS18B20常見封裝

圖片

圖1 DS18B20常見封裝

三、DS18B20的驅動程序

1. 頭文件

#ifndef DS18B20_H

#define DS18B20_H

#include

#include

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif

/ 18b20 */

sbit DQ=P4^5;

extern uchar TPH,TPL,temp; //溫度值及中間變量的變量聲明

void DelayXus(uchar n);

void DS18B20_Reset();

uchar DS18B20_ReadByte();

void DS18B20_WriteByte(uchar dat1);

void DS18B20(); //使用時調用該函數即可

#endif

2. 主程序

#include "DS18B20.h"

void DelayXus(uchar n) //延時函數要根據單片機的時間周期來改寫,一般控制在1-2us

{

while (n--);

{

   _nop_();

   _nop_();

}

}

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

復位DS18B20,并檢測設備是否存在

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

void DS18B20_Reset()

{

CY = 1;

while (CY)

{

   DQ = 0;                     //送出低電平復位信號

   DelayXus(240);              //延時至少480us

            DelayXus(240);

   DQ = 1;                     //釋放數據線

   DelayXus(60);               //等待60us

   CY = DQ;                    //檢測存在脈沖

   DelayXus(240);              //等待設備釋放數據線

            DelayXus(180);

}

}

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

從DS18B20讀1字節數據

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

uchar DS18B20_ReadByte()

{

uchar i;

uchar dat1 = 0;

for (i=0; i<8; i++) //8位計數器

{

   dat1 > >= 1;

   DQ = 0;                     //開始時間片

  DelayXus(1);                //延時等待

   DQ = 1;                     //準備接收

   DelayXus(1);               //接收延時

   if (DQ) dat1 |= 0x80;        //讀取數據

   DelayXus(60);               //等待時間片結束

}

return dat1;

}

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

向DS18B20寫1字節數據

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

void DS18B20_WriteByte(uchar dat1)

{

char i;

for (i=0; i<8; i++) //8位計數器

{

   DQ = 0;                     //開始時間片

   DelayXus(1);                //延時等待

   dat1 > >= 1;                 //送出數據

   DQ = CY;

   DelayXus(60);               //等待時間片結束

   DQ = 1;                     //恢復數據線

   DelayXus(1);                 //恢復延時

}

}

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

向DS18B20讀取溫度數據并轉換

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

void DS18B20()

{

DS18B20_Reset(); //設備復位

DS18B20_WriteByte(0xCC); //跳過ROM命令

DS18B20_WriteByte(0x44); //開始轉換命令

while (!DQ); //等待轉換完成

DS18B20_Reset(); //設備復位

DS18B20_WriteByte(0xCC); //跳過ROM命令

DS18B20_WriteByte(0xBE); //讀暫存存儲器命令

TPL = DS18B20_ReadByte(); //讀溫度低字節

TPH = DS18B20_ReadByte(); //讀溫度高字節

temp=(TPL+TPH*256)*0.0625;

}

3. 使用說明

該程序基于STC15F2K60S2單片機,如果需要在其他的單片機上使用,需要將引用的頭文件、引腳定義以及延時函數進行更改即可。若有其他需求,自行修改。

四、溫度值傳送到USART HMI上顯示

1.前期準備

首先要做好USART HMI的顯示界面,本項目的顯示界面如圖3所示。所用到的控件為右邊當前溫度值,該控件對應的是文本框t6,發送的指令格式為:

字符串+結束符:t6.txt=”溫度值” FF FF FF (三個FF的十六進制數)

例如發送溫度值50℃,發送的指令為:t6.txt=”50”FFFFFF

圖片

圖3 USART HMI顯示界面

2.部分程序

(1)數據發送程序

uchara=0,b=0,c=0,d=0,e=0,f=0;

/ 顯示溫度 /

a= CODE[temp/10];      //溫度十位數值

    b= CODE[temp%10];     //溫度個位數值

    c= CODE[temp_target/10];  //目標溫度十位數值

    d= CODE[temp_target%10]; //目標溫度個位數值

    write_txt("t6.txt=");   //發送文本

    write_COM(34);                      //雙引號

    write_COM(a);

    write_COM(b);

    write_COM(34);                   //雙引號

    write_END();                           //結束符

(2)單片機串口通信部分程序

①頭文件

#ifndef UART_H

#define UART_H

#include

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif

extern uchar pageflag1; //返回頁面ID的標志1

extern uchar pageflag2; //返回頁面ID的標志2

extern uchar pageflag_ID; //返回頁面ID的標志3

extern uchar page_end; //頁面結束數據檢測,滿3代表結束

extern uchar pageID; //頁面ID號

void write_COM(uchar COM);

void write_txt(char *s);

void write_END(void);

void UART_Init();

#endif

②主程序

#include "UART.h"

/ 串口送數據 */

void write_COM(uchar COM)

{

SBUF=COM;

while(!TI);

TI=0;

}

/ 發送文本串 */

void write_txt(char *s)

{

inti=0;

    while(s[i]!=0)

    {

            write_COM(s[i]);

            i++;

   }

}

/ 發送結束符 */

void write_END(void)

{

write_COM(0xFF);

     write_COM(0xFF);

     write_COM(0xFF);

}

/ 串口初始化 */

void UART_Init()

{

//串口1  初始化

SCON = 0x50;

// P_SW1&= 0x7f;

// P_SW1|= 0x40;//uart1切換到P3^6P3^7

AUXR &= 0xBE;

AUXR |= 0x00;

TMOD &= 0x0F;

TMOD |= 0x20;

TH1= 0xfd;

TL1= 0xfd;

TR1= 1; //定時器1啟動

ES= 1; //開放串口中斷

EA= 1;

// //串口2 初始化

// S2CON = 0x10;

// T2L = 0xE8;

// T2H = 0xFF;

// AUXR &= 0xE3;

// AUXR |= 0x10;

// IE2 &= 0xFE;

// IE2 |= 0x01;

}

/ UART1 中斷服務程序 *******/

void Uart1(void) interrupt 4

{

uchardataflag=0;//返回的十六進制數據的第一位

    ES= 0;            //暫時關閉串口中斷

if(RI) //如果是接收中斷

{

RI=0;

dataflag = SBUF; //將接收緩沖區的數據保存到dataflag變量中

/***********頁面接收**********/                  

            if(dataflag== 0x66) pageflag1 = 1;   //正在接收頁面ID數據

            if(pageflag1== 1)

            {

                   pageflag2++;

                   if(pageflag2== 2)

                   {

                           pageflag_ID= dataflag;//接收頁面ID號

                   }

                   if(dataflag== 0xff)        //開始接收結束符

                   {

                           page_end++;

                           if(page_end== 3) //接收3個結束符,數據接收完成

                           {

                                   pageID= pageflag_ID;

                                   pageflag1= 0;

                                   pageflag2= 0;

                                   pageflag_ID= 0;

                                   page_end= 0;

                           }                                     

                   }

            }      

    }                     

    else                           //如果是發送中斷,將TI清0

            TI= 0;

    ES= 1;            //打開串口中斷

}

注:串口中斷函數里對頁面ID的程序接收還存在一些問題,后期修改完畢再對此進行更正。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計數器
    +關注

    關注

    32

    文章

    2284

    瀏覽量

    96051
  • DS18B20
    +關注

    關注

    10

    文章

    782

    瀏覽量

    81978
  • 串口通信
    +關注

    關注

    34

    文章

    1636

    瀏覽量

    56563
  • USART
    +關注

    關注

    1

    文章

    200

    瀏覽量

    31637
  • 數字溫度傳感器

    關注

    0

    文章

    191

    瀏覽量

    15693
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    DS18B20溫度傳感器工作原理及其應用電路圖

    ?!   ?b class='flag-5'>DS18B20溫度傳感器寄生電源強拉供電方式    3.DS18B20溫度
    發表于 02-21 14:43

    基于DS18B20數字溫度傳感器的設計方案

    數字溫度傳感器的軟件設計采用C51編寫程序,主要完成DS18B20的測量溫度計算及溫度
    發表于 11-12 16:30

    DS18B20溫度傳感器實驗

    單片機驅動DS18B20溫度傳感器實現溫度的串口打印顯示,本實驗中STM32基于HAL庫開發。本文全程記錄實驗過
    發表于 08-18 07:44

    數字溫度傳感器DS18B20的設計及應用

    數字溫度傳感器DS18B20的設計及應用 1引言 DS18B20是DALLAS公司生產的一線式數字溫度
    發表于 04-02 18:00 ?3011次閱讀
    數字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b><b class='flag-5'>DS18B20</b>的設計及應用

    DS18B20完成溫度檢測的技巧

    介紹了DS18B20 溫度傳感器 的結構和特點以及用DS18B20溫度傳感器進行
    發表于 08-23 10:44 ?190次下載
    <b class='flag-5'>DS18B20</b>完成<b class='flag-5'>溫度</b>檢測的技巧

    溫度傳感器DS18B20

    溫度傳感器DS18B20 51例程,親測可用
    發表于 06-14 15:36 ?21次下載

    智能溫度傳感器DS18B20的原理與應用

    DS18B20是DALLAS公司生產的單線數字溫度傳感器,他具有獨特的單線總線接口方式。文章詳細的介紹了單線數字溫度傳感器
    發表于 10-11 18:19 ?49次下載

    DS18B20溫度傳感器溫度程序和驅動以及案例實現資料說明

    本文檔的的主要內容詳細介紹的是DS18B20溫度傳感器溫度程序和驅動以及案例實現資料說明,本文件包含整個DS18B20的工程文件和代碼,編
    發表于 04-09 08:00 ?1次下載
    <b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>溫度</b>程序和驅動以及案例實現資料說明

    使用1602LCD顯示DS18B20數字溫度傳感器溫度程序免費下載

    本文檔的主要內容詳細介紹的是使用1602LCD顯示DS18B20數字溫度傳感器溫度程序免費下
    發表于 09-20 17:19 ?34次下載
    使用1602LCD<b class='flag-5'>顯示</b><b class='flag-5'>DS18B20</b>數字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>溫度</b><b class='flag-5'>值</b>程序免費下載

    使用DS18B20數字溫度傳感器和1602實現溫度顯示的源代碼免費下載

    本文檔的使用DS18B20數字溫度傳感器和1602實現溫度顯示的源代碼免費下載。
    發表于 12-10 08:00 ?4次下載
    使用<b class='flag-5'>DS18B20</b>數字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>和1602實現<b class='flag-5'>溫度</b><b class='flag-5'>顯示</b>的源代碼免費下載

    ds18b20的特性_ds18b20溫度傳感器應用

    本文首先介紹了ds18b20的特性,其次介紹了DS18B20工作原理,最后介紹了ds18b20溫度傳感器應用。
    發表于 04-24 09:10 ?1.2w次閱讀
    <b class='flag-5'>ds18b20</b>的特性_<b class='flag-5'>ds18b20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>應用

    LM016L顯示DS18B20溫度傳感器溫度的程序和仿真資料免費下載

    本文檔的主要內容詳細介紹的是LM016L顯示DS18B20溫度傳感器溫度的程序和仿真資料免費
    發表于 07-27 16:54 ?41次下載
    LM016L<b class='flag-5'>顯示</b><b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>溫度</b><b class='flag-5'>值</b>的程序和仿真資料免費下載

    基于51單片機的DS18B20溫度傳感器

    DS18B20溫度傳感器選用芯片:AT89S52函數功能:如下
    發表于 11-20 18:36 ?60次下載
    基于51單片機的<b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>

    DS18B20溫度傳感器的數字溫度計設計案例

    本設計采用的主控芯片是ATMEL公司的AT89S52單片機,數字溫度傳感器是DALLAS公司的DS18B20。本設計用數字傳感器DS18B20
    發表于 05-09 16:02 ?84次下載

    ds18b20溫度傳感器如何使用

    DS18B20是一款廣泛使用的數字溫度傳感器,它具有高精度、低功耗和易于使用的特點。 DS18B20溫度
    的頭像 發表于 09-03 16:51 ?1519次閱讀