freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機(jī)ds18b20溫度傳感器c語言程序含crc校驗(yàn)-資料下載頁

2025-07-07 13:06本頁面
  

【正文】 { uchar m。 lcd_init()。 //初始化LCD lcd_pos(0)。 //設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0。 while(cdis3[m] != 39。\039。) { lcd_wdat(cdis3[m])。 //顯示字符 m++。 } lcd_pos(0x40)。 //設(shè)置顯示位置為第二行第1個(gè)字符 m = 0。 while(cdis4[m] != 39。\039。) { lcd_wdat(cdis4[m])。 //顯示字符 m++。 } } /*******************************************************************/ /* 主函數(shù) */ /*******************************************************************/ void main() { P0 = 0xff。 P2 = 0xff。 while(1) { Ok_Menu ()。 Read_RomCord()。 //讀取64位序列碼 CRC8()。 //CRC效驗(yàn) if(crc==0) //CRC效驗(yàn)正確 { Disp_RomCode()。 //顯示64位序列碼 beep()。 } while(!presence) { Init_DS18B20()。 delay1(1000)。 } Error_Menu ()。 do { Init_DS18B20()。 beep()。 } while(presence)。 } } /****************************************************************************************************/曾經(jīng)編寫的DS18B20程序原來一切正常,但是最近拿來用時(shí)發(fā)現(xiàn)偶爾會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤,例如正常室溫20度,但是偶爾會(huì)出現(xiàn)負(fù)值或很高的溫度,懷疑新購的DS18B20時(shí)序參數(shù)同上批有點(diǎn)差別,有遇到過這種情況的嗎?大家在使用DS18B20時(shí)是讀出全部9個(gè)自己并用CRC進(jìn)行校驗(yàn)嗎?請大家指教。,AT89C52,我的代碼如下:unsigned char DS18B20_ReadByte(){ unsigned char i, dat=0。 for(i=0。 i8。 i++) { dat = 1。 //開始另一個(gè)讀周期前必須有1us以上的高電平恢復(fù)期 DQ = 1。 Delay2us()。 //產(chǎn)生讀起始信號(hào),數(shù)據(jù)線保持在低電平至少1μs,DS18B20在總線下降沿后輸出15us的有效數(shù)據(jù) DQ = 0。 Delay2us()。 DQ = 1。 Delay8us()。 if(DQ) dat |= 0x80。 //延時(shí)60us以上來滿足DS18B20的時(shí)序 Delay65us()。 } return dat。 }/************************************************************************************************* 對(duì)總線上唯一的DS18B20進(jìn)行溫度轉(zhuǎn)換及讀取,返回帶符號(hào)整形值。,如果出錯(cuò)返回值為200℃,超過其測溫范圍**************************************************************************************************/int DS18B20_GetTemperature(void){ unsigned char i, tempL, tempH。 //溫度轉(zhuǎn)換 if(!DS18B20_Reset()) return 0x0C80。 DS18B20_WriteByte(0xCC)。 //跳過ROM DS18B20_WriteByte(0x44)。 //進(jìn)行溫度轉(zhuǎn)換 //等待溫度轉(zhuǎn)換結(jié)束 for(i=0。 i200。 i++) { if(DS18B20_ReadByte() == 0xFF) break。 Delay5ms()。 } //讀取溫度 if(!DS18B20_Reset()) return 0x0C80。 DS18B20_WriteByte(0xCC)。 //跳過ROM DS18B20_WriteByte(0xBE)。 //讀寄存器 tempL = DS18B20_ReadByte()。 //先讀低8位數(shù)據(jù) tempH = DS18B20_ReadByte()。 //再讀高8位數(shù)據(jù) DS18B20_Reset()。 //通過再次復(fù)位中斷讀取 return (tempH8)|tempL。 }**單總線需要校驗(yàn),不然容易出錯(cuò)。**我都是記錄以前讀過的數(shù)據(jù),如果跟當(dāng)次差異太大就重新讀下檢驗(yàn)**在讀取ds18b20的時(shí)候必須要關(guān)閉總中斷,否則會(huì)影響他的時(shí)序!**單片機(jī)中bit和sbit有什么區(qū)別:sbit不可以做為函數(shù)參數(shù)傳送的。sbit映射到IO口(P1^1這種IO口的“位”)。bit在RAM中的可位尋址空間中,一般用作程序判斷的標(biāo)志位。你可以認(rèn)為它們一個(gè)對(duì)外(sbit),一個(gè)對(duì)內(nèi)(bit)。bit和int char之類的差不多,只不過char=8位, bit=1位而已。/*****************************************************************************************************/DS18B20芯片的CRC8算法用計(jì)算法實(shí)現(xiàn)五一期間,抽空把DS1818B20芯片的CRC8算法的計(jì)算法編制完成如下,請指教,軟件在盛唐EPS11仿真編程器上測試通過,運(yùn)行良好。uchar CalculateCRCValue(uchar ucNewData,uchar ucCRCValue){ bool bXorValue。 // uchar ucTempValue。 //模擬CRC硬件內(nèi)部的8位數(shù)據(jù)寄存器 uchar ucCount。 for(ucCount=0。 ucCount8。 ucCount++) { //提取新數(shù)據(jù)位與CRC寄存器的內(nèi)容的異或值的D0位作為內(nèi)部通道的輸入 bXorValue = (ucNewData ^ ucCRCValue)amp。 0x01。 //執(zhí)行XX5的異或操作 if(bXorValue) { ucTempValue = ucCRCValue ^ 0x18。 } else { ucTempValue = ucCRCValue。 } //CRC寄存器無進(jìn)位右移 ucTempValue = 1。 //補(bǔ)上進(jìn)位位,即D0位 if(bXorValue) { ucCRCValue = ucTempValue | 0x80。 } else { ucCRCValue = ucTempValue。 } //為處理下一位作準(zhǔn)備 ucNewData = 1。 } return ucCRCValue。}//入口參數(shù):待校驗(yàn)的數(shù)據(jù)緩沖區(qū)和數(shù)據(jù)長度//測試數(shù)據(jù),取自盛唐EPS11仿真編程器//0x28 0xB4 0xC1 0xE9 0x00 0x00 0x00 0xF0 //DS18B20 64bit Rom Code //對(duì)應(yīng)的校驗(yàn)碼為: 0xE1 0xE4 0x1C 0x4B 0x66 0xB8 0xF0 0x00//DS18B20的家族代碼為0x28,再加上CRC校驗(yàn),確保讀寫通訊可靠。bool DS18B20_CheckCRC8(uchar *ucDataBuff,uchar ucDataLength){ uchar ucCRCValue。 uchar ucCount。 ucCRCValue = 0。 for(ucCount=0。 ucCountucDataLength。 ucCount++) { ucCRCValue = CalculateCRCValue(ucDataBuff[ucCount],ucCRCValue)。 } if(ucCRCValue == 0) { return true。 } else { return false。 }}第 14 頁 共 14 頁 單片機(jī)中使用DS18B20的C語言程序和CRC校驗(yàn)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1