基于单片机的数字温度计设计07102_第1页
基于单片机的数字温度计设计07102_第2页
基于单片机的数字温度计设计07102_第3页
基于单片机的数字温度计设计07102_第4页
基于单片机的数字温度计设计07102_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计报告题 目:基于单片机的数字温度计设计教 学 系:*年 级、专 业:2010级电子科学与技术(1)班姓 名 学 号:*指 导 教 师:*完 成 时 间:2012年6月基于单片机的数字温度计设计作者:* 指导老师: *(年级专业:2010级电子科学与技术一班)摘 要:本文介绍一种基于AT89S52单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围-55-+125,使用4位LED模块显示,能通过键盘设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89S52单片机功能和应用。该电路设计新颖、功能强大

2、、结构简单。关键词:温度测量 DS18B20 AT89S52Abstract : The introduction of a cost-based AT89S52 MCU a temperatur measurement circuits, the circuits used DS18B20 high-precision temperatur sensor , measuring scope -55-+125,can use the keybord set the warning limitation, the use of four bits seven segments LED that

3、can be display the current temperature. The paper focuses on providing a software and hardware system components circuit, introduced the theory of DS18B20, the founctions and applications of AT89S52 .This circuit design innovative, powerful, can be expansionary strong.Key Words : Temperatur measurem

4、ent DS18B20 AT89S52目 录1前言··············································

5、;················32方案设计·································

6、;·························33 系统的硬件设计·······················&

7、#183;····························43.1 主控制器···················

8、3;····································43.2 显示电路············&

9、#183;···········································53.3 温度传感器工作原理····

10、;··········································63.4 温度传感器接口电路·····

11、83;········································94 系统的软件设计········

12、;············································94.1 主程序····

13、83;·················································

14、83;···94.2 温度测量·············································

15、···········94.2.1 初始化DS18B20····································&

16、#183;···········94.2.2 等待应答信号····································

17、·············104.2.3 DS18B20读字节··································

18、·············104.2.4 DS18B20写字节··································

19、··············114.2.5 启动温度测量·································

20、3;···············124.2.6 读取测量结果································&#

21、183;················134.2.7各算法流程图·······························&

22、#183;·················144.3 数码管显示······························&#

23、183;······················155 系统的测试与总结·························&#

24、183;·······················165.1 测试时的图片························&#

25、183;··························165.2总结······················&

26、#183;····································17参考文献············&

27、#183;··············································18致谢词··&#

28、183;·················································&#

29、183;········19附录1原理图········································

30、···············20附录2源程序清单·································&#

31、183;·················201 前言数字温度计(Digital Thermometer)简称DTM,它是采用数字化测量技术,把连续的温度值转换成不连续、离散的数字形式并加以显示的仪表。传统的温度计功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字温度计,由于精度高、抗干扰能力强,可扩展性强、集成方便得到了广泛的应用。温度是许多监控系统中的一个重要参数。DS18B20直接把温度信息转换成相应的数字信号

32、。数据采集、处理模块主要由AT89S52单片机构成,完成温度数据的读取和显示。本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对AT89S52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。该设计控制器使用ATMEL公司的AT89S52单片机,测温传感器使用DALLAS公司DS18B20,用数码管来实现温度显示。2方案设计本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:l 利用温度传感器(DS18B20)测量某一点环境温度l 测量范围为-55125,精度为±0.5l

33、 用数码管进行实际温度值显示采用AT89S52单片机P3 .5口控制温度传感器DS18B20的温度测量,以四位数码感形式输出测量温度,原理图如下图2.1所示:图2.1 DS18B20与单片机接口图2.2总体设计方框图3 系统的硬件设计3.1 主控制器 AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式

34、控制应用系统提 供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52图3.1 时钟电

35、路与复位电路3.2 显示电路 显示采用4位数码管,图3.2.1为数码管段驱动,图3.2.2为数码管位驱动,图3.2.3为温度显示电路图3.2.1 数码管段驱动图3.2.2 数码管位驱动图3.2.3温度显示电路3.3 温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下: 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以0.5

36、递增。华氏器件-67+2570F,以0.90F 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 3.3.1所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。其电路图 3.3.2所示。 图 3.3.

37、1外部封装形式 图3.3.2传感器电路图DS18B20的测温原理如图3.3.3所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数

38、,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位

39、脉冲)发ROM功能命令发存储器操作命令处理数据。图3.3.3 DS18B20测温原理图在正常测温情况下,DS1820的测温分辨力为0.5,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25、0.75为进位界限的关系,实际温度Ts可用下式计算: Ts=(Tz-0.25)+(CD-Cs)/CD 3.4 温度传感器接口电路图3.4.1温度传感器接口

40、电路4 系统的软件设计4.1 主程序/*- 主函数 -*/void main() while(1) Convert(); /调用启动温度转换函数 RdTemp(); /调用读取温度值函数 4.2 温度测量4.2.1.初始化DS18B20/*- 初始化DS18B20 -*/void TxReset() uint i; DQ=0; /发送复位脉冲 i=100; while(i>0) i-; /拉低900us DQ=1; /释放总线 i=4; while(i>0) i-; 4.2.2等待应答信号/*- 等待DS18B20应答 -*/void RxWait() uint i; while(

41、DQ); /等待15-60us while(DQ); /DS18B20发出存在脉冲60-240us i=4; while(i>0) i-;4.2.3DS18B20读字节/*- 读取一位数据 -*/bit RdBit() uchar i; bit b; DQ = 0; /读开始1us i+; DQ = 1; /产生读时间隙15us i+; i+; b = DQ; /读位 i = 8; while(i>0) i-; /等待60us DQ = 1; /释放总线 return b;/*- 读取字节数据 -*/uchar RdByte() uchar i,j,d; d=0; for(i=0;

42、i<8;i+) /各位由低向高读出DS18B20 j=RdBit(); d=(j<<7)|(d>>1); return d;4.2.4DS18B20写字节/*- 写入字节数据 -*/void WrByte(uchar d) uint i; uchar j; bit btmp; for(j=0;j<8;j+) /各位由低向高写入DS18B20 btmp=d&0x01; d=d>>1; if(btmp) /写1 DQ=0; /延时15us i+; i+; DQ=1; /写1时隙不低于60u i=8; while(i>0) i-; els

43、e /写0 DQ=0; i=8; while(i>0) i-; /保持低电平60us到120us DQ=1; /释放总线 i+; i+; 4.2.5启动温度测量/*- 启动温度测量-*/void Convert() uint i; Delay(125); /延时1ms TxReset(); /初始化DS18B20 RxWait(); /等待DS18B20答应 Delay(125); /延时 WrByte(0xcc); /跳过ROM命令 WrByte(0x44); /温度转换命令 for(i=0;i<250;i+) /延时1s Display();4.2.6读取测量结果/*- 读取温

44、度值 -*/void RdTemp(void) short int temp; uint x; bit flag = 1; TxReset(); /初始化DS18B20 RxWait(); /等待DS18B20应答 Delay(125); /延时 WrByte(0xcc); /跳过ROM命令 WrByte(0xbe); /读暂存存储器命令 templow = RdByte(); /温度值低字节,低4位为小数 temphigh = RdByte(); /温度值高字节 temp = (temphigh << 8) | templow; /温度为16位补码 if(temp<0) /

45、负温度 flag = 0; temp = temp + 1; tempzheng = temp >> 4; /温度值整数 x = temp & 0x000f; tempxiao = (x*10)/16; /温度值小数 if(flag) /正温度 disp0 = tempzheng/100; /百位 else /负温度 disp0 = 16; /负号 disp1 = (tempzheng%100)/10; /十位 disp2 = tempzheng%10; /个位disp3 = tempxiao; /小数 4.2.7各算法流程图初始化调用显示子程序1S到?初次上电读出温度值温

46、度计算处理显示数据刷新发温度转换开始命令NYNY Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY 图 4.2.7.1 主程序流程图 图4.2.7.2 读温度流程图发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束 温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束NNYY图4.2.7.3 温度转换流程图 图4.2.7.5显示数据刷新流程图开始温度零下?温度值取补码置“”标志计算小数位温度BCD值计算整数位温度BCD值结束置“+”标志NY图4.2.7.4

47、 计算温度流程图4.3 数码管显示/*- 数码管显示 -*/void Display()uchar i,j;j=0x08;for(i=0;i<4;i+)P1=j; /数码管位码输出LOCK=1; /打开锁存if(i=2) P0=leddispi|0x01; /显示小数点else P0=leddispi; /数码管段码输出LOCK=0; /关闭锁存j=j>>1; /调整位码 Delay(125);P0=0x00;5 系统的测试与总结5.1 测试时的图片图5.1.1温度传感器图 5.1.2测试时室内温度显示图 5.1.3测试时手握住传感器时的温度显示5.2 总结通过此次课程设计,

48、使我更加扎实的掌握了有关基于单片机的数字温度计设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍所在,课程设计是培养学生综合运用所学知识,发现,提出,分析和解决问题,锻炼实践能力的重要环节,是对我们学生实际工作能力的具体训练和考察过程,随着科学技术发展的越来越快,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说无出不在,因此学习和应用单片机的开发技术是十分重要的。回顾起此次课程设计,至今我仍然感触良多,的确,从理论到实践,在整整一个星期里,可以说苦多甜少,但是我却学到了很多很多的东西,同时还巩固了学的知识,通过这次课程设计使我懂得了理论和实践相结合很

49、重要的道理,只有理论是远远不够的,只有把理论知识和实践结合起来,从实践中得出理论知识,才能真正为社会服务,从而提高至今的实际的动手能力和独立思考能力。在设计的过程中遇到的问题,可以说是困难重重,在做的过程中难免会遇到各种各样的问题,同时在设计中发现自己的不足之处,等等,通过这次课程设计之后,一定可以把以前所学的知识理解通透。 参考文献 1谢维成.单片机原理与应用及C51程序设计.北京:清华大学出版社,20092李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社,20053马忠梅.单片机的C语言应用程序设计(第4版)M. 北京:北京航空航天大学出版社,20074江世明.基于Proteu

50、s的单片机应用技术M. 北京:电子工业出版社,20095彭伟.单片机C语言程序设计实训100例M. 北京:电子工业出版社,20096张毅刚.新编MCS-51单片机应用设计(第3版)M.哈尔滨:哈尔滨工业大学出版社,2008致 谢 词在我写本论文的过程中,周聘麟、蒋春雷老师给我提供了许多资料,并对实践中出现的问题给予耐心的解答,完稿之后在百忙之中仔细阅读,给出修改意见。周老师、蒋老师爱岗敬业,治学严谨,思维严密,平易近人是我十分尊敬的老师,在此对他表示感谢。在本文录入的过程中,得到了其他同学的帮助,在这里对他们也表示的感谢!附 录1 原理图附 录2 源程序清单#include <reg52

51、.h>#define ulong unsigned long#define uint unsigned int#define uchar unsigned charuchar code led= 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x02,0x00 ; /数码管码表uchar disp4=1,2,3,4; /数码管显示缓冲区 /数码管位选P1低四位,段选P0sbit LOCK=P14; /74573锁存端sbit DQ=P35; /DS18B20数据端uchar

52、templow; /温度值低字节uchar temphigh; /温度值高字节char tempzheng; /温度值整数char tempxiao; /温度值小数void Delay(uint x);void Display();void TxReset();void RxWait();bit RdBit();uchar RdByte();void WrBit(bit b);void WrByte(uchar d);void Convert();void RdTemp();sbit ACC0 = ACC0;sbit ACC7 = ACC7;/*- 主函数 -*/void main()while(1)Convert(); /调用启动温度转换函数RdTemp(); /调用读取温度值函数/*- 初始化DS18B20 -*/v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论