STC12C5A60S2控制温度传感器DS18B20 c程序

发布者:TranquilSmile最新更新时间:2013-05-11 来源: 21IC关键字:STC12C5A60S2  温度传感器  DS18B20 手机看文章 扫描二维码
随时随地手机看文章

STC12C5A60S2控制温度传感器DS18B20 c程序工作频率: 12.000MHz
#include "REG51.H"
#include "INTRINS.H" typedef unsigned char BYTE; sbit DQ = P3^3;                     //DS18B20的数据口位P3.3


BYTE TPH;                           //存放温度值的高字节
BYTE TPL;                           //存放温度值的低字节 void DelayXus(BYTE n);
void DS18B20_Reset();
void DS18B20_WriteByte(BYTE dat);
BYTE DS18B20_ReadByte(); void main()
{
    DS18B20_Reset();                //设备复位
    DS18B20_WriteByte(0xCC);        //跳过ROM命令
    DS18B20_WriteByte(0x44);        //开始转换命令
    while (!DQ);                    //等待转换完成     DS18B20_Reset();                //设备复位
    DS18B20_WriteByte(0xCC);        //跳过ROM命令
    DS18B20_WriteByte(0xBE);        //读暂存存储器命令
    TPL = DS18B20_ReadByte();       //读温度低字节
    TPH = DS18B20_ReadByte();       //读温度高字节     while (1);
} /**************************************
延时X微秒(STC12C5A60S2@12M)
不同的工作环境,需要调整此函数
此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同
**************************************/
void DelayXus(BYTE n)
{
    while (n--)
    {
        _nop_();
        _nop_();
    }
} /**************************************
复位DS18B20,并检测设备是否存在
**************************************/
void DS18B20_Reset()
{
    CY = 1;
    while (CY)
    {
        DQ = 0;                     //送出低电平复位信号
        DelayXus(240);              //延时至少480us
        DelayXus(240);
        DQ = 1;                     //释放数据线
        DelayXus(60);               //等待60us
        CY = DQ;                    //检测存在脉冲
        DelayXus(240);              //等待设备释放数据线
        DelayXus(180);
    }
} /**************************************
从DS18B20读1字节数据
**************************************/
BYTE DS18B20_ReadByte()
{
    BYTE i;
    BYTE dat = 0;     for (i=0; i<8; i++)             //8位计数器
    {
        dat >>= 1;
        DQ = 0;                     //开始时间片
        DelayXus(1);                //延时等待
        DQ = 1;                     //准备接收
        DelayXus(1);                //接收延时
        if (DQ) dat |= 0x80;        //读取数据
        DelayXus(60);               //等待时间片结束
    }     return dat;
} /**************************************
向DS18B20写1字节数据
**************************************/
void DS18B20_WriteByte(BYTE dat)
{
    char i;     for (i=0; i<8; i++)             //8位计数器
    {
        DQ = 0;                     //开始时间片
        DelayXus(1);                //延时等待
        dat >>= 1;                  //送出数据
        DQ = CY;
        DelayXus(60);               //等待时间片结束
        DQ = 1;                     //恢复数据线
        DelayXus(1);                //恢复延时
    }
}
关键字:STC12C5A60S2  温度传感器  DS18B20 引用地址:STC12C5A60S2控制温度传感器DS18B20 c程序

上一篇:stc单片机1TMCU控制DS1302程序
下一篇:STC12C5A60S2控制AT24C04 C程序

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

STM32入门开发: 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
一、环境介绍 编程软件: keil5 操作系统: win10 MCU型号: STM32F103C8T6 STM32编程方式: 寄存器开发 (方便程序移植到其他单片机) 温度传感器: DS1820 DS18B20是一个数字温度传感器,采用的是单总线时序与主机通信,只需要一根线就可以完成温度数据读取; DS18B20内置了64位产品序列号,方便识别身份,在一根线上可以挂接多个DS18B20传感器,通过64位身份验证,可以分别读取来至不同传感器采集的温度信息。 二、DS18B20介绍 2.1 DS18B20 的主要特征 1. 全数字温度转换及输出。 2. 先进的单总线数据通信。 3. 最高 12 位
[单片机]
STM32入门开发: 编写<font color='red'>DS18B20</font><font color='red'>温度传感器</font>驱动(读取环境温度、支持级联)
温度传感器
温度传感器有四种主要类型:热电偶、热敏电阻、电阻温度检测器(RTD)和IC温度传感器(见下表)。IC温度传感器又包括模拟输出和数字输出两种类型。 热电偶应用很广泛,因为它们非常坚固而且不太贵。热电偶有多种类型,它们覆盖非常宽的温度范围,从 C200℃到2000℃。它们的特点是:低灵敏度、低稳定性、中等精度、响应速度慢、高温下容易老化和有漂移,以及非线性。另外,热电偶需要外部参考端。 RTD精度极高且具有中等线性度。它们特别稳定,并有许多种配置。但它们的最高工作温度只能达到400℃左右。它们也有很大的TC,且价格昂贵(是热电偶的4~10倍),并且需要一个外部参考源。 模拟输出IC温度传感器具有很高的线性度 (如果配合一个模数
[应用]
温度传感器及其与微处理器接口
    摘要: 温度传感器根据其接口方式大体可分为模拟温度传感器和数字温度传感器,通过具体芯片的应用,介绍了这两种温度传感器的特点,以及各自与微处理具体接品。重点讨论了具有数字接口的半导体温度传感器,并对温度传感器未来的发展进行了展望。     关键词: 温度传感器 微处理器 温度开关 数字接口 温度的测量控制一般采用各式各样的温度传感器,常用的温度传感器及其测温范围(℃)为:热电偶(-84~2300),热电阻(-200~850),热敏电阻(-55~300),半导体(-55~150)。根据温度传感器输出方式及接口方式的不同,大体可以分为模拟温度传感器和数字温度传感器。模拟温度传感器输出的模拟信号,必须经过专门
[传感技术]
智能温度传感器DS18B20的原理与应用
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。 1DS18
[应用]
AVR单片机测温基于DS18B20
#include iom16v.h #include macros.h #include delay.h #define uint unsigned int #define uchar unsigned char #define dula_set PORTA |=BIT(3) //数码管段选 #define dula_clr PORTA &=~BIT(3) #define wale_set PORTA |=BIT(4)//数码管位选 #define wale_clr PORTA &=~BIT(4) #define DQ_IN DDRA&=~BIT(5) #define DQ_OUT DDRA|=BIT(5) #define
[单片机]
FPGA与DSl8820型温度传感器通信的实现
l 引言    DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚T0-92型小体积封装;温度测量范围为-55℃~+125~C,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。   一线式(1-WIRE)串行总线是利用1条信号线就可以与总线上若干器件进行通信。具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列(FPGA)等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。   本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通信功能。FPGA可以将读出DS18B20
[传感技术]
AT89C52控制温度传感器DS18B20并在LM016L_LCD上显示
//-------------------------------------------------------- //文 件 名:Temperture_Control // //文件简介:AT89C52作为主控,实时获取、处理、发送数据,全局控制; // DS18B20_Sensor温度(-50 ~ 255℃)数据实时输入; // LM016L_LCD温度数据实时显示 // //修改时间:2017.10.24 // //修改人员:Touch //-------------------------------------------------------- #include reg52.h //宏定义、全
[单片机]
Maxim 推出高精度、8通道温度传感器
Maxim推出精度为±1°C的8通道温度传感器MAX6581。器件具有7路远端检测通道,可监测带有多个热源的ASIC、FPGA、CPU和电路板。每路远端检测通道均具有串联电阻抵消和β补偿功能,可实现最高精度。MAX6581包含了8路温度检测通道,但这8路通道却仅需单个I²C地址,因而有效降低了电路板面积和系统整体成本。 该器件能够替代8个本地传感器或7个单通道远端传感器使用,并测量内置测温二极管的外部IC的管芯温度。MAX6581还可补偿寄生串联电阻。此外,通过使用分立的按二极管方式连接的晶体管,这7路远端检测通道均可用于测量电路板温度。 MAX6581采用4mm x 4mm、24引脚TQFN封装,带有
[模拟电子]
Maxim 推出高精度、8通道<font color='red'>温度传感器</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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