• 大小: 89KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-10-05
  • 语言: 其他
  • 标签: DS18B20  

资源简介

2 用1602LCD与DS18B20设计的温度报警器

资源截图

代码片段和文件信息

//-----------------------------------------------------------------
//  名称: DS18B20温度传感器程序
//-----------------------------------------------------------------
#define F_CPU 1000000UL
#include 
#include 
#define INT8U unsigned char
#define INT16U  unsigned int
#define INT8 signed char
//DS18B20引脚定义
#define DQ PB7

//设置数据方向
#define DQ_DDR_0()    DDRB &= ~_BV(DQ)
#define DQ_DDR_1()    DDRB |=  _BV(DQ)

//温度管引脚操作定义
#define DQ_1()        PORTB |=  _BV(DQ)
#define DQ_0()        PORTB &= ~_BV(DQ)
#define RD_DQ_VAL()   (PINB  &   _BV(DQ)) //注意保留这一行的括号

//温度小数对照表(四位的温度值0000~1111对应16个小数位)

const INT8U df_Table[]={0112334456678899};

char RomCodePrompt[] = {“ -- ROM CODE -- “};
char RomCodeString[] = {“0000000000000000“};
//报警温度提示信息及报警温度上下限值
char Alarm_Temp[]      = {“-- ALARM TEMP --“};
char Alarm_HI_LO_STR[] = {“Hi:     Lo:     “};
//当前读取的温度整数部分
INT8U CurrentT = 0 ;  
//从DS18B20读取的温度值
INT8U Temp_Value[] = {0x000x00};
//待显示的各温度数位
INT8U Display_Digit[] = {0000};
//传感器状态标志
INT8U DS18B20_ERROR = 0;
//当前温度显示缓冲
char Current_Temp_Display_Buffer[] = {“ TEMP:          “};
INT8 Alarm_Temp_HL[2];
//-----------------------------------------------------------------
//高低温报警标志
volatile INT8U HI_Alarm=0LO_Alarm=0;
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// 初始化DS18B20 
//-----------------------------------------------------------------
INT8U Init_DS18B20()
{
INT8U status;
DQ_DDR_1();
DQ_0(); _delay_us(500);
DQ_DDR_0();_delay_us(50);
status=RD_DQ_VAL();_delay_us(500);
DQ_1();
return status;


}

//-----------------------------------------------------------------
// 读一字节 
//-----------------------------------------------------------------
INT8U ReadOneByte()
{

    INT8U idat=0;
for(i=0;i<8;i++)
{
DQ_DDR_1();
DQ_0();
DQ_DDR_0();
if(RD_DQ_VAL()) dat|=_BV(i);
_delay_us(80);
}
return dat;

}

//-----------------------------------------------------------------
// 写一字节 
//-----------------------------------------------------------------
void WriteOneByte(INT8U dat)
{
 INT8U i;
for(i=0x01;i!=0x00;i<<=1)
{
DQ_DDR_1();
DQ_0();
if(dat&i) DQ_1();
else DQ_0();
_delay_us(80);
DQ_1();
}

}

//-----------------------------------------------------------------
// 读取温度值 
//-----------------------------------------------------------------
void Read_Temperature()
{

if(Init_DS18B20()!=0x00)
DS18B20_ERROR=1;
{
WriteOneByte(0XCC);
WriteOneByte(0X44);
Init_DS18B20();
WriteOneByte(0XCC);
WriteOneByte(0XBE);
Temp_Value[0]=ReadOneByte();
Temp_Value[1]=ReadOneByte();
Alarm_Temp_HL[0]=ReadOneByte();
Alarm_Temp_HL[1]=ReadOneByte();
DS18B20_ERROR=0;
}

}


void Temperature_Convert()
{
INT8U ng=0;
INT8 Curr_int_temp=0;
INT8U Curr_df_temp=0;
if((Temp_Value[1]&0xF8)==0XF8)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-11-30 13:36  12 用1602LCD与DS18B20设计的温度报警器\
     目录           0  2012-11-30 13:36  12 用1602LCD与DS18B20设计的温度报警器\.dep\
     文件          64  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\.dep\main.o.d
     文件        4937  2012-11-22 16:50  12 用1602LCD与DS18B20设计的温度报警器\DS18B20.c
     文件         158  2012-09-29 08:50  12 用1602LCD与DS18B20设计的温度报警器\DS18B20_LCD1602.pnproj
     文件          68  2012-09-29 08:50  12 用1602LCD与DS18B20设计的温度报警器\DS18B20_LCD1602.pnps
     文件        1922  2012-11-22 16:22  12 用1602LCD与DS18B20设计的温度报警器\DS18B20温度传感器测试.PWI
     文件       49683  2012-11-23 08:20  12 用1602LCD与DS18B20设计的温度报警器\Last Loaded 用1602LCD与DS18B20设计的温度报警器.DBK
     文件        2693  2012-10-23 15:48  12 用1602LCD与DS18B20设计的温度报警器\LCD1602.c
     文件        3164  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.c
     文件          13  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.eep
     文件       14977  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.elf
     文件        9418  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.hex
     文件       68713  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.lss
     文件       54515  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.lst
     文件       28006  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.map
     文件       19420  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.o
     文件         147  2012-09-28 14:05  12 用1602LCD与DS18B20设计的温度报警器\main.pnproj
     文件          57  2012-09-28 14:05  12 用1602LCD与DS18B20设计的温度报警器\main.pnps
     文件        2789  2012-11-22 16:57  12 用1602LCD与DS18B20设计的温度报警器\main.sym
     文件       17507  2012-09-28 11:59  12 用1602LCD与DS18B20设计的温度报警器\Makefile
     文件       49683  2012-11-29 08:05  12 用1602LCD与DS18B20设计的温度报警器\用1602LCD与DS18B20设计的温度报警器.DSN
     文件        1483  2012-11-29 08:05  12 用1602LCD与DS18B20设计的温度报警器\用1602LCD与DS18B20设计的温度报警器.PWI

评论

共有 条评论