DS18B20读写程序

发布者:数字奇迹最新更新时间:2015-02-05 来源: 51hei关键字:DS18B20  读写程序  单片机 手机看文章 扫描二维码
随时随地手机看文章
#include    //包含单片机寄存器的头文件
#include  //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint unsigned int
sbit date=P3^7;
unsigned char code table[]={0x3f,
0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,
0x71,0x80,0xc0};
 
uchar falg;
uint c,temp;
 
void delay(uint z)//延时4微秒
{
 while(z--);
}
 
void reset()
{
 date=1;
 delay(1);
 date=0;
 delay(80);
 date=1;
 delay(8);
 if(date==0)
  P2=0xfe;//灯1亮,DS18B20应答低电平有效
 else
  P2=0xfc;//灯1,2亮,DS18B20未应答低电平
 delay(20);
 if(date==1)
  P2=0x7e;//灯1,8亮,DS18B20复位成功
 else
  P2=0x00;//灯全亮,DS18B20未释放总线,复位不成功
}
 
 
void write_byte(uchar dat)//写入一个字节
{
 uchar i;
 for(i=1;i<=8;i++)
 {
  date=0;
  date=dat&0x01;
     delay(4);  
  dat=dat>>1;
  date=1;
  delay(1);
 }
}
 
 
uchar read_byte()//读一个字节
{
 uchar dat;
 uchar i;
 for(i=0;i<8;i++)
 {
  date=0;
  dat=dat>>1;
  date=1;
  if(date)//采数据1
   dat=dat|0x80;
  delay(4);
 }
 return(dat);
}
 
 
uint read_wendu()//读温度
{
 uchar a,b;
 reset();//复位
 delay(1);
 write_byte(0xcc);//跳过序列号命令
 write_byte(0x44);//启动温度检测
 delay(350);
 reset();
// delay(1);
 write_byte(0xcc);//跳过序列号命令
 write_byte(0xbe);//发送读取命令
 a=read_byte();//读低8位
 b=read_byte();//读高8位
 temp=((b|0xff00)<<8)|a;//合并成16位数
 if ((b&0xf0)==0xf0)//判断正负
 { 
  temp=~temp+1; 
  falg=1;
 }
 else
  falg=0;
 c=(temp&0x000f)*0.0625*10000;//提取4位小数
 temp=temp>>4;//移出小数部分,得到整数温度值
 return(temp);
}
 
 
void display()//显示
{
 uchar bai,shi,ge,n1,n2,n3,n4;
 
   bai=temp/100;
   shi=temp0/10;
  ge=temp;
 n1=c/1000;
 n2=c00/100;
 n3=c0/10;
 n4=c;
 
 P0=table[bai];
 if(bai==0)
 {
  P1=0xff;
 }
 else
 {
  P1=0xfe;
  delay(200);
  P1=0xff; 
 }
 P0=table[shi];
 if(bai==0)
 { 
  if(shi==0) //最高位是0,次高位也是0则不显示
   P1=0xff;
  else       //最高位是0,次高位不是0则显示次高位
  {
   P1=0xfd;
   delay(200);
   P1=0xff;
  } 
 }
 else           //最高位不是0,次高位全显
 {
  P1=0xfd;
  delay(200);
  P1=0xff; 
 }
 P0=table[ge];
 P1=0xfb;
 delay(200);
 P1=0xff;
 if(falg==1)// 显示负号
 {
  P0=table[17];
  P1=0xf7;
  delay(200);
  P1=0xff;
 }
 else
 {
  P0=table[16];
  P1=0xf7;
  delay(200);
  P1=0xff;
 }
 P0=table[n1];
 P1=0xef;
 delay(200);
 P1=0xff;
 P0=table[n2];
 P1=0xdf;
 delay(200);
 P1=0xff;
 P0=table[n3];
 P1=0xbf;
 delay(200);
 P1=0xff;
 P0=table[n4];
 P1=0x7f;
 delay(200);
 P1=0xff;  
}
 
void main()
{
 
 P0=0x00;
 P1=0xff;
 while(1)
 {
  read_wendu();
  display();
 }
 
}
 
关键字:DS18B20  读写程序  单片机 引用地址:DS18B20读写程序

上一篇:C51绝对地址访问
下一篇:51单片机步进电机控制汇编语言程序

推荐阅读最新更新时间:2024-03-16 13:53

单片机定时器应用过程中两大常见问题解析
在单片机的学习过程中,单片机定时器的合理设置和应用是非常关键的一步,也是刚开始接触单片机知识的新人工程师们比较容易出错误的一个环节之一。在今天的文章中,我们为大家总结了单片机定时器应用过程中的两大常见问题进行实时解析,希望能够对各位新人工程师的学习提供一定帮助。 问题一:51单片机的T0、T1定时器四种工作方式各有什么特点? 在单片机定时器的应用过程中,定时器在进行设置时会有四种不同的工作方式,合理选择相应的工作方式可以帮助工程师快速完成及时设置。下面我们就来逐一讲解一下这四种不同的计时方式。方式0是单片机计时器的第一种计时方式,这一方式13位计数模式。方式1则采用16位计数模式,方式2采用8位自动重装入计数模式,这两种技
[单片机]
<font color='red'>单片机</font>定时器应用过程中两大常见问题解析
微控制器市场将应对质量挑战
据市场调查公司Frost & Sullivan称,在2006到2010年间,汽车微控制器的市场规模将扩大约63%。然而,芯片供应商需要对这一市场的具体特性予以仔细研究。   驱动这一市场需求的主要因素是车载电子产品的不断丰富,这些产品以减少人为失误以及增加像雷达、超声波传感器和具有所有需要增加处理能力和智能的数量的多路复用技术为目标,该调查公司称。   “经过一个全面的产业整合之后,汽车微控制器的市场有望在未来的几年获得长足的增长,这主要是因为终端用户的增长以及在汽车中集成电路的多种应用不断扩大所致,” Frost & Sullivan的高级研究分析师Bonnie Varghese做出了以上预测。该研究预计这一市场将从2006年的
[焦点新闻]
单片机 N76E003 实现 QC2.0 QC3.0 USB Type-C协议
/*************笔记**************** 1、本QC方案采用PWM调节电压。 2、 3、 4、 5、 ***********************************/ /* -----------------------------------------宏定义-----------------------------------------*/ #define Voltage_06_PWM 18 //0.6V的占空比 /* -----------------------------------------头文件-----------------------------------------*/
[单片机]
<font color='red'>单片机</font> N76E003 实现 QC2.0 QC3.0 USB Type-C协议
单片机空气质量传感器Proteus仿真程序 LCD12864显示
用LCD12864实现显示个人信息和空气中颗粒物质量浓度,根据PM2.5质量浓度分析空气质量等级并显示。 1. 第一个屏显示:设计任务名称,姓名,班级,学号后三位; 2. 第二个屏显示:PM1.0、PM2.5、PM10的质量浓度数据(带单位),显示空气质量等级; 3. 空气颗粒物质量浓度数据和学号后三位通过串口从模拟器接收后显示,显示数据可以与模拟器更改值同步; 4. 可通过按键进行屏幕换; 5. 通过串口上传空气质量等级数值给模拟器,等级数值对应为:1-优,2-良,3-轻度污染,4-中度污染,5-重度污染,6-严重污染,模拟器成功接收会自动显示空气质量等级。 单片机源程序如下: #include
[单片机]
<font color='red'>单片机</font>空气质量传感器Proteus仿真程序 LCD12864显示
2019MCU变数多,全面战役打响
在不同地域、不同战争阶段和不同战斗规模的情况下,战术的运用也各不相同。根据时机、实力等不同情况,灵活运用和变换战术,对夺取战斗胜利具有重要意义。而对在市场已经驰骋多年的MCU来说,当时间进入2019年,应该做出哪些新的战术选择呢?毕竟MCU增势强劲,不仅销售额在2022年将达到近239亿美元,出货量更将以11.1%的复合年增长率增至约438亿片。 全面竞争 对于MCU厂商来说,除了在芯片本身的集成度、成本、功耗、安全层面不断进化,打造一个广阔的产品系列平台外,还需要从多重维度来推进,应对层出不穷的应用需求。 意法半导体(ST)中国区微控制器事业部市场及应用总监曹锦东指出,随着应用的深入,MCU需更多的合作伙伴在硬
[嵌入式]
2019<font color='red'>MCU</font>变数多,全面战役打响
51单片机中断系统详解(定时器、计数器)
51单片机中断级别 中断源 默认中断级别 序号(C语言用) INT0---外部中断0 最高 0 T0---定时器/计数器0中断 第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断 第4 3 TX/RX---串行口中断 第5 4 T2---定时器/计数器2中断 最低 5 中断允许寄存器IE 位序号 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位 EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由
[单片机]
基于Holtek单片机的遥控探照灯系统实现
在舞台上,有时为了营造某种特殊效果,需要关闭除探照灯以外的所有现场灯。探照灯必须照在演员身上。由于探照灯高高悬挂在天花板上,当演员移动时,依靠人工来完成探照灯方向调节非常不方便,而通过遥控调节则很方便,有时演员的位置又是固定的,这可能需要多台探照灯透视照射一个固定位置(例如舞台的中央)。如果探照灯能够将这些位置以及灯的亮度预存到某个频道,需要时再直接调则会方便很多。 针对此应用,本文设计了一种支持频道存储的遥控探照灯系统来实现上述功能。该系统还可应用在监狱、各种高空作业和旷野、海面等工作场所,对远距离巡查、追踪、搜索、拯救和作业施工进行全方位、多角度照明。 因为照射点的位置不定,要求探照灯可以上下左右360度自由移动,所以本系统采用
[单片机]
AVR单片机ISP下载线的制作
单片机编程器的作用是将调试好的程序烧写到单片机的存储器中。本文介绍的AVR单片机ISP下载线的成本只有10元左右,非常适合初学者自制。 AVR单片机的程序可以使用串行在线编程(ISP)方式下载写入,即可直接在电路板上进行程序的烧写和修改,所需的装置就是一根ISP下载线。 本文介绍的ISP下载线使用计算机的并口对单片机编程.不仅支持AVR单片机,也支持对51单片机中AT89S系列单片机的编程。 一、下载线电路 下载线的电路见图1。该下载线是STK200/300型的下载线。74HC244是8缓冲器电路,用来作计算机并口和单片机的缓冲隔离。图1中的LPT连接到计算机的并口,作计算机上的下载软件和单片机进行通信
[单片机]
AVR<font color='red'>单片机</font>ISP下载线的制作
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved