ds18b20温度报警C语言程序,单片机中使用DS18B20温度传感器C语言程序(参考4)
#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)相关推荐
- DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc
单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...
- DS18B20温度报警系统设计
前几天推了一篇DS18B20与LCD1602温度测量显示案例的文章,今天在上次基础之上做一个DS18B20温度报警系统设计应用的案例.该系统能够实时检测环境温度,并根据处理结果,发出声光报警信号,并具 ...
- ds18b20程序c语言,单片机中使用DS18B20温度传感器C语言程序(参考6)
/******************************************/ // // DS18B20温度计C程序 // 2007.06.08 /******** ...
- 国信长天单片机竞赛训练之DS18B20温度报警实验(三)
目标要求:通过板载的DS18B20获取温度,并在数码管上保留4位小数显示,温度超过25.0000度,蜂鸣器报警:低于等于25.0000度,所有LED间隔2秒闪烁:温度超过25.0000度,通过串口发送 ...
- 热电偶单片机代码c语言,基于单片机的热电偶发生器设计(含电路原理图,程序)...
基于单片机的热电偶发生器设计(含电路原理图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文15000字,程序,答辩PPT) 摘 要 热电偶标准信号发生器为袖珍式键控现场检测仪表.其由 ...
- c语言抢答器程序,单片机六路抢答器C语言程序
<单片机六路抢答器C语言程序>由会员分享,可在线阅读,更多相关<单片机六路抢答器C语言程序(4页珍藏版)>请在人人文库网上搜索. 1.单片机六路数显计时抢答器c语言程序#inc ...
- c51单片机音乐门铃C语言程序,单片机六首歌曲的音乐门铃程序
单片机六首歌曲的音乐门铃程序 来源:-- 作者:-- 浏览:1346 时间:2016-08-10 14:18 标签: 摘要: buzzer equ p2.4 KEY ...
- 判断数组相同数c语言_单片机常用的14个C语言算法,看过的都成了大神!
算法(Algorithm):计算机解题的基本思想方法和步骤. C语言入门视频教程_9天精通Linux C语言 - 创客学院www.makeru.com.cn 算法的描述:是对要解决一个问题或要完成一 ...
- led交通灯c语言程序设计,单片机控制的交通灯C语言编程.doc
单片机控制的交通灯C语言编程 单片机控制的交通灯 红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换.四个方向各有一个红.黄.绿显示和两个数码管. 东西道为人行道(20秒),南北道为车行道(60秒),黄灯 ...
最新文章
- 谷歌提出“T5” 新NLP模型,突破迁移学习局限,多基准测试达SOTA!
- websocket并发性测试
- Python小游戏(打地鼠)
- 推自己的镜像到网易云
- 数据结构与算法--链表实现以及应用
- ajax面试技术回答模板
- mysqls压力测试怎么用_阿里研究员:测试稳定性三板斧,我怎么用?
- java压缩zip文件中文乱码问题
- Java笔记-RabbitMQ的消息确认机制(事务)
- python执行批处理文件_如何从Python中执行批处理文件,从而改变调用进程的环境?...
- java sendto,Android:套接字-java.net.SocketException:sendto失败:EPIPE(管道断开)
- Error running ‘Unnamed‘: Unable to open debugger port (127.0.0.1:xxxx)
- mybatis mysql 中文乱码_Mybatis + Mysql 插入数据时中文乱码问题
- VBA中数组(Array)与随机数(Rnd)的使用
- 【数据库】SQL建表
- 如何给计算机c盘加内存,电脑C盘内存太小_这个方法教你扩大C盘空间 - 驱动管家...
- C、C++中的单引号和双引号
- Hibernate配置(核心配置文件.cfg.xml 和映射配置文件.hbm.xml)(对象-关系映射 Object Relational Mapping)
- 华为——策略路由(校园网配置)
- tmall.item.simpleschema.add( 天猫简化发布商品 )
热门文章
- 【物联网(IoT)开发】Arduino 简介
- android11 动态设置屏幕旋转方向
- 网页设计作业 酒店公寓网站设计——高级酒店公寓网页(4页) HTML+CSS+JavaScript 旅游主题度假酒店
- 如何看计算机cpu的好坏,cpu主要的性能参数有哪些、怎么看?教你几招轻松看懂CPU性能好坏...
- oracle批量查询更新,Oracle批量查询、删除、更新使用BULK COLLECT提高效率
- 关于 Win10 截图 截屏 原生截图工具 基础使用
- Android O 开机动画铃声
- 自动化测试的三种测试报告模板
- Excel中ROUND、ROUNDUP、ROUNDDOWN函数详解
- 深入理解Linux内核通知链(Notifier)