最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

哪位高手用過18B20,幫我看看啊,多謝了

作者:hongjun21 欄目:測控之家
哪位高手用過18B20,幫我看看啊,多謝了
我用的是arm編寫的程序,如下,初始化返回值是0說明初始化成功了,但是最后讀取的值a,b總是0xff,請各位高手指點一下。

#include "config.h"
#define DQ 1 << 18        /* P0.18控制    DQ    */

uint8 a=0; //溫度值低位
uint8 b=0; //溫度值高位
uint16 TEMP=0;
uint32 c=1; //驗證初始化是否成功

//延時t×1u秒程序
void delay1u(uint32 t)    
{    
    T0TC   = 0;                    
    T0PR   = 0;                        T0MCR  = 0x05;
    T0MR0  =t*(Fpclk/1000000);    /* 1u秒鐘定時                        */                            
    T0TCR  = 0x01;        
    while((T0IR & 0x01) == 0);
    T0IR = 0x01;
}    

//初始化函數(shù)
uint32 Init_DS18B20(void)
{
IO0DIR |= DQ;
IO0SET = DQ;    //
delay1u(48);  //稍做延時
IO0CLR = DQ;    //將DQ拉低
delay1u(480); //精確延時 大于 480us
IO0DIR = IO0DIR&(~DQ);    //拉高總線輸入
delay1u(64);
c = IO0PIN&DQ;      //稍做延時后 如果x!=0則初始化失敗 x=0則初始化成功
delay1u(300);
return c;
}

//寫一個字節(jié)
void WriteOneChar(uint8 dat)
{
uint8 i=0;
for (i=8; i>0; i--)
{
  IO0DIR |= DQ;   //改回輸出
  IO0CLR = DQ;
  delay1u(2);
  if(dat&0x01)
      {
          IO0DIR &= (~DQ);//釋放總線
      }
  else
      {    
          IO0CLR = DQ;
      }
  delay1u(60);
  IO0DIR &= (~DQ);//改回輸入
  delay1u(2);
  dat>>=1;
}

}
//讀一個字節(jié)
uint8 ReadOneChar(void)
{
    uint8 i=0;
    uint8 dat = 0;
    for (i=8;i>0;i--)
{
      dat>>=1;
      IO0DIR |= DQ;    //改回輸出
      IO0CLR = DQ; // 給脈沖信號
      delay1u(2);
       IO0DIR = IO0DIR&(~DQ); // 拉高總線輸入
      delay1u(12);
      if(IO0PIN&DQ)
     dat|=0x80;
     delay1u(60);
}
     return dat;
}
int main(void)
{
    PINSEL1 &= 0XFFFFFFCF; //設(shè)置P0.18為通用IO
    while(1)
    {
    c = Init_DS18B20();
    WriteOneChar(0xCC); // 跳過讀序號列號的操作
    WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
    delay1u(2000000);    //延時2s
    c = Init_DS18B20();
    WriteOneChar(0xCC); //跳過讀序號列號的操作
    WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
    a=ReadOneChar();
    b=ReadOneChar();
    TEMP=(b<<4)|(a>>4);
    }
    return 0;
}
也可回復(fù)至我的信箱:hongjunbj@163.com 再次感謝


2樓: >>參與討論
mullife
我用過
我現(xiàn)在正在用,不過我是用匯編的。開始也用C,不過還向延時不是很精確(水平有限),用匯編就很順利了,因為他的時序要求很高。所以還是用匯編好。

3樓: >>參與討論
again_gyf
把時序搞清楚就可以出來,你可以查看編譯后的時間啊!
把時序搞清楚就可以出來,你可以查看編譯后的時間。

4樓: >>參與討論
huang530
我也是用匯編的
 
5樓: >>參與討論
wpfhit
我用C寫的
我用C寫的
但是延時用for語句
讓變量減到零
翻譯成匯編就是djnz

6樓: >>參與討論
spwp
哪位高手用過18B20,幫我看看啊,多謝了
嚴(yán)格按照讀寫時序,應(yīng)該問題不大。

7樓: >>參與討論
wwg911
時序也不是太嚴(yán)格
只是有個1US應(yīng)該嚴(yán)格保證,有沒有可能被中斷

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
熱釋電傳感器輸出什么信號?
電壓比較器在什么時候需要使用雙電源啊?
能實現(xiàn)一路4-20mA信號變?yōu)閮陕沸盘?/a>
4-20MA的電流測量方法詢問??
15VAC轉(zhuǎn)成12VDC該用什么啊
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號