基于STC89C51单片机的数字温度计的分析设计毕业设计_第1页
基于STC89C51单片机的数字温度计的分析设计毕业设计_第2页
基于STC89C51单片机的数字温度计的分析设计毕业设计_第3页
基于STC89C51单片机的数字温度计的分析设计毕业设计_第4页
基于STC89C51单片机的数字温度计的分析设计毕业设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书题目:基于STC89C51单片机的数字温度计的分析设计产品设计工艺设计方案设计√类型:学生姓名:_________________________学号:_________________学院:____电子信息工程学院________专业:____机电一体化____________班级:______________指导教师:__________________2016年5月6日摘要在日常科学生活及工农业生产中,经常有用的温度的检测及控制,而传统的测温计大多以热敏电阻为温度传感器,但它的准确率低。而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。所以为了现代工作,科研,生活能够更好更方便的进行,所以就需要从单片机入手。本文将介绍一种基于51单片机控制的数字温度计,就是用单片机实现温度测量。本次采用STC89C51为主芯片,DS18B20温度传感器采集温度,,与51单片机组成一个测温系统。DS18B20把采集到的温度经过放大后送到STC89C51,再经过处理送到显示器,显示器将采集到的温度显示出来。数字温度计具有线路简单,体积小的特点。同时程序中添加温度的正负值检测算法,使得该温度计可以显示正值温度和负值温度。关键词:单片机;数字控制;DS18B20;STC89C51 1.绪论 41.1前言 41.2设计方案与论证 51.2.1方案一 52.总体设计思路 52.1主控制器 52.2显示电路 72.3温度传感器 72.4报警电路设计 93.系统软件设计 93.1主程序 93.2读出温度子程序 103.3温度转换命令子程序 113.4计算温度子程序 124.系统测试 124.1测试环境及工具 124.2测试方法 124.3结果分析 125.结论 13参考文献 13致谢 13附录源程序 14绪论1.1.前言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它带给人们的方便也是不可否定的,其中数字温度计就是一个典型的例子。温度测试涉及到各个行业,传统的煤油温度计、水银温度计测温必须由人工操作,测温元件有热电偶和热电阻等,这些测温器件测出的一般是电压,再转换成对应的温度,且测量精度难以保证,不符合当今工业自动化的发展趋势。,所以人们对它的要求越来越高。本课题意义在于生产过程中随着科技不断发展,现在社会对各种信息参数的准确度有了更高的要求,而如何准确的获得这些参数,就需要借助于现代科技。传感器属于信息技术的尖端技术,尤其是数字温度传感技术,于是就需要从单片机技术和传感器技术入手,才能向着数字化,智能化发展。本设计所介绍的数字温度计主要采用STC89C51单片机构成的最小系统,DS18B20温度采集芯片,数码管显示电路,以及外围电路等组成。与传统的温度计相比,具有读数方便,测温范围广,体积小等特点。该数字温度计能够对环境的温度进行实时监测,实时显示环境的温度信息,数字温度计能够对环境温度进行正确测量。1.2设计方案与论证1.2.1方案一因为本电路是测温电路,所以最先考虑的是使用热敏电阻,利用热敏电阻的感温效应,采集被测温度变化的电压或者电流,进行A\D转换,然后经过单片机的数据处理,将温度在现实电路上显示出来。这种设计我用到的是A\D转换思路,缺点是比较麻烦。1.2.2方案二后来经过查阅相关资料,考虑到使用温度传感器。因为在单片机的实际应用中,传感器是很重要的一部分,所以选择使用DS18B20温度传感器。这种传感器比较容易读取被测温度值,并且进行转换,更加符合设计方案要求。通过比较以上两种方案,我认为方案二比较方便,电路比较简单,软件设计也比较简单。所以我选择了方案二。2.总体设计思路主控制器数字温度计电路设计的总体设计方框图如下图。控制器采用单片机STC89C51,温度传感器采用DS18B20,用四位数码管以传口传送数据来显示温度。主控制器LCD显示单片机复位LCD显示单片机复位单片机复位LCD显示单片机复位LCD显示 温度传感器时钟震荡温度传感器时钟震荡图2.1图2.12.1主控制器单片机STC89C51的特点是低电压控电和体积小。四个端口只需要两个口就能满足电路系统的设计需要,适合便携产品的使用。STC89C51的主要功能如下表所示。兼容MCS51指令系统8K可反复擦写flashROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能表2.12.1.1STC89C51引脚介绍①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。④可编程输入/输出引脚(32根)STC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7图2.2STC89C51封装图2.2显示电路显示电路采用4位共阳极LED数码管。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。数码显示器是一种由LED发光二极管组合显示字符的显示器件,它使用了8个Led发光二极管,其中七个用于显示字符,一个显示小数点,所以通称为七段发光二极管数码显示器。4位一体数码管,其内部段已连接好,数码管的正面朝自己,小数点在下方。a、b、c、d、e、f、g、dp为段引脚,S1、S2、S3、S4分别表示四个数码管的位。2.3温度传感器DS18B20温度传感器是美国DALLAS公司推出的一种改进型只能温度传感器,相比较于传统的测温元件,比如热敏电阻,这种温度传感器可以直接读出被测的温度,而且可以根据实际要求通过简单的编程实现数字读数。它的性能特点如下:单线借口只需要一个端口引脚进行通信。无需外部器件。可以通过数据线供电。可以并联在唯一的三线上,实现多点测温。可定义报警设置。零待机功耗。测温范围为-55至+125℃。固有测温分辨率为0.5℃。负电压特性,电源极性接反时,温度计不会因为发烧而烧毁,只是不能正常工作。适配各种单片机或者系统。开始开始执行初始化时序发出跳过ROM匹配命令启动温度转换延时大于540μs等待温度转化完成执行初始化时序发出匹配ROM指令发出64位序列号发出读便笺存储器命令读取便笺存储器内容并进行CRC校验CRC校验正确?温度数据格式转换结束是否图2.32.4报警电路设计报警电路中加一PNP三极管驱动,基极接单片机P11口,当端口变成低电平时,驱动三极管会导通,VCC电压加载到蜂鸣器使其发声、报警发光二极管亮,如图2.4图2.4报警电路3.系统软件设计3.1主程序主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。系统开始运行时,温度传感器测量并计算温度值通过P1.0口传输进单片机里进行处理,经过处理后的数据再通过P0口传输到数码管进行显示。通过按键设置温度报警界限,当超过报警界限时单片机将相应的数据通过P1.1口传输进行声光报警。温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示。初始化初始化调用温度模块程序DS18B20存在?是处理温度值转换BCD码送AT89S52处理按键扫描模块显示模块,LED显示温度是否越限?开始是报警否否错误处理,显示8.8.8.8.3.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2.1示开始开始发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验结束NYYN移入温度缓存器9字节完?CRC校验?3.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成[16]。温度转换命令子程序流程图如上图,图3.3.1所示发DS18B20复位命令发DS18B20复位命令开始发跳过ROM命令发温度转换开始命令结束3.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4.1所示。开始温度零下?温度值取补码置“—”标志计算小数位温度BCD值计算整数位温度BCD值结束置“+”标志NY4.系统测试

4.1测试环境及工具

测试温度:0-100摄氏度。(模拟不同温度值环境)

测试仪器及软件:数字万用表,温度计0-100摄氏度。

4.2测试方法

使系统运行,观察系统硬件检测是否正常(包括单片机控制系统,键盘电路,显示电路,温度测试电路等)。系统自带测试表格数据,观察显示数据是否相符合即可采用温度传感器和温度计同时测量温度变化情况,目测显示电路是否正常。并记录温度值,与实际温度值比较,得出系统的温度指标。4.3结果分析自检正常,温度显示正常。5.结论MCS-51单片机,体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量,来开发所希望的单片机应用系统。本设计的温度控制检测和报警系统,只是单片机广泛应用于各行各业中的一例。

本设计研究是基于单片机控制的温度闭环控制系统的设计,介绍了对温度的显示、控制及报警,实现了温度的实时显示及控制。控制部分,提出了用DS18S20、89C51单片机及LCD的硬件电路完成对水温的实时检测及显示,利用DS18S20与单片机连接由软件与硬件电路配合来实现对加热电阻丝的实时控制及超出设定的上下限温度的报警系统。

它具有微型化、低功耗、高性能、抗干拢能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS18S20都有唯一的产品号并可存入其ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个DS18S20芯片。从DS18S20读出或写入DS18S20信息仅需要一根口线,其读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS18S20供电,而无需额处电源。DS18S20能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。参考文献何龄修.读南明史[J].中国史研究,1998,(3):167-173.刘国钧,陈绍业.图书馆目录[M].北京:高等教育出版社,1957:15-18.赵天书.诺西肽分阶段补料分批发酵过程优化研究[D].沈阳:东北大学,2013.致谢首先,感谢学校三年来对我的培养。为我们营造了一个良好的学习氛围,建设一流的教学设施,使我们身心愉快的投入到学习中。其次,感谢尊敬的指导老师黄有全老师,有了他的谆谆教诲,处处提点,才使本论文的前期准备以及整个研究过程顺利完成。指导老师的严谨治学态度、扎实的理论基础、全身心投入工作的精神以及对学生尽心尽力的态度给了我极大的帮助与鼓励,使我受益匪浅。从指导老师的教学态度上,我学到的不仅仅只有书本上的知识,还有做人的道理。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向指导老师致以诚挚的谢意和崇高的敬意。附录源程序#include<AT89X52.h>#include"DS18B20.h"#defineuintunsignedint#defineucharunsignedchar//宏定义#defineSETP3_1//定义调整键#defineDECP3_2//定义减少键#defineADDP3_3//定义增加键#defineBEEPP3_7//定义蜂鸣器bitshanshuo_st;//闪烁间隔标志bitbeep_st;//蜂鸣器间隔标志sbitDIAN=P2^7;//小数点ucharx=0;//计数器signedcharm;//温度值全局变量ucharn;//温度值全局变量ucharset_st=0;//状态标志signedcharshangxian=38;//上限报警温度,默认值为38signedcharxiaxian=5;//下限报警温度,默认值为5ucharcodeLEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};/*****延时子程序*****/voidDelay(uintnum){while(--num);}/*****初始化定时器0*****/voidInitTimer(void){TMOD=0x1;TH0=0x3c;TL0=0xb0;//50ms(晶振12M)}/*****定时器0中断服务程序*****/voidtimer0(void)interrupt1{TH0=0x3c;TL0=0xb0;x++;}/*****外部中断0服务程序*****/voidint0(void)interrupt0{EX0=0;//关外部中断0if(DEC==0&&set_st==1){shangxian--;if(shangxian<xiaxian)shangxian=xiaxian;}elseif(DEC==0&&set_st==2){xiaxian--;if(xiaxian<0)xiaxian=0;}}/*****外部中断1服务程序*****/voidint1(void)interrupt2{EX1=0;//关外部中断1if(ADD==0&&set_st==1){shangxian++;if(shangxian>99)shangxian=99;}elseif(ADD==0&&set_st==2){xiaxian++;if(xiaxian>shangxian)xiaxian=shangxian;}}/*****读取温度*****/voidcheck_wendu(void){uinta,b,c;c=ReadTemperature()-5;//获取温度值并减去DS18B20的温漂误差a=c/100;//计算得到十位数字b=c/10-a*10;//计算得到个位数字m=c/10;//计算得到整数位n=c-a*100-b*10;//计算得到小数位if(m<0){m=0;n=0;}//设置温度显示上限if(m>99){m=99;n=9;}//设置温度显示上限}/*****显示开机初始化等待画面*****/Disp_init(){P2=0xbf;//显示-P1=0xf7;Delay(200);P1=0xfb;Delay(200);P1=0xfd;Delay(200);P1=0xfe;Delay(200);P1=0xff;//关闭显示}/*****显示温度子程序*****/Disp_Temperature()//显示温度{P2=0xc6;//显示CP1=0xf7;Delay(300);P2=LEDData[n];//显示个位P1=0xfb;Delay(300);P2=LEDData[m%10];//显示十位DIAN=0;//显示小数点P1=0xfd;Delay(300);P2=LEDData[m/10];//显示百位P1=0xfe;Delay(300);P1=0xff;//关闭显示}/*****显示报警温度子程序*****/Disp_alarm(ucharbaojing){P2=0xc6;//显示CP1=0xf7;Delay(200);P2=LEDData[baojing%10];//显示十位P1=0xfb;Delay(200);P2=LEDData[baojing/10];//显示百位P1=0xfd;Delay(200);if(set_st==1)P2=0x89;elseif(set_st==2)P2=0xc7;//上限H、下限L标示P1=0xfe;Delay(200);P1=0xff;//关闭显示}/*****报警子程序*****/voidAlarm(){if(x>=10){beep_st=~beep_st;x=0;}if((m>=shangxian&&beep_st==1)||(m<xiaxian&&beep_st==1))BEEP=0;elseBEEP=1;}/*****主函数*****/voidmain(void){uintz;InitTimer();//初始化定时器EA=1;//全局中断开关TR0=1;ET0=1;//开启定时器0IT0=1;IT1=1;check_wendu();check_wendu();for(z=0;z<300;z++){Disp_init();}while(1){if(SET==0){Delay(2000);do{}while(SET==0);set_st++;x=0;shanshuo_st=1;if(set_st>2)set_st=0;}if(set_st==0){EX0=0;//关闭外部中断0EX1=0;//关闭外部中断1check_wendu();Disp_Temperature();Alarm();//报警检测}elseif(set_st==1){BEEP=1;//关闭蜂鸣器EX0=1;//开启外部中断0EX1=1;//开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st){Disp_alarm(shangxian);}}elseif(set_st==2){BEEP=1;//关闭蜂鸣器EX0=1;//开启外部中断0EX1=1;//开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st){Disp_alarm(xiaxian);}}}}/*****END*****/DS18B20.h:#include<AT89X52.h>#defineDQP3_6//定义DS18B20总线I/O/*****延时子程序*****/voidDelay_DS18B20(intnum){while(num--);}/*****初始化DS18B20*****/voidIni

温馨提示

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

评论

0/150

提交评论