基于AT89C2051+ds18b20的温度计程序设计

发布者:科技思想家最新更新时间:2016-01-19 来源: eefocus关键字:AT89C2051  ds18b20  温度计 手机看文章 扫描二维码
随时随地手机看文章
//本程序我己经通过使用,大家可以放心参考,不过这个程序只能显示二位,后两位是显示一个温度的符号!
#include
#include
#define uchar unsigned char
#define uint unsigned int

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint tempe;

sbit DQ=P3^5;
sbit p=P3^1;
sbit q=P3^2;
sbit r=P3^3;
sbit s=P3^4;

void delay1(uint z) //延时函数
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--) ;
}

void delay(uint t)
{
    while(t--);
}

void display(void)
{
    p=0;
    P1=table[tempe/10];
    delay1(1);
    P1=0xff;
    p=1;
    
    q=0;
    P1=table[tempe];
    delay1(1);
    P1=0xff;
    q=1;
    
    r=0;
    P1=0x9c;
    delay1(1);
    P1=0xff;
    r=1;
    
    s=0;
    P1=0xc6;
    delay1(1);
    P1=0xff;
    s=1;
}

void init_ds18b20(void)
{
    uchar sample;
    DQ=1;
    delay(8);
    DQ=0;
    delay(80);
    DQ=1;
    delay(8);
    sample=DQ;  //return(sample)带返回检测器件响应
    delay(4);
}

void wr_ds18b20(uchar dat)
{
    uchar i;
    for(i=0;i<8;i++)
    {
        DQ=0;
        DQ=dat&0x01;
        delay(4);
        DQ=1;
        dat>>=1;
    }
    delay(4);
}

uchar re_ds18b20(void)
{
    uchar i;
    uchar result;
    for(i=0;i<8;i++)
    {
        DQ=0;
        result>>=1;
        _nop_();
        DQ=1;
        if(DQ)
            result|=0x80;
        delay(4);
    }
    return(result);    
}

uchar rd_temperature(void)
{
    uchar a,b;
    init_ds18b20();
    wr_ds18b20(0xcc);   //跳过ROM
    wr_ds18b20(0x44);   //启动温度测量
    delay(300);
    
    init_ds18b20();
    wr_ds18b20(0xcc);
    wr_ds18b20(0xbe);
    a=re_ds18b20();
    b=re_ds18b20();
    b<<=4;
    b+=(a&0xf0)>>4;
    return(b);
}

void main()
{
    while(1)
    {
        tempe=rd_temperature();
        display();
        delay(1);
        display();
        delay(1);
    }
关键字:AT89C2051  ds18b20  温度计 引用地址:基于AT89C2051+ds18b20的温度计程序设计

上一篇:51单片机C语言中.c文件和.h文件的关联
下一篇:51单片机外部计数器的使用方法

推荐阅读最新更新时间:2024-03-16 14:44

温度传感器 DS18B20
DS18B20 是美信公司的一款温度传感器,单片机可以通过 1-Wire 协议与 DS18B20 进行通信,最终将温度读出。1-Wire 总线的硬件接口很简单,只需要把 DS18B20 的数据引脚和单片机的一个 IO 口接上就可以了。硬件的简单,随之而来的,就是软件时序的复杂。1-Wire总线的时序比较复杂,很多同学在这里独立看时序图都看不明白,所以这里还要带着大家来研究 DS18B20 的时序图。我们先来看一下 DS18B20 的硬件原理图,如图16-12所示。 图16-12 DS18B20 电路原理图 DS18B20 通过编程,可以实现最高12位的温度存储值,在寄存器中,以补码的格式存储,如图16-13所示。 图16-
[单片机]
温度传感器 <font color='red'>DS18B20</font>
MSP430F149的DS18B20C语言程序
#include msp430x14x.h // Standard Equations //-------------------------I/O口定义------------------------------------ #define DS_DIR P6DIR #define DS_OUT P6OUT #define DS_IN P6IN #define DS18B20 BIT4 #define W18BUS_1 {DS_DIR |= DS18B20;DS_OUT |= DS18B20;_NOP();DS_DIR &= ~DS18B20;} //DS1
[单片机]
ONDO温度计:结合传统中医,帮助夫妻造人
    年轻夫妻Anna Mayer和Daniel Graf都为上班族,刚过而立之年想要孩子成立美满家庭。但现实很骨感,造人并非想象中那么简单。于是,在经历了寻医问诊、拜访专家、不断尝试又不断失败之后,他们决定用科技手段解决问题。在他们的辛苦努力之后,Ovatemp生育跟踪应用诞生了。Ovatemp已成功帮Mayer完成造人计划,并在今年初生出一个健康的宝宝。     Ovatemp现在正在发行ONDO,一个测量排卵期的电子温度计,其原理是妇女的生育周期可以通过测量体温推测出来。ONDO可以在Ovatemp平台上运行,其能够取代手动测量,自动推测体温,计算生育周期。     ONDO操作简单,只需将该温度计放到舌头
[医疗电子]
单片机数据通信之单总线数据传输
纯单片机干不了大事,必须得配上各种外设,那么了解单片机与传感器之间的数据通信就显得必不可少了。常见的单片机数据通信方式有SPI,IIC,RS232,单总线等等。每种通信方式都有相应的时序图,分析时序图并完成代码的编写是单片机学习者的必修课。本文以DS18B20为例分析一下单总线数据传输。 DS18B20是单总线数据传输,因此对于时序的要求就非常的高,学会分析其时序图是非常有必要的。 1.初始化时序图分析: 首先是由总线控制器拉低总线,维持480us。在480us后释放总线,由上拉电阻讲总线拉高。等待5-60us后,DS18B20开始响应,会将数据总线拉低60-240us.之后便释放总线,由上拉电阻拉高总线。转换为代码如下
[单片机]
单片机数据通信之单总线数据传输
DS18B20.h LCD1602.h头文件下载 温度和液晶 调试ok 可直接调用
DS18B20.h头文件内容预览: /*DS18B20驱动程序*/ //作者:詹磊 //功能:驱动DS18B20单总线温度计芯片,从中读出当前温度计所处温度, // 测量范围:-55~+125度;分辨率为0.1度(100度以下); //注意:本驱动不含CRC检测,所以不能一线挂多个器件,也不带温度报警,在之后的版本中 // 再加吧 //感想:对单总线器件的操作时序非常重要;程序顺序非常关键;由于温度有负数,有小数, // 所以在数据处理方面也很难控制;单片机资源有限 int float 数
[单片机]
第十节:(一)使用 DS18B20 温度传感器设计温控系统
项目实现功能: 使用51开发板上的DS18B20温度传感器设计温控系统,要求如下: 用串口将采集到的温度数据实时发送至上位机,在上位机软件上显示当前温度值(关于上位机软件的编写请参考下篇VB 内容)。 关于温度变化的实现,大家可参考以下方法: 室温通常在 28°C左右,用手捏住温度传感器可使其温度上升,用温度低的物体接触温度传感器可使其温度降低,或在温度传感器上淋点水,然后对着温度传感器吹气可以使温度迅速下降,大家也可想其他办法使温度传感器周围温度在 25°C~32°C 变化。 一、温度传感器概述: 温度传感器是各种传感器中最常用的一种,早期使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,它的
[单片机]
第十节:(一)使用 <font color='red'>DS18B20</font> 温度传感器设计温控系统
ATmega128(DS18B20
//ATmega28的温度传感器DS18B20控制程序,显示环境温度,编译优化等级-01 //DS18b20的C语言驱动程序,三位数码管显示,读取当前环境温度,精度达0.1度,温度范围0-99度 //DS18B20 详细引脚功能描述1、GND 地信号;2、DQ数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下 //也可以向器件提供电源;3、VDD可选择的VDD 引脚。当工作于寄生电源时,此引脚必须接地。 //DS18B20 的使用方法。DS18B20 采用的是1-Wire 总线协议方式 //即在一根数据线实现数据的双向传输 //编译环境 AVR Studio 4.17/AVR GCC //系统时钟7.3728MHZ,设置熔丝位为
[单片机]
基于单片机的高精度温度测量系统设计
0 引言 温度是工业生产过程和实验过程中比较重要的一个参数,精确的温度测量和及时的显示温度是很重要的。目前温度测量系统种类繁多,功能参差不齐。单片机具有体积小,价格便宜,通用性和灵活性强的特点,利用单片机设计温度测量系统,既可以满足功能要求,又经济实惠。数字温度测量传感器DS18B20是单一总线的高精度测量器件,它克服了以前模拟式传感器与微机接口时需要的A/D转换器及其他复杂外围电路的缺点。本文就是运用单片机及其接口和集成单总线温度传感器DS18B20构建一个高精度的温度测量和显示系统,并且通过开关进行温度上限的设置,如果温度超过设定值就会报警或进行相应的控制命令。设计的电路简单,易于实现,而且还具有一定的扩展功能,可以扩展成多
[单片机]
基于单片机的高精度温度测量系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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