溫度感測器DS18B20微控制器的三位數碼管,具有靜態顯示和報警設定

發布 數碼 2024-04-06
6個回答
  1. 匿名使用者2024-02-07

    以下是DS18B20的 C51 程式:

    初始化 18b20

    uchar init18b20(void)uint i;

    bit no;

    ds=0;i=103;

    while(i>0)i--;

    ds=1;i=4;while(i>0)i--;

    no=ds;

    if(no==0)

    ds=1;i=100;

    while(i>0)i--;

    no=ds;

    if(no==1)

    not[1]=0;

    elsenot[1]=1;

    elsenot[1]=1;

    return (not[1]);

    bit tmpreadbit(void) 讀取 1 位。

    uint i;

    bit dat;

    ds=0;i++;

    ds=1;i++;i++;

    dat=ds;

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

    return (dat);

    uchar tmpread(void) 讀取乙個位元組。

    uchar i,j,dat;

    dat=0;

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

    j=tmpreadbit();

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

    return(dat);

    void tmpwritebyte(uchar dat) 將乙個位元組寫入 DS18B20

    uint i;

    uchar j;

    bit testb;

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

    testb=dat&0x01;

    dat=dat>>1;

    if(testb)

    ds=0;i++;i++;

    ds=1;i=8;while(i>0)i--;

    elseds=0;

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

    ds=1;i++;i++;

    int tmp() ds18b20 溫度讀取。

    float tt;

    uchar a,b;

    ea=0;if(init18b20()==0)delay(1);

    tmpwritebyte(0xcc);

    tmpwritebyte(0x44);

    delay(10);

    init18b20();

    delay(1);

    tmpwritebyte(0xcc);

    tmpwritebyte(0xbe);

    a=tmpread();

    b=tmpread();

    temp=b;

    temp<<=8;

    temp=temp|a;

    c=b>>4;

    tt=temp*;

    temp=tt*10+;

    ea=1;return temp;

    elsenot[1]=1;

    ea=1;

  2. 匿名使用者2024-02-06

    PIC兩年前就做到了,資訊還在,哈哈。

  3. 匿名使用者2024-02-05

    您好,親愛的,很高興回答您的<>

    DS18B20是一種數字溫度感測器,可與單個匯流排介面進行通訊,該介面可以輕鬆地將溫度資料轉換為數碼訊號,以便傳輸到顯示器。 具體步驟如下:1

    設定硬體連線:將 DS18B20 感測器的 VDD 引腳連線到正電源,將 GND 引腳連線到負電源,將資料引腳連線到 MCU 的任何 IO 埠。 2.

    讀取溫度資料:程式是用MCU的程式語言(如C語言)編寫的,用於讀取DS18B20感測器的溫度資料。 特定操作需要DS18B20通訊協議,包括傳送復位訊號、傳送讀取溫度命令和接收溫度資料。

    3.處理溫度資料:從DS18B20讀數Laoling中獲取的溫度資料為原始十六進製值,需要使用計算公式轉換為攝氏或華氏等常見溫標下的溫度值。

    4.顯示溫度值:轉換後的溫度值可以通過MCU上的數碼管或LCD顯示器等裝置顯示在顯示器上,DS18B20感測器讀取的溫度值可以在顯示器上看到。

    需要注意的是,在硬體連線和程式編寫過程中,必須遵循DS18B20的通訊規範和相關技術檔案,以確保感測器的正常執行和資料的準確性。 以上是我的,希望對你有幫助,祝你生活愉快!

  4. 匿名使用者2024-02-04

    首先,DS18B20輸出的1位元(1bit)訊號不能被微控制器改成位元,乙個是位元,微控制器需要連續多次讀取DS18B20輸出的位元訊號,以合成它需要的資訊。 例如,如果DS18B20的溫度輸出為 16 位,則微控制器將需要讀取 1 位資料 16 次。

    讀取溫度偽**(溫度是儲存溫度值的整數變數):

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

    onebit=函式讀取 1 位資料 ();

    temperature=temperature|onebit;

    if(i!=16)

    temperature=temperature<<1;

    那麼,微控制器是如何讀取DS18B20輸出的某個1bit資訊的呢? 在具體細節之前,需要明確的是,這個過程必須在微控制器拉下資料線並啟動資料讀取過程後的15微秒(us)內完成,否則無法讀取正確的資料(注意:在啟動通訊時,資料匯流排總是被微控制器下拉,在沒有通訊的情況下資料匯流排保持高電平)。

    我們來談談具體流程:

    1、微控制器將資料匯流排拉下;

    2.延遲2us; (這個時間必須大於1us,否則DS18B20將無法識別下拉訊號; 它也不宜太大,超過15us將無法正確讀取。 )

    3、設定微控制器連線的IO口輸入輸出方向,DS18B20作為輸入; (這一步也可能是微控制器直接把資料線拉高,因晶元而異)。

    4.延遲2us; (給DS18B20一定的時間輸出訊號)。

    5.讀取資料匯流排上的電平值;

    6.拉起資料匯流排,延遲一段時間,進入下乙個1位讀數。

    注意:這裡能否正確讀取的關鍵是延遲量是否足夠準確,所以在用C語言編寫DS18B20程式之前,需要根據微控制器模型和晶振頻率,找到乙個對延遲精度有足夠信心的延遲函式。

  5. 匿名使用者2024-02-03

    DS18B20 閱讀時機。

    1) 將資料線向上拉“1”。

    2) 延遲 2 微秒。

    3) 將資料線向下拉至“0”。

    4) 15微秒的延時。

    5) 將資料線拉至“1”。

    6) 15微秒的延時。

    7)讀取資料線的狀態,得到乙個狀態位,進行資料處理。

    8) 30微秒的延時。

    它逐位讀取,例如當感測器將資料傳送到MCU 0x055時,(0b001010101)(9bits)被逐個傳送到MCU,然後拼湊成0x055位

  6. 匿名使用者2024-02-02

    你乙個乙個讀出來,把下面的八位放在乙個位元組裡,把上面的八位放在乙個位元組裡,然後加起來,網上程式很多。

相關回答
4個回答2024-04-06

顯示溫度部分完成,表示DS1820的讀數完成。 在這種情況下,您可以在程式中設定乙個值進行比較,該值大於或小於某個值輸出。 >>>More

23個回答2024-04-06

字尾 H 是十六進製。

8個回答2024-04-06

進風溫度感測器壞了,啟動困難,怠速不穩定,排氣排放超標; 無法準確地將訊號傳輸到 ECU。 注射無法準確控制。 這將導致汽車的油耗增加。 >>>More

14個回答2024-04-06

最好使用示波器觀察發動機冷卻液溫度感測器的訊號電壓變化,因為萬用表只能看乙個時間點的電壓,示波器可以看到電壓變化趨勢。 >>>More

7個回答2024-04-06

不在氣流中。 就在油門旁邊。