讀溫度使用的是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...