• 大小: 592KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: 其他
  • 标签: 51单片机  

资源简介

使用STC89C51单片机制作了一款电子温度计,可以通过LCD1602实时显示温度

资源截图

代码片段和文件信息

#include “DS18B20.h“

bit DQ_Err_Flag = 0;

unsigned char  DS18B20_ID[DS18B20_MAXNUM][8]= {0};
unsigned char xdata DS18B20_zhan[(DS18B20_MAXNUM + 1)]= {0};


/**************************************
由于DS18B20延时均以15us为单位,故编写了延时单位为15us的延时函数,
注意:以下延时函数晶振为12MHz
参数:n 延时的微妙数
返回值:空
**************************************/
void DS18B20_Delay5us()  //@11.0592MHz
{
}

void DS18B20_Delay10us() //@11.0592MHz
{
    unsigned char i;

    i = 2;
    while (--i);
}

void DS18B20_Delay30us() //@11.0592MHz
{
    unsigned char i;

    i = 11;
    while (--i);
}
void DS18B20_Delay40us() //@11.0592MHz
{
    unsigned char i;

    _nop_();
    i = 15;
    while (--i);
}
void DS18B20_Delay60us()
{
    unsigned char i;

    i = 25;
    while (--i);
}
void DS18B20_Delay240us() //@11.0592MHz
{
    unsigned char i;

    i = 108;
    while (--i);
}

/**************************************
复位DS18B20并检测设备是否存在
参数:空
返回值:空
**************************************/
void DS18B20_Reset()
{
    unsigned char i = 0;

    CY = 1;
    while (CY)
    {
        DQ_Pin = 0;                     //送出低电平复位信号
        DS18B20_Delay240us();
DS18B20_Delay240us();//延时至少480us
        DQ_Pin = 1;                     //释放数据线
        DS18B20_Delay60us();       //等待60us
        CY = DQ_Pin;                    //检测存在脉冲
        DS18B20_Delay240us();      //等待设备释放数据线
        if (CY == 1 && i ++ > 15)
        {
            DQ_Err_Flag = 1;
            break;
        }
    }
}

/**************************************
从DS18B20读1字节数据
参数:空
返回值:返回从传感读到的数据
**************************************/
unsigned char DS18B20_ReadByte()
{
    unsigned char i;
    unsigned char dat = 0;

    for (i=0; i<8; i++)             //8位计数器
    {
        dat >>= 1;
        DQ_Pin = 0;                     //开始时间片
        _nop_();                //延时等待
        DQ_Pin = 1;                     //准备接收
        _nop_();                //接收延时
        if (DQ_Pin) dat |= 0x80;        //读取数据
        DS18B20_Delay60us();               //等待时间片结束
    }

    return dat;
}
/**************************************
*函数        :    unsigned char DS18B20_ReadBit(void)
*功能        :    读取DS18B20 1bit数据
*参数        :    无
*返回        :    数据最低位有效
*说明        :无
**************************************/
unsigned char DS18B20_ReadBit(void)
{
    unsigned char dat = 0;

    DQ_Pin = 0;    //拉低总线10-15us
    DS18B20_Delay10us();
    DQ_Pin = 1;    //释放总线
    DS18B20_Delay10us();
    dat = DQ_Pin;
    DS18B20_Delay40us();
    return dat;
}

/**************************************
*函数        :    unsigned char DS18B20_Read2Bit(void)
*功能        :    读取DS18B20 2bit数据
*参数        :    无
*返回        :    数据
*说明        :无
**************************************/
unsigned char DS18B20_Read2Bit(void)
{
    unsigned char idat = 0;

    for(i = 0; i < 2; i ++)
    {

        dat <<= 1;
        if(DS18B20_ReadBit())
            dat |= 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-09-06 19:31  电子温度计\
     目录           0  2017-09-06 19:31  电子温度计\PCB\
     文件      692736  2017-03-06 13:59  电子温度计\PCB\PCB1.PcbDoc
     文件       39357  2017-03-05 12:54  电子温度计\PCB\PCB_Project1.PrjPCB
     文件       80896  2017-03-02 21:06  电子温度计\PCB\Sheet1.SchDoc
     目录           0  2017-09-06 19:30  电子温度计\程序\
     文件        8536  2017-03-05 14:30  电子温度计\程序\DS18B20.c
     文件         773  2017-03-04 16:12  电子温度计\程序\DS18B20.h
     文件        3627  2014-08-26 10:17  电子温度计\程序\lcd.c
     文件        1068  2017-03-02 14:48  电子温度计\程序\lcd.h
     文件        6605  2017-03-02 14:48  电子温度计\程序\lcd.LST
     文件        4083  2017-03-02 14:48  电子温度计\程序\lcd.OBJ
     文件          61  2017-03-02 14:48  电子温度计\程序\lcd.__i
     文件        5062  2017-03-06 17:23  电子温度计\程序\LCD1602.c
     文件         959  2017-03-06 18:17  电子温度计\程序\LCD1602.h
     文件        9214  2017-03-06 21:29  电子温度计\程序\LCD1602.LST
     文件        6783  2017-03-06 21:29  电子温度计\程序\LCD1602.OBJ
     文件        2174  2017-03-06 21:29  电子温度计\程序\main.c
     文件        4423  2017-03-06 21:29  电子温度计\程序\main.LST
     文件        6221  2017-03-06 21:29  电子温度计\程序\main.OBJ
     文件       17512  2017-03-06 21:29  电子温度计\程序\pro
     文件         989  2017-03-06 21:29  电子温度计\程序\pro.build_log.htm
     文件        5243  2017-03-06 21:29  电子温度计\程序\pro.hex
     文件          69  2017-03-06 21:29  电子温度计\程序\pro.lnp
     文件       22222  2017-03-06 21:29  电子温度计\程序\pro.M51
     文件       72219  2017-04-11 16:42  电子温度计\程序\pro.uvgui.eryi1
     文件        6463  2017-03-06 18:24  电子温度计\程序\pro.uvopt
     文件       14269  2017-03-06 18:24  电子温度计\程序\pro.uvproj
     文件        6376  2014-08-26 10:17  电子温度计\程序\STARTUP.A51
     文件       14052  2017-03-06 21:29  电子温度计\程序\STARTUP.LST
     文件         749  2017-03-06 21:29  电子温度计\程序\STARTUP.OBJ
............此处省略4个文件信息

评论

共有 条评论