毕业设计智能温度报警器设计.docx
《毕业设计智能温度报警器设计.docx》由会员分享,可在线阅读,更多相关《毕业设计智能温度报警器设计.docx(40页珍藏版)》请在冰豆网上搜索。
毕业设计智能温度报警器设计
智能温度控制报警器设计
电子与信息工程系电子信息工程
****************指导老师***
【摘要】本系统是基于单片机的智能温度报警控制器的设计。
以STC89C52为核心,采用温度传感器DS18B20作为温度检测器,在液晶显示屏上显示实时温度。
本温度计属于多功能温度计,它不仅可以实时显示温度,还可以设置上下限报警温度。
当温度超过设置的上限温度或者低于下限温度时,蜂鸣器鸣响报警,同时利用继电器切断电源,起到保护电路的作用。
【关键词】智能温度;DS18B20;报警
引言
温度与人们的生活息息相关,随着经济社会的不断发展,对温度的检测也显得越来越重要。
在现代农业上,温度对大规模化的农作物生产起到了关键作用,直接影响了农作物的生长和生产。
因此掌握温度的变化显得尤其重要,而传统的温度计需要人工的实时监测,浪费时间人力等显然已经不能适用了。
在现代工业上,温度对机器的影响也不容忽视,当温度过高时稍有不慎轻则造成设备的故障,重则造成人员伤亡。
特别是针对一些高危设备,人工的温度检测不仅麻烦,容易造成误差,而且对于检测人员又有一定的危险性。
于是对温度实时监控就显得至关重要了。
本设计以温度传感器DS18B20为测温元件,STC89C52为核心,读取温度信息并写入控制信息:
在液晶显示屏上显示温度,设置温度的上下限。
我们可以针对不同的应用环境设置不同需求的温度上下限,当被测物体温度超过上限或低于下限温度时,蜂鸣器响动报警同时继电器断开电路。
本温度计的设计与传统的温度计相比,不仅可以减少了人力的温度检测,而且具有测量准确、体积小、寿命长等优点。
1.总体方案设计
1.1方案比对
方案一
在本设计中也可采用热敏电阻或者热电偶之类的作为测温原件,它们的工作原理是热电阻的电阻值随着温度的变化而变化,进而将被测的电流或者电压采集过来。
如此对电路的设计会比较麻烦,软件设计也会比较复杂,需要用A/D转换后在进行数据处理。
方案二
在很多单片机测温电路中,大都是使用温度传感器。
测温范围广,精度高,且电路设计简单。
其中温度传感器DS18B20体积小,精度高,经济实用,且容易直接读取被测温度,满足设计要求。
综合以上两种方案,我们采用方案二,其电路设计简单,用单片机即可实现基本功能,软件设计也较简单,所以采用方案二。
1.2总体方案设计图
温度报警器总体方案设计如图1所示,控制器采用单片机STC89S52,可任意设定上下限温度报警功能;采用DS18B20作为温度传感器,测温范围为-50℃-110℃,误差小于0.5℃;用LCD液晶屏实现温度及时间日期显示。
图1总体方案设计图
本设计的系统框图如图1所示。
该系统包含温度采集模块、显示模块、电源模块、报警模块、按键模块等几个部分组成。
温度采集模块用来采集实时温度;显示模块用来显示温度,日期和时间;按键模块用于设置温度的上下限报警;电源模块对整个系统进行供电;报警模块即当温度超过上下限时进行报警提醒。
其工作过程为:
利用温度传感器DS18B20检测环境温度,在不同的应用环境设置不同的上下限温度,通过液晶显示器显示实时温度和时间,当环境温度值不在所设的范围内时,蜂鸣器报警提醒。
同时拓展功能上,如有需要利用继电器断开外围电路,起到保护电路等作用。
2.系统组成及原理
本系统包含温度采集模块、液晶显示模块、电源模块、控制模块、报警模块等5个主要模块。
2.1温度采集模块
图2.1温度采集电路
图2.1中DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接独处被测温度,并且可根据实际要求通过简单的编程实现。
2.1.1DS18B20主要特点
温度采集模块采用温度传感器DS18B20测取温度信息,然后使用单片机STC89C52与温度传感器进行通讯,读取温度信息。
DS18B20的主要特点如下:
(1)体积小,零待机功耗。
(2)测温范围广、精度高,测温分辨率可达0.0625℃。
(3)无需外部器件,电路设计简单。
(4)温度信息读取方便,仅需要一个端口引脚进行通信。
2.1.2DS18B20工作原理[1]
DS18B20的测温原理如图2.1.2所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图2.1.2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
图2.1.2DS18B20测温原理图
2.2液晶显示模块
在温度报警器的工作过程中,系统需要对实时的温度和时间进行显示。
使用液晶显示器显示。
在本设计中采用LCD1602液晶显示器,它的主要特点如下[2]:
(1)分表率高,显示质量好
(2)数字式接口,设计简单,操作方便。
(3)体积小,重量轻。
(4)寿命长,功耗低。
图2.2显示电路
显示模块采用的是LCD1602液晶显示器,图2.2中滑动变阻器R31用来调节LCD1602的亮度,使显示的更加清楚。
2.3温度报警器的电源模块
图2.3电源电路
系统仅需要单个电源,STC89C52使用5V稳压电源。
采用三端稳压集成7805得到+5V的稳定电压。
利用该方法方便简单,工作稳定可靠。
电源变压器:
是降压变压器,它将电网220V交流电压变换成12V的交流电压,并送给整流电路,变压器的变比由变压器的副变电压确定。
整流电路:
利用单向掉电元件,把59HZ的正弦交流电变换成脉动的直流电。
滤波电路:
可以将整流电路输出电压中的交流成分大部分加以滤除,从而得到比较平滑的直流电压。
稳压电路:
芯片7805稳压电路的功能是使输出的直流电压稳定,不随交流电网和负载的变化而变化。
整流电路采用二极管桥式整流电路,在U正半周,二极管D8、D9导电,D6、D7截止;U的负半周时,D6、D7导电,D8、D9截止。
正负半周均有电流流过负载,而且无论在正半周还是负半周,流过负载的电流方向是一致的,因而使输出电压的直流成分得到提高,脉冲成分被降低。
桥式整流电路无需采用具有中心抽头的变压器,仍能达到全波整流的目的。
2.4温度报警器的控制模块
图2.4温度报警器主控制电路
控制器主要用于对各模块控制显示、报警、计时等。
采用STC89C52作为系统控制器的CPU方案。
该单片机算术运算功能强,软件编程较灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛[3]。
2.4.1单片机外围复位电路
图2.4.1单片机复位电路
要使主控芯片在上电时能正常复位,按照要求执行程序,必须在上电位时给主控单片机提供至少两个机器周期以上的高电位复位脉冲。
图2.4.1是采用的上电复位电路,该电路在上电瞬间电源通过拉地的10K电阻充电,开始时的电流最大,电阻两端的电压最高,而后慢慢减小,直到电容充电完毕,电阻两端便保持低电平。
此变化经单片机内部施密特触发器整形后便成了上电瞬间的一个高电平脉冲,只要这个脉冲保持两个机器周期以上便可以正常复位了[4]。
2.4.2单片机外围时钟电路
图2.4.2单片机外围时钟电路
图2.4.2的电路主要用来给单片机提供标准工作时钟。
这里我们采用的是12MHz晶振,也就时说单片机的时钟周期为1/12µS,指令周期为1µS[4]。
2.5温度报警器的报警模块
图2.5温度报警器的报警电路
报警电路采用的是LED灯和蜂鸣器进行报警,其作用是当温度不在设定的范围内,LED灯亮,同时蜂鸣器报警。
以此来提醒用户该注意实时的温度,避免因为温度的原因而带来的损害。
3.系统程序设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据子程序等。
3.1主程序流程图
图3.1主程序流程图
如图3.1所示主程序的主要功能是负责实时显示温度,设置报警温度线,每一秒进行读出处理DS18B20测量的温度值。
3.2温度读取转换流程图
如图3.2.1温度读取程序主要是读出RAM中的9字节,再进行CRC校验,校验有错时直接结束程序,不进行温度数据的改写。
如图3.2.2温度转换命令子程序主要是发温度转换开始命令。
图3.2.1温度读取流程图图3.2.2温度转换流程图
3.3温度计算和显示流程图
图3.3.1将RAM中读取的温度值进行BCD码的转换运算,并进行温度值正负的判定。
图3.3.2主要是对分离后的温度数据显示进行刷新,当标志位位为1时,将符号显示位移入第一位。
图3.3.1温度计算流程图图3.3.2温度显示流程图
4.系统调试
4.1KEIL软件介绍[6]
Keil是美国Keil公司的C51编译器,它被嵌入到了KeiluVision集成开发环境中。
Keil是目前最常用的编译器,支持浮点等到类型,支持多维数组,能生成对应的汇编代码,能直接编译汇编代码程序和内嵌多种工具,可以方便的链接,生成可执行文件。
KeiluVision2IDE是Keilsoftware公司的产品,它集项目管理、编译工具、代码编写工具、代码调试以及完全仿真于一体,适合个人开发或人数少、对开发过程的管理还不成熟的开发团体。
这一功能强大的软件提供简易的开发平台,可以让开发者在开发过程中集中精力于项目本身,加快开发速度。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,如图3.2所。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
C51工具包的整体结构,如图4-1所示,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
图4.1程序调试图
图4.1为本设计的程序调试图,在经过调试也出现了许多问题,如:
编译期错误、连接错误等。
造成错误的主要原因是函数名书写错误或者分隔符不正确等。
4.2焊接
焊接之前,先画好电路图,做板子得注意的事项:
(1)画电路图时,布线要适当的设置线和焊盘的宽度,否则做出来的板子容易断线或者焊不上。
(2)在将电路图热转印到板子后,如果有一些线路没有印上,此时可以用防水黑色炭笔画上。
(3)用三氯化铁腐蚀板子时,应注意三氯化铁的浓度和腐蚀的时间。
(4)转孔的时候得注意焊盘,一不小心很容易把焊盘给转空了。
(5)最后在用钢刷刷转好孔的板子上的墨时,应控制力度,否则容易将铜线也刷掉。
做好板子时候,焊接元器件应注意的事项:
(1)首先是先观察烙铁,看是否有氧化。
因为氧化后的烙铁不上锡,不好焊接。
如果烙铁氧化可用钢刷适当的刷下烙铁头,或者直接更换烙铁。
(2)焊接一些特殊原件,例如:
石英晶振等,要注意焊接的时间和温度。
当焊接时间过长时,容易烧坏元器件。
(3)焊单片机的引脚时,应小心焊接,以免短路。
(4)焊接时候,要掌握技巧,加热元器件脚和焊盘后在上锡,焊接上时以45°角移开烙铁,这样可以有效避免虚焊。
4.3出现的问题
(1)在画电路板的时候,没有注意封装,lcd1602的封装搞错了,后来重新布线浪费了好多时间。
(2)在画电路图的时候把线布的太细,以至于做第一块板子的时候,焊盘太小无法焊接,后来只好
重新做过一块板子了。
(3)在焊接一些特殊原件时候,如:
二极管、三极管、和电解电容等,要注意它们的方向。
(4)在焊接的时候要注意不能焊接太久,在焊接电源插座时,因为焊接的时间过长,后来把铜板焊
俏皮了,后来只好用一条导线接上。
(5)在焊接完所有元器件后,要注意检查电路,看是否有焊错、漏焊、或者虚焊等。
在程序调试的
时候,因为板子上有一个电阻虚焊了,以至于无法点亮lcd1602液晶屏。
后来反复检查才找到原因。
(6)焊接的时候因为焊接技术不是很熟练,在焊接完后,发现整体元器件不协调,焊点不圆滑,走
线也很乱,看上去不美观。
(7)在程序调试的时候,总会出现这样那样的问题,功能没有全部实现。
这时候除了自己要多检查
程序之外,还要多问问同学老师。
4.4调试结果
做好板子焊好元器件后,进行程序编写。
看了一些书和上网找了一些资料,在进行第一次调试时,因为板子的硬件问题没有调试成功,检查后发现是一个电阻虚焊了。
在搞好板子之后做第二次调试,这时可以显示温度,但是无法驱动蜂鸣器使其报警。
后来在同学的帮忙下,让蜂鸣器报警但仍无法显示时间。
5.单片机干扰[7]
(1)单片机应用系统在实际工作过程中,难免会受到各种外部或内部的干扰,使系统发生异常情况。
比如,因干扰使程序指针发生错误时,可能会将非操作码执行,造成程序执行的混乱(跑飞)或进入死循环,甚至可能会损坏元器件。
(2)干扰窜入应用系统的主要渠道有三条:
通过电磁波辐射窜入系统的空间干扰;通过输入/输出通道窜入的通道干扰;电源的干扰。
防止干扰最有效的方法是去除干扰源,隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。
单片机干扰最常见的就是复位;所以单片机软件干扰最重要的是处理好复位状态[8]。
在本设计中受到的单片机干扰不大,也无造成程序执行的混乱,程序调试还算顺利。
6.设计展望
(1)本设计应用范围很广,可以根据具体的应用环境而进行拓展。
例如:
在农业应用上,在外围设备可接二氧化碳发生器,当温度低于或者超过预设值时,做相应的发生和断开二氧化碳发生器。
(2)本设计还有许多不足的地方,例如若能够加设一个串口通讯,就能实时的记录温度变化;另外在设计时间显示的时候,因为当初考虑到可以利用单片机的定时器做一个时钟,就没有想到用时钟芯片,调试起来的时候发现要实时的显示时间还是挺困难的。
7.总结和致谢
毕业设计是对大学阶段所学知识的一个总结。
在本次的毕设中,我利用单片机STC89C52和C语言的设计和应用,设计“智能温度控制报警器”作为我的毕业设计。
在本次毕业设计中,作为一个初学者,由于自身的知识水平有限,在设计过程中碰到了许多问题。
在同学
和老师的帮助下解决了一些想到的问题。
某些问题可能想的不够周全或者没有想到,希望老师给予指出。
作为一个初学者,从想法的产生,到想法在理论上的可行性,以及到最后的设计完成,无不需要突破种种困难,但是我都一一挺了过来。
虽然过程很艰苦,但是当做完以后心里是无法言以表达的激动。
它对我以后的设计思想、设计方法、设计过程都将会产生深远的影响。
学会查阅资料是我在这次设计中的最大收获,毕竟一个人的知识水平有限,而资料在设计中的作用可以说是举足轻重。
不断地收集和查阅资料使我知识面不断拓宽,为以后也打下了良好的基础。
通过设计,使我对一个产品的设计过程有了全面的了解,设计过程中出现的许多困难也使我自己不断完善。
不断的坚持使我信心百倍,我会以后继续努力。
在设计过程中感谢廖延初老师的悉心指导以及同学们的帮助,廖延初老师深厚的学术功底、严谨的治学态度、和蔼可亲的为师之道和不知疲倦的进取精神,让我受益颇深,为我树立了人生道路上的榜样,是我今后从事各项事业的楷模。
参考文献
[1]XX文库DS18B20工作原理
[2]XX文库LCD1602中文资料
[3]AT89S51单片机介绍.caj/blog/item/ca627c1680c1d1421a
[4]魏立峰,王宝兴.《单片机原理与应用技术》,北京大学出版社,2007,21-24.
[5]杨素行.《模拟电子技术基础简明教程》,高等教育出版社,2004,514-529.
[6]东哥单片机学习网KeilC51基础知识
(1)2008-03-02
[7]单片机系统应用的抗干扰措施.2005-4/30.htm
[8]单片机的抗干扰。
Intelligenttemperaturecontrolalarmdesign
ElectronicandinformationengineeringElectronicandinformationengineering
118542007113Zhenkun.huangInstructorYanchu.liao
【Abstract】Thesystemisbasedonsinglechipmicrocomputerintelligenttemperaturealarmcontrollerdesign.With89c51asthecore,andadoptingthetemperaturesensorDS18B20astemperaturedetector,ontheLCDscreendisplaysreal-timetemperature.Thethermometerbelongstothemultifunctionalthermometer,itnotonlycanreal-timedisplaytemperature,stillcansetupperalarmtemperature.Whentemperaturesexceedthelimitsettemperatureorbelowthelowerlimittemperature,atthesametimeusebuzzerringalarmrelaytocutoffpowersupply,haveprotectioncircuitfunction.
Keywords:
Intelligenttemperature;DS18B20;alarm;
附录一:
原理图和PCB
A1原理图
A2PCB图
附录二:
硬件实物图
A3硬件实物图正面
A4硬件实物图反面
附录二:
程序清单
unsignedcharCount;
unsignedcharcodeSONG[]={//祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
//路边的野华不要采
0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x