久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 關于溫度傳感器試驗ds18b20芯片資料不正確 [打印本頁]

作者: yantao    時間: 2010-5-27 23:23
標題: 關于溫度傳感器試驗ds18b20芯片資料不正確

hi

 

我發現在溫度試驗中,根據給的ds18b20芯片資料,其應該是8位傳感器,其給出的溫度的例子為:

 

溫度          高位                   低位

+125        0x00                 0xFA

+25          0x00                 0x32

+0.5         0x00                 0x01

0              0x00                 0x00

-0.5          0xFF                 0xFF

-25           0xFF                 0xCE

-55           0xFF                 0x92

 

根據上表,程序似乎采集溫度程序似乎應該這樣寫:

if (temph > 0) // 負號處理

{

    templ = (~templ)+1;

    f = 1;

}

tempdf = templ & 0x1; // tempdf > 0 代表0.5度

tempint = templ>>1;

    

但是這樣在實際板子上顯示結果不正確。

 

通過讀程序,發現templ的低4位是小數,temph的低4位加上templ的高4位組成溫度值的整數部分,因此應該是十二位的溫度傳感器,不知道我的理解對不對?

 

如果正確請提供板子上溫度傳感器的正確資料,謝謝!

 

另外,程序在22.1184MHz晶振下工作正常,在11.0592MHz下LED數碼管不停閃爍,不知道是什么原因?

[此貼子已經被作者于2010-5-27 23:31:03編輯過]

作者: admin    時間: 2010-5-27 23:36

   資料難道有誤?待我仔細看看.

 

   我一共了提供了 3個以上的 ds18b20 程序,其中有一個c語言寫的精度是0.5度,其他的精度都是0.1攝氏度晶振 都是11.0592 或者是12m 的 .

[此貼子已經被作者于2010-5-27 23:39:51編輯過]

作者: yantao    時間: 2010-5-28 08:40

hi

溫度試驗的源程序:

void read_ds1820()                //讀
{
 uchar delay,i,j,k,temp,temph,templ;
 j=2;                           //讀2位字節數據
 do
 {
  for(i=8;i>0;i--)            //一個字節分8位讀取
  {
   temp>>=1;                //讀取1位右移1位
   TMDAT=0;                 //數據線置低電平
   delay=1;
   while(--delay);          //延時2us
   TMDAT=1;                 //拉高總線
   delay=4;
   while(--delay);          //延時8us
   if(TMDAT)temp|=0x80;     //讀取1位數據
   delay=25;
   while(--delay);          //讀取1位數據后延時50us
  }
  if(j==2)templ=temp;         //讀取的第一字節存templ
  else temph=temp;            //讀取的第二字節存temph
 }while(--j);
 f=0;                           //初始溫度標志為正
 if((temph&0xf8)!=0x00)         //若溫度為負的處理,對二進制補碼的處理
 {
  f=1;                        //為負溫度f置1
  temph=~temph;
  templ=~templ;
  k=templ+1; // 下面幾行代碼應該在判斷是否溢出,當templ取反恰好等于255時,加1將溢出,此時templ將為零
  templ=k;

//我覺得是否可以根據PSW.Cy來判斷溢出,if (CY != 0)作為判斷條件
  if(k>255)  // 當k>255時判斷為溢出情況,所以k似乎應該聲明為short型
  {
   temph++;
  }
 }
 tempdf=templ&0x0f;            //將讀取的數據轉換成溫度值,整數部分存tempint,小數部分存tempdf,這里可以看出,小數部分是低字節的低4位
 templ>>=4;
 temph<<=4;
 tempint=temph|templ;  // 溫度整數部分是高字節的低4位在加上低字節的高4位
}






歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av观看免费 | 午夜影院在线观看视频 | 国产精品自拍一区 | 色综合五月天 | 国产精品无遮挡 | 五月激情综合网 | 日韩不卡一区二区 | 精品免费国产 | 成人三级小说 | 免费成人结看片 | 香蕉视频国产 | 四虎4hu永久免费网站影院 | 五月婷婷亚洲 | 国产二区三区 | 国产原创精品 | 亚洲日本高清 | 久久国产亚洲 | 亚洲精品一区二区三区蜜桃久 | 欧美精品在线免费观看 | 久久精品一区二区三区四区五区 | 国产美女精品 | 国产精品美女毛片真酒店 | 日本成人免费网站 | av狠狠干| 国产精品乱码一区二区三区 | 亚洲精品一区二区三区在线 | 四虎在线播放 | 久草视频免费看 | 一级免费av| 日本黄色一级视频 | 日日夜夜精品免费 | 日本加勒比在线 | 在线观看视频一区 | 精品久久久久久久 | 久久精品免费观看 | 丰满少妇av| 99热99| 成人黄色免费 | 一级免费毛片 | 久久伊人久久 | 日韩精品视频在线 |