找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2828|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

DS18B20.H 頭文件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75926 發(fā)表于 2015-4-3 01:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. //DS1820 C51 子程序
  2. //這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時(shí)的時(shí)間
  3. //sbit DQ =P2^1;//根據(jù)實(shí)際情況定義端口
  4. typedef unsigned char byte;
  5. typedef unsigned int  word;
  6. //延時(shí)
  7. void delay(word useconds)
  8. {
  9.   for(;useconds>0;useconds--);
  10. }
  11. //復(fù)位
  12. byte ow_reset(void)
  13. {
  14.   byte presence;
  15.   DQ = 0; //pull DQ line low
  16.   delay(29); // leave it low for 480us
  17.   DQ = 1; // allow line to return high
  18.   delay(3); // wait for presence
  19.   presence = DQ; // get presence signal
  20.   delay(25); // wait for end of timeslot
  21.   return(presence); // presence signal returned
  22. }     // 0=presence, 1 = no part
  23. //從 1-wire 總線上讀取一個(gè)字節(jié)
  24. byte read_byte(void)
  25. {
  26.   byte i;
  27.   byte value = 0;
  28.   for (i=8;i>0;i--)
  29.   {
  30.     value>>=1;
  31.     DQ = 0; // pull DQ low to start timeslot
  32.     DQ = 1; // then return high
  33.     delay(1);  //for (i=0; i<3; i++);
  34.     if(DQ)value|=0x80;
  35.     delay(6); // wait for rest of timeslot
  36.   }
  37.   return(value);
  38. }
  39. //向 1-WIRE 總線上寫(xiě)一個(gè)字節(jié)
  40. void write_byte(char val)
  41. {
  42.   byte i;
  43.   for (i=8; i>0; i--) // writes byte, one bit at a time
  44.   {
  45.     DQ = 0; // pull DQ low to start timeslot
  46.     DQ = val&0x01;
  47.     delay(5); // hold value for remainder of timeslot
  48.     DQ = 1;
  49.     val=val/2;
  50.   }
  51.   delay(5);
  52. }
  53. //讀取溫度
  54. char Read_Temperature(void)
  55. {
  56.   union{
  57.     byte c[2];
  58.     int x;
  59.   }temp;
  60.   ow_reset();
  61.   write_byte(0xCC); // Skip ROM
  62.   write_byte(0xBE); // Read Scratch Pad
  63.   temp.c[1]=read_byte();
  64.   temp.c[0]=read_byte();
  65.   ow_reset();
  66.   write_byte(0xCC); //Skip ROM
  67.   write_byte(0x44); // Start Conversion
  68.   return temp.x/2;
  69. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表