藍橋杯 讀溫度

2021-10-02 12:45:09 字數 2259 閱讀 4637

讀溫度使用的是ds18b20晶元,該晶元通過單匯流排one-wire協議和微控制器進行通訊,在比賽的時候會提供onewire.c和onewire.h兩個檔案。完整**會放在最後,下面講解如何編寫讀取溫度的程式。

跳過rom操作指令

啟動溫度轉化

開始讀取暫存器的資料

新增到onewire.c中

unsigned

char

duwendu()

在onewire.h中新增宣告

unsigned

char

duwendu()

;

實驗平台:ct107d

實驗晶元:stc15f2k60s2

實驗現象:獲取當前環境溫度,顯示在數碼管上

**如下

#include

"onewire.h"

//單匯流排延時函式

void

delay_onewire

(unsigned

int t)

//ds18b20晶元初始化

bit init_ds18b20

(void

)//通過單匯流排向ds18b20寫乙個位元組

void

write_ds18b20

(unsigned

char dat)

delay_onewire(5

);}//從ds18b20讀取乙個位元組

unsigned

char

read_ds18b20

(void

)delay_onewire(5

);}return dat;

}//讀溫度

unsigned

char

duwendu()

#ifndef _onewire_h

#define _onewire_h

#include

"stc15f2k60s2.h"

#define ow_skip_rom 0xcc

#define ds18b20_convert 0x44

#define ds18b20_read 0xbe

//ic引腳定義

sbit dq = p1^4;

//函式宣告

void

delay_onewire

(unsigned

int t)

;void

write_ds18b20

(unsigned

char dat)

;bit init_ds18b20

(void);

unsigned

char

read_ds18b20

(void);

unsigned

char

duwendu()

;//新增

#endif

# include

"stc15f2k60s2.h"

# include

"onewire.h"

#define uchar unsigned char

#define uint unsigned int

uchar duan=

; uchar dispbuff[8]

; uint temp;

bit temp_flag;

void

close_buzz()

void

display()

void

show_temp()

void

timer0init

(void

)//2毫秒@12.000mhz

void

timer_display

() interrupt 1

}void

main()

show_temp();}}

藍橋杯模組練習4 溫度

main.c include include include onewire.h void xianshi void timer0init unsigned char display unsigned char shuzu unsigned int wendu extern unsigned int...

微控制器藍橋杯準備 溫度模組

51微控制器的溫度模組 main.c include reg52.h 標頭檔案 include ds18b20.h 溫度模組驅動 include intrins.h 移位操作標頭檔案 sfr auxr 0x8e unsigned char discode 數碼管顯示位元組碼 unsigned cha...

藍橋杯 簡易溫度採集與控制裝置

簡易溫度採集與控制裝置 簡易溫度採集與控制裝置 include include define uint unsigned int define uchar unsigned char sbit a1 p3 0 sbit a2 p3 1 sbit a3 p3 2 sbit a4 p3 3 sbit b...