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

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

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

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

在實(shí)際工程上使用良好的代碼.....

注意:

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

MCU與DS18B20的通信,并且它們也是單獨(dú)

提供電壓的。因此MCU用了2個(gè)IO,一個(gè)讀、一個(gè)寫(xiě)。

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

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

3、DS18B20_StartConvertTemp()與DS18B20_GetTemperature()之間

的正確調(diào)用要間隔>750MS。

4、沒(méi)有使用CRC8校驗(yàn),只使用了一些識(shí)別錯(cuò)誤的BIT。

*/

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

// 當(dāng)前宏定義

#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");

}

}

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

** 啟動(dòng)時(shí)序,返回應(yīng)答位

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

** 注意:

(1)時(shí)序的準(zhǔn)確性

(2)開(kāi)關(guān)全局中斷

*/

static BOOLEAN DS18B20_Restart(void)

{

BOOLEAN rBit;

BOOLEAN gIE = 0;

if( __get_SR_register() & GIE ) // 保存當(dāng)前全局中斷的狀態(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 ) // 恢復(fù)當(dāng)前全局中斷的狀態(tài)

__enable_interrupt();

DS18B20_DelayUs(200);

DS18B20_DelayUs(200);

return(rBit);

}

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

** DS18B20讀位函數(shù)

** 注意:

(1)時(shí)序的準(zhǔn)確性

(2)開(kāi)關(guān)全局中斷

*/

static BOOLEAN DS18B20_ReadBit(void)

{

BOOLEAN rBit;

BOOLEAN gIE = 0;

if( __get_SR_register() & GIE ) // 保存當(dāng)前全局中斷的狀態(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 ) // 恢復(fù)當(dāng)前全局中斷的狀態(tài)

__enable_interrupt();

return(rBit);

}

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

** DS18B20寫(xiě)位函數(shù)

** 注意:

(1)時(shí)序的準(zhǔn)確性

(2)開(kāi)關(guān)全局中斷

*/

static void DS18B20_WriteBit(BOOLEAN bVal)

{

BOOLEAN gIE = 0;

if( __get_SR_register() & GIE ) // 保存當(dāng)前全局中斷的狀態(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 ) // 恢復(fù)當(dāng)前全局中斷的狀態(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內(nèi)寫(xiě)字節(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;

}

}

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

** 啟動(dòng)溫度轉(zhuǎn)換函數(shù)

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

** 注意:溫度轉(zhuǎn)換位數(shù)對(duì)應(yīng)的最大轉(zhuǎn)換時(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);

}

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

** 讀取溫度,步長(zhǎng)是1度C

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

** 注意:

(1)自動(dòng)識(shí)別DS18B20的溫度轉(zhuǎn)換位數(shù)BIT9-12,產(chǎn)生對(duì)應(yīng)的溫度

(2)精度設(shè)定為1度C

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

*/

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é),無(wú)CRC-8校驗(yàn)

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

return(1);

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

return(1);

switch(config & 0x60) // 識(shí)別溫度轉(zhuǎn)換位數(shù)并轉(zhuǎn)化為度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

*/

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

北京2026年3月30日 /美通社/ -- 近日,由新銳學(xué)術(shù)研制的《新銳期刊分區(qū)表2026》(簡(jiǎn)稱(chēng)"新銳分區(qū)")正式發(fā)布。該體系以"獨(dú)立、公益、免費(fèi)、開(kāi)放"為核心理念,在...

關(guān)鍵字: AI BSP COM VIEW

Checkout.com 已連續(xù)第三年實(shí)現(xiàn)亞太區(qū)凈收入同比增長(zhǎng)超過(guò) 50% 阿里巴巴、Trip.com、SHEIN、京東、喜茶、網(wǎng)易等企業(yè)級(jí)商戶(hù)現(xiàn)已在全球范圍內(nèi)使用Checkout.com的支付平臺(tái) 香港...

關(guān)鍵字: COM CK RC CE

都柏林, March 29, 2026 (GLOBE NEWSWIRE) -- 領(lǐng)先的 eSIM 提供商 Holafly 發(fā)布最新洞察,揭示可持續(xù)發(fā)展正如何影響全球旅行決策。 根據(jù)《Holafly eSIM 與旅行報(bào)告...

關(guān)鍵字: ESIM 環(huán)境影響 可持續(xù)發(fā)展 COM

弗吉尼亞州阿什本2026年3月26日 /美通社/ -- 全球領(lǐng)先的企業(yè)技術(shù)與創(chuàng)新合作伙伴DXC Technology(紐約證券交易所股票代碼:DXC)今日宣布,公司首次入選《財(cái)富》“全美最具創(chuàng)新力公司”榜單。 該榜單為第...

關(guān)鍵字: AI TECHNOLOGY COM TI

Cloudera 全球大會(huì)現(xiàn)已開(kāi)放注冊(cè)。本次大會(huì)將重點(diǎn)展示可落地的實(shí)踐策略,探討如何通過(guò)隨時(shí)隨地的數(shù)據(jù)訪問(wèn)釋放 AI 創(chuàng)新潛能,從而推動(dòng)切實(shí)的業(yè)務(wù)影響力。加利福尼亞州圣塔克拉拉, March 24, 2026 (GLO...

關(guān)鍵字: 云時(shí)代 EV AI COM

深圳2026年3月20日 /美通社/ -- 全球商務(wù)領(lǐng)導(dǎo)者eBay今日以強(qiáng)勁陣容亮相第26屆深圳九州汽車(chē)生態(tài)博覽會(huì)(以下簡(jiǎn)稱(chēng):九州展),正式發(fā)布《商用車(chē)配件出海新機(jī)遇》洞察,指出汽配跨境電商出海前景廣闊,商用汽車(chē)配件憑借...

關(guān)鍵字: 配件 EBAY MARKET COM

Aircom推出一款經(jīng)電信行業(yè)訓(xùn)練的多智能體AI平臺(tái),旨在將智能體執(zhí)行能力引入實(shí)際無(wú)線網(wǎng)絡(luò)工作流程,彌合人工運(yùn)維與網(wǎng)絡(luò)自治之間的差距。 弗吉尼亞州費(fèi)爾法克斯2026年3月2...

關(guān)鍵字: COM 智能體 網(wǎng)絡(luò) RC

俄亥俄州阿克倫2026年3月18日 /美通社/ -- Flexsys宣布,自2026年3月23日起(含當(dāng)日)對(duì)所有發(fā)貨訂單生效,將上調(diào)各地區(qū)不溶性硫磺產(chǎn)品價(jià)格,具體調(diào)整如下: 亞洲:每公斤上調(diào)0.60美元?dú)W洲:每公斤上...

關(guān)鍵字: FLEX 輪胎 COM 可持續(xù)發(fā)展

新澤西州蒂內(nèi)克2026年3月12日 /美通社/ -- Cognizant(納斯達(dá)克股票代碼:CTSH)發(fā)布最新研究顯示,尋求采用人工智能的企業(yè)普遍傾向選擇IT服務(wù)公司,例如“AI Builder”公司。這是一種通過(guò)設(shè)計(jì)和...

關(guān)鍵字: 人工智能 NI AN COM

-新一代CPaaS平臺(tái),可整合全渠道通信、基于網(wǎng)絡(luò)的身份識(shí)別和對(duì)話(huà)式AI,從而幫助企業(yè)提供值得信賴(lài)的數(shù)字體驗(yàn) 拉斯維加斯和新德里2026年3月12日 /美通社/ -- 全球...

關(guān)鍵字: COM FOR VI GE
關(guān)閉