找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2538|回复: 0
打印 上一主题 下一主题
收起左侧

DS18B20.H 头文件

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-3 01:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. //DS1820 C51 子程序
  2. //这里以11.0592M晶体为例,不同的晶体速度可能需要调整延时的时间
  3. //sbit DQ =P2^1;//根据实际情况定义端口
  4. typedef unsigned char byte;
  5. typedef unsigned int  word;
  6. //延时
  7. void delay(word useconds)
  8. {
  9.   for(;useconds>0;useconds--);
  10. }
  11. //复位
  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 总线上读取一个字节
  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 总线上写一个字节
  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. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表