找回密码
 立即注册

QQ登录

只需一步,快速开始

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

DS18B20头文件和零部件配置,很好用的

[复制链接]
跳转到指定楼层
楼主
这里是一些常用的头文件和零部件配置。很好用的,大家可以试试。


单片机源程序如下:
  1. #include <STC12C5A60S2.H>
  2. #include "ds18b20.h"
  3. #include "delay.h"

  4. sbit IO_18B20 = P3^5;     //DS18B20通信引脚

  5. unsigned int temp;
  6. float f;

  7. bit Get18B20Ack()
  8. {
  9.         bit ack;

  10.         EA = 0;
  11.         IO_18B20 = 0;         
  12.         delay_us(500);         //500us复位脉冲
  13.         IO_18B20 = 1;         
  14.         delay_us(60);         //延时60us
  15.         ack = IO_18B20;         //读取存在脉冲
  16.         while(!IO_18B20);//等待脉冲结束
  17.         EA = 1;

  18.         return ack;
  19. }
  20. void  Write18B20(unsigned char dat)
  21. {
  22.         unsigned char mask;
  23.         EA = 0;
  24.         for(mask=0x01; mask!= 0; mask<<=1)         //低位在先,依次移出8个bit
  25.         {
  26.                 IO_18B20 = 0;
  27.                 delay_us(2);                  //产生2us低电平脉冲
  28.                 if((mask&dat) == 0)           //输出bit值
  29.                         IO_18B20 = 0;
  30.                 else
  31.                         IO_18B20 = 1;
  32.                 delay_us(60);                        //延时60us后拉高通信引脚
  33.                 IO_18B20 = 1;
  34.         }
  35.         EA = 1;
  36. }

  37. unsigned char Read18B20()
  38. {
  39.         unsigned char dat;
  40.         unsigned char mask;

  41.         EA = 0;
  42.         for(mask=0x01; mask!=0; mask<<=1)          //低位在先,依次采集8位bit
  43.         {
  44.                 IO_18B20 = 0;
  45.                 delay_us(2);                                          //2us低电平脉冲
  46.                 IO_18B20 = 1;                                          //结束低电平脉冲,等待18B02输出数据
  47.                 delay_us(3);                                          //延时
  48.                 if(!IO_18B20)
  49.                         dat &= ~mask;
  50.                 else
  51.                         dat |= mask;
  52.                 delay_us(60);
  53.         }
  54.         EA = 1;

  55.         return dat;
  56. }

  57. bit Start18B20()
  58. {
  59.         bit ack;

  60.         ack = Get18B20Ack();          //执行总线复位,并获取应答
  61.         if(ack == 0)
  62.         {
  63.                 Write18B20(0xCC);           //跳过ROM操作
  64.                 Write18B20(0x44);           //启动一次温度转换
  65.         }
  66.         return ~ack;
  67. }

  68. unsigned int Get18B20Temp()
  69. {
  70.         bit ack;
  71.         unsigned char LSB, MSB;           //定义16bit温度值的低字节
  72.         Start18B20();            //每次读取都要设置18b20模式
  73.         delay_ms(750);                                        //温度转换启动后,等待它转换完毕
  74.        
  75.         ack = Get18B20Ack();
  76.        
  77. ……………………

  78. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
DS18B20.zip (36.1 KB, 下载次数: 18)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:88606 发表于 2020-5-29 08:50 | 只看该作者
看贴回贴是美德!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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