ds18b20温度+数码管显示

发布者:和谐相处最新更新时间:2012-10-11 来源: 21ic 关键字:ds18b20  数码管显示  温度 手机看文章 扫描二维码
随时随地手机看文章

点击浏览下一页
上面这个是效果图 自己制作的单片机开发板

 

#include"reg51.h"

#define uchar unsigned char 
#define uint unsigned int
 

sbit DQ=P3^6;        //温度数据口


sbit wx1=P1^0;       //位选1
sbit wx2=P1^1;       //位选2
sbit wx3=P1^2;       //位选3
sbit wx4=P1^3;       //位选4

 

unsigned int temp, temp1,temp2, xs;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,                //共阳数码管
      0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6};

 

 

/******延时程序*******/ 
void delay1(unsigned int m)
    {
      unsigned int i,j;
      for(i=m;i>0;i--)
       for(j=110;j>0;j--);
         }


void delay(unsigned int m)     //温度延时程序
    {
      while(m--);
         }

void Init_DS18B20()  
{
unsigned char x=0;
DQ = 1;          //DQ复位 ds18b20通信端口 
delay(8); //稍做延时
DQ = 0;          //单片机将DQ拉低
delay(80); //精确延时 大于 480us
DQ = 1;          //拉高总线   
delay(4);
x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay(20);
}

 


/***********ds18b20读一个字节**************/
uchar ReadOneChar()
{
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);
}

 

/*************ds18b20写一个字节****************/
void WriteOneChar(unsigned char dat)
{
   unsigned char i=0;
   for (i=8; i>0; i--)
   {
   DQ = 0; //从高电平拉至低电平时,写周期的开始
    DQ = dat&0x01;   //数据的最低位先写入
    delay(5); //60us到120us延时
    DQ = 1;        
    dat>>=1; //从最低位到最高位传入
}
}


/**************读取ds18b20当前温度************/
void ReadTemperature()
  {
    unsigned char a=0;
    unsigned  b=0;
    unsigned  t=0;

    Init_DS18B20();
    WriteOneChar(0xCC);    // 跳过读序号列号的操作/
    WriteOneChar(0x44); // 启动温度转换 
    delay(5);       // this message is wery important
    Init_DS18B20();
    WriteOneChar(0xCC); //跳过读序号列号的操作
    WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度/ 
    delay(5);
    a=ReadOneChar();    //读取温度值低位  /
    b=ReadOneChar();      //读取温度值高位    / 
    temp1=b<<4;            //高8位中后三位数的值 
    temp1+=(a&0xf0)>>4;      //低8位中的高4位值加上高8位中后三位数的值   temp1室温整数值
    temp2=a&0x0f;             //小数的值
    temp=((b*256+a)>>4);    //当前采集温度值除16得 实际温度值    zhenshu    
    xs=temp2*0.0625*10; //小数位,若为0.5则算为5来显示   xs小数    xiaoshu
   }

 


void wenduxianshi()
 {
        
        wx1=1;
        P2=table[temp/10];             //显示百位
        delay1(5);
        wx1=0;

        wx2=1;
        P2=table[temp%10]+0x80;      //显示十位        加上0x80就显示小数点了。
        delay1(5);
        wx2=0;
       
        wx3=1;
        P2=table[xs%10];      //显示个位   
        delay1(5);
        wx3=0;
         
        wx4=1;
        P2=table[12];          //显示 C 字符
        delay1(5);
        wx4=0;
 }

 

void main()
 {
  
  
  while(1)
 {     
       ReadTemperature();
       wenduxianshi();
   
 }
 }
关键字:ds18b20  数码管显示  温度 引用地址:ds18b20温度+数码管显示

上一篇:单片机控制的报警器系统
下一篇:可自定义小时、分钟的1602闹钟程序

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

数码管显示的原理-加入中断系统程序--加入定时器
三、数码管显示的原理、数码管的静态显示 1. 引脚第二功能 1.1TXD 和RXD TXD 发送数据 Transmit(tx) Data 简写形式 RXD 接受数据 Receive(rx) Data 简写形式 TXD 网络定义: Transmit Data: used on RS232 and UART links. RXD 网络定义: Receive Data: used on RS232 and UART links. 1.2 中断源 MCS-51系列单片机的中断系统 MCS-51系列单片机中不同型号芯片的中断源数量是不同的,最基本的8051单片机有5个中断源,分别是INTO、INT1、TO、Tl T
[单片机]
<font color='red'>数码管</font><font color='red'>显示</font>的原理-加入中断系统程序--加入定时器
基于51单片机的温度湿度采集系统
实现功能: 1、对温度、湿度进行采集 2、可以警报提示、修改温度、湿度上下限值 3、lcd显示相关信息 原理图: 部分程序: #include reg52.h #define uint unsigned int #define uchar unsigned char #include intrins.h typedef bit BOOL ; sbit io = P1^1 ;//(口线定义) sbit bee=P1^0; sbit rs = P2^5 ; sbit rw = P2^6 ; sbit ep = P2^7 ; bit flag_300ms ; sbit K1=P1^2; sbit K2=P1^3;
[单片机]
51单片机系列——单总线通信方式——DS18B20温度检测的设计
这个电路仿真的原理是因为:根据普中科技上的编程(一模一样),但用proteus7.8仿真的时候却仿真不出来,经过小编的一段时间的思考解决了用软件仿真DS18B20温度检测的电路。我先讲仿真电路图与源码分享给大家。 仿真电路图: temp.h //温度检测模块头文件 #ifndef __TEMP_H_ #define __TEMP_H_ #include reg52.h //---重定义关键词---// #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif //--定义使用
[单片机]
51单片机系列——单总线通信方式——<font color='red'>DS18B20</font><font color='red'>温度</font>检测的设计
基于DS18B20的室内智能温度控制系统设计
    温度在工农业生产中起着举足轻重的作用,在冶金、医药、食品制造和化学制造业等行业尤其显得重要。在适当的温度下生产的产品质量、产量和合格率会大大的提高。有些药品的生产和存储要在很低的温度下进行;石油分馏的过程中在不同的温度下才能分离出汽油、柴油、煤油、硫化物;食品的制造和存储也要在特定的温度下才能保证质量。在农业大棚蔬菜和室内圈养牲畜对于环境温度的要求也很高,大棚蔬菜的温度基本上要保证在20~30℃。鸡舍的育雏期温度要控制在36℃左右。随着社会生产力和科学技术的发展,工农业生产对于温度的要求会越来越高,这样就需要系统不但可以测出室内的实际温度,还可以通过上位机来进行实时的控制,调整环境的温度。 1 系统的整体想路     本系统
[嵌入式]
半导体电阻温度计优点
  除用导体材料制作热电阻以外,还有用半导体材料制成的半导体电阻温度计,半导体电阻温度计所属教学仪器的一种,利用半导体元件测温有以下一些优点:   1)半导体的电阻温度系数比金属大,其绝对值约大4-9倍,电阻材料可以有正的或负的温度系数,根据需要可以选择;   2)电阻率大,因此可以制成极小的电阻元件;体积小、热惯性小,适于测量点温、表面温度及快速变化的温度;   3)结构简单,可根据不同要求,制成各种形状;   4)机械性能好,寿命长。   半导体热敏电阻的缺点是复现性和互换性差。此外,目前使用的上限温度还不够高.约在300℃以下。但据报道,已制出能测高达2000℃半导体热敏电阻。半导体热敏电阻的特性还有待进一步研究提高。
[测试测量]
基于数字温度传感器DSl8B20芯片的多点测温系统
0 引言   多点测温系统在工业领域及其国民生产中有广泛的用途。如在化工领域中,经常需要检测和控制反应釜中的液体的温度,使之能够稳定在一定的温度范围之内;在粮食储存以及加工过程中,会储存高水分的粮食,高水分的粮食极易升温发霉,因此粮食储存的测温显得尤为重要。以往的测温系统多采用热敏电阻,精度低、易损坏,且模拟信号远距离温度测量系统中,需要很好地解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。   因此,在温度测量系统中,具有足够的精度和实时性,控制足够的精度,并且尽可能具有较低的成本,这样的产品才具有实用价值。本文采用新型数字温度传感器 DSl8B20,它具有体积更小、
[模拟电子]
基于数字<font color='red'>温度</font>传感器DSl8B20芯片的多点测温系统
通信电源蓄电池温度的监测方法
通信电源蓄电池温度的监测方案 通信电源被称为通信系统的心脏,电源系统将直接影响通信系统的可靠性和稳定性。目前,通信系统电源供电大都是由不间断的蓄电池提供的,蓄电池温度过高势必影响到电池的工作效率和寿命。因此对蓄电池的工作温度进行实时的监测具有实际意义。美国APC公司的一项调查结果表明,大约有75%以上的通信系统故障都是由于电源设备故障而引起的。 议题内容: 蓄电池温度监测系统的系统组成 蓄电池温度监测系统的软硬件设计 解决方案: 电压、温湿度采集、温度采集 模块之间的通信 数据显示 系统组成 蓄电池温度监测系统的原理框图如图1所示。主要由电压、温湿度采集、温度采集、89S51单片机、键盘控制模块、显示电路模
[电源管理]
通信电源蓄电池<font color='red'>温度</font>的监测方法
温度传感器在汽车工业中的应用
  众所周知,温度传感器的应用非常广泛,那么在汽车工业中,它的装配,改变了什么?   公交车安装温度传感器防自燃   夏季高温期间,公交车自燃事件时有出现。如何预防公交车自燃事件的发生也显得格外重要。为了防患于未然,山西太原市公交公司为部分公交车安装了温度传感器,保障公交车行车安全,   一般来说公交车自燃事故,与车辆运行年限较长,内部线路老化不无关系。一般运营年限较长的车辆以及后置发动机的车辆,运行中很容易出现发动机舱内温度过高以致出现火灾等事故。   而后置发动机车辆的驾驶员,很难发现发动机温度过高等问题,因此安装温度传感器进行报警能够发挥较大作用。公交公司为部分公交车上安装温度传感器,当发动机温度达到设定的阈值时,就会自动报
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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