DS18B20引脚定义:

(1)DQ为数字信号输入/输出端;(需要加个上拉电阻加到电源上)

(2)GND为电源地;

(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

本人做过它的课程设计。

以下是程序,你要是有DS18B20的资料最好,没有的话我可以传给你。

2个数码管显示。精确到1°C。程序没加报警功能,你可以在最后一段中,比较一下TEMPER_L和TEMPER_H中的数值  与你要报警的数值。自己试一下吧!!!!!!

ORG 0000H

;单片机内存分配申明!

TEMPER_L EQU 29H;用于保存读出温度的低8位

TEMPER_H EQU 28H;用于保存读出温度的高8位

FLAG1 EQU 38H;是否检测到DS18B20标志位

a_bit EQU 20H;数码管个位数存放内存位置

b_bit EQU 21H ;数码管十位数存放内存位置

DQ EQU P1.2

CHECK EQU P1.0

CHECK1 EQU P1.3

NEGTIVE EQU P1.4

MAIN:  LCALL GET_TEMPER;调用读温度子程序

;进行温度显示,用两位数码管来显示

;显示范围-55到99度,显示精度为1度

LCALL DISPLAY;调用数码管显示子程序

AJMP MAIN

; DS18B20复位初始化子程序

INIT_1820:

SETB DQ

NOP

CLR DQ

;主机发出延时637微秒的复位低脉冲

MOV R1,#3H

TSR1: MOV R0,#6BH

DJNZ R0, R1,TSR1

SETB DQ;然后拉高数据线

NOP

NOP

NOP

MOV R0,#25H

TSR2: JNB DQ,TSR3;等待DS18B20回应

DJNZ R0,TSR2

LJMP TSR4

TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在

CLR CHECK1;检查到DS18B20就点亮LED

LJMP TSR5

TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在

LJMP TSR7

TSR5: MOV R0,#117

TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间

TSR7: SETB DQ

RET

; 读出转换后的温度值

GET_TEMPER:

SETB DQ

BCD: LCALL INIT_1820;先复位DS18B20

JB FLAG1,TSS2

LJMP BCD ; 判断DS1820是否存在?若DS18B20不存在则返回

TSS2:; MOV R3,#23

; DJNZ R3,  CHECK ;DS18B20已经被检测到!!!!!!!!!!!!!!!!!!

MOV A,#0CCH ; 跳过ROM匹配

LCALL WRITE_1820

MOV A,#44H ; 发出温度转换命令

LCALL WRITE_1820

LCALL DELAY;延时750微秒

LCALL INIT_1820;准备读温度前先复位

MOV A,#0CCH ; 跳过ROM匹配

LCALL WRITE_1820

MOV A,#0BEH ; 发出读温度命令

LCALL WRITE_1820

LCALL READ_1820; 将读出的温度数据保存

RET

;延时程序

DELAY: MOV R2,#4H

DELAYA: MOV R3,#0FFH

DELAYB: MOV R4,#0FFH

DELAYC: DJNZ R4,DELAYC

DJNZ R3,DELAYB

DJNZ R2,DELAYA

RET

;写DS18B20的子程序(有具体的时序要求)

WRITE_1820:

MOV R2,#8;一共8位数据

CLR C

SETB DQ

NOP

NOP

WR1: CLR DQ

MOV R3,#6

DJNZ R3, A

MOV DQ,C

MOV R3,#23

DJNZ R3, DQ

NOP

DJNZ R2,WR1

SETB DQ

RET

; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据

READ_1820:

MOV R4,#2 ; 将温度高位和低位从DS18B20中读出

MOV R1,#TEMPER_L ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)

RE00: MOV R2,#8;数据一共有8位

RE01: CLR C

SETB DQ

NOP

NOP

CLR DQ

NOP

NOP

NOP

SETB DQ

MOV R3,#8 ;16us

RE10:  DJNZ R3,RE10

MOV C,DQ

MOV R3,#23 ;70us

RE20:  DJNZ R3,RE20

RRC A

DJNZ R2,RE01

MOV ,A

DEC R1

DJNZ R4,RE00

RET

;显示子程序

;根据TEMPER_H高5位是1来判断温度是否为负,若为负,则取反再+1

DISPLAY:

MOV A,TEMPER_H

JNB ACC.1,POSI

CLR NEGTIVE

CPL A

MOV TEMPER_H,A

MOV A,TEMPER_L

CPL A

CLR C

INC A

MOV TEMPER_L,A

MOV A,TEMPER_H

ADDC A,#0H

MOV TEMPER_H,A

;TEMPER_H高4位为0,根据温度计算方法,TEMPER_H,TEMPER_L的数值除16就是实际温度

;右移4位即实际温度,把TEMPER_L高4位和TEMPER_H低4位合并再对换,后转换为10进制即得实际温度数据

POSI: MOV A,TEMPER_L

ANL A,#0F0H

MOV a_bit,A

MOV A,TEMPER_H

ADD A,a_bit

SWAP A

CLR C

DA A

MOV b_bit,A

ANL A,#0FH

MOV DPTR,#ZIXING

MOVC A,+DPTR

MOV P3,A

MOV A,b_bit

SWAP A

ANL A,#0FH

MOV DPTR,#ZIXING

MOVC A,+DPTR

MOV P2,A

RET

ZIXING:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

18b20温度计报警C语言,制作DS18B20数字温度计我还想具有报警功能相关推荐

  1. 数字温度计的c语言编程,DS18B20数字温度计C程序(能显示负温)

    DS18B20数字温度计C程序(能显示负温) //***********DS18B20数字温度计C程序****************// //*MCU: AT892051 // //*MCU-cry ...

  2. 数字温度计的c语言编程,基于DS18B20数字温度计的设计(全文完整版)

    <基于DS18B20数字温度计的设计.doc>由会员分享,可免费在线阅读全文,更多与<基于DS18B20数字温度计的设计>相关文档资源请在帮帮文库(www.woc88.com) ...

  3. 单片机实例35——DS18B20数字温度计使用(硬件电路图+C语言程序)

    35. DS18B20数字温度计使用 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具 ...

  4. DS18B20数字温度计使用(转)

    DS18B20数字温度计使用 发布人:来自网络   发布时间:2010-6-16 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单, ...

  5. DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试

    目录 DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20数字温度计 (二) 测温, ROM和CRC算法 DS18B20数字温度计 (三) 1-WIRE总线 ROM搜 ...

  6. 单片机小白学习之路(三十二)---DS18B20数字温度计(三)

    目标:目标: DS18B20数字温度计(三) 18b20开始转换温度 DS18B20 的典型温度读取过程为:复位→发 SKIP ROM 命令(0XCC)→发开始转换命令( 0X44)→延时→复位→发送 ...

  7. DS18B20数字温度计使用

    1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这 ...

  8. DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线

    目录 DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20数字温度计 (二) 测温, ROM和CRC算法 DS18B20数字温度计 (三) 1-WIRE总线ROM搜索 ...

  9. DS18B20数字温度计系统设计

    STC89C52单片机 STC89C52单片机接口介绍 这个单片机一共有40个引脚. ①P0口(P0.0~P0.7) 8位漏极开关型双向I/O端口.可以作为通用I/O口使用,但必须加上拉电阻. ②P1 ...

最新文章

  1. ORACLE JET BASIC TABLE
  2. zuul如果两个filter的order一样,是如何排序的?
  3. 体感开发学习总结 - 二
  4. matlab读取格式重复,matlab - 为什么Xlsread以字符串形式读取(日期时间) - 堆栈内存溢出...
  5. AS 3.0小事件处理 八
  6. asp.net 的page 基类页面 做一些判断 可以定义一个基类页面 继承Page类 然后重写OnPreLoad事件...
  7. 求解最长回文子串----Manacher 算法
  8. TortoiseSVN中图标的含义
  9. bwl老二吃嘲讽吗_怀旧服BWL2小时全通最简打法!时光点燃一次过
  10. [算法模板]高斯消元
  11. 基于C++、MySQL的图书销售管理系统
  12. StorageManager获取U盘挂载状态
  13. Web网页设计作业html
  14. 五种最火供应链金融模式分析(附详细案例)
  15. 计算机相关审稿周期短的ei,计算机比较好发的sci期刊_比较水的计算机ei期刊_ei期刊计算机...
  16. 国产BI报表工具中低调的优秀“模范生”——思迈特软件Smartbi
  17. 微信防撤回dll文件制作
  18. sx1278lora模块的常见问题解答
  19. Volume was not properly unmounted. Some data may be corrupt
  20. python计算bmi的编程_Python学习-计算BMI的小程序

热门文章

  1. 分享一下CFA一、二、三级学习经验
  2. 制造业数字化转型的困难_工业数字化转型的困境 | 从数字孪生的复杂性说起
  3. Unity3D 大型游戏 最后一站 源码 部分重点GameStateManager(6)
  4. [经济法]第十四章 财政与税收法律制度
  5. 使用赛元单片机“sc92f742x”实现LED灯的呼吸效果
  6. js tree树形结构,通过子节点找到所有父节点
  7. 2023苹果CMS v10魔加主题1.1.6破解版 支持苹果CMS全部版本
  8. 代码高亮的可行性方案,highlight.js
  9. STC15单片机——外部中断
  10. 易语言多线程封装线程启动返回句柄