日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 技術學院 > 熱搜器件
[導讀]網(wǎng)絡上已經(jīng)有不少的18B20驅動程序了,現(xiàn)在為你提供個我自己寫的,編寫規(guī)范的,在實際工程上使用良好的代碼.....注意:1、在實際的工程上,我用了光藕隔離了MCU與DS18B20的通信,并且它們也是單獨提供電壓的。因此MCU

網(wǎng)絡上已經(jīng)有不少的18B20驅動程序了,

現(xiàn)在為你提供個我自己寫的,編寫規(guī)范的,

在實際工程上使用良好的代碼.....

注意:

1、在實際的工程上,我用了光藕隔離了

MCU與DS18B20的通信,并且它們也是單獨

提供電壓的。因此MCU用了2個IO,一個讀、一個寫。

移植時,你需要定義MCU操作的IO口。

2、我的實際工程中只用到每度單位,你可以根據(jù)你的需要修改。

3、DS18B20_StartConvertTemp()與DS18B20_GetTemperature()之間

的正確調用要間隔>750MS。

4、沒有使用CRC8校驗,只使用了一些識別錯誤的BIT。

*/

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

// 當前宏定義

#define COM_ROM_READ 0X33 // ROM操作命令

#define COM_ROM_MATCH 0X55

#define COM_ROM_SKIP 0XCC

#define COM_ROM_SEARCH 0XF0

#define COM_ROM_ALARM 0XEC

#define COM_MEM_CONVERT_T 0X44 // 寄存器操作命令

#define COM_MEM_READ_SCR 0XBE

#define COM_MEM_WRITE_SCR 0X4E

#define COM_MEM_COPY_SCR 0X48

#define COM_MEM_RECALL_E 0XB8

#define COM_MEM_READ_POWER 0XB4

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** US延遲函數(shù)

** 注意:必須根據(jù)不同的MCU、晶體頻率而做更改

*/

static void DS18B20_DelayUs(INT8U us) // @8MHZ

{

for(; us>0; us--)

{

asm("nop");

asm("nop");

}

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** 啟動時序,返回應答位

** (0)表示OK,否則錯誤

** 注意:

(1)時序的準確性

(2)開關全局中斷

*/

static BOOLEAN DS18B20_Restart(void)

{

BOOLEAN rBit;

BOOLEAN gIE = 0;

if( __get_SR_register() & GIE ) // 保存當前全局中斷的狀態(tài)

{

gIE = 1;

__disable_interrupt();

}

DS18B20_CLR_OUT();

DS18B20_DelayUs(200);

DS18B20_DelayUs(200);

DS18B20_DelayUs(200);

DS18B20_SET_OUT();

DS18B20_DelayUs(90);

if( DS18B20_READ_IN() )

rBit = 1;

else

rBit = 0;

if( gIE ) // 恢復當前全局中斷的狀態(tài)

__enable_interrupt();

DS18B20_DelayUs(200);

DS18B20_DelayUs(200);

return(rBit);

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** DS18B20讀位函數(shù)

** 注意:

(1)時序的準確性

(2)開關全局中斷

*/

static BOOLEAN DS18B20_ReadBit(void)

{

BOOLEAN rBit;

BOOLEAN gIE = 0;

if( __get_SR_register() & GIE ) // 保存當前全局中斷的狀態(tài)

{

gIE = 1;

__disable_interrupt();

}

DS18B20_CLR_OUT();

DS18B20_DelayUs(4);

DS18B20_SET_OUT();

DS18B20_DelayUs(4);

if( DS18B20_READ_IN() )

rBit = 1;

else

rBit = 0;

DS18B20_DelayUs(60);

if( gIE ) // 恢復當前全局中斷的狀態(tài)

__enable_interrupt();

return(rBit);

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** DS18B20寫位函數(shù)

** 注意:

(1)時序的準確性

(2)開關全局中斷

*/

static void DS18B20_WriteBit(BOOLEAN bVal)

{

BOOLEAN gIE = 0;

if( __get_SR_register() & GIE ) // 保存當前全局中斷的狀態(tài)

{

gIE = 1;

__disable_interrupt();

}

DS18B20_CLR_OUT();

DS18B20_DelayUs(7);

if(bVal)

{

DS18B20_SET_OUT();

}

else

{

DS18B20_CLR_OUT();

}

DS18B20_DelayUs(60);

DS18B20_SET_OUT();

DS18B20_DelayUs(10);

if( gIE ) // 恢復當前全局中斷的狀態(tài)

__enable_interrupt();

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** 從DS18B20讀字節(jié)數(shù)據(jù)

*/

static INT8U DS18B20_ReadByte(void)

{

INT8U i, tmp=0;

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

{

tmp >>= 1;

if( DS18B20_ReadBit() )

tmp |= 0x80;

}

return(tmp);

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** 往DS18B20內寫字節(jié)數(shù)據(jù)

*/

static void DS18B20_WriteByte(INT8U val)

{

INT8U i;

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

{

if(val & 0x01)

DS18B20_WriteBit(1);

else

DS18B20_WriteBit(0);

val >>= 1;

}

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** 啟動溫度轉換函數(shù)

** 成功返回(0),否則(1)

** 注意:溫度轉換位數(shù)對應的最大轉換時間

** 9BIT = 93.75MS

** 10BIT = 187.5MS

** 11BIT = 375MS

** 12BIT = 750MS

*/

BOOLEAN DS18B20_StartConvertTemp(void)

{

INT8U cnt = 5;

while( --cnt && DS18B20_Restart() );

if(cnt == 0)

return(1);

DS18B20_WriteByte(COM_ROM_SKIP);

DS18B20_WriteByte(COM_MEM_CONVERT_T);

return(0);

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** 讀取溫度,步長是1度C

** 成功返回(0),溫度值寫入有符號數(shù)*pTemp中;否則(1),無操作*pTemp。

** 注意:

(1)自動識別DS18B20的溫度轉換位數(shù)BIT9-12,產生對應的溫度

(2)精度設定為1度C

(3)包含寄存器某些位的正確檢測

*/

BOOLEAN DS18B20_GetTemperature(INT8S *pTemp)

{

INT16S temp;

INT8U config;

INT8U cnt = 5;

while( --cnt && DS18B20_Restart() );

if(cnt == 0)

return(1);

DS18B20_WriteByte(COM_ROM_SKIP);

DS18B20_WriteByte(COM_MEM_READ_SCR);

((INT8U*)(&temp))[0] = DS18B20_ReadByte();

((INT8U*)(&temp))[1] = DS18B20_ReadByte();

DS18B20_ReadByte();

DS18B20_ReadByte();

config = DS18B20_ReadByte(); // 忽略其它4字節(jié),無CRC-8校驗

if((config & (~0x60)) != 0x1F) // 讀數(shù)據(jù)錯誤判斷

return(1);

if( (0x0000 != (0xF800 & temp)) && (0xF800 != (0xF800 & temp)) )

return(1);

switch(config & 0x60) // 識別溫度轉換位數(shù)并轉化為度C

{

case 0x00: temp >>=1; break; // 9bit/0.5C

case 0x20: temp >>=2; break; // 10bit/0.25C

case 0x40: temp >>=3; break; // 11bit/0.125C

case 0x60: temp >>=4; break; // 12bit/0.0625C

}

*pTemp = temp;

return(0);

}

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

** EOF

*/

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

北京2025年9月10日 /美通社/ -- 以"智領工業(yè) 全球互聯(lián)"為主題的2025全球工業(yè)互聯(lián)網(wǎng)融合發(fā)展交流大會于9月6日在中國東北遼寧省沈陽市舉行。 圖為2025全球工業(yè)互聯(lián)網(wǎng)融合發(fā)展交流大會9月6日于遼寧沈陽舉辦...

關鍵字: 工業(yè)互聯(lián)網(wǎng) 數(shù)字化 COM HTML

柏林2025年9月9日 /美通社/ -- 總部位于迪拜的生活方式科技品牌ASTRAUX強勢亮相2025年柏林國際電子消費品展覽會(IFA),首次推出的三款原創(chuàng)產品引發(fā)廣泛關注,成功將品牌推向綠色出行與智能生活領域的輿論焦...

關鍵字: ST COM AI GLOBAL

上海2025年9月9日 /美通社/ -- 9月8日,移遠通信宣布,其自研藍牙協(xié)議棧DynaBlue率先通過藍牙技術聯(lián)盟(SIG)BQB 6.1標準認證。作為移遠深耕短距離通信...

關鍵字: 藍牙協(xié)議棧 移遠通信 COM BSP

全鏈路破解業(yè)主招商去化難題 上海2025年8月11日 /美通社/ -- 面對當前商業(yè)地產市場招商難、去化慢的普遍困境,仲量聯(lián)行結合自身行業(yè)優(yōu)勢及領先的科技產品研發(fā)能力,重磅升級多款地產科技工具以輔助業(yè)主客戶在當下市場困...

關鍵字: 數(shù)字化 BSP COM LAN

上海2025年8月11日 /美通社/ -- 近日,英飛凌科技宣布為北京市企業(yè)家環(huán)?;饡ㄒ韵潞喎Q"SEE基金會")與四川省綠色江河環(huán)境保護促進會(以下簡稱"綠色江河")共同發(fā)起的"點綠長江"項目提供專項捐助和系列支持,...

關鍵字: 英飛凌 可持續(xù)發(fā)展 INFINEON COM

誠邀蒞臨2025德國國際汽車及智慧出行博覽會(簡稱"2025 IAA") B3 展廳 E40 展位,深入了解麥格納在可持續(xù)材料、動力總成和儲能系統(tǒng)等領域的創(chuàng)新成果 親臨戶外實車演示,聆聽專家解讀麥格納前沿雷達技...

關鍵字: BSP COM 雷達 AI

上海2025年8月5日 /美通社/ -- 2025年7月30日,上海"2025思旗獎(AIflag Awards)"頒獎盛典上,F(xiàn)ESCO Adecco外企德科上海公司憑借在人力資源管理與A...

關鍵字: ECC AI AD BSP

麥格納集成式艙內感知系統(tǒng),正受到越來越多汽車制造商的青睞 艙內感知系統(tǒng)至關重要,它能提供全面、靈敏的安全保障,同時優(yōu)化駕駛體驗 艙內兒童監(jiān)測等先進功能,能有效保證乘客的安全,避免弱勢乘客出現(xiàn)熱射病等危險情況...

關鍵字: 集成 BSP COM 攝像頭

54% 的受訪高管低估了將AI戰(zhàn)略轉化為實際成果的運營復雜性。 僅 22% 的受訪組織為在自動化決策中使用 AI 建立了明確的指導方針和護欄。 64% 的首席營...

關鍵字: IBM AI COM BSP

深圳 2025年6月20日 /美通社/ -- 6月18日,廣和通(Fibocom)與珞博智能(Robopoet)達成戰(zhàn)略合作,廣和通將為珞博智能旗下AI養(yǎng)成系潮玩Fuzoz...

關鍵字: COM 通信技術 無線通信 全棧
關閉