LM75A程序解析 (数字式温度传感器

LM75A程序解析 (数字式温度传感器
LM75A程序解析 (数字式温度传感器

2011-01-29 15:14:13| 分类:默认分类| 标签:lm75a 工程师|字号订阅

最近在测试LM75A的过程中出现的问题,从网上找来资料,调试发现都有问题,所以啊思路可以参考别人的具体程序还是自己写吧呵呵!

网上的两个程序都有问题,都是数据处理过程中的问题:

第一篇网上的帖子:

在如今什么芯片都在涨价就是工资没涨价的情况下,看到LM75A比DS18B20还是便宜,有兴趣的朋友可以考虑下,这是网上资料,本人没测试

LM75A是PHILPS公司生产的数字温度传感器及看门狗。通过片内集成的带隙温度传感器和∑-△数摸转换器来实现数字温度的测量,并通过该温度传感器为用户提供温度超限报警输出。LM75A内部包含多个数据寄存器:(1)配置寄器(Conf):用来存储器件的配置,如:器件工作模式、OS工作模式、OS极性和OS故障队列;(2)温度寄存器(Temp):用于存储读取的数字温度;(3)设定点寄存器(Tos&Thyst):用来存储可编程的过热关断和滞后限制。器件通过2线的串行I2C总线接口与控制器通信。LM75A包含一个开漏输出(OS),当温度超过编程限制的值时该输出有效。LM75A有3个可选的逻辑地址管脚,使得同一总线上可同时挂8个LM75A而无需其他硬件的支持

CPU:STC89C54RD+

晶震:11.0592M

A0 A1 A2 均接地地址设置为0 OS脚和INT0相连并通过10K上拉到VCC;当转换温度超过极限温度,输出中断蜂鸣器报警;刷新数码管显示温度共5位前一位表示正负温度后三位为温度125 - -55 最后一位为0.1度最高可精确到0.125 数码管图略(看程序应该会知道)定时器100MS采集温度一次

#include

#include

#include

sbit xiaoshu=P2^0; //COM口

sbit ge=P2^1;

sbit shi=P2^3;

sbit bai=P2^4;

sbit fh=P2^5;

sbit SDA_LM75=P1^0; //数据

sbit SCL_LM75=P1^1;

sbit BP=P2^1;

bit dp=0;

unsigned char JS=0;

#define LED P0 //8位数码管动态时时刷新

#define CONF 0X01 //配置寄存器

#define TEMP 0X00 //温度寄存器只读

#define ALARM 0X03 //超温关闭极限寄存器默认5000H

#define DELAY 0X02 //滞后寄存器默认4B00H

#define WADDR 0X90 //写地址

#define RADDR 0X91 //读地址

unsigned int tempdata=0; //全局变量申明温度

unsigned char code tab[]={ 0x3f,0x30,0x6d,0x79,0x72,0x5b,0x5f,0x31,0x7f,0x7b,0x40};//共阴//0, 1, 2 3 4 5 6 7 8 9

//unsigned char tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳

//0, 1, 2 3 4 5 6 7 8 9

unsigned char code tabdp[]={ 0xbf,0xb0,0xed,0xf9,0xf2,0xdb,0xdf,0xb1,0xff,0xfb,0xc0};//共阴带小数点//0, 1, 2 3 4 5 6 7 8 9

//unsigned char tabdp[]={ 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//共阳

void delay_xms(unsigned int count) //延时函数

{

register unsigned char j;

while (count --)

{

for (j=0;j<125;j++) //约1MS

{

}

}

}

void Led_Display(unsigned int i,bit mode) //显示函数

{

if(mode)

LED = 0x40; //共阴负

//LED=0xBF;

else

LED = 0x00;

//LED= 0XFF;

fh = 1;

bai = 0;

shi = 0;

ge = 0;

xiaoshu=0;

delay_xms(1);

LED = tab[i/1000];

i%=1000;

fh = 0;

bai = 1;

shi = 0;

ge = 0;

xiaoshu=0;

delay_xms(1);

LED = tab[i/100];

fh=0;

bai = 0;

shi = 1;

ge = 0;

xiaoshu=0;

delay_xms(1);

LED = tabdp[i/10]; //带小数点fh=0;

bai = 0;

shi = 0;

ge = 1;

xiaoshu=0;

delay_xms(1);

LED = tab[i%10];

fh=0;

bai = 0;

shi = 0;

ge = 0;

xiaoshu=1;

delay_xms(1);

}

void delay(void) //延时函数

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

void start_lm75(void)//起始

{

SDA_LM75=1;

SCL_LM75=1;

delay();

SDA_LM75=0;

delay();

SCL_LM75=0;

}

void stop_lm75(void)//停止

{

SDA_LM75=0;

SCL_LM75=1;

SDA_LM75=1;

delay();

SCL_LM75=0;

}

void Check_Ack(void) //检查应答信号

{

SDA_LM75=1;

SCL_LM75=1;

F0=0;

delay();

if(SDA_LM75) //如果数据为高置位非应答标志FO

F0=1; //通用标志位PSW状态寄存器

SCL_LM75=0; //准备下一变化数据

}

void Ack(void) //发响应信号

{

SDA_LM75=0;

delay();

SCL_LM75=1;

delay();

SCL_LM75=0;

}

void no_Ack(void) //发非响应信号

{

SDA_LM75=1;

SCL_LM75=0;

delay();

SCL_LM75=1; //迫使数据传输结束

delay();

}

void send_byte(unsigned char temp) //发送一字节数据{

unsigned char i=8;

while(i--)

{

SDA_LM75=(bit)(temp&0x80);

SCL_LM75=1;

delay();

SCL_LM75=0;

temp<<=1;

}

SCL_LM75=0;

SDA_LM75=1; //释放SDA数据线

}

unsigned char read_byte(void) //读一字节数据

{

unsigned char i=8;

unsigned char temp;

while(i--)

{

temp<<=1;

if(SDA_LM75)

temp++;

SCL_LM75=1;

delay();

SCL_LM75=0;

}

SCL_LM75=0;

delay();

SDA_LM75=1; //释放SDA数据线

return (temp);

}

void Write_chardata(unsigned char addr,unsigned char tempdata)//写配置寄存器{

start_lm75();

send_byte(WADDR);

Check_Ack();

if(F0)

{

no_Ack();

return;

}

Ack();

send_byte(addr);

Check_Ack();

if(F0)

{

no_Ack();

return;

}

Ack();

send_byte(tempdata);

Check_Ack();

if(F0)

return;

}

Ack();

delay();

stop_lm75();

}

void Write_intdata(unsigned char addr,unsigned int tempdata)//写16位寄存器{

unsigned char datahigh;

unsigned char datalow;

datahigh=(unsigned char)(tempdata>>8);

datalow=(unsigned char)(tempdata&0x00FF);

start_lm75();

send_byte(WADDR);

Check_Ack();

if(F0)

{

no_Ack();

return;

}

Ack();

send_byte(addr);

Check_Ack();

if(F0)

{

no_Ack();

return;

}

Ack();

send_byte(datahigh);

send_byte(datalow);

Check_Ack();

if(F0)

{

no_Ack();

return;

}

Ack();

delay();

stop_lm75();

}

unsigned char read_chardata(unsigned char addr) //读8位寄存器

unsigned char temp;

start_lm75();

send_byte(WADDR);

Check_Ack();

if(F0)

{

no_Ack();

return 0;

}

Ack();

send_byte(addr);

Check_Ack();

if(F0)

{

no_Ack();

return 0;

}

Ack();

send_byte(RADDR);

Check_Ack();

if(F0)

{

no_Ack();

return 0;

}

Ack();

temp=read_byte();

stop_lm75();

return (temp);

}

unsigned int read_intdata(unsigned char addr) //读16位寄存器

{

//unsigned char temphigh,templow; 原函数使用的是无符号字符型,8位 unsigned int temphigh,templow; //改成了无符号整形16位

start_lm75();

send_byte(WADDR);

Check_Ack();

if(F0)

{

no_Ack();

return 0;

}

Ack();

send_byte(addr);

Check_Ack();

if(F0)

{

no_Ack();

return 0;

}

Ack();

send_byte(RADDR);

Check_Ack();

if(F0)

{

no_Ack();

return 0;

}

Ack();

temphigh=read_byte();

templow=(read_byte())&0xe0;

stop_lm75();

if(!(temphigh&0x80))

{

dp=0;

return (((temphigh<<8)|templow)>>5); //如果使用的是8位字符型temphigh的话左移过程中数据已经全部丢了!

}

else

{

dp=1;

return (0x800-((temphigh<<8)|templow)>>5);

}

}

void initial() // 初始化LM75A

{

Write_chardata(CONF,0X20); //0S中断模式,温度转换正常模式

Write_intdata(ALARM,0x3300); //100度极限由高9位有效位组成BIT15为1表示为负为0表示为正超过100度触发外部中断0

Write_intdata(DELAY,0X4A80); // 95度后不报警

}

void int0_int() interrupt 0 using 1 // 外部中断0服务函数

{

BP=0;

delay_xms(1000);

delay_xms(1000);

}

void t0_int() interrupt 1 using 1 //定时器0中断服务函数{

TR0=0;

TH0=0xdc; // 10MS中断初值

TL0=0xff;

TR0=1;

JS++;

if(JS>10) //加到10为100MS

{

JS=0;

tempdata=read_intdata(TEMP); //采集数据

tempdata=(tempdata/8)*10; //转换为温度

}

}

void main() // 入口函数

{

IP=0X01;

TMOD=0X01;

TH0=0xdc; // 10MS中断初值

TL0=0xff;

IT0=0; //外部中断0采用电平触发

ET0=1;

TR0=1; //开放定时器0中断

EX0=1;

EA=1;

initial();

while(1)

{

if(dp)

Led_Display(tempdata,1);

else

Led_Display(tempdata,0);

}

}

第二个程序,问题同样出现在数据处理中!:

//main主函数

/*

main.c

LM75A数字温度计

*/

#include "Disp.h"

#include "I2C.h"

#include

#include

/*

函数:Delay()

功能:延时1ms~65.536s

参数:

t>0时,延时(t*0.001)s

t=0时,延时65.536s

*/

void Delay(unsigned int t)

{

do

{

TH0 = 0xFC;

TL0 = 0x66;

TR0 = 1;

while ( !TF0 );

TR0 = 0;

TF0 = 0;

} while ( --t != 0 );

}

/*

函数:SysInit()

功能:系统初始化

*/

void SysInit()

{

TMOD &= 0xF0;

TMOD |= 0x01; //设置T0为16位定时器 DispInit(); //数码管扫描显示初始化

I2C_Init(); //初始化I2C总线

}

/*

函数:ByteToStr()

功能:字节型变量c转换为十进制字符串

void ByteToStr(unsigned char idata *s, unsigned char c)

{

code unsigned char Tab[] = {100,10};

unsigned char i;

unsigned char t;

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

{

t = c / Tab[i];

*s++ = '0' + t;

c -= t * Tab[i];

}

*s++ = '0' + c;

*s = '\0';

}

/*

函数:LM75A_GetTemp

功能:读出LM75A的温度值

返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)

*/

int LM75A_GetTemp()

{

unsigned char buf[2];

int t;

I2C_Gets(0x90,0x00,2,buf);

t = buf[0];

t <<= 8;

t += buf[1];

t >>= 5; //去掉无关位右移8位后再左移高位始终是0 正负将无法判断 return t;

}

/*

函数:DispTemp()

功能:在数码管上显示出温度值

参数:

t:补码,除以8以后才是真正温度值

*/

void DispTemp(int t)

{

code unsigned char Tab[8][4] =

{

"000",

"125",

"375",

"500",

"625",

"750",

"875"

};

unsigned char buf[4];

bit s; //符号位

unsigned char i; //整数部分 unsigned char d; //小数部分 unsigned char x; //临时变量//分离出符号

s = 0;

if ( t < 0 )

{

s = 1;

t = -t;

}

//分离出整数和小数部分

i = t / 8;

d = t % 8;

//整数部分转换成字符串

ByteToStr(buf,i);

x = 4 - strlen(buf);

//清除所有显示

DispClear();

//显示符号

if ( s ) DispChar(x,'-');

x++;

//显示整数部分

DispStr(x,buf);

//显示小数点

DispDotOn(4);

//显示小数部分

DispStr(5,Tab[d]);

}

void main()

{

int t;

SysInit();

for (;;)

{

t = LM75A_GetTemp();

DispTemp(t); Delay(1000); }

}

DS18B20数字温度传感器要点

DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺 纹式,磁铁吸附式,不锈钢 封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 1: 技术性能描述 ①、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 ②、测温范围-55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)1℃。 ③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 ④、工作电源: 3.0~5.5V/DC (可以数据线寄生电源) ⑤、在使用中不需要任何外围元件 ⑥、测量结果以9~12位数字量方式串行传送 ⑦、不锈钢保护管直径Φ6 ⑧、适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温 ⑨、标准安装螺纹 M10X1, M12X1.5, G1/2”任选 ⑩、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。[1]信息DS18B20+ 和 Maxim Integrated Manufactured by Maxim Integrated, DS18B20+ is a 温度传感器. 3应用范围编辑 2.1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域 2.2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。 2.3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。 2.4 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制 4型号规格编辑 型号测温范围安装螺纹电缆长度适用管道 TS-18B20 -55~125 无 1.5 m TS-18B20A -55~125 M10X1 1.5m DN15~25 TS-18B20B -55~125 1/2”G 接线盒 DN40~ 60

基于单片机的温度测量系统设计

基于STC单片机的温度测量系统的研究 摘要:本文针对现有温度测量方法线性度、灵敏度、抗振动性能较差的不足,提出了一种基于STC单片机,采用Pt1000温度传感器,通过间接测量铂热电阻阻值来实现温度测量的方案。重点介绍了,铂热电阻测量温度的原理,基于STC实现铂热电阻阻值测量,牛顿迭代法计算温度,给出了部分硬件、软件的设计方法。实验验证,该系统测量精度高,线性好,具有较强的实时性和可靠性,具有一定的工程价值。 关键词:STC单片机、Pt1000温度传感器、温度测量、铂热电阻阻值、牛顿迭代法。 Study of Temperature Measurement System based on STC single chip computer Zhang Yapeng,Wang Xiangting,Xu Enchun,Wei Maolin Abstract:A method to achieve temperature Measurement by the Indirect Measurement the resistance of platinum thermistor is proposed. It is realized by the single chip computer STC with Pt1000temperature sensor.The shortcomings of available methods whose Linearity, Sensitivity, and vibration resistance are worse are overcame by the proposed method. This paper emphasizes on the following aspects:the principle of temperature measurement by using platinum thermistor , the measurement of platinum thermistor’s resistance based on STC single chip computer, the calculating temperature by Newton Iteration Method. Parts of hardware and software are given. The experimental results demonstrate that the precision and linearity of the method is superior. It is also superior in real-time character and reliability and has a certain value in engineering application. Keywords: STC single chip computer,Pt1000temperature sensor,platinum thermistor’s resistance,Newton Iteration Method 0 引言 精密化学、生物医药、精细化工、精密仪器等领域对温度控制精度的要求极高,而温度控制的核心正是温度测量。 目前在国内,应用最广泛的测温方法有热电偶测温、集成式温度传感器、热敏电阻测温、铂热电阻测温四种方法。 (1) 热电偶的温度测量范围较广,结构简单,但是它的电动势小,灵敏度较差,误差较大,实际使用时必须加冷端补偿,使用不方便。 (2) 集成式温度传感器是新一代的温度传感器,具有体积小、重量轻、线性度好、性能稳定等优点,适于远距离测量和传输。但由于价格相对较为昂贵,在国内测温领域的应用还不是很广泛。 (3) 热敏电阻具有灵敏度高、功耗低、价格低廉等优点,但其阻值与温度变化成非线性关系,在测量精度较高的场合必须进行非线性处理,给计算带来不便,此外元件的稳定性以及互换性较差,从而使它的应用范围较小。 (4)铂热电阻具有输出电势大、线性度好、灵敏度高、抗振性能好等优点。虽然它 的价格相对于热敏电阻要高一些,但它的综合性能指标确是最好的。而且它在0~200°C范

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.360docs.net/doc/a215000172.html, -------------------------- * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s 左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s 左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温度正负的。 * 编程者:Jason * 编程时间:2009/10/2 *********************************************************************/ #include //将AT89X52.h 头文件包含到主程序 #include //将intrins.h 头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int //变量类型宏定义,用uint 表示无符号整形(16位) #define uchar unsigned char //变量类型宏定义,用uchar 表示无符号字符型(8位) uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度 bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0不显示200ms ,s=1显示1s 左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数 #include"ds18b20.h" //将ds18b20.h 头文件包含到主程序 #include"keyscan.h" //将keyscan.h 头文件包含到主程序 #include"display.h" //将display.h 头文件包含到主程序

WZPK型温度传感器使用说明书

WZPK型温度传感器 使用说明书 泰兴市热工仪表厂2015年01月10日

隔爆温度传感器 ■应用 通常和显示仪表、记录仪表、电子计算机等配套使用。直接测量生产现场存在碳氢化合物等爆炸的0~500℃范围内液体、蒸汽和气体介质以及固体表面温度。 ■特点 ●压簧式感温元件,抗振性能好; ●测量范围大; ●毋须补偿导线,节省费用; ●进口薄膜电阻元件,性能可靠稳定。 ●防爆标志:Ex dⅡBT1~T5,防爆合格证号:GYB ■主要技术参数 ●产品执行标准 JB/T8622-1997 《工业铂热电阻技术条件》 《爆炸性气体环境用电气设备第1部分:设备通用要求_部分2》和《爆炸性气体环境用电气设备第2部分:隔爆型“d”保护的设备》,《设备保护等级(EPL)为Gb级的设备产品防爆标志为Ex d ⅡB T1~T5 Gb ■常温绝缘电阻 防爆热电阻在环境温度为15~35℃,相对湿度不大于80%,试验电压为10~100V(直流)电极及外套管之间的绝缘电阻≥100MΩ.m。

■测温范围及允差 ●测温范围及允差 注:t为感温元件实测绝对值。 ●防爆分组形式 d Ⅱ□ T □ 温度组别:T1~T5 防爆等级:A、B、C 工厂用电气设备 d:隔爆型 ai:本质安全型 ○电气设备类别 Ⅰ类——煤矿井下用电气设备 Ⅱ类——工厂用电气设备 ○防爆等级 防爆热电偶的防爆等级按其使用于爆炸性气体混合物最大安

全间隙分为A、B、C三级。 ○温度组别 防爆热电偶的温度组别按其外漏部分允许最高表面温度分为T1~T5 ●防爆等级 ●Exd Ⅱ□T□ ●Exia Ⅱ□T□ ●防护等级:IP65 ■接线盒形式

温度传感器实验设计概要

成都理工大学工程 技术学院 单片机课程设计报告 数字温度计设计

摘要 在这个信息化高速发展的时代,单片机作为一种最经典的微控制器,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,作为自动化专业的学生,我们学习了单片机,就应该把它熟练应用到生活之中来。本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。本文设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。 关键词:单片机,数字控制,数码管显示,温度计,DS18B20,AT89S52。

目录 1概述 (4) 1.1设计目的 (4) 1.2设计原理 (4) 1.3设计难点 (4) 2 系统总体方案及硬件设计...................................................... 错误!未定义书签。 2.1数字温度计设计方案论证 (4) 2.2.1 主控制器 (5) 2.4 系统整体硬件电路设计 (7) 3系统软件设计 (8) 3.1初始化程序 (8) 3.2读出温度子程序 (9) 3.3读、写时序子程序 (10) 3.4 温度处理子程序 (11) 3.5 显示程序 (12) 4 Proteus软件仿真 (13) 5硬件实物 (14) 6课程设计体会 (15) 附录1: (14) 附录2: (21)

1概述 1.1设计目的 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,可广泛用于食品库、冷库、粮库、温室大棚等需要控制温度的地方。目前,该产品已在温控系统中得到广泛的应用。 1.2设计原理 本系统是一个基于单片机AT89S52的数字温度计的设计,用来测量环境温度,测量范围为-50℃—110℃度。整个设计系统分为4部分:单片机控制、温度传感器、数码显示以及键盘控制电路。整个设计是以AT89S52为核心,通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换,同时因其输出为数字形式,且为串行输出,这就方便了单片机进行数据处理,但同时也对编程提出了更高的要求。单片机把采集到的温度进行相应的转换后,使之能够方便地在数码管上输出。LED采用三位一体共阳的数码管。 1.3设计难点此设计的重点在于编程,程序要实现温度的采集、转换、显示和上下限温度报警,其外围电路所用器件较少,相对简单,实现容易。 2 系统总体方案及硬件设计 2.1数字温度计设计方案论证 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 2.2总体设计框图 温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用3位共阴LED数码管以串口传送数据实现温度显示。

温度传感器简介

简谈温度传感器及研究进展 摘要:温度传感器是使用范围最广,数量最多的传感器,在日常生活,工业生产等领域都扮演着十分重要的角色。从17世纪温度传感器首次应用以来,依次诞生了接触式温度传感器,非接触式温度传感器,集成温度传感器。近年来在智能温度传感器在半导体技术,材料技术等新技术的支持下,温度传感器发展迅速。由于智能温度传感器的软件和硬件的合理配合既可以大大增强传感器的功能、提高传感器的精度,又可以使温度传感器的结构更为简单和紧凑,使用更加方便,因此智能温度传感器是当今的一个研究热点。微处理器的引入,使得温度信号的采集,记忆,存储,综合,处理与控制一体化,使温度传感器向智能化方向发展。关键词:温度传感器;智能温度传感器;接触式温度传感器 中图分类号:TP212.1 文献标识码:A Abstract:temperature transducer is used most widely, the largest number of sensors, in daily life, such as industrial production field plays a very important role.Since the 17th century temperature sensor for the first time application, was born in turn contact temperature sensor, non-contact temperature sensor, integrated temperature sensor.Intelligent temperature sensor in recent years in semiconductor technology, materials technology, under the support of new technologies such as the temperature sensor is developing rapidly.Due to the software and hardware of the intelligent temperature sensor reasonable matching can greatly enhance the function of the sensor, improve the precision of the sensor, and can make the temperature sensor has simple and compact structure, use more convenient, thus intelligent temperature sensor is a hot spot nowadays.The introduction of the microprocessor, which makes the temperature signal collection, memory, storage, comprehensive, processing and control integration, make the temperature sensor to the intelligent direction. Key words:temperature transducer; Smart temperature sensor; Contact temperature sensors 前言:温度作为国际单位制的七个基本量之一,测量温度的传感器的各种各样,温度传感器是温度测量仪表的核心部分,十分重要。据统计,温度传感器是使用范围最广,数量最多的传感器。简而言之,温度传感器(temperature transducer)就是是指能感受温度并转换成可用输出信号的传感器。在半导体技术的支持下,本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。在材料技术的支持下,陶瓷,有机,纳米等新材料用于温度传感器中可以使温度的测量和控制更加科学和精确。由于智能温度传感器的软件和硬件的合理配合既可以大大增强传感器的功能、提高传感器的精度,又可以使温度传感器的结构更为简单和紧凑,使用更加方便,因此智能温度传感器是当今的一个研究热点。微处理器的引入,使得温度信号的采集,记忆,存储,综合,处理与控制一体化,使温度传感器向智能化方向发展。

基于51单片机DS18B20温度传感器的C语言程序和电路

基于51单片机DS18B20温度传感器的C语言程序和电路 DS18B20在外形上和三极管很像,有三只脚。电压范围为3.0 V至5.5 V 无需备用电源测量温度位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置应用范围包敏感系统。 下面是DS18B20的子程序,本人用过完全可行的: #include #include #define uchar unsigned char #define uint unsigned int sbit DQ=P2^0; void reset(); //DS18B20 void write_byte(uchar val); //DS18B20写命令函数 uchar read_byte(void); //DS18B20读1字节函数 void read_temp(); //温度读取函数 void work_temp(); //温度数据处理函数 uchar data temp_data[2]={0x00,0x00}; uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //对于温度显示值值 uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x0数部分查表 main() { while(1) { 自己添加; } } void delay1(uint t) { for(;t>0;t--); } ///////温度控制子函数 void reset() { uchar presence=1; while(presence) { while(presence) {

GFSIGNET2350温度传感器操作说明书.

? SIGNET 2820 Series Conductivity Sensor Instruction Manual ENGLISH 1. Wiring 2. Recommended Position 3. 2819/2820/2821 In-line Installation SAFETY INSTRUCTIONS FOR IN-LINE ELECTRODE INSTALLATION 1.Do not remove from pressurized lines.2.Do not exceed maximum temperature/pressure specifications.3.Wear safety goggles or face shield during installation/service.4.Do not alter product construction. Failure to follow safety instructions may result in severe personal injury! Customer supplied pipe tee/reducer Standard fitting kit Hole up Mark hole position 3/4 in. NPT Hand tighten only! Optional fitting kit Hole up Mark hole position

Customer supplied pipe tee/reducer 1/2 in. NPT Hand tighten only! O-ring O-ring Sealant Sealant +GF + SIGNET 5800CR ?Use three conductor shielded cable for cable extensions up to 30 m (100 ft max.? Shield must be maintained through cable splice RED WHITE BLACK SILVER (SHLDS h l d S i g n a l I N T e m p . I N I s o . G n d CH 2 CH 1 RED SILVER (SHLD BLACK

温度传感器课程设计

温度传感器课程设计报告 专业:电气化___________________ 年级:13-2 学院:机电院 姓名:崔海艳 ______________ 学号:8021209235 目录 1弓I言................................................................... ..3

2设计要求................................................................. ..3 3工作原理................................................................. ..3 4 方案设计 ................................................................ ..4 5单元电路的设计和元器件的选择.............................................. ..6 5.1微控制器模块........................................................... .6 5.2温度采集模块...................................................... .. (7) 5.3报警模块.......................................................... .. (9) 5.4 温度显示模块..................................................... .. (9) 5.5其它外围电路........................................................ (10) 6 电源模块 (12) 7程序设计 (13) 7.1流程图............................................................... (13) 7.2程序分析............................................................. ..16 8.实例测试 (18) 总结.................................................................... ..18 参考文献................................................................ ..19

AT89C51单片机温度控制系统

毕业设计(论文) 论文题目:AT89C51单片机温度控制系统 所属系部:电子工程系 指导老师:职称: 学生姓名:班级、学号: 专业:应用电子技术 2012 年05 月15 日

毕业设计(论文)任务书 题目:AT89C51单片机温度控制系统 任务与要求:设计并制作一个能够控制1KW电炉的温度控制系统,控制温度恒定在37--38度之间。 时间:年月日至年月日 所属系部:电子工程系 学生姓名:学号: 专业:应用电子技术 指导单位或教研室:测控技术教研室 指导教师:职称: 年月日

摘要 本设计是以一个1KW电炉为控制对象,以AT89C51为控制系统核心,通过单片机系统设计实现对保电炉温度的显示和控制功能。本温度控制系统是一个闭环反馈调节系统,由温度传感器DS18B20对保炉内温度进行检测,经过调理电路得到合适的电压信号。经A/D转换芯片得到相应的温度值,将所得的温度值与设定温度值相比较得到偏差。通过对偏差信号的处理获得控制信号,去调节加热器的通断,从而实现对保温箱温度的显示和控制。本文主要介绍了电炉温度控制系统的工作原理和设计方法,论文主要由三部分构成。①系统整体方案设计。②硬件设计,主要包括温度检测电路、A/D转换电路、显示电路、键盘设计和控制电路。③系统软件设计,软件的设计采用模块化设计,主要包括A/D转换模块、显示模块等。 关键词:单片机传感器温度控制

目录 绪论 (1) 第一章温度控制系统设计和思路 (2) 1.1温度控制系统设计思路 (2) 1.2 系统框图 (2) 第二章 AT89C51单片机 (3) 2.1 AT89C51单片机的简介 (3) 2.2 AT89C51单片机的主要特性 (3) 2.3 AT89C51单片机管脚说明 (4) 第三章温度控制的硬件设备 (6) 3.1温度传感器简介 (6) 3.2 DS18B20工作原理 (7) 3.3 DS18B20使用中注意事项 (8) 第四章系统硬件设计 (9) 4.1温度采集电路 (9) 4.2 数码管温度显示电路 (9) 4.2.1 数码管的分类 (9) 4.2.2 数码管的驱动方式 (10) 4.2.3 恒流驱动与非恒流驱动对数码管的影响 (11) 4.3 单片机接口电路 (12) 4.3.1 P0口的上拉电阻原理 (12) 4.3.2 上拉电阻的选择 (14) 4.4 单片机电源及下载线电路 (14) 4.5 温度控制电路 (15) 第五章温度控制的软件设计 (17) 5.1 数码管动态显示 (17) 5.2 DS18B20初始化 (17) 5.3 系统流程图 (19) 谢辞 (20) 参考文献 (21) 附录 (22)

T255温度传感器使用说明

T255温度传感器使用说明 T255温度传感器是一款用来检测功率半导体温升的理想模拟器件,主要配合运放整形或直接送入单片机A/D口采集温度信息,并作出实时显示或过温保护等动作。 T255是以其阻值变化来反映温度变化的,故选用相应电阻分压来获取对应电压值是非常重要的参数。 典型:R(25℃)=5.000kΩ ,静动态特性好,灵敏度高。 阻值-温度特性表 温度℃ 阻值KΩ 温度℃ 阻值KΩ 温度℃ 阻值KΩ 温度℃ 阻值KΩ -20 37.49 11 8.801 42 2.674 73 0.980 -19 35.53 12 8.439 43 2.582 74 0.951 -18 33.76 13 8.093 44 2.493 75 0.923 -17 32.09 14 7.764 45 2.409 76 0.896 -16 30.52 15 7.451 46 2.327 77 0.870 -15 29.03 16 7.151 47 2.249 78 0.844 -14 27.62 17 6.866 48 2.174 79 0.820 -13 26.29 18 6.593 49 2.102 80 0.796 -12 25.03 19 6.333 50 2.032 81 0.773 -11 23.84 20 6.085 51 1.966 82 0.751 -10 22.72 21 5.848 52 1.902 83 0.729 -9 21.65 22 5.621 53 1.840 84 0.709 -8 20.64 23 5.405 54 1.780 85 0.689 -7 19.68 24 5.198 55 1.723 86 0.670 -6 18.77 25 5.000 56 1.668 87 0.650 -5 17.91 26 4.811 57 1.615 88 0.632 -4 17.10 27 4.630 58 1.564 89 0.614 -3 16.32 28 4.457 59 1.514 90 0.597 -2 15.59 29 4.291 60 1.467 91 0.581 -1 14.89 30 4.132 61 1.421 92 0.565 0 14.23 31 3.980 62 1.376 93 0.549 1 13.60 3 2 3.835 6 3 1.33 4 94 0.534 2 13.01 3 3 3.696 6 4 1.292 9 5 0.520 3 12.4 4 34 3.562 6 5 1.252 9 6 0.506 4 11.90 3 5 3.434 6 6 1.214 9 7 0.492 5 11.39 3 6 3.311 6 7 1.177 9 8 0.479 6 10.90 3 7 3.194 6 8 1.141 9 9 0.466 7 10.44 38 3.081 69 1.107 100 0.453 8 10.00 39 2.973 70 1.073 9 9.580 40 2.869 71 1.041 10 9.181 41 2.769 72 1.010

温度传感器 程序

第4章系统程序的设计 4.1 系统设计内容 系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、测量序列号子程序、显示数据刷新子程序等。 4.1.1主程序 主程序主要功能是负责温度的实时显示、读出处理DS18B20的测量温度值。主程序流程图如图4-1所示: 开始 初始化 调用显示子程序 读取并显示序列号 显示当前四路 温度 图4-1 主程序流程图 4.1.2读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC 校验,校验有错时不进行温度数据的改写。 读出温度子程序流程图如图4-2所示:

图4-2 读出温度子程序流程图 4.1.3 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时,转换时间约为750ms 。在本程序设计中,采用1s 显示程序延时法等待转换的完成。温度转换命令子程序流程图如图4-3所示: 图4-3 温度转换命令子程序流程图 4.1.4计算温度子程序 计算温度子程序将RAM 中读取值进行BCD 码的转换运算,并进行温度值正负的判定。计算温度子程序流程图如图4-4所示: 发DS18B20复位命 发跳过ROM 命令 发温度转换开始命令 结束 开始 复位DS18B20 发跳过ROM 命令 发出温度转换命 转换完毕 复位DS18B20 发匹配ROM 命令 发1个DS18B20序列 读温度值 存入储存器 指向下一个 延时 N Y

图4-4 计算温度子程序流程图 4.1.5 温度数据的计算处理方法 从DS18B20读取出的二进制值必须转换成十进制值,才能用于字符的显示。DS18B20的转换精度为9~12位,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。 通过观察表4-1可以发现,一个十进制与二进制间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围是0~F ,转换成十进制小数就是0.0625的倍数(0~15倍)。这样需要4位的数码管来表示小数部分。实际应用不必这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。 开始 温度零下? 温度值取补码置 “-”标志位 计算小数位温度BCD 值 计算小数位温计算小数位 结束 置“+”标志 N Y

最新DS18B20数字温度传感器介绍

D S18B20数字温度传 感器介绍

目前常用的微机与外设之间进行的数据通信的串行总线主要有 I 2C 总线,SPI 总线等。其中 I 2C 总线以同步串行 2 线方式进行通信(一条时钟线,一条数据线), SPI 总线则以同步串行 3 线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线)。这些总线至少需要两条或两条以上的信号线。而单总线( 1-wire bus ),采用单根信号线,既可传输数据,而且数据传输是双向的, CPU 只需一根端口线就能与诸多单总线器件通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因而,这种单总线技术具有线路简单,硬件开销少,成本低廉,软件设计简单,便于总线扩展和维护。同时,基于单总线技术能较好地解决传统识别器普遍存在的携带不便,易损坏,易受腐馈,易受电磁干扰等不足,因此,单总线具有广阔的应用前景,是值得关注的一个发展领域。 单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。单总线通常要求外接一个约为 4.7K 的上拉电阻,这样,当总线闲置时其状态为高电平。 DS18B20 数字式温度传感器,与传统的热敏电阻有所不同的是,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这也就缩短了开发的周期。

基于单片机的数字温度计设计课程设计

摘要 温度的检测与控制是工业生产过程中比较典型的应用。本设计以AT89C52单片机为核心,采用DS18B20温度传感器检测温度,由温度采集、温度显示,温度报警等功能模块组成。基于题目基本要求,本系统对温度采集和温度显示系统行了重点设计。本系统大部分功能能由软件实现,吸收了硬件软件化的思想。实际操作时,各功能在开发板上也能完美实现。本系统实现了要求的基本功能,其余发挥部分也能实现。 关键字:AT89C52单片机、DS18B20温度传感器、数码管显示、温度采集

目录 一.绪论 .............................................................................................................

二.设计目的..................................................................................................... 三.设计要求..................................................................................................... 四.设计思路..................................................................................................... 五.系统的硬件构成及功能................................................................. 5.1主控制器............................................................................................... 5.2显示电路............................................................................................... 5.3温度传感器.......................................................................................... 六.系统整体硬件电路................................................................................. 七.系统程序设计 .......................................................................................... 八.测量及其结果分析 ................................................................................... 九.设计心得体会............................................................................................ 十.参考文献..................................................................................................... 附录1 源程序 附录2 元件清单及PCB图 一.绪论

微信小程序详解

黑马程序员:微信小程序详解 概念介绍 相信最近各位同学已经被各种关于微信小程序的介绍刷屏了, 大家应该也关心这个新兴起的东西, 但是对于我们Android开发的同学, 或者对于我们iOS开发的同学, 可能很难马上上手去做, 也很难去理解这是一个什么东西, 那这篇文章就从理论上简单的向大家说明以下几个问题 1.微信小程序是什么 2.微信小程序开发所使用的技术栈, 以及对它的细致讲解 3.微信提供的小程序开发框架 相信通过这篇文章, 起码大家对于微信小程序会有一个更直观的认识, 也能上手进行一些简单的开发 接下来看第一个部分的内容, 微信小程序是什么, 在这之前先看一下官方的解释我们提供了一种新的开放能力,开发者可以快速地开发一个小程序。小程序 可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

微信小程序是什么 首先微信小程序这五个字中最重要的有两个词, 一个是小, 一个是程序, 我们分别来看这两个词所表达的意思 程序 首先是程序一词, 微信小程序所提供的体验是原生的, 而不是H5, 理论上微信小程序提供的是完全原生的体验 那微信是如何实现的呢? 总体上微信借助了React Native的四项, 那React Native在下面我会简称为RN, 关于RN具体的介绍请参照React Native 中文网, 而微信小程序基本上就是基于RN的框架设计原理自己鼓捣了一个轮子, 为什么我这么说, 我有没有证据? 请参照微信小程序框架原理 也就是说, 微信就是一个云操作系统, 你可以开发程序, 运行在微信中, 你的这个程序是完全类似于原生的体验, 就像你使用Android的SDK开发一个程序, 运行在Android手机中一样, 而你为微信开发一个程序, 可以运行在Android上, iOS上, 所有有微信的地方, 你的程序都可以运行 看到这里, 就会有很多同学觉得, 我靠, 那我的Android白学了, 那我的iOS白学了, 其实是不然的, 接下来我们再来看看微信小程序中的小字 小 虽然微信小程序能够提供近似原生的体验, 但是大家不用慌张, 微信小程序还远不可能代替原生应用, 有如下两个原因

使用单片机和温度传感器制作数字式温度计

《微机原理》课外设计制作 总结报告 题目(B):使用单片机和温度传感器制作数字式温度计组号:29 任课教师:王向阳 组长:11122412 侯景业20% 成员:11122445 白波20% 成员:11122510 吕锦涛20% 成员:11123633 柴金磊20% 成员:11123722 沈璘熙20% 联系方式:0 二零一三年五月十五日

一、课程设计目的与要求 利用学习过的《单片机与接口技术》课程的内容和其他相关课程的内容,设计数字式温度计。 使用单片机和温度传感器制作数字式温度计 (1)实时温度采集 (2)数字显示 (3)显示精度:0.1℃ (4)其它与温度有关的扩展 二、课程设计内容 2.1数字温度计设计方案 考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以可以采用一只温度传感器DS18B20,该传感器可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 2.2方案的总体框图 温度计电路设计总体设计方框图如图1所示,控制器采用单片机8051,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。

图1 总体设计方框图主控制器 单片机8051具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 温度传感器 数字温度传感器DS18B20,它不仅能直接输出串行数字信号,而且具有微型化、低功耗、高性能、易于微处理器连接和抗干扰能力强等优点。DS18B20数字温度传感器对于实测的温度提供了9-12位的数据和报警温度寄存器,它的测温范围为-55℃~+125℃,其中在-10℃~+85℃的范围内的测量精度为±0.5℃。由于每个DS18B20有唯一的一个连续64位的产品号,所以允许在一根电缆上连接多个传感器,以构成大型温度测控网络。 DS18B20特性 DS18B20 可以程序设定9~12 位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设

相关文档
最新文档