《数字温度计实验报告.docx》由会员分享,可在线阅读,更多相关《数字温度计实验报告.docx(17页珍藏版)》请在第一文库网上搜索。
1、0K需孝鼠Xianninguniversity单片机原理及应用课程设计报告书题目:DS18B20数字温度计的设计姓名:学号:专业:电气工程及其自动化指导老师:设计时间:2010年6月电子与信息工程学院1 .引言31.1. 设计意义31.2. 系统功能要求31.3. 本组成员所做的工作32 .方案设计33 .硬件设计43.1. 主控制器53.2. 显示电路53.3. 数字温度传感器DS18B2054 .软件设计84.1. 主程序84.2. 读出温度子程序94.3. 温度转换命令子程序104.4. 计算温度子程序104.5. 显示数据刷新子程序115 .系统调试126 .设计总结127 .附录A;
2、源程序138 .附录B;作品实物图片179 .参考文献17DS18B20数字温度计的设计1 .引言1.1. 设计意义单片机原理及应用是自动化专业的专业实践课程。本课程的任务是使学生通过“简易数字电压表的设计”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,工程设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼自己的动手能力和分析解决问题的能力;积累经验,培养一丝不苟的学习精神和对所学知识的综合应用能力。1.2. 系统功能要求采用数字式温度传感器为检测器件,进行单点温度检测。用数码管直接显示温度值,微机系统作为数字温度计的控制系统。1 .基本要求:(1)检测的温度范围:0
3、C100C,检测分辨率0.5。(2)用4位数码管来显示温度值。(3)超过警戒值(自己定义)要报警提示。2 .提高要求(1)扩展温度范围。(2)增加检测点的个数,实现多点温度检测。1.3.本组成员所做的工作XX:焊接实验总体电路板以及修改错误;XX:实验线路布局以及撰写实验报告;XX:调试与排除故障。2.方案设计在日常生活及工农.业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成相对应的温度,需要比较多的外部硬件支持。其缺点如下:1 .硬件电路复杂;2 .软件调试复杂;3 .制作成本高。本数字温度计设计采用美国DA11AS半导体公司
4、继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55125,最高分辨率可达0.0625oCoDS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本易使用的特点。按照系统功能设计的要求,确定系统有三个模块组成:主控制器,测温电路和显本电路。数字温度计总体电路结构框图如图所示。3.硬件设计3.1. 温度及电路设计原理图如图4.2所示,控制器使用单片机AT89C2051,温度传感器使用DS18B20用四位共阴极1ED数码管以动态扫描法实现温度显示。3.2. 主控制器单片机AT89C2051具有低电压供电和小体积等特点
5、,两个端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用。系统可用两节电池供电。3.3. 显示电路显示电路采用四位共阴极1ED数码管,从P1口输出断码,列扫描用P3.(TP3.3口来实现,列驱动用9012三极管。3.4. 数字温度传感器DS18B20由DA11AS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。1DS18B20性能特点DS18B20的性能特点:采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微
6、机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),测温范围为-55CTI25C,测量分辨率为0.0625C,内含64位经过激光修正的只读存储器RoM,适配各种单片机或系统机,用户可分别设定各路温度的上、下限,内含寄生电源。2.DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和T1,高速暂存器。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。64位ROM结构图如图2所示。不同的器件地址序列号不同。DS18B20的管脚排列如图1所示。GNDI/OUEDPR.35封装图1DS
7、18B20引脚分布图8位检验CRC48位序列号8位工厂代码(IoH)DS18B20高速暂存器共9个存储单元,如表所示:序号寄存器名称作用序号寄存器名称作用0温度低字节以16位补码形式存放4配置寄存器1温度高字节5、6、7保留2TH/用户字节1存放温度上限8CRC3HU用户字节2存放温度下限以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得
8、到实际温度。高8位SSSSS262524低8位23222,22,2二2i213.DS18B20控制方法DS18B20有六条控制命令,如表所示:指令约定代码操作说明温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、T1字节复制暂存器48H把暂存器的TH、T1字节写到E2RAM中重新调E2RAMB8H把E2RAM中的TH、T1字节写到暂存器TH、T1字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU4.DS18B20的通信协议DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类
9、型:复位脉冲,应答脉冲时隙;写0,写1时隙;读0,读1时隙。与DS18B20的通信,是通过操作时隙完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。a)复位和应答脉冲时隙每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时隙期间,主机向DS18B20器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据。在每一个时隙,总线只能传输一位数据。时序图见图3。b)写时隙当主机将单总线DQ从逻辑高拉到逻辑低时,即启动一个写时隙,所有的写时隙必须在60-120us完亦且在每个循环之间至少需要IUS的恢复时间。写0和写1时隙如图所示。在
10、写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15US之释放总线。时序图见图4。c)读时隙DS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要Ius的恢复时间。每个读时隙都由主机发起,至少拉低总线IuSo在主机发起读时隙之后,DS18B20器件才开始在总线上发送。或1,若DS18B20发送1,则保持总线为高电平。若发送为0,则拉低总线当发送O时,DS18B20在该时隙结束后,释放总线,由上拉电阻
11、将总线拉回至高电平状态。DS18B20发出的数据,在起始时隙之后保持有效时间为15us。因而主机在读时隙期间,必须释放总线。并且在时图3复位和应答脉冲时隙4567 .软件设计系统程序主要包括主程序、读出温度子程序、温度转换子程序、计算温度子程序、显示数据刷新子程序等等。7.1. 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每IS进行一次,其程序流程图如图6。初始化图6主程序流程图7.2. 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图7所示。结束:图7读出温
12、度子程序流程图7.3. 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用Is显示程序延时法等待转换的完成。温度转换命令子程序流程图如图8所示。7.4. 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其流程图如图9所示。7.5.7.6.7.7. 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位为O时将符号显示位移入下一位。程序流程图如图10所示。8 图10显示数据刷新子程序流程图9 .系统调试系统的调试主要以程序调试为主。硬件调试首
13、先检查焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检测,然后分别进行主程序,读出温度子程序,温度转换命令子程序,计算温度子程序和显示数据刷新子程序等的编辑及调试。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用C语言编写,用kei1编译器编程调试。10 .设计总结本设计利用89S51芯片控制温度传感器DS18B52,再辅之以部分外围电路实现对环境温度的控制,性能稳定,精度较高,而且扩展性很强。由于DS18B20支持单总线协议,我们可以将多个DS18B52并联
14、到3根或2根线上,CPU只需一根端口线就能与诸多DS18B52通信,占用较少的微处理器的端口就可以实现多点测温监控系统。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们学习的理论知识用到实际中,学习单片机更是如此。11 .附录A;源程序/*/DS18B20温度计C程序2005.2.28通过调试/*/使用AT89C2051单片机,12MHZ晶振,用共阳1ED数码管/P1口输出段码,P3口扫描#Pragmasrc(d:aa.asm)inc1ude,reg51.h,#inc1ude,intrins.h_nop_();延时函数用#defineDisdataP1/段码输出口#definediscanP3/扫描口#defineucharunsignedchar#defineuintunsignedintsbitDQ=P37;温度输入口SbitDIN=P17;/1ED小数点控制uinth;/*温度小数部分用查表法*ucharcodeditab16=