欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机的温度控制系统设计(共17页).doc

    • 资源ID:13846090       资源大小:137.50KB        全文页数:17页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的温度控制系统设计(共17页).doc

    精选优质文档-倾情为你奉上基于单片机的温度控制系统设计摘要:这次综合设计,主要是设计一个温度控制系统,用STC89C52单片机控制,用智能温度传感器DS18B20对温度进行采集,用LCD1602液晶显示屏将采集到的温度显示出来。系统可以有效的将温度控制在设定的范围内。如果实际温度超出了控制范围,则系统会有自动的提示信号,并且相应的继电器会动作。我们的实际生活离不开对温度的控制,在很多情况下我们都要对我们所处的环境进行温度检测,然后通过一定的措施进行调节,从而达到我们自己想要的温度,使我们的生活环境更加适宜。关键字:单片机;液晶显示屏;温度传感器;继电器;提示信号Abstract:This integrated design is the design of a temperature control system. A smart temperature sensor DS18B20 is used to collect temperature and a LCD1602 Liquid Screen is used to display the collected temperature. The system controlled by STC89C52 can effectively control the temperature within the setting limits. If the actual temperature exceeds the setting range, the system will automatically give signal, and the corresponding Relay will take related actions. It is necessary for us to control the temperature because in many situations the temperature around us is not proper for us.So we need to detect it and take some actions to adjust it to the temperature we want to make the environment around us better.Key Words:DS18B20;LCD1602;STC89C52;Relay;Signal引言目前,测控系统在工业生产中起着把关者和指导者的作用,它从生产现场到各种参数的获取,运用科学规律和系统工程的做法,综合有效地利用各种先进技术,通过自动手段和装备,使每个生产环节得到优化,进而保证生产规范化,提高产品质量,降低成本,满足需要,保证安全生产。传统的测控系统主要由“测控电路”组成,所具备的功能较少,也比较弱。随着计算机技术的迅速发展,使得传统的系统发生了根本性的变化,即采用微型计算机作为测控系统的主题和核心,代替传统测控系统的常规电子线路,从而成为新一代的微机化测控系统。目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。特别是其中的C51系列的单片机的出现,具有更好的稳定性,更快和更准确的运算精度,推动了工业生产,影响着人们的工作和学习。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会.而今,空调等家用电器随着生产技术的发展和生活水平的提高越来越普及,一个简单,稳定的温度控制系统能更好的适应市场。为了满足当前社会市场需求,我设计了此温度控制系统,以STC89C52为核心,以及液晶显示器,电磁继电器,电阻,按键等元件作为辅助,以电路分析作为理论指导和理论基础,设计出此系统,将被控对象的温度控制在一定的范围内,通过液晶显示器直观的显示出来,并且通过发光二极管,蜂鸣器等不同的信号告诉我们现在的温度在什么范围内,以便于我们做出相应的处理措施。1设计方案及原理1.1系统总体的设计方案首先由智能传感器(DS18B20)采集到温度,通过单片机的P3.7口将采集到的数据信息输送到单片机中,经过微处理器对其进行运算,并且和设定的值进行比较,然后根据比较的结果,即根据温度信号所在的范围,微处理器执行相对应的操作。由于我们所处的环境对温度的这个系统还具有温度范围调节功能。例如:若检测到的温度在最高温度和最低温度之间,则黄灯亮,若检测到的温度比最低温度低,则绿灯闪烁,蜂鸣器发出声音,继电器闭合开始加热,若检测到的温度高于最高温度,则红灯闪烁,并且蜂鸣器发出警报。1.2系统组成框图本系统组成主要有以下部分:温度采集部分、数据运算处理部分、温度显示部分以及相应的提示信号部分。温度采集DS18B20STC89C52温度显示与设定值进行运算 比较根据比较结果CPU执行相应指令图1 总体结构图1.3系统原理组成和系统结构这个智能温度控制系统由温度采集模块、温度显示模块、温度比较模块、处理模块等四大模块组成。系统具体运行过程如下:首先由智能温度传感器DS18B20从外界环境中采集到被测温度信号,将此信号发送到STC89C52单片机,然后单片机执行相应的指令,使继电器,发光二级管,蜂鸣器做出相应的动作。2硬件设计此系统的硬件电路包括以下部分,STC89C52单片机、LCD1602液晶显示屏、DS18B20、蜂鸣器、发光二极管、电磁继电器、加热装置、电阻、直流电压源、贴片按键以及晶振、导线等部分组成。系统总体来说由四大部分构成:温度范围设定,温度采集,数据处理,温度显示,处理机构等。最初温度范围设定在软件中,但是可以通过按键对其进行调整。温度采集采用的是温度智能传感器(DS18B20),这个智能传感器和单片机接口只需要一个I/O口,硬件电路连接比较方便,并且具有极强的抗干扰纠错能力。数据处理采用的是STC89C52单片机,当温度低于设定温度时,绿灯会闪烁,并且蜂鸣器发出响声,继电器会闭合,进行加热;当温度高于设定温度时,红灯会闪烁,蜂鸣器发出警报;当温度在设定范围内时,黄灯亮。温度显示采用的是1602液晶显示器。显示器上会显示出当前温度、最高温度、最低温度。图2晶振电路:为单片机提供时钟信号图3复位电路图4 继电器电路原理:当单片机P2.4引脚输出低电平时,三极管导通,则继电器线圈中会有电流流过,电流会产生电磁场,在电磁场的作用下,开关会被吸合。当P2.4为高电平时,三极管处于截止状态,则线圈中没有电流流过,因此开关因失去磁场的吸合力而断开。继电器电路中二极管的作用:由于当P2.4由低电平突然变为高电平时,继电器线圈中的电流会突然消失,根据电磁感应原理以及楞次定理,线圈两边会产生一个瞬时的反向高压,为了防止线圈产生的瞬时高电压形成闭合回路,产生大电流,因此,在中间加一个反向二极管,起到抑制反向电流的作用。图5温度范围指示灯依次为绿、红、黄图6蜂鸣器电路图原理:当P1.0为低电平时,三极管导通,则蜂鸣器中有电流流过,因此蜂鸣器发声。当P1.0为高电平时,三极管截止,蜂鸣器由于没有电流通过,因此停止发声。图7温度传感器电路原理:DS18B20在出厂时默认配置为十二位,其中最高位是符号位,因此温度值共11位,单片机在读取数据时,一次会读2字节共十六位,读完后将低11位的二进制数转换成十进制数再乘以0.0625便为所测的真实值。另外,还需要判断温度的正负。前五位数字是符号位,这五位同时变化,我们只需要判断11位就可以了。前五位为1时,读取温度为负值,则测量到的数值需要求出补码(求反加一),再乘以0.0625才得到实际温度值。前五位为0时,读取温度为正值,只要将测得数值乘以0.0625即可得到实际温度值。图8显示部分原理:此温控系统的显示采用的是LCD1602液晶显示器,各个引脚的功能和作用如下:VSS连接电源地,VDD连接电源正极,VO是液晶显示对比度调节端,RS是数据/命令选择端,RW是读写选择端,E是使能信号端。D0D7是数据端。通过RS确定是写数据还是写命令。写命令包括液晶光标显示不显示、光标闪烁不闪烁、需不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容。读/写控制端设置为写模式,即低电平。将数据或命令送达数据线上。给E一个高脉冲将数据送入液晶显示器,完成写操作。 图9 按键电路图原理:由电路图可知某个按键被按下的标志是这个按键所对应的引脚的电平由高电平变为低电平。因此,微处理器只需要检测P1.2、P1.3以及P1.4的电平变化然后经过去抖动后,若对应的引脚依然为低电平,则表示此键被按下。若电平由低变成高,则表示按键弹起。3软件设计4系统仿真及调试我的程序是在Keil C软件中编写的,经过在软件中不断地调试,修改,最终终于编译通过。编译通过后,生成hex文件。然后打开Proteus 软件,将生成的hex文件下载到单片机中,液晶显示屏上就显示出了如图所示的效果。由于测到的温度是四十五度,而设定的范围是四十度到九十度,因此实际检测到的温度在设定温度范围之内,自己期望的效果是液晶屏上显示最高温度、最低温度、测到的实际温度,并且黄色的发光二极管发光。从仿真结果来看,实际效果达到了自己所期望的效果。图10系统仿真结果总结本次单片机课程设计一共是两周的时间,在这忙碌的两周时间,我学到了很多东西。现在依然记得很清楚当时刚刚拿到题目时的那种茫然,感觉题目有一定的难度,而自己却无从下手,不知道从什么地方开始做起。在高老师的带领和指导下,我那种消极的情绪渐渐的消失了,渐渐的明白了应该去做哪些准备工作,应该去查阅哪方面的资料。就这样我又重新找回了自己的自信心,开始通过网络和书籍查找自己所需元件的特性和使用方法。查清楚所需要的元件资料大概花费了四天的时间,我便开始设计自己的电路图,搭建电路图可不是一件容易的事,不过在同学和老师的帮助以及自己的努力下,大概花了一天的时间,我的电路设计图就完成了。接下来的主要任务就是根据自己的电路编写程序,如果说设计电路不容易,那么编写程序我就只能用“非常难”这三个字来形容了。由于我们上学期学的是汇编语言单片机,而我自己之前自学过C语言单片机,对于我自己来说,我感觉用C语言来编写比较方便一些,于是,我便开始了自己的编程。编程需要耐心,因为我们编写出来的程序难免会有错误之处,在编译时不能通过,因此需要不断地去调试,直到编译通过为止。经过几天反复的编写,在软件中编译,调试,纠错,最终编译结果终于通过。接下来就是仿真了,需要在Proteus中将自己的硬件电路和软件结合起来,看能不能达到自己预期的效果。第一次仿真时,非常期待结果马上就能出现,并且能够达到预期的效果。可是现实和期待值总是存在一定的差距。电路图难免会出现连接失误,连接不完全等等之类的问题,经过我的努力修改,最终我的电路终于达到了我预的期望值,当我看到液晶显示屏上的结果,发光二级管闪烁,以及继电器,蜂鸣器按照我的要求动作时,我的心中有说不出的高兴和愉悦。通过这次的课程设计,我懂得了如何将自己学过的东西用于实践,即理论和实践相结合。增强了我和同学之间的互动能力,使我能够更好地和各个班的同学相互交流,相互学习共同进步。在以后的学习中,我会更加努力,坚持理论和实践相结合的思想,去探索,去追求。参考文献1王振红.综合电子技术与实践M.北京:清华大学出版社,2005.2:28-33.2梅丽凤.单片机原理及接口技术M.北京:清华大学出版社,2006.8:63-72.3徐爱华.单片机应用技术教程M.机械工业出版社,2003.7:128-156.4谢宜仁,谢东辰.单片机实用技术问答M.人民邮电出版社,2003.2:235-269.5何立民.单片机应用技术选编M.北京:北京航空航天大学出版社,1997.10:20-35.6郭天祥.51单片机C语言教程M.电子工业出版社,2009.1:343-349.附录源程序代码:#include <reg52.h>#include <intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned int sbit cgq=P37;/18B20接口sbit d1=P20;/高于上限时,红灯闪烁sbit d2=P21;/低于下限温度时,绿灯闪烁sbit d3=P22;/黄灯 正常时发光sbit feng=P10;/不在正常范围内时 蜂鸣器响sbit sw=P24;/当低于下限时,继电器吸合,升温开始工作sbit rs=P26;/1602控制位选择sbit rw=P25;sbit en=P27;bit flag;bit flag_f;char temph,templ;/ 上限温度 下线温度变量定义uchar code table1=" CT: C"uchar code table2="H:+90.0 L:+40.0"char hf='+',hs=9,hg=0,hd=0,lf='+',ls=4,lg=0,ld=0;/温度调整全局变量void delayus(uint us)/延长时间为11*us+3微秒while(-us)_nop_();void delayms(uint ms)/延时函数1秒 uint x,y;for(x=ms;x>0;x-)for(y=0;y<110;y+);/*LCD1602控制函数*/void lcd_write_com(uchar com)/写指令delayms(5);/维持信号稳定rs=0;rw=0;en=0; delayms(1);en=1;P0=com;en=0;void lcd_write_date(uchar date)/写数据delayms(5);/维持信号稳定rs=1;rw=0;en=0;delayms(1);en=1;P0=date;en=0;rs=0;void lcd_init()/液晶初始化uchar i;delayms(15);lcd_write_com(0x38);delayms(5);lcd_write_com(0x38);delayms(5);lcd_write_com(0x38);delayms(1);lcd_write_com(0x01);delayms(1);lcd_write_com(0x06);delayms(1);lcd_write_com(0x0f);delayms(1);lcd_write_com(0x80);delayms(1);for(i=0;i<14;i+)lcd_write_date(table1i);delayms(1);lcd_write_com(0x80+0x40);for(i=0;i<17;i+)lcd_write_date(table2i);delayms(1);/*温度控制函数*/void ds18b20_init()/18B20初始化 uchar x;cgq=1;delayus(8);cgq=0;delayus(50);cgq=1;delayus(20);x=cgq;delayus(5);void ds18b20_write_date(uchar date)/向DS18B20中写入一个字节uchar i;for(i=0;i<8;i+)cgq=0;cgq=date&0x01;delayus(5);cgq=1;date>>=1;delayus(5);uchar ds18b20_read_date(void)/从18B20中读出一个字节uchar i,date;TR0=0;for(i=0;i<8;i+)cgq=0;date>>=1;cgq=1;if(cgq)date|=0x80;delayus(5);TR0=1;return date;void ds18b20_start()/启动温度转换ds18b20_init();ds18b20_write_date(0xcc);/跳过读取序列号ds18b20_write_date(0x44);/启动温度转换delayus(200);uint ds18b20_temperature(void)/读取温度uchar a;uint b,t;ds18b20_init();ds18b20_write_date(0xcc);/跳过读取序列号ds18b20_write_date(0x44);/启动温度转换delayus(200);ds18b20_init();ds18b20_write_date(0xcc);ds18b20_write_date(0xbe);/读取温度寄存器,共九个节a=ds18b20_read_date();b=ds18b20_read_date();b<<=8;t=a+b;return t;/*按键调整*/sbit k1=P12;sbit k2=P13;sbit k3=P14;uchar k;void key_scan()if(k1=0)delayms(10);if(k1=0)while(!k1);delayms(10);k+;if(k=9)k=0;switch(k)case 0:flag=1;lcd_write_com(0x0c);lcd_write_com(0x80);break;case 1:flag=0;d1=1;d2=1;d3=1;feng=1;lcd_write_com(0x0f);lcd_write_com(0x80+0x40+2);break;case 2:lcd_write_com(0x80+0x40+3);break;case 3:lcd_write_com(0x80+0x40+4);break;case 4:lcd_write_com(0x80+0x40+6);break;case 5:lcd_write_com(0x80+0x40+11);break;case 6:lcd_write_com(0x80+0x40+12);break;case 7:lcd_write_com(0x80+0x40+13);break;case 8:lcd_write_com(0x80+0x40+16);break;if(k)if(k2=0)delayms(10);if(k2=0)while(!k2);delayms(10);if(k=1) if(hf='+')hf='-' else hf='+' lcd_write_date(hf); lcd_write_com(0x80+0x40+2);if(k=2)hs+;if(hs>=10)hs=0;lcd_write_date(hs+0x30);lcd_write_com(0x80+0x40+3);if(k=3)hg+;if(hg>=10)hg=0;lcd_write_date(hg+0x30);lcd_write_com(0x80+0x40+4);if(k=4)hd+;if(hd>=10)hd=0;lcd_write_date(hd+0x30);lcd_write_com(0x80+0x40+6);if(k=5) if(lf='+')lf='-' else lf='+'lcd_write_date(lf);lcd_write_com(0x80+0x40+11);if(k=6)ls+;if(ls>=10)ls=0;lcd_write_date(ls+0x30);lcd_write_com(0x80+0x40+12);if(k=7)lg+;if(lg>=10)lg=0;lcd_write_date(lg+0x30);lcd_write_com(0x80+0x40+13);if(k=8)ld+;if(ld>=10)ld=0;lcd_write_date(ld+0x30);lcd_write_com(0x80+0x40+16);if(k3=0)delayms(10);if(k3=0)while(!k3);delayms(10);if(k=1)if(lf='+')lf='-' else lf='+'lcd_write_date(lf);lcd_write_com(0x80+0x40+2);if(k=2)hs-;if(hs<0)hs=9;lcd_write_date(hs+0x30);lcd_write_com(0x80+0x40+3);if(k=3)hg-;if(hg<0)hg=9;lcd_write_date(hg+0x30);lcd_write_com(0x80+0x40+4);if(k=4)hd-;if(hd<0)hd=9;lcd_write_date(hd+0x30);lcd_write_com(0x80+0x40+6);if(k=5)if(lf='+')lf='-' else lf='+'lcd_write_date(lf);lcd_write_com(0x80+0x40+11);if(k=6)ls-;if(ls<0)ls=9;lcd_write_date(ls+0x30);lcd_write_com(0x80+0x40+12);if(k=7)lg-;if(lg<0)lg=9;lcd_write_date(lg+0x30);lcd_write_com(0x80+0x40+13);if(k=8)ld-;if(ld<0)ld=9;lcd_write_date(ld+0x30);lcd_write_com(0x80+0x40+16); /*以下为主函数*/void main() int i;int lin1,lin2;/温度临时存放值sw=1;feng=1;ds18b20_start();lcd_init();delayms(10);while(1)key_scan();if(flag)i=ds18b20_temperature();if(i&0x8000)i=i;i=i+1;flag_f=1;else flag_f=0;temph=i>>4;templ=i&0x0f;templ=(uchar)(templ*0.625);lcd_write_com(0x80+8);if(flag_f)lcd_write_date('-');else lcd_write_date('+');lcd_write_date(temph/10+0x30);lcd_write_date(temph%10+0x30);lcd_write_date('.');lcd_write_date(templ+0x30);delayms(10); if(hf='+')lin1=(hs*10+hg)*16+hd; else lin1=(hs*10+hg)*16+hd)*(-1); if(lf='+')lin2=(ls*10+lg)*16+ld; else lin2=(ls*10+lg)*16+ld)*(-1); if(i>=lin1)d1=d1;d2=1;d3=1;sw=1;feng=feng;if(i<=lin2)d1=1;d2=d2;d3=1;sw=0;feng=feng; if(i<lin1)&&(i>lin2)d1=1;d2=1;d3=0;sw=1;feng=1;专心-专注-专业

    注意事项

    本文(基于单片机的温度控制系统设计(共17页).doc)为本站会员(飞****2)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开