搜索
您的当前位置:首页正文

基于DS18B20的单片机温度控制器的设计

来源:小奈知识网


实 习 报 告

院系: 专业班级: 姓名: 学号:

基于DS18B20的单片机温度控制器的设计

摘 要: 本次实习中选择了DS18B20作为传感器,并和单片机89C51搭

建硬件电路,最终实现了基于DS18B20的单片机温度控制器的设计。DS18B20是新型数字温度传感器,采用它与单片机连接测量温度可简化温度控制器的电路,提高可靠性。

关键词: 89C51 单片机;DS18B20 温度控制器

引言

计算机的发展日新月异,其技术也突飞猛进,而嵌入式计算机这种专用计算机在当今科学的发展过程中更是不可或缺的。 嵌入式系统是近年来发展很快

的计算机方面的学科方向,并迅速渗透到控制、自动化、仪器仪表等学科。

嵌入式方向包括了软硬件协同设计、嵌入式体系结构、实时操作系统、嵌入式产品设计等方面的知识,需要掌握嵌入式系统设计的典型开发工具,培训学生具备嵌入式系统软、硬件的开发能力,对于特定行业领域(如移动终端、数字家庭、信息家电以及对传统产业信息化改造)已经逐步形成了特定的嵌入式开发方法与手段。

随着现代化信息技术的飞速发展,能独立工作的温度检测系统已广泛应用与诸多的领域。传统的温度检测大多以热敏电阻为传感器,但热敏电阻可靠性差、测量温度准确率低,且必须经过专门的接口电路转换成数字信号后才能进行处理。它具有微型化、低功耗、高性能、抗干扰能力强等优点,特别适合于构成温度检测系统,可直接将温度转化成串行数字信号进行处理。DS18B20的单片机温度控制器具有电路简单、可靠性高的优点。

本温度控制器对温度进行实时测量并显示,用户可设定最高限报警温度值和最低限报警温度值,有一定的温度控制功能。

一、实习设计目的

1.1实习设计要求

利用在嵌入式系统课程中所学的嵌入式系统知识和技巧,完成基于DS18B20的单片机温度控制器的设计过程。

此次实习设计的题目是利用嵌入式C语言编程知识和硬件电路板的焊接及测试知识实现温度控制器的功能。

此次实习的基于DS18B20的单片机温度控制器是利用89C51单片机一次查询各传感器的输出信号,然后89C51对输入信号进行相应处理后通过数码管输出,同时还可输出各种报警信号。

具体温度控制:当外界温度高于设定最高上限温度时,启动报警(二极管亮三停一,同时蜂鸣器响三停一);当外界温度降至最低下限温度以下,启动报警(二极管亮六停一,同时蜂鸣器响六停一)。当温度高于最高上限温度和最低下限温度的中间值加上0.5度时,启动风机降温;当温度低于最高上限温度和最低下限温度的中间值减去0.5度时,风机即停止运转。

用户可设定最高上限温度值和最低下限温度值,这可通过按键实现。S5为设置和确定键,S4为向上增加键,S3为向下减少键,S2为取消设置键。设定上限时,上限第一位显示“H”,后三位显示设定温度;设定下限时,下限第一位显示“L”,后三位显示设定温度。可通过按键调节温度上下限,长按键可以快速调节。它构成的测温系统,测量温度精度达到0.1度,测量的温度的范围在+20度到+50度之间,用4位数码管显示出来,默认温度显示:小数点后显示两位。

同时,本设计利用单片机内部的EEPROM,可以对用户所设定的温度

上下限进行保存,便于下次开机使用。

1.2实习设计目的:

加强嵌入式的综合运用能力,提高嵌入式的软件编程和调试能力,为以后的学习和开发工作打下良好基础。

掌握开发设计的软件和硬件流程以及设计思想从而了解一个真正的具有市场需求的东西的开发过程并巩固用C语言编程的技巧和方法。

经过编程,完成实习设计题目要求所实现的各种功能。

嵌入式系统课程设计为学生提供了一个理论与实践相结合的机会。既锻炼了学生的动手能力,又会加深理解学生在课堂所学习的理论知识。

二、课程设计描述

2.1 单片机AT89C51

89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.2 数字温度传感器DS18B20

(一)选择DS18B20的原因

DS18B20能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。

由于DS18B20单线通信是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM(数据缓冲寄存器)和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。前者暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

(二)传感器DS1820使用中注意事项

DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:

1.较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。

2.在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。

温度传感器DS18B20指令(命令)说明 命令功能 读ROM 启动转换 写温限值 匹配ROM 指令代码 33H 功能说明 读DS18B20中的64位光刻ROM序列号 44H 启动温度转换,结果存入内部高速暂存器RAM中 4EH 向内部字节地址2和3 中写入上下限温度值 55H 发出命令后,还发送64位ROM序列号寻找对应号码的18B20 读供电 读取温度 跳过ROM 报警搜索 搜索ROM 2.3 硬件焊接方法

B4H 读电源供给方式: 发0为寄生供电,1为外接供电 BEH 读取温度寄存器等9字节的内容 CCH 单片18B20时,跳过读序列号操作,直接发温度转换 ECH 执行后,当温度超过上下限值时18B20才作响应 F0H 搜索同一条线上挂接有几个18B20,识别ROM 1.原则:从左到右,从下到上,从低到高 2.注意事项:

(1)要注意看好二极管、电容、蜂鸣器的正负极;

(2)要注意电烙铁的安全使用:常温不能超过280度,接触时间不能超过3S; (3)插座的凹口与板上的对应等问题。

三、硬件组成

本温度控制器采用DS18B20与89C51单片机连接测量温度,硬件连接如图下所示。对温度进行实时测量。本系统功能由硬件和软件两大部分协调完成,硬件部分主要完成各种传感器信号的采集、转换、各种信息的显示等;软件主要完成信号的处理及控制功能等。

3.1 硬件组成模块

该系统硬件主要包括以下几个模块:DS18B20传感器模块、发光二极管模块、蜂鸣器控制模块、风机控制模块、按键扫描模块、EEPROM读写(保存上下限参数,并在上电时恢复参数)、数码管显示模块。其中89C51主要完成外围硬件的控制以及一些运算功能,传感器完成信号的采样功能,存储器主要完成程序和数据的存储、显示模块完成字符、数字的显示功能。

四、软件设计

4.1 DS18B20的软件设计

由于DS18B20是本温控器的温度测量核心器件,因此先介绍其软件设计。 DS18B20的操作协议:

对DS18B20的各种操作的软件设计必须依据其操作协议。

DS18B20的操作协议:每一次对DS18B20进行操作,必须先经过3个步骤:成功初始化DS18B20(复位DS18B20)-〉发送ROM操作指令-〉发送存储器操作指令,然后才能处理数据。 4.2 软件调试

1.软件电路故障及解决方法

设计软件部分出现这种错误的现象:当以断点或连续方式运行时,目标系统没有按规定的功能进行操作或什么结果也没有,这是由于程序转移到意外之处或在某处死循环所造成的。

2. 解决方法:这类错误的原因是程序中转移地址计算错误、堆栈溢出、工作寄存器冲突等。在采用实时多任务操作系统时,错误可能在操作系统中,没有完成正确的任务调度操作,也可能在高优先级任务程序中,该任务不释放处理器,使CPU在该任务中死循环。通过对错误程序的修改使其实现预期功能。 4.3 程序编制

程序代码见小组文档。

4.4 个人负责部分

在整个程序中,本人主要负责了温度上下限设置,温度数据的读取和EEPROM保存读取和MAIN函数的程序编写。

(1) 温度上下限设置:

void settemp() {

if(S5==0) {

setflag++;

C1=1;C2=1;C3=1;C4=1; while(!S5); }

if(setflag==1)

{

if(S4==0) {

if(count%250==0) {temph=temph+0.1;} } if(S3==0) {

if(count%250==0) {temph=temph-0.1;} } }

if(setflag==2) {

if(S4==0) {

if(count%250==0) {templ=templ+0.1;} } if(S3==0) {

if(count%250==0) {templ=templ-0.1;} } }

if(setflag==3) {

setflag=0; }

if(S2==0) {

temph=27.5;

templ=25.5;

} }

程序采用定时计数器的数值与固定数值取余的方式来实现等待功能,使CPU可以在等待时间执行其他任务,而无需把大量的时间消耗在等待信号上。按键采用长按连续增加的设计,连续增加的速度适当。

(2) 温度数据的读取及EEPROM的存取

严格按照技术文档所提供的时序进行编写,经测试,功能正常。

(3)Main函数的编写 void main() {

TThigh =EEPROM_read(0x2001); //非首次上电,取回EEPROM

内的数据

TTlow =EEPROM_read(0x2002);

temph=(float)TThigh;

templ=(float)TTlow; TMOD = 0x01; TH0 = 0xdc; TL0 = 0x00;

EA = 1; ET0 = 1; TR0 = 1; while(1) {

if((count%5)==0) settemp(); if((count%8)==0) display(); if((count%12345)==0) {

TThigh=(uchar)temph;

TTlow=(uchar)templ;

EEPROM_ERASE(0x2000);

EEPROM_write_byte(0x2001,TThigh); EEPROM_write_byte(0x2002,TTlow); } }

上电后,首先读取EEPROM里保存的上下限温度值,然后打开定时器,

并按照优先级,调用温度设置,显示。同时每隔一段时间,便将现在的上下限温度值重新更新写入EEPROM中。

}

五、系统调试及结论分析

单片机应用系统样机组装好以后,便可进入系统的在线(联仿真器)调试,其主要任务是排除样机硬件故障,并完善其硬件结构,试运行所设计的程序,

排除程序错误,优化程序结构,使系统达到期望的功能,进而固化软件,使其产品化。 5.1 硬件调试

单片机应用系统的硬件和软件调试是交叉进行的,但通常是先排除样机中明显的硬件故障,尤其是电源故障,才能安全地和真器相连,进行综合调试。硬件电路故障及解决方法

1.错线、开路、短路:由于设计错误和加工过程中的工艺性错误所造成的错线、开路、短路等故障。

解决方法:在画原理图时仔细检查、校正即可解决。

2.元器件损坏:由于对元器件使用要求的不熟悉及制作调试过程中操作不当致使器件损坏。

解决方法:在设计过程中要明确各元器件的工作条件,严格按照制作要求进行操作,损坏元器件要及时更换,以免损坏其他元件或影响电路功能的实现。 3.电源故障:设计中存在电源故障,即上电后将造成元器件损坏、无法正常供电,电路不能正常工作。电源的故障包括:电压值不符和设计要求,电源引出线和插座不对应,各档电源之间的短路,变压器功率不足,内阻大,负载能力差等。

解决方法:电源必须单独调试好以后才能加到系统的各个部件中。本设计中就出现电源故障经过一个稳压电路才使其正常工作。 5.2 硬件调试方法

本设计调试过程中所用的调试方法有:静态测试、联仿真器在线调试等。 1.静态测试

在样机加电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号、规格和安装是否符合要求。应特别注意电源的走线,防止电源之间的短路和极性错误,并重点检查扩展系

统总线(地址总线、数据总线和控制总线)是否存在相互间的短路或与其它信号线的短路。第二步是加电后检查各个插件上引脚的电位,仔细测量各点电位是否正常,尤其应注意单片机插座上的各点电位,若有高压,联机时将会损坏仿真器。第三步是在不加电情况下,除单片机以外,插上所有的元器件,最后用仿真适配器将样机的单片机插座和仿真器的仿真接口相连,为联机调试做准备。

5.3 设计结果与分析

所设计的功能都可以正常工作,不足之处是在开机后,由于读取温度需要一定时间,导致在较短的时间呢,报警器误判温度过低进行报警。多次改进未能解决,成为本次设计的一点缺憾。

六、个人总结

个人总结 :

在本次设计中,我们所学过的理论知识接受了实践的检验,增强我的综合运用所学知识的能力及动手能力,为以后的学习和工作打下了良好的基础。本文以AT89C51系列单片机为核心,用AT89C51单片机作为控制器件,温度信号通过热敏电阻和放大器转换成电信号,温度设定采用按键移位式设定方法等。软件算法采用设定值和测量值相比较的算法。在单片机应用的基础上,实现了一种用带有E²PROM的AT89C51单片机控制传感器的自动化温度监控系统。 几天的实习使我了解了一些在实际应用中,为保证程序的可靠及稳定性,应该掌握的一些编程要求:

1、不要使用毫秒以上的指令延时;

2、不因为等待某个信号而是CPU什么都不做;

3、转换思路,延时特别的长时间延时一定有可以替代的其他方法; 4、硬件能做的事情绝对不要使用软件实现; 5、合理使用中断,中断内的处理尽量简单;

6、严格时序的模块能拆分的尽量拆分,不能拆分的应保证其完整性,有时可能需要临界区保护。

通过这次实习,我学习到了一些实际应用中关于嵌入式开发的知识和要求,对我以后的学习和工作有很大的帮助。无论是在硬件还是在程序编写上,这些锻炼都使我受益匪浅。在实习中,多次遇到一些棘手的问题,在同学和老师的帮助下,大都得到了解决,培养了自己的合作精神和解决问题的意识。最后,感谢多位老师在实习中对我的指导和帮助。

参考文献:

【1】 《单片机原理及接口技术》 李朝青 【M】北京:北京航空航天大学出版社, 2005

【2】 《52单片机C语言应用程序设计实例精讲》 戴佳、戴卫恒等【M】北京:电子工业出版社, 2006.4

【3】《单片机应用技术》 王静霞 【M】北京:电子工业出版社,2010.1 【4】《单片机系统设计及工程应用》 雷思孝 [M].西安电子科技大学出版社,2007

因篇幅问题不能全部显示,请点此查看更多更全内容

Top