




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字温度计digital temperature 数字温度计的设计题 目 基于at89s51实现 数字温度计 院 系 电子电气工程系 专 业 电子信息工程 年 级 04级电子三班 学生姓名 指导教师 2007 年 9 月 16 日摘 要:ds18b20是dallas公司生产的单线数字温度传感器,他具有独特的单线总线接口方式。文章详细的介绍了单线数字温度传感器ds18b20的测量原理、特性以及在温度测量中的硬件和软件设计,具有接口简单、精度高、抗干扰能力强、工作稳定可靠等特点。 关键词:ds18b20;温度传感器;单片机 1、ds18b20简介ds18b20是美国dallas半导体公司推出的一种改进型智能温度传感器。与传统的热敏电阻相比: (1)独特的单线接口方式:ds18b20与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。 (2)在使用中不需要任何外围元件。 (3)温度变换功率来源于数据总线,电压范围:+3.0+5.5 v。总线本身也可以向所挂接的ds18b20供电,而无需额外电源。 (4)测温范围:-55 +125 。固有测温分辨率为0.5 。 (5)能够直接读出被测温度并且可根据实际要求通过编程可实现912位的数字读数方式。 (6)用户可自设定非易失性的报警上下限值。 (7)支持多点组网功能,多个ds18b20可以并联在惟一的三线上,实现多点测温。 (8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2、ds18b20的内部结构ds18b20内部结构主要由四部分组成:64位光刻rom、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。soic封装的ds18b20的引脚排列见图1,其引脚功能描述见表1。ds18b20引脚分布图表1ds18b20详细引脚功能描述序号名称引脚功能描述1,2,6,7,8gnd地信号3vdd可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。4dq数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。光刻rom中的64位序列号是出厂前被光刻好的,它可以看作是该ds18b20的地址序列码。64位光刻rom的排列是:开始8位(28h)是产品类型标号,接着的48位是该ds18b20自身的序列号,最后8位是前面56位的循环冗余校验码(crc=x8+x5+x4+1)。ds18b20存储器结构图温度值分配率配置表3、ds18b20的使用方法由于ds18b20采用的是1wire总线协议方式,即在一根数据线实现数据的双向传输,而对at89s51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。由于ds18b20是在一根i/o线上读写数据,因此,对读写的数据位有着严格的时序要求。ds18b20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。ds18b20的复位时序ds18b20的读时序对于ds18b20的读时序分为读0时序和读1时序两个过程。对于ds18b20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让ds18b20把数据传输到单总线上。ds18b20在完成一个读时序过程,至少需要60us才能完成。ds18b20的写时序对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。对于ds18b20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证ds18b20能够在15us到45us之间能够正确地采样io总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。4、设计任务 设计控制器使用单片机at89s51,测温传感器使用ds18b20,用3位共阳极led数码直读显示led数码管以串口传送数据,实现温度显示.基本范围-50-110精度误差小于0.55、电路原理图基于ds18b20的数字温度计设计电路原理图7段数码管动态显示电路原理图之数码管驱动电路7段数码管动态显示电路原理图之cpu和锁存电路6、软件设计单片机实现温度转换读取温度数值程序流程图 /*/* copyright (c) 2007-9-16, 电气系电子三班 */* all rights reserved. */* 作 者: 刘玉刚 */*/#ifndef_digthermo_h / 防止digthermo.h被重复引用#define_digthermo_h#include / 引用标准库的头文件#include #include #include #define uchar unsigned char #define uint unsigned int uchar tplsb,tpmsb; / 温度值低位、高位字节 sbit dq = p35; / 数据通信线dq#endif#include digthermo.h/* 延时t毫秒 */void delay(uint t)uint i;while(t-)/* 对于11.0592m时钟,约延时1ms */for (i=0;i0)i-;dq = 1;/ 产生上升沿i = 4;while (i0)i-;/* 等待应答脉冲 */void rxwait(void)uint i;while(dq);while(dq);/ 检测到应答脉冲 i = 4;while (i0)i-;/* 读取数据的一位,满足读时隙要求 */ bit rdbit(void)uint i;bit b;dq = 0;i+;dq = 1;i+;i+;/ 延时15us以上,读时隙下降沿后15us,ds18b20输出数据才有效b = dq;i = 8;while(i0) i-;return (b);/* 读取数据的一个字节 */uchar rdbyte(void)uchar i,j,b;b = 0;for (i=1;i=8;i+)j = rdbit();b = (j1);return(b);/* 写数据的一个字节,满足写1和写0的时隙要求 */void wrbyte(uchar b)uint i;uchar j;bit btmp;for(j=1;j1; / 取下一位(由低位向高位)if (btmp)/* 写1 */dq = 0;i+;i+; / 延时,使得15us以内拉高dq = 1;i = 8;while(i0) i-;/ 整个写1时隙不低于60us else/* 写0 */dq = 0;i = 8;while(i0) i-;/ 保持低在60us到120us之间dq = 1;i+;i+;/* 启动温度转换 */void convert(void)txreset();/ 产生复位脉冲,初始化ds18b20rxwait(); / 等待ds18b20给出应答脉冲delay(1); / 延时wrbyte(0xcc); / skip rom 命令wrbyte(0x44);/ convert t 命令/* 读取温度值 */void rdtemp(void)txreset();/ 产生复位脉冲,初始化ds18b20 rxwait(); / 等待ds18b20给出应答脉冲delay(1); / 延时wrbyte(0xcc); / skip rom 命令wrbyte(0xbe); / read scratchpad 命令tplsb = rdbyte(); / 温度值低位字节(其中低4位为二进制的“小数”部分)tpmsb = rdbyte(); / 高位值高位字节(其中高5位为符号位)/* 主程序,读取的温度值最终存放在tplsb和tpmsb变量中。tplsb其中低4位为二进制的“小数”部分;tpmsb其中高5位为符号位。通过数码管输出时,需要进行到十进制有符号实数(包括小数部分)的转换。*/code(templ,tempm)char temp temp0 ;if(tempm=tempm|0x00 ) temp=0xff;elsetemp=0x7f;tempm=4;temp0=0xff;temp0=temp0&templ;temp=temp&temp0;uchar a1,a2,a2t,a3, ser=temp/10; /分离出三位要显示的数字 sbuf=ser; a1=temp/100; a2t=temp%100; a2=a2t/10; a3=a2t%10;#define timer0h 0xc4;#define timer0l 0x00;/* 7段数码管锁存器地址 */#define ledaddr 0x8000/ 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f/* 0-9 a-f 的7段数码管显示编码 */unsignedchar ledcode16=0x3f,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f,0x6f,0x79,0x33,0x7c,0x73,0x63;/* 存放要显示的数字值 */unsigned char val3;/unsigned currled;/* 写锁存器的子程序 */void wraddr(unsigned int addr,unsigned char d)unsigned char xdata *pa;pa=(unsigned char xdata *)addr;*pa=d;/* 显示子程序 */void displaylast(void)unsigned char en3=0,2,4 ;if(valcurrled=0)&(valcurrled=0)&(currled3)currled+;elsecurrled=0;void time0(void) interrupt 1 display();tl0 = timer0l;th0 = timer0h;/* 初始化子程序 */void init(a1,a2,a3)/timer0 inittl0 = timer0l;th0 = timer0h;tr0=1;et0=1;/test/ irq initex0=0;it0=0;ex1=0;it1=0;ea=1;/输入要显示的数值val0=a1;val1=a2;val2=a3;currled=0;void main(void)dodelay(1); / 延时1msconvert(); / 启动温度转换,需要750msdelay(1000); / 延时1srdtemp(); / 读取温度 display(tplsb,tpmsb) code(templ,tempm); init(); whi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学法教育考试题及答案
- uci考试试题及答案
- 禄劝交通安全知识培训课件
- 2-Methylacetoacetyl-COA-2-Methylacetoacetyl-coenzyme-A-生命科学试剂-MCE
- 2025年食道肿瘤试题及答案
- 上海市度嘉定区2025年数学高三第一学期期末教学质量检测试题
- 苏轼传阅读课件
- 云南省师大实验中学2025年高三数学第一学期期末达标检测模拟试题
- 苏轼《水调歌头》赏析课件
- 湖南省十四校2025年数学高三上期末复习检测模拟试题
- 2025中国中老年营养健康食品专题报告
- 无人机生产线项目可行性研究报告
- 零售药店培训试题及答案
- 防雷防静电培训考试试题及答案
- 混凝土索赔协议书
- 兄弟赠送房屋协议书
- 社保返还协议书
- 2025年湖南省国际工程咨询集团有限公司招聘笔试参考题库附带答案详解
- 中小学违规办学行为治理典型案例与规范要求
- 血液透析中心护士手册
- 高一年级英语学法指导市公开课一等奖省赛课获奖课件
评论
0/150
提交评论