亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ds18b20.c

?? 單片機c語言程序設(shè)計100例--基于PIC+PROTEUS
?? C
字號:
//-----------------------------------------------------------------
//  名稱: 多點DS18B20控制程序
//-----------------------------------------------------------------
#include <pic.h>
#include <string.h>
#include <stdio.h>
#include "DS18B20.h"
#include "LM044L.h"
//溫度小數(shù)位對照表(不使用該表時,還可以通過計算法得到溫度小數(shù)部分)
const INT8U df_Table[] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 };
INT8U  DS18B20_STATUS;                //器件狀態(tài),為0時在線,否則表示被撥出或無響應
INT8U  Temp_Value[2];                 //存放所讀取的兩字節(jié)溫度數(shù)據(jù)
INT8U  ROMCODE[8];                    //存放搜索到的64位設(shè)備ROMCODE
INT8U  Level,Last_Level;              //當前分支點和上次搜索的最底層分支點
INT8U  DS_CNT;                        //搜索到的器件個數(shù)
INT8U  CRC;                           //校驗變量
bit    bit_A,bit_B;                   //讀ROMCODE的當前位原碼與反碼
bit    bj;                            //臨時位變量  
extern INT8U LCD_Buffer[];            //液晶顯示緩沖
float  Temp_i,Temp_f;                 //溫度的整數(shù)與小數(shù)部分
//-----------------------------------------------------------------
// 延時nx100ms
//-----------------------------------------------------------------
void DelayX100ms(INT8U n)
{
   while (n--) __delay_ms(100);
}

//-----------------------------------------------------------------
// 從1-Wire總線讀取1位
//-----------------------------------------------------------------
INT8U Read_Romcode_bit()
{    


}

//-----------------------------------------------------------------
// 搜索1-Wire總線上一只器件的64位ROMCODE
// 返回0表示搜索一個ROMCODE,否則表示無器件或搜索的ROMCODE最后校驗出錯
//-----------------------------------------------------------------
INT8U Search_ROM1()
{
   volatile INT8U i, j, k;
   RESET();                          //復位
   if (DS18B20_STATUS) return 0;     //無器件在線時返回
   Write_Byte(SERACH_ROM);           //發(fā)送ROM搜索命令
   for (i = 0; i < 64; i++)          //從0位開始索64位ROMCODE
   {  bit_A = Read_Romcode_bit();    //讀取第i位的原碼
      bit_B = Read_Romcode_bit();    //讀取第i位的反碼
      //---------------------------------------------------------11
      //讀取的結(jié)果為"11"時,搜索結(jié)束,程序返回
      if (bit_A == 1 && bit_B == 1) return 1;
      //-----------------------------------------------------10或01
      //讀取的結(jié)果為"10"或"01"時,表示所有從機的此位均為"0"或"1"
      //將此位保存到8字節(jié)共64位的數(shù)組ROMCODE中.
      //如果為0表示所有從機此位均為"0",故發(fā)送"0"使所有從機繼續(xù)通信
      //如果為1表示所有從機此位均為"1",故發(fā)送"1"使所有從機繼續(xù)通信
      else if (bit_A != bit_B) //兩位為01或10
      {  



      }
      //---------------------------------------------------------00
      //讀取的結(jié)果為"00"時,表示從機中此位同時有"0"與"1",在該層出現(xiàn)搜索分支
      else if (bit_A == 0 && bit_B == 0)
      {
         //"="=====================================================
         //當前搜索遇到的分支層位置等于前一搜索路徑中最低的分支層位置
         if(i == Last_Level)
         {  



         }
         //">"=====================================================
         //當前搜索遇到的分支層低于前一趟搜索的最低分支層
         else if (i > Last_Level) 
         {  




         }
         //"<"=====================================================
         //當前搜索遇到的分支層高于上一次搜索的最低分支層
         //此時的“左右分支選擇”決定于上一次ROMCODE搜索結(jié)果中的對應位
         else if (i < Last_Level)
         {  




         }
     } //完成1位搜索------------------------------------------------
   } //完成64位搜索-------------------------------------------------
   //對8字(64位)ROMCODE執(zhí)行CRC8校驗
   


   //CRC正確時返回0,否則返回1
   


}

//-----------------------------------------------------------------
// 轉(zhuǎn)換并顯示當前找到的器件的8字節(jié)(64位)ROMCODE
//-----------------------------------------------------------------
void Show_Romcode(INT8U r, INT8U c,INT8U *RID)
{
   INT8U i;  char buf[3]; 
   for (i = 0; i < 8; i++) //讀取8字節(jié)(64位)光刻碼,從低字節(jié)開始讀取
   {  sprintf(buf,"%02X",ROMCODE[i]); //將當前字節(jié)轉(zhuǎn)換為十六進制字符串
      //將各字節(jié)轉(zhuǎn)換后的兩個十六進制字符由后向前存入RomCodeString
      //各字節(jié)的兩字符存入順序依次是:(14,15)(12,13)(10,11)......(2,3)(0,1)


      //上面這一行還可以改成以下兩行


   }
   LCD_Buffer[16] = '\0';
   LCD_ShowString(r,c,LCD_Buffer);//顯示ROMCODE 
}

//-----------------------------------------------------------------
// 搜索1-Wire上掛載的所有器件的ROMCODE
//-----------------------------------------------------------------
INT8U Search_ALL_ROM()
{ 
   INT8U i; 
   DS_CNT = 0; //初始時搜索到的器件個數(shù)歸0
   Level = 0;  //初始時設(shè)搜索分支層為0
   //開始搜索第一個器件之前將64位的ROMCODE清0
   for (i = 0; i < 8; i++) ROMCODE[i] = 0x00;
   //開始搜索所有在線器件的ROMCODE
   while(1)
   {
      //保存上次搜索遇到的最低分支層
      Last_Level = Level;
      //當前分支層暫設(shè)為0
      Level = 0; 
      //搜索一個新的ROMCODE,未找到或出錯時退出
      if (Search_ROM1()) break;
      //轉(zhuǎn)換并顯示當前找到的器件的8字節(jié)(64位)ROMCODE
      Show_Romcode(2,0,ROMCODE);
      //僅保存DS18B20器件的ROMCODE
      //(限于EEPROM空間,本例僅最多只保存32個ROMCODE)
      if (DS_CNT < 32 && ROMCODE[0] == 0x28) 
      {  //將所找到的器件ROMCODE寫入PIC EEPROM
         for (i = 0; i < 8; i++) 
         {  EEPROM_WRITE(DS_CNT * 8 + i,ROMCODE[i]); 
            while(WR);
         }    
         __delay_ms(100);  DS_CNT++; //累加所找到的總器件數(shù)
      }
      //顯示當前找到的總器件數(shù)
      sprintf(LCD_Buffer,"Found:%d",DS_CNT);
      LCD_ShowString(1,0,LCD_Buffer); 
      //如果完成某次搜索后當前分支層仍為0則結(jié)束查找
      if (Level == 0) break;
      __delay_ms(100);
   }
   //將所搜索到的總器件數(shù)寫入EEPROM 0xFF地址
   EEPROM_WRITE(0xFF,DS_CNT); while(WR);
   return DS_CNT; //返回所搜索到的器件總數(shù)
}

//-----------------------------------------------------------------
// 讀取存放于8字節(jié)數(shù)組A中的ROMCODE的第i位(0/1)
//-----------------------------------------------------------------
INT8U Read_ROMCODE_Bit(INT8U A[],INT8U i)
{
   //得出64位ROMCODE中第i位所處的字節(jié)值,及該位的掩碼字節(jié)k



}

//-----------------------------------------------------------------
// 將存放于8字節(jié)數(shù)組A中的ROMCODE的第i位設(shè)為0/1
//-----------------------------------------------------------------
void Save_ROMCODE_Bit(INT8U A[],INT8U i,INT8U b)
{    
   //先求出64位中的第i位所在的字節(jié)在數(shù)組中的索引j
   //再根據(jù)該位在此字節(jié)內(nèi)8位中的位置(i % 8)再得出掩碼字節(jié)k
   //例如要設(shè)第3位為1,則有k = 0x01 << 3 = 0B00001000.
   
 
   //相應位設(shè)為1或0
   

}

//-----------------------------------------------------------------
// 根據(jù)ROMCODE碼讀取溫度數(shù)據(jù)
//-----------------------------------------------------------------
float Get_Temperature(char *rom_code)
{   
   float sign = 1;
   RESET();                      //復位
   ROMCODE_Match(rom_code);      //發(fā)ROMCODE匹配命令
   Write_Byte(CONVERT);          //溫度轉(zhuǎn)換命令   
   DelayX100ms(7);               //12位分辯率轉(zhuǎn)換時間為750ms
   __delay_ms(50);
   RESET();                      //復位
   ROMCODE_Match(rom_code);      //發(fā)ROMCODE匹配命令
   Write_Byte(READ_SCRATCHPAD);  //讀RAM命令
   Temp_Value[0] = Read_Byte();  //讀取兩字節(jié)溫度數(shù)據(jù)
   Temp_Value[1] = Read_Byte();
   //如果為負數(shù)則取反加1,并設(shè)置負數(shù)標識
   //按技術(shù)手冊說明,高5位為符號位,與上0xF8進行+/-判斷   
   if ( (Temp_Value[1] & 0xF8) == 0xF8) 
   {  




   }   



}

//-----------------------------------------------------------------
// 發(fā)送匹配命令,并發(fā)送64位的ROMCODE
//-----------------------------------------------------------------
void ROMCODE_Match(INT8U ROMCODE[])
{    
   //先發(fā)送ROM匹配命令,然后發(fā)送64位的ROMCODE


}

//-----------------------------------------------------------------
// 向1-Wire總線寫1字節(jié)
//-----------------------------------------------------------------
void Write_Byte(INT8U A)
{
   for (INT8U i = 0x01;i != 0x00; i <<= 1)
   {    
      if (A & i) Write_DQ_bit(1); else Write_DQ_bit(0);
   }
}

//-----------------------------------------------------------------
// 從1-Wire總線讀取1字節(jié)
//-----------------------------------------------------------------
INT8U Read_Byte()        
{    
   INT8U i,d = 0x00;
   for (i = 0; i < 8; i++)
   {
      Read_Slot(); if (DQ == 1)  d |= (1<<i); __delay_us(52);
   }
   return d;
}

//-----------------------------------------------------------------
// 向1-Wire總線寫1位0/1
//-----------------------------------------------------------------
void Write_DQ_bit(INT8U b)
{    
   DQ_DIR = 0;  DQ = 0;           //DQ輸出   
   if (b) {  __delay_us(5);   DQ_DIR = 1;  __delay_us(72);  }
   else   {  __delay_us(82);  DQ_DIR = 1;  }
}

//-----------------------------------------------------------------
// 發(fā)送讀時隙時序
//-----------------------------------------------------------------
void Read_Slot()        
{    
   DQ_DIR = 0; DQ = 0; NOP(); NOP(); DQ_DIR = 1; NOP(); NOP();
}

//-----------------------------------------------------------------
// 1-Wire總線復位
//----------------------------------------------------------------- 
void RESET()
{    


}

//-----------------------------------------------------------------
// CRC8校驗函數(shù) (基于該函數(shù)可得出256字節(jié)的校驗碼表,改用查表法進行校驗)
// 校驗多項式: x^8 + x ^ 5 + x ^ 4 + 1, 去高位后倒序:0x8C
//----------------------------------------------------------------- 
void CRC8(INT8U d)   
{



}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜中文字幕| 狠狠色综合日日| 日韩理论片一区二区| 日韩一区二区在线看| 91精品国产免费久久综合| 精品视频在线视频| 欧美日韩国产精选| 欧美伦理电影网| 欧美一区二区三区日韩| 日韩午夜在线影院| 久久久久久**毛片大全| 久久久精品蜜桃| 中文字幕第一区综合| 亚洲欧美一区二区视频| 亚洲另类春色校园小说| 亚洲成人资源网| 麻豆成人久久精品二区三区小说| 日韩综合一区二区| 麻豆国产欧美一区二区三区| 国产一区二区看久久| 成人免费视频视频| 91久久免费观看| 欧美精品丝袜久久久中文字幕| 在线观看日韩精品| 日韩亚洲欧美在线观看| 国产视频一区二区在线| 亚洲精选视频在线| 日韩电影在线免费看| 国产在线视视频有精品| 99re视频精品| 91精品国产高清一区二区三区 | 精彩视频一区二区| 极品少妇xxxx精品少妇偷拍| 成年人国产精品| 欧美日韩一区二区在线观看视频| 精品久久一二三区| 亚洲欧美日韩系列| 日本中文字幕不卡| 成人短视频下载| 91麻豆精品91久久久久同性| 欧美国产综合色视频| 亚洲一区免费在线观看| 国产精品亚洲综合一区在线观看| 色婷婷综合久色| 亚洲精品一线二线三线无人区| 成人欧美一区二区三区视频网页 | 日日骚欧美日韩| 成人爽a毛片一区二区免费| 欧美日韩和欧美的一区二区| 国产拍揄自揄精品视频麻豆| 性做久久久久久久久| a4yy欧美一区二区三区| 欧美大尺度电影在线| 亚洲人成伊人成综合网小说| 国产一区二三区| 欧美男生操女生| 亚洲欧洲精品天堂一级| 韩国av一区二区| 在线不卡免费欧美| 亚洲影视在线观看| www.成人在线| 国产欧美精品一区| 激情综合色播激情啊| 欧美一区二区三区思思人| 尤物视频一区二区| 91在线视频观看| 国产精品视频观看| 国产成人午夜视频| xfplay精品久久| 精品一区二区三区av| 欧美精品99久久久**| 亚洲一区二区三区四区在线免费观看| 成人久久18免费网站麻豆 | 在线亚洲高清视频| 亚洲免费观看高清完整版在线| 丁香婷婷综合激情五月色| 日韩欧美国产三级电影视频| 日韩黄色小视频| 91精品一区二区三区久久久久久| 亚洲va欧美va国产va天堂影院| 91香蕉视频在线| 亚洲男同性恋视频| 日本福利一区二区| 一区二区三区在线视频免费| 在线一区二区视频| 亚洲一区二区三区免费视频| 欧美三级视频在线观看| 视频精品一区二区| 精品久久久久香蕉网| 国产乱码一区二区三区| 欧美精彩视频一区二区三区| 99精品在线免费| 亚洲乱码国产乱码精品精98午夜| 欧美亚洲综合一区| 午夜久久福利影院| 精品美女在线观看| 国产成人精品1024| 亚洲欧美日韩国产手机在线| 欧美视频中文一区二区三区在线观看| 亚洲永久精品大片| 精品久久久久久综合日本欧美| 国产美女精品在线| 亚洲美女精品一区| 欧美日韩激情一区二区| 韩国一区二区视频| 亚洲精品免费在线播放| 91麻豆精品国产| 成人性视频免费网站| 一区二区高清在线| 欧美成人在线直播| av不卡在线播放| 亚洲一二三四区不卡| 日韩精品一区二区三区视频| 成人污污视频在线观看| 天堂蜜桃91精品| 国产精品色一区二区三区| 色哟哟精品一区| 国产在线一区二区| 亚洲成人自拍一区| 中文字幕不卡一区| 欧美精选一区二区| 成人高清免费观看| 久久99最新地址| 亚洲精品大片www| 久久久久久久久久久久久女国产乱| 欧美曰成人黄网| 国产成人亚洲综合a∨猫咪| 三级在线观看一区二区| 亚洲日本在线a| 国产清纯在线一区二区www| 欧美一区二区在线不卡| 99久久99精品久久久久久| 国产一二精品视频| 丝袜亚洲另类欧美| 亚洲一区二区三区四区五区黄 | 成a人片亚洲日本久久| 久久精品国产亚洲高清剧情介绍| 亚洲精品久久久久久国产精华液| 久久影院电视剧免费观看| 欧美精品久久一区二区三区| 91美女片黄在线| 成年人午夜久久久| 国产v综合v亚洲欧| 国产一区中文字幕| 久久精品国产色蜜蜜麻豆| 五月婷婷综合激情| 亚洲国产wwwccc36天堂| 伊人一区二区三区| 亚洲欧洲日韩一区二区三区| 久久精品欧美日韩精品| 久久一留热品黄| 久久青草欧美一区二区三区| 日韩欧美电影在线| 欧美不卡一区二区| 精品久久久影院| 久久久亚洲精华液精华液精华液| 欧美成人女星排行榜| 欧美大片在线观看一区二区| 欧美一级片在线| 精品久久久久av影院| 日韩美女视频一区二区在线观看| 日韩一区二区三区视频| 日韩美一区二区三区| 26uuu成人网一区二区三区| 久久毛片高清国产| 中文字幕二三区不卡| 国产精品久久久久久久浪潮网站| 国产精品免费观看视频| 亚洲色图丝袜美腿| 亚洲国产精品久久人人爱| 婷婷中文字幕综合| 九九久久精品视频| 国产精品一区在线| 91香蕉国产在线观看软件| 日本韩国一区二区三区| 这里只有精品99re| 精品国产一区a| 中文字幕制服丝袜一区二区三区| 亚洲蜜桃精久久久久久久| 午夜精品福利一区二区三区av| 毛片av一区二区三区| 国产电影一区在线| 日本精品一区二区三区高清| 欧美日韩国产免费一区二区| 精品久久久三级丝袜| 亚洲欧美在线高清| 日韩精品一二三区| 国产不卡视频在线播放| 欧美三级电影在线看| 精品国精品自拍自在线| 亚洲视频一二三| 免费人成精品欧美精品 | 亚洲一二三四区| 久久国产欧美日韩精品| 91一区二区在线观看| 欧美大尺度电影在线| 亚洲自拍欧美精品| 国产盗摄一区二区三区| 欧美电影在哪看比较好| 欧美国产综合色视频|