#include

sbit DQ = P2^2;      //定义DS18B20端口DQ

sbit BEEP=P2^3 ;     //定义报警接口

unsigned char presence ;     //定义传感器初始化标志

unsigned char code   LEDData[ ]    = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xff};

unsigned char data   temp_data[2] = {0x00,0x00};     //存储零时值

unsigned char data   display[2] =   {0x00,0x00};

unsigned char code   ditab[16] =    {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

void beep();

sbit DIN = P0^7;        //小数点

bit   flash=0;           //显示开关标记

/**********************************************************/

void Delay(unsigned int num)//延时函数

{

while( --num );

}

/**********************************************************/

Init_DS18B20(void)//初始化ds1820

{

DQ = 1;       //DQ复位

_nop_();

_nop_();    //稍做延时2ms

DQ = 0;       //单片机将DQ拉低,发出复位脉冲(要求480us~960us)

Delay(70);    //精确延时566us

DQ = 1;        //拉高总线(要求16~60us)

Delay(5);     //延时46us

presence = DQ;     //如果=0则初始化成功 =1则初始化失败

Delay(25);

DQ = 1;

return(presence); //返回信号,0=presence,1= no presence

}

/**********************************************************/

ReadOneChar(void)//读一个字节

{

unsigned char i = 0;

unsigned char dat = 0;

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

{

DQ = 0;                 // 给脉冲信号

dat >>= 1;

DQ = 1;                 // 给脉冲信号

if(DQ)

dat |= 0x80;

Delay(4);

}

return (dat);

}

/**********************************************************/

WriteOneChar(unsigned char dat)//写一个字节

{

unsigned char i = 0;

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

{

DQ = 0;

DQ = dat&0x01;

Delay(5);

DQ = 1;

dat>>=1;

}

}

/*********************************************************/

Read_Temperature(void)//读取温度

{

Init_DS18B20();

if(presence==1)

{ beep();flash=1;}       //DS18B20不正常,蜂鸣器报警

else

{

flash=0;

WriteOneChar(0xCC);   // 跳过读序号列号的操作

WriteOneChar(0x44);   // 启动温度转换

Init_DS18B20();

WriteOneChar(0xCC);   //跳过读序号列号的操作

WriteOneChar(0xBE);   //读取温度寄存器

temp_data[0] = ReadOneChar();    //温度低8位

temp_data[1] = ReadOneChar();    //温度高8位

}

}

/*********************************************************/

Disp_Temperature()//显示温度

{

unsigned char   n=0;

display[2]=temp_data[1]/10;

display[1]=temp_data[0]%10;

P0 =LEDData[display[1]];   //显示个位

DIN = 0;

P2 = 0xef;

Delay(300);

P0 =LEDData[display[2]];   //显示十位

P2 = 0xdf;

Delay(300);

P2 = 0xff;                           //关闭显示

}

/*********************************************************/

void beep()

{

unsigned char i;

for (i=0;i<100;i++)

{

Delay(60);

BEEP=!BEEP;                  //BEEP取反

}

BEEP=1;                           //关闭蜂鸣器

}

/*********************************************************/

void main(void)

{

while(1)

{

Read_Temperature();

if(flash==0)

{Disp_Temperature();}

else P2 = 0xff ;            //DS18B20不正常,关闭显示

}

}

ds18b20温度报警C语言程序,单片机中使用DS18B20温度传感器C语言程序(参考4)相关推荐

  1. DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc

    单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...

  2. DS18B20温度报警系统设计

    前几天推了一篇DS18B20与LCD1602温度测量显示案例的文章,今天在上次基础之上做一个DS18B20温度报警系统设计应用的案例.该系统能够实时检测环境温度,并根据处理结果,发出声光报警信号,并具 ...

  3. ds18b20程序c语言,单片机中使用DS18B20温度传感器C语言程序(参考6)

    /******************************************/ // //       DS18B20温度计C程序 //       2007.06.08 /******** ...

  4. 国信长天单片机竞赛训练之DS18B20温度报警实验(三)

    目标要求:通过板载的DS18B20获取温度,并在数码管上保留4位小数显示,温度超过25.0000度,蜂鸣器报警:低于等于25.0000度,所有LED间隔2秒闪烁:温度超过25.0000度,通过串口发送 ...

  5. 热电偶单片机代码c语言,基于单片机的热电偶发生器设计(含电路原理图,程序)...

    基于单片机的热电偶发生器设计(含电路原理图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文15000字,程序,答辩PPT) 摘 要 热电偶标准信号发生器为袖珍式键控现场检测仪表.其由 ...

  6. c语言抢答器程序,单片机六路抢答器C语言程序

    <单片机六路抢答器C语言程序>由会员分享,可在线阅读,更多相关<单片机六路抢答器C语言程序(4页珍藏版)>请在人人文库网上搜索. 1.单片机六路数显计时抢答器c语言程序#inc ...

  7. c51单片机音乐门铃C语言程序,单片机六首歌曲的音乐门铃程序

    单片机六首歌曲的音乐门铃程序 来源:-- 作者:-- 浏览:1346 时间:2016-08-10 14:18 标签: 摘要: buzzer        equ        p2.4 KEY     ...

  8. 判断数组相同数c语言_单片机常用的14个C语言算法,看过的都成了大神!

    算法(Algorithm):计算机解题的基本思想方法和步骤. C语言入门视频教程_9天精通Linux C语言 - 创客学院​www.makeru.com.cn 算法的描述:是对要解决一个问题或要完成一 ...

  9. led交通灯c语言程序设计,单片机控制的交通灯C语言编程.doc

    单片机控制的交通灯C语言编程 单片机控制的交通灯 红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换.四个方向各有一个红.黄.绿显示和两个数码管. 东西道为人行道(20秒),南北道为车行道(60秒),黄灯 ...

最新文章

  1. 谷歌提出“T5” 新NLP模型,突破迁移学习局限,多基准测试达SOTA!
  2. websocket并发性测试
  3. Python小游戏(打地鼠)
  4. 推自己的镜像到网易云
  5. 数据结构与算法--链表实现以及应用
  6. ajax面试技术回答模板
  7. mysqls压力测试怎么用_阿里研究员:测试稳定性三板斧,我怎么用?
  8. java压缩zip文件中文乱码问题
  9. Java笔记-RabbitMQ的消息确认机制(事务)
  10. python执行批处理文件_如何从Python中执行批处理文件,从而改变调用进程的环境?...
  11. java sendto,Android:套接字-java.net.SocketException:sendto失败:EPIPE(管道断开)
  12. Error running ‘Unnamed‘: Unable to open debugger port (127.0.0.1:xxxx)
  13. mybatis mysql 中文乱码_Mybatis + Mysql 插入数据时中文乱码问题
  14. VBA中数组(Array)与随机数(Rnd)的使用
  15. 【数据库】SQL建表
  16. 如何给计算机c盘加内存,电脑C盘内存太小_这个方法教你扩大C盘空间 - 驱动管家...
  17. C、C++中的单引号和双引号
  18. Hibernate配置(核心配置文件.cfg.xml 和映射配置文件.hbm.xml)(对象-关系映射 Object Relational Mapping)
  19. 华为——策略路由(校园网配置)
  20. tmall.item.simpleschema.add( 天猫简化发布商品 )

热门文章

  1. 【物联网(IoT)开发】Arduino 简介
  2. android11 动态设置屏幕旋转方向
  3. 网页设计作业 酒店公寓网站设计——高级酒店公寓网页(4页) HTML+CSS+JavaScript 旅游主题度假酒店
  4. 如何看计算机cpu的好坏,cpu主要的性能参数有哪些、怎么看?教你几招轻松看懂CPU性能好坏...
  5. oracle批量查询更新,Oracle批量查询、删除、更新使用BULK COLLECT提高效率
  6. 关于 Win10 截图 截屏 原生截图工具 基础使用
  7. Android O 开机动画铃声
  8. 自动化测试的三种测试报告模板
  9. Excel中ROUND、ROUNDUP、ROUNDDOWN函数详解
  10. 深入理解Linux内核通知链(Notifier)