课程设计-基于单片机的定时开关温度控制仪设计.doc_第1页
课程设计-基于单片机的定时开关温度控制仪设计.doc_第2页
课程设计-基于单片机的定时开关温度控制仪设计.doc_第3页
课程设计-基于单片机的定时开关温度控制仪设计.doc_第4页
课程设计-基于单片机的定时开关温度控制仪设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

南昌航空大学课程设计报告摘 要定时开关温度控制仪是基于单片机控制,从软件和硬件两方面设计并实现对温度和电压的检测以及定时。本次课程设计采用了AT89S52、温度传感器DS18B20、四合一共阴数码管、LM324等元器件,实现了定时开关、温度检测显示、电压检测以及报警保护功能;具有体积小、功能强、使用方便、智能化等特点,可应用于电子仪表、家用电器、节能装置、工业控制等诸多领域,具有很大的使用价值。关键词:温度控制;传感器;电压检测;定时开关目 录摘 要 I第一章 系统组成及工作原理 11.1 系统组成及工作原理 1第二章 硬件电路设计 22.1 方案比较 22.2 单元电路设计 22.2.1温度检测电路 22.2.2 电压检测电路 32.2.3 报警电路 42.2.4 定时开关电路 42.2.5 显示电路 5第三章 实验调试及性能分析 63.1 实验调试及性能分析 6结 论 7参考文献 8附录 1:总设计电路图 9附录2:程序清单 10前 言温度与电压的检测和控制是工业生产过程中比较典型的应用之一,随着传感器的生产和生活中的广泛应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发。随着时代的进步和发展,单片机技术已经普及到我们的生活、工作、科研等各个领域。本课题采用了数字温度传感器作为感温原件,它以单总线的连接方式,使电路大大的简化,利用单片机对传感器进行实时监测,当温度或者电压超过设定值时,则有蜂鸣器和指示灯发出报警声,提醒需要对环境温度或电压的调节,以达到生产和生活的需要,这样易于智能化控制。III第一章 系统组成及工作原理1.1 系统组成及工作原理定时开关温度控制仪是以单片机作为其控制系统的核心部件,并配以按键、数码管、继电器等元器件,其中硬件电路主要有温度检测电路、电压检测电路、报警保护电路以及定时开关电路组成。其中温度检测电路的作用是检测当前外部的温度,并把检测到的温度传给单片机,通过单片机把检测到的温度数字化用数码管显示出来,当温度超过28时,单片机控制报警系统报警,并切断电源,完成对温度的实时监测;电压检测电路是用来检测电源电压的大小,当电压超过设定电压时,单片机控制报警系统报警,并切断电源,完成对电压的实时监测;报警保护电路起着自动调节、安全保护、转换电路等作用;定时开关电路是通过单片机来控制该系统的定时工作。定时开关温度控制仪的系统原理如图1.1所示。比较器比较器变换器电压采样检测环境温度过压、过热报警,切电源单片机定时开/关图1.1 系统原理图第二章 硬件电路设计设计思想:环境温度检测采用单总线通信协议,用DS18B20温度传感器,在一根I/O线上读写数据。3脚接地,1脚接+5V电源,2脚接单片机P1.1口,并通过一个4.7 k的上拉电阻接+5V电源,用在寄生电源下。读取的温度值通过P1口用四位共阴数码管动态显示,控制位分别为P2.0、P2.1、P2.2、P2.3。设计中有报警功能,当温度28时、电源电压超过设置电压时,P1.0置1产生高电平,驱动发光二极管、蜂鸣器发出声光报警信号。随后,单片机P1.5口置1,继电器动作,断开电源,实现保护功能。2.1 方案比较方案一:设计有测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,这种设计需要用到A/D转换电路,温度感应电路比较麻烦。方案二:使用温度传感器DS18B20,此传感器可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。以上两种方案,方案二电路比较简单,软件设计也较简单,故采用了方案二。2.2 单元电路设计2.2.1 温度检测电路根据课题要求:当环境温度高于28时,报警并切断电源。环境温度采集采用了温度传感器DS18B20,此温度传感器DS18B20是一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。温度检测电路把温度传感器DS18B20的3脚接地,1脚接+5V电源,2脚接单片机P1.1口。当定时开关温度控制仪开始工作的时候,温度传感器DS18B20实时监测当下的环境温度,并把当下的温度通过单片机数字化用数码管显示出来。电路原理图如图2.1所示:图2.1 温度检测电路2.2.2 电压检测电路根据课题要求:电源电压超过设定电压时,报警并切断电源。电压检测电路采用了电压比较器LM314,设置电压比较器的反相输入端电压为+5V,当正相输入端输入的电压大于+5V时,端口1输出高电平,否则输出低电平,用单片机P1.4端口检测电压比较器LM324的输出端,当为高电平时,P1.0置1产生高电平,驱动发光二极管、蜂鸣器发出声光报警信号,否则不报警。电路原理图如图2.2所示:图2.2 电压检测比较2.2.3 报警电路 根据课题要求:当环境温度或电源电压超过设定的某一值时,报警并切断电源;报警电路有蜂鸣器、三极管和电阻组成,蜂鸣器的上端接三极管的E端,下端接地,三极管的C极接高电平,B端通过一个电阻接在单片机P1.0端口,当输入是低电平时,三极管此时截止,此时三极管相当于断路,蜂鸣器不工作;当输入为高电平时,三极管处于饱和状态,此时三极管导通,蜂鸣器接通后开始报警工作。电路原理图如图2.3所示:图2.3 报警电路2.2.4 定时开关电路根据课题要求:定时开2,关1分钟;定时开关电路主要采用单片机提供的时钟来定时完成。单片机内有一个反向放大器构成的振荡电路,XTAL1为振荡电路的输入端,XTAL2为输出端;时钟电路产生采用了内部振荡方式,片内的高增益反向放大器通过XTAL1、XTAL2外接作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡电路。时钟电路主要保证计算机的正常工作,并使内部各功能电路必须在该时钟信号的同步下按时序工作。电路原理图如图2.4所示:图2.4 时钟电路2.2.5 显示电路 显示电路有四位共阴极数码管、指示灯和电阻组成,其中四位共阴极数码管,能够显示小数,正常温度时,红灯亮,表明正常工作,数码管显示相应的温度值,当环境温度高于28时,单片机控制报警系统报警。列扫描用P2.0P2.3口来实现。电路原理图如图2.5所示:图2.5 显示电路17第三章 实验调试及性能分析3.1 实验调试及性能分析在设计时首先采用PROTEUS软件绘制原理图,并进行了仿真,仿真完成后在进行硬件电路的焊接,其次检查硬件电路的焊接是否正确,然后用万用表测试和通电检测,在测试过程中我们遇到了各种问题并一一解决。温度检测电路外围电路比较简单,顺利完成,但是在用单片机读取温度传感器数值时,遇到了不少的问题,因为是第一次应用此温度传感器,不知道传感器的读写编程,在我们通过查找资料和在老师的帮助下发现DS18B20与单片机采用串行数据传送,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。电压检测电路主要应用了电压比较器LM324,在测试过程中,发现当测试的电压与基准电压相差较大时,能正常工作,但是测试电压与基准电压相差比较小时,此控制仪不能正常工作,我们通过查找资料,测试发现,我们在正相输入端没有下拉电阻,导致出现上述问题,在正相输入端加载完下拉电阻后,电压检测电路能正常工作。报警电路,采用了蜂鸣器报警和指示灯报警,报警电路外围电路比较简单,我们顺利完成。经过近一个月的实验,顺利完成了本次课程设计,完成了定时开关温度控制仪的设计,当环境温度超过28或者电源电压超过设定电压时,报警并切断电源;定时开5分钟,关1分钟等指标。结 论本设计以AT89S52单片机为核心,实现了环境温度检测、电压检测、定时开关以及报警功能,使用DS18B20温度传感器对环境实时检测,并通过单片机读取传感器的值控制数码管显示当前的温度值,此温度传感器易于控制,硬件简单,同时可通过按键控制单片机执行相应的程序完成指定功能;电压检测采用LM324电压比较器进行电压比较,并确定是否超过上限电压值;报警保护电路能保证单片机安全的工作。实践证明本设计能够完成本课题的要求。参考文献11 周立功. 单片机实验与实践M. 北京航空航天大学出版社,2004.2 全国电子专业人才考试教材编委会. 单片机设计与开发. 科学出版社,2009年3月第1版3 张洪润,刘秀英,张亚凡等. 单片机应用设计200例. 北京航空航天大学出版社,2006年7月第1版附录 1:总设计电路图附录2:程序清单#include#include #define uchar unsigned char #define uint unsigned intsbit DATA = P37; /DS18B20接入口uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴极字型码int temp; /温度值int ss;/中间的一个变量int dd;int j;uchar data b;/定时器中断次数uchar data buf4;/字型显示中间变量int alarmH=500; /默认报警值int alarmL=-10;/定义开关的接入口sbit k1=P25;/+sbit k2=P26;/-sbit k3=P27;/确认sbit k4=P24;sbit bell=P10;sbit HLight=P12;sbit LLight=P13;sbit warn=P14;sbit Red=P16;sbit Green=P17;sbit s1=P3.0;sbit s2=P3.1;bit set=0;bit Flag=0;int n;/函数的声明区void key_to1();void key_to2();void delay(uint);void key();void Show();/函数的定义区/*延时子函数*/void delay(uint num)while(num-) ;/DS18b20温度传感器所需函数,分为初始化,读写字节,读取温度4个函数Init_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; /DQ复位 delay(10); /稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 DATA = 1; /拉高总线 delay(20); x=DATA; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);ReadOneChar(void) /读一个字节uchar i=0;uchar dat = 0;for (i=8;i0;i-) DATA = 0; / 给脉冲信号 dat=1; DATA = 1; / 给脉冲信号 if(DATA) dat|=0x80; delay(8); return(dat);WriteOneChar(unsigned char dat)/写一个字节 uchar i=0; for (i=8; i0; i-) DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat=1; delay(8);int ReadTemperature(void) /读取温度uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();/低位b=ReadOneChar();/高位t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; return(t);void display00() /*显示负值子函数 dd=-(temp-1); buf1=dd/100;buf2=dd/100;buf3=dd%100/10;buf0=dd%10;/动态显示for(j=0;j5;j+) P2=0xff; / 初始灯为灭的 P0=0x00;P2=0xfd; /显示小数点P0=0x80; /显示小数点delay(100); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LCD1 P0=0x40;delay(100); P2=0xff; P0=0x00; P2=0xfb; /片选LCD2 P0=tablebuf2;delay(100);P2=0xff; P0=0x00;P2=0Xfd; /片选LCD3P0=tablebuf3;delay(100);P2=0xff; P0=0x00;P2=0Xfe;P0=tablebuf0; /片选LCD4delay(100);P2=0xff; /显示正值子函数void display()buf1=temp/1000;/显示百位buf2=temp/100%10;/显示十位buf3=temp%100/10;/显示个位buf0=temp%10; /第4位 南北秒个位for(j=0;j3;j+) P2=0xff; / 初始灯为灭的 P0=0x00;P2=0xfd; /显示小数点P0=0x80; /显示小数点delay(300); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LCD1 P0=tablebuf1;delay(300); P2=0xff; P0=0x00; P2=0xfb; /片选LCD2 P0=tablebuf2;delay(300);P2=0xff; P0=0x00;P2=0Xfd; /片选LCD3P0=tablebuf3;delay(300);P2=0xff; P0=0x00;P2=0Xfe;P0=tablebuf0; /片选LCD4delay(300);P2=0xff;void key()/按键扫描子程序 if(k1!=1) delay(20); if(k1!=1) while(k1!=1) key_to1(); for(n=0;n8;n+) Show(); if(k2!=1)delay(20);if(k2!=1) while(k2!=1) key_to2(); for(n=0;n=1100) temp=-550; if(set=0)alarmH=temp;else alarmL=temp;void

温馨提示

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

最新文档

评论

0/150

提交评论