91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 接口電路

1-Wire總線與DS18B20應用仿真

發布時間:2008/8/16 0:00:00 訪問次數:998

  1-wire總線的基本通信協議

  作為一種單主機多從機的總線系統,在一條1-wire總線上可掛接的從器件數量幾乎不受限制。為了不引起邏輯上的沖突,所有從器件的1-wire總線接口都是漏極開路的,因此在使用時必須對總線外加上拉電阻(一般取5kω左右)。主機對1-wire總線的基本操作分為復位、讀和寫三種,其中所有的讀寫操作均為低位在前高位在后。復位、讀和寫是1-wire總線通信的基礎,下面通過具體程序詳細介紹這3種操作的時序要求。(程序中dq代表1-wire總線,定義為p1.0,uchar定義為unsigned char)

  1 1-wire總線的復位

  復位是1-wire總線通信中最為重要的一種操作,在每次總線通信之前主機必須首先發送復位信號。如程序1.1所示,產生復位信號時主機首先將總線拉低480~960μs然后釋放,由于上拉電阻的存在,此時總線變為高電平。1-wire總線器件在接收到有效跳變的15~60μs內會將總線拉低60~240μs,在此期間主機可以通過對dq采樣來判斷是否有從器件掛接在當前總線上。函數reset()的返回值為0表示有器件掛接在總線上,返回值為1表示沒有器件掛接在總線上。

  程序1.1 總線復位

  uchar reset(void)
{
uchar tdq;
dq=0; //主機拉低總線
delay480μs(); //等待480μs
dq=1; //主機釋放總線
delay60μs(); //等待60μs
tdq=dq; //主機對總線采樣
delay480μs(); //等待復位結束
return tdq; //返回采樣值
}

  2 1-wire總線的寫操作

  由于只有一條i/o線,主機1-wire總線的寫操作只能逐位進行,連續寫8次即可寫入總線一個字節。如程序1.2所示,當mcs-51單片機的時鐘頻率為12mhz時,程序中的語句_nop_();可以產生1μs的延時,調用此函數時需包含頭文件“intrins.h”。向1-wire總線寫1bit至少需要60μs,同時還要保證兩次連續的寫操作有1μs以上的間隔。若待寫位wbit為0則主機拉低總線60μs然后釋放,寫0操作完成。若待寫位wbit為1,則主機拉低總線并在1~15μs內釋放,然后等待60μs,寫1操作完成。

  程序1.2 向總線寫1bit

  void writebit(uchar wbit)
{
  _nop_();
//保證兩次寫操作間隔1μs以上
  dq=0;
_nop_();
//保證主機拉低總線1μs以上
if(wbit)
{
//向總線寫1
dq=1;
delay60μs();
}
else
{
//向總線寫0
delay60μs();
dq=1;
}
}

  3 1-wire總線的讀操作

  與寫操作類似,主機對1-wire總線的讀操作也只能逐位進行,連續讀8次,即可讀入主機一個字節。從1-wire總線讀取1bit同樣至少需要60μs,同時也要保證兩次連續的讀操作間隔1μs以上。如程序1.3所示,從總線讀數據時,主機首先拉低總線1μs以上然后釋放,在釋放總線后的1~15μs內主機對總線的采樣值即為讀取到的數據。

程序1.3 從總線讀1bit

uchar readbit()
{
uchar tdq;
_nop_();
//保證兩次連續寫操作間隔1μs以上
dq=0;
_nop_();
//保證拉低總線的時間不少于1μs
dq=1;
_nop_();
tdq=dq;
//主機對總線采樣
delay60μs();
//等待讀操作結束
return tdq;
//返回讀取到的數據
}

數字溫度傳感器ds18b20

1 ds18b20的基本特性

● 采用1-wire總線接口,可以方便實現多點測溫。
● 與主機連接方便,除5kω的總線上拉電阻外無須其他額外器件。
● 電源電壓范圍為3.0~5.5v,與3.3v和5v數字系統均可很好地兼容。
● 測量范圍為-55~+125℃,分辨率為9~12位可編程。
● 通過編程可設置溫度報警上下限,設置值掉電不丟失。
● 內部集成了用于器件尋址的64bit光刻rom編碼。

  2 ds18b20中的存儲器

  在ds18b20中共有三種存儲器,分別是rom、ram、eeprom,每種存儲器都有其特定的功能,可查閱相關資料。

  3 1-wire總線rom功能命令

  在ds18b20內部光刻了一個長度為64bit的rom編碼,這個編碼是器件的身份識別標志。當總線上掛接著多個ds18b20時可以通過rom編碼對特定器件進行操作。rom功能命令是針對器件的rom編碼進行操作的命令,共有5個,長度均為8bit(1byte)。

  ①讀rom(33h)

  當掛接在總線上的1-wire總線器件接收到此命令時,會在主機讀操作的配合下將自身的rom編碼按由低位到高位的順序依次發送給主機。總線上掛接有多個ds18b20時,此命令會使所有器件同時向主機傳送自身的rom編碼,這將導致數據的沖突。

  ②匹配rom(55h)

  主機在發送完此命令后,必須緊接著發送一個64bit的rom編碼,與此rom編碼匹配的從器件會響應主機的后續命令,而其他從器件則處于等待狀態。該命令主要用于選擇總線上的

  1-wire總線的基本通信協議

  作為一種單主機多從機的總線系統,在一條1-wire總線上可掛接的從器件數量幾乎不受限制。為了不引起邏輯上的沖突,所有從器件的1-wire總線接口都是漏極開路的,因此在使用時必須對總線外加上拉電阻(一般取5kω左右)。主機對1-wire總線的基本操作分為復位、讀和寫三種,其中所有的讀寫操作均為低位在前高位在后。復位、讀和寫是1-wire總線通信的基礎,下面通過具體程序詳細介紹這3種操作的時序要求。(程序中dq代表1-wire總線,定義為p1.0,uchar定義為unsigned char)

  1 1-wire總線的復位

  復位是1-wire總線通信中最為重要的一種操作,在每次總線通信之前主機必須首先發送復位信號。如程序1.1所示,產生復位信號時主機首先將總線拉低480~960μs然后釋放,由于上拉電阻的存在,此時總線變為高電平。1-wire總線器件在接收到有效跳變的15~60μs內會將總線拉低60~240μs,在此期間主機可以通過對dq采樣來判斷是否有從器件掛接在當前總線上。函數reset()的返回值為0表示有器件掛接在總線上,返回值為1表示沒有器件掛接在總線上。

  程序1.1 總線復位

  uchar reset(void)
{
uchar tdq;
dq=0; //主機拉低總線
delay480μs(); //等待480μs
dq=1; //主機釋放總線
delay60μs(); //等待60μs
tdq=dq; //主機對總線采樣
delay480μs(); //等待復位結束
return tdq; //返回采樣值
}

  2 1-wire總線的寫操作

  由于只有一條i/o線,主機1-wire總線的寫操作只能逐位進行,連續寫8次即可寫入總線一個字節。如程序1.2所示,當mcs-51單片機的時鐘頻率為12mhz時,程序中的語句_nop_();可以產生1μs的延時,調用此函數時需包含頭文件“intrins.h”。向1-wire總線寫1bit至少需要60μs,同時還要保證兩次連續的寫操作有1μs以上的間隔。若待寫位wbit為0則主機拉低總線60μs然后釋放,寫0操作完成。若待寫位wbit為1,則主機拉低總線并在1~15μs內釋放,然后等待60μs,寫1操作完成。

  程序1.2 向總線寫1bit

  void writebit(uchar wbit)
{
  _nop_();
//保證兩次寫操作間隔1μs以上
  dq=0;
_nop_();
//保證主機拉低總線1μs以上
if(wbit)
{
//向總線寫1
dq=1;
delay60μs();
}
else
{
//向總線寫0
delay60μs();
dq=1;
}
}

  3 1-wire總線的讀操作

  與寫操作類似,主機對1-wire總線的讀操作也只能逐位進行,連續讀8次,即可讀入主機一個字節。從1-wire總線讀取1bit同樣至少需要60μs,同時也要保證兩次連續的讀操作間隔1μs以上。如程序1.3所示,從總線讀數據時,主機首先拉低總線1μs以上然后釋放,在釋放總線后的1~15μs內主機對總線的采樣值即為讀取到的數據。

程序1.3 從總線讀1bit

uchar readbit()
{
uchar tdq;
_nop_();
//保證兩次連續寫操作間隔1μs以上
dq=0;
_nop_();
//保證拉低總線的時間不少于1μs
dq=1;
_nop_();
tdq=dq;
//主機對總線采樣
delay60μs();
//等待讀操作結束
return tdq;
//返回讀取到的數據
}

數字溫度傳感器ds18b20

1 ds18b20的基本特性

● 采用1-wire總線接口,可以方便實現多點測溫。
● 與主機連接方便,除5kω的總線上拉電阻外無須其他額外器件。
● 電源電壓范圍為3.0~5.5v,與3.3v和5v數字系統均可很好地兼容。
● 測量范圍為-55~+125℃,分辨率為9~12位可編程。
● 通過編程可設置溫度報警上下限,設置值掉電不丟失。
● 內部集成了用于器件尋址的64bit光刻rom編碼。

  2 ds18b20中的存儲器

  在ds18b20中共有三種存儲器,分別是rom、ram、eeprom,每種存儲器都有其特定的功能,可查閱相關資料。

  3 1-wire總線rom功能命令

  在ds18b20內部光刻了一個長度為64bit的rom編碼,這個編碼是器件的身份識別標志。當總線上掛接著多個ds18b20時可以通過rom編碼對特定器件進行操作。rom功能命令是針對器件的rom編碼進行操作的命令,共有5個,長度均為8bit(1byte)。

  ①讀rom(33h)

  當掛接在總線上的1-wire總線器件接收到此命令時,會在主機讀操作的配合下將自身的rom編碼按由低位到高位的順序依次發送給主機。總線上掛接有多個ds18b20時,此命令會使所有器件同時向主機傳送自身的rom編碼,這將導致數據的沖突。

  ②匹配rom(55h)

  主機在發送完此命令后,必須緊接著發送一個64bit的rom編碼,與此rom編碼匹配的從器件會響應主機的后續命令,而其他從器件則處于等待狀態。該命令主要用于選擇總線上的

相關IC型號

熱門點擊

 

推薦技術資料

耳機放大器
    為了在聽音樂時不影響家人,我萌生了做一臺耳機放大器的想... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
江门市| 五华县| 赤水市| 澜沧| 贵德县| 文成县| 房山区| 称多县| 诸暨市| 开化县| 云安县| 大厂| 新余市| 柯坪县| 南漳县| 策勒县| 铜山县| 江永县| 苗栗市| 夏津县| 南雄市| 溆浦县| 屏山县| 霍城县| 格尔木市| 桃园市| 临桂县| 册亨县| 永昌县| 桦甸市| 石景山区| 阿鲁科尔沁旗| 永春县| 讷河市| 呼图壁县| 日土县| 湖北省| 汾阳市| 咸阳市| 会昌县| 凤冈县|