#include <reg51.h>

#include <absacc.h>

#include <stdio.h>

#include <math.h>

#define uchar unsigned char

#define uint unsigned int

sbit P3_5=P3^5;

uchar TEMP;                                 // 温度值的变量;

uchar flag1;                                    // 结果为负和正的标志位。

void delay (unsigned int count)

{

unsigned int i;

while (count)

{

i =200;

while (i>0) i--;

count--;

}

}

void tmreset (void)                             // 发送复位和初始化

{

unsigned int i;

P3_5 = 0;

i = 103;

while (i>0) i--;                                // 延时

P3_5 = 1;

i = 4;

while (i>0) i--;

}

bit tmpread (void)                              // 读取数据的一位

{

unsigned int i;

bit dat;

P3_5 = 0; i++;

P3_5 = 1; i++; i++;                         //延时

dat = P3_5;

i = 8; while (i>0) i--;                         // 延时

return (dat);

}

unsigned char tmpread2 (void)                       //读一个字节

{

unsigned char i,j,dat;

dat = 0;

for (i=1;i<=8;i++)

{

j = tmpread ();

dat = (j << 7) | (dat >> 1);

}

return (dat);

}

void tmpwrite (unsigned char dat)                   //写一个字节

{

unsigned int i;

unsigned char j;

bit testb;

for (j=1;j<=8;j++)

{

testb = dat & 0x01;

dat = dat >> 1;

if (testb)

{

P3_5 = 0;                       // 写0

i++; i++;

P3_5 = 1;

i = 8; while (i>0) i--;

}

else

{

P3_5 = 0;                       // 写0

i = 8; while (i>0) i--;

P3_5 = 1;

i++; i++;

}

}

}

void tmpchange(void)                            // ds1820 开始转换

{

tmreset ();                             // 复位

//tmpre ();                             // 等待存在脉冲

delay (1);                              // 延时

tmpwrite (0xcc);                            // 跳过序列号命令

tmpwrite (0x44);                        // 发转换命令 44H,

}

void tmp (void)                             // 读取温度

{

unsigned char a,b;

tmreset ();                             // 复位

delay (1);                              // 延时

tmpwrite (0xcc);                        // 跳过序列号命令

tmpwrite (0xbe);                        // 发送读取命令

a = tmpread2 ();                            // 读取低位温度

b = tmpread2 ();                        //读取高位温度

flag1=b;                                //若b为1则为负温

if(flag1)

{

TEMP=~a+1;                      //如果为负温则去除其补码

}

else

{

TEMP=a;

}

}

rom()                                       // 读取器件序列号子程序

{

tmreset ();                             //复位

delay (1);                              //延时

tmpwrite(0x33);                         //发送读序列号子程序

}

main()

{

do{

tmpchange();                            // 开始温度转换

delay(200);                             // 读取延时

tmp();                              //读取温度

}while(1);

}

DS1820温度测量程序相关推荐

  1. DS18B20温度测量程序文件(简单通用)

    DS18B20是一个非常简单的温度传感器,对于像我这样单片机萌新是比较友好的.网上关于它的介绍非常多,包括原理.引脚.通信.以及51单片机.STM32的各种代码等等.本人写了一个简单的ds18b20. ...

  2. 简易无接触温度测量与身份识别装置【2020年大学生电子设计竞赛F题】

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达 赛题分析 通过对赛题的分析研究,完成题目的要求需要满足以下几点功能要求: (1)非接触 ...

  3. 编程精粹 --Microsoft编写优质无错C程序秘诀

    献给我的妻子Beth, 以及我的双亲Joseph和Julia Maguire ────为了他们的爱和支持 序 1986年,在为几家小公司咨询和工作了10年之后为了获得编写Macintosh应用程序的经 ...

  4. 16-《电子入门趣谈》第三章_电子世界中的五官---传感器-3.2.1DS18B20

    好消息:请在手机淘宝或闲鱼上搜索"电子入门趣谈",有惊喜哦 :) 我把全本电子入门趣谈的电子版(包括科技提升和理论升华部分,共计50余万字)放到上面开始兜售啦,如果您真的喜欢这本书 ...

  5. 北京电子科技学院c语言实验报告,最新单片机 实训报告电子万年历实训报告.doc...

    最新单片机 实训报告电子万年历实训报告 河南工程学院 单片机 实训报告 学 院 电气信息工程学院 专 业 电气工程及其自动化 组员及学号 李 东 盼 201250712138 高 辉 20125071 ...

  6. POCO C++库学习和分析 -- 序

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  7. 基于pt100的温度测量系统设计 c语言程序 四臂电桥,基于PT100的温度测量系统设计...

    基于PT100的温度测量系统设计 摘 要 本文首先简要介绍了铂电阻PT100的特性以及测温的方法,在此基础上阐述了基于PT100的温度测量系统设计.在本设计中,是以铂电阻PT100作为温度传感器,采用 ...

  8. 基于pt100的温度测量系统设计 c语言程序 四臂电桥,基于PT100的温度测量系统设计毕业论文.DOC...

    开题信息 摘 要 根据要求设计一个基于STC12C5A60S2单片机处理,PT100为传感器的温度测量系统. 在本设计中,是以铂电阻PT100作为温度传感器,采用恒流测温的方法,通过单片机进行控制,以 ...

  9. STM8S103电路板TMP275温度模采集TM1650数码管显示程序温度测量设计

    程序开发环境为IAR FOR STM8 1.40 主控MCU为STM8S103F3P6 温度采集芯片位TMP275,采用IIC接口 显示采用四位共阴数码管 四位数码管驱动芯片位TM1650,采用IIC ...

最新文章

  1. 【深度学习】模式识别技术探索之决策树(Decision tree)
  2. ONOS系统架构演进,实现高可用性解决方案
  3. Ajax跨域请求解决方案——jsonp
  4. 线段树基础操作--单点or区间更新+查询
  5. 百度音乐 android,百度音乐旧版本
  6. 机器人编程常用语言汇总(WeDo/EV3/Arduino/Scratch)
  7. http请求axios封装
  8. Linux开发环境——RHEL7更换yum源
  9. php运行方式isapi,在IIS6中配置PHP运行(ISAPI模式)环境(1)
  10. 微信扫一扫下载apk 微信直接下载APK(APP)的解决方案
  11. 应用克隆漏洞原理分析
  12. ifconfig 命令使用
  13. matplotlib 绘制柱状图且上方显示数据
  14. 垂直搜索开发:垂直搜索引擎开发全过程[原创]
  15. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
  16. 【LogiSim】便利的仿真软件,有了这个我又对硬件有了兴趣~
  17. Linux部署人大金仓(Kingbase8)
  18. EMC电磁兼容测试项目简介
  19. 手把手教你 Tableau 绘制填充地图(十七)
  20. fx5800p编程教程_FX5800P计算器 使用方法与编程技巧

热门文章

  1. 微信朋友圈自动刷评论
  2. 基于51单片机的水流量传感器测试系统
  3. 软件测试常见的智力题
  4. 进程分配算法(FCFS,SJF,RR)
  5. 【PIC单片机】2.编译器下载
  6. 插入数据库insert into 出错 unrecognized token:
  7. 搜狗浏览器屏蔽广告插件_“云法庭”里“云勘验” 法院开审搜狗浏览器插件屏蔽优酷视频广告案...
  8. windows操作系统当中常用的DOS命令
  9. python中continue的意义是_Python中的continue是什么
  10. centos7 桌面设置