当前位置: 首页 > news >正文

温度采集DS18B20

/********************************************************************
* 描述    :  该文件实现了用温度传感器件DS18B20对温度的采集,并在数码管上显示出来。
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

#define jump_ROM 0xCC
#define start 0x44
#define read_EEROM 0xBE

sbit DQ = P2^3;            //DS18B20数据口

unsigned char TMPH,TMPL; 

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/********************************************************************
* 名称 : delay()
* 功能 : 延时,延时时间大概为140US。
* 输入 : 无
* 输出 : 无
***********************************************************************/

void delay_1()
{
    int i,j;
    for(i=0; i<=10; i++)
    for(j=0; j<=2; j++)
;
}

/********************************************************************
* 名称 : delay()
* 功能 : 延时函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay(uint N)
{
    int i;
    for(i=0; i<N; i++)
    ;
}

/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
    uchar x,j;
    for(j=0;j<i;j++)
    for(x=0;x<=148;x++);    
}
/********************************************************************
* 名称 : Reset()
* 功能 : 复位DS18B20
* 输入 : 无
* 输出 : 无
***********************************************************************/
uchar Reset(void)
{
    uchar deceive_ready;
    DQ = 0;
    delay(29);
    DQ = 1;
    delay(3);
    deceive_ready = DQ;
    delay(25);
    return(deceive_ready);
}

/********************************************************************
* 名称 : read_bit()
* 功能 : 从DS18B20读一个位值
* 输入 : 无
* 输出 : 从DS18B20读出的一个位值
***********************************************************************/
uchar read_bit(void)
{
    uchar i;
    DQ = 0;
    DQ = 1;
    for(i=0; i<3; i++);
    return(DQ);
}

/********************************************************************
* 名称 : write_bit()
* 功能 : 向DS18B20写一位
* 输入 : bitval(要对DS18B20写入的位值)
* 输出 : 无
***********************************************************************/
void write_bit(uchar bitval)
{
DQ=0;if(bitval==1)
DQ=1;
delay(5);
DQ=1;
}

/********************************************************************
* 名称 : read_byte()
* 功能 : 从DS18B20读一个字节
* 输入 : 无
* 输出 : 从DS18B20读到的值
***********************************************************************/
uchar read_byte(void)
{
    uchar i,m,receive_data;
    m = 1;
    receive_data = 0;
    for(i=0; i<8; i++)
    {
        if(read_bit())
        {
            receive_data = receive_data + (m << i);
        }
        delay(6);
    }
    return(receive_data);
}

/********************************************************************
* 名称 : write_byte()
* 功能 : 向DS18B20写一个字节
* 输入 : val(要对DS18B20写入的命令值)
* 输出 : 无
***********************************************************************/
void write_byte(uchar val)
{
    uchar i,temp;
    for(i=0; i<8; i++)
    {
        temp = val >> i;
        temp = temp & 0x01;
        write_bit(temp);
        delay(5);
    }
}


/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
    float tt;
    uint temp;
    P2 = 0x00;
    while(1)
    {
        Reset();
        write_byte(jump_ROM);
        write_byte(start);
        Reset();
        write_byte(jump_ROM);
        write_byte(read_EEROM);
        TMPL = read_byte();
        TMPH = read_byte();
        temp = TMPL / 16 + TMPH * 16;
        P0 = table[temp/10%10]&0xef;
        P2 = 6;
        Delay_1ms(5);
        P0 = table[temp%10];
        P2 = 7;
        Delay_1ms(5);
        P1=B11111111;
    }
}

http://www.lryc.cn/news/226586.html

相关文章:

  • 同城跑腿服务预约小程序的作用如何
  • 前后端开发迭代
  • Git可视化界面的操作,SSH协议的以及IDEA集成Git
  • CSS的初步学习
  • 小程序样式问题
  • 大数据毕业设计选题推荐-生产大数据平台-Hadoop-Spark-Hive
  • 什么是Ribbon的饥饿加载?有什么优势?
  • 苹果手机安装未上架APP应用测试教程
  • asp.net core自定义授权过滤器
  • SW如何显示样条曲线的控标
  • CSS 的 link 标签放在 head 标签之间的作用
  • 【VS2019 Qt5 VTK9.2】临时解决配置相关问题的简单方法
  • 国际版腾讯云/阿里云:云解析DNS是什么
  • 深度学习之基于Django+Tensorflow商品识别管理系统
  • postman 参数化使用csv导入外部数据
  • C语言概述
  • elasticsearch分词器
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • C++17中std::optional的使用
  • c++求三个数的最小公倍数
  • Flink 基础 -- 尝试Flink
  • kubeadm部署k8s及高可用
  • GEE:将鼠标变成十字指针,点击获取影像值,显示值到UI中
  • SpringBoot 项目公共字段填充
  • 分布式搜索引擎ES
  • 2023年05月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • @KafkaListener注解详解(一)| 常用参数详解
  • 蓝桥杯算法双周赛心得——被替换的身份证(分类讨论)
  • 实验一:人工智能之启发式搜索算法(含源码+实验报告)
  • C++学习 --类和对象之封装