基于.-51单片机的温度报警器_第1页
基于.-51单片机的温度报警器_第2页
基于.-51单片机的温度报警器_第3页
基于.-51单片机的温度报警器_第4页
基于.-51单片机的温度报警器_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...基于51单片机的温度报警器摘要如今火灾频频发生,比方电气线路短路、过载、接触电阻过大等引发高温火灾;静电产生高温火灾;雷电等强电侵入导致高温火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能了。因此本课程设计将利用单片机STC89S52设计了一种数字温度计,它由单片机、DS18B20传感器以及数码管等部件组成,本温度计属于多功能温度计,功能较强,可以设置上下限报警温度,且测量准确、误差小。当测量温度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。这种温度报警器构造简单,可操作性强,应用广泛。工作时,温度测量范围为5-38ºC。当前环境温度假设超过设定的高温临界温度,由单片机发出报警信号,从而防止带来的不必要的损失。关键词:STC89C52;DS18B20;数码管ABSTRACTNowfirehappenfrequently,suchaselectricalwiringshortcircuit,overload,largecontactresistance,hightemperaturefire;Electrostaticgenerationhightemperaturefire;Andsoonhighvoltagecausedbylightningintrudedintotheleadtohightemperaturefire;Themainelectricalequipmentsuchascomputers,airconditioningisthetelecomroomtoworklonghours,causetheequipmentaging,themalfunctionoftheairconditioningnotcooling;Electronicproductheatfaster,sotheroombelongtoroomtemperatureinashorttimemorethananormaltemperature,causingthesystemtocrashortoproducefire,whenthetemperaturealarmsystemwillplaytheirfunctions.ThereforethiscoursewillusethemicrocontrollerSTC89S52designadigitalthermometer,itiscomposedofsinglechip,DS18B20sensorsanddigitaltubeparts,thisbelongstothemultifunctionalthermometerthermometer,strongfunction.Whenmeasuringtemperaturemorethansetthetemperatureoftheupperandlowerlimit,startthebuzzerandlightalarm.Thistemperaturealarmhassimplestructure,strongoperability,wideapplication.Atwork,temperaturemeasurementrangeis5-38DHSC.Ifthecurrentenvironmenttemperaturemorethansethighcriticaltemperature,sendoutalarmsignalbysingle-chipmicrocomputer,topreventunnecessaryloss.Keywords:AT89C52D,S18B20,Digitaltube目录第一章设计背景及要求-1-1.1设计意义-1-1.2设计要求-2-1.2.1根本功能-2-1.2.2扩展功能-2-1.3总体设计方案-2-1.3.1数字温度计设计方案论证-2-1.3.2单片机的选择-3-1.3.3温度传感器的选择-4-1.3.4显示模块选择-8-第二章系统硬件电路设计-10-2.1系统整体电路图-11-2.2单片机最小系统-11-2.3温度传感器系统-12-2.4报警电路设计-14-2.5显示电路设计-15-2.6电源电路设计-15-第三章.系统软件设计-16-3.1主程序-16-3.2读出温度子程序-17-3.3温度转换命令子程序-17-3.4计算温度子程序-18-3.5键盘扫描流程图-19-第四章测试与结果分析-20-4.1仿真软件介绍-20-4.2仿真结果-22-4.2.1用Keil进展程序编译-22-4.2.2在Proteus中仿真-22-4.3创新设计-25-总结与致谢-26-参考文献-28-附录-30-附录一分组表-30-附录二程序代码-30-附录三实物图-37-第一章设计背景及要求1.1设计意义温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。对于不同场所、不同工艺、所需温度上下范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,因而,对温度的测控方法多种多样。随着电子技术和微型计算机的迅速开展,微机测量和控制技术也得到了迅速的开展和广泛的应用[1]。利用微机对温度进展测控的技术,也便随之而生,并得到日益开展和完善,越来越显示出其优越性。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可否认的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向开展[2]。本次设计是用单片机对温度进展实时检测与控制,此次所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比拟准确的场所或科研实验室使用,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确到达设计要求。本温度计属于多功能温度计,功能较强,可以设置上下限报警温度,且测量准确、误差小。当测量温度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。1.2设计要求1.2.1根本功能1.根本温度范围0℃-99℃;2.精度误差小于0.5℃;3.数码直读显示。1.2.2扩展功能1.实现声光报警;2.可以任意设定温度的上下限报警功能。1.3总体设计方案1.3.1数字温度计设计方案论证1.方案一由于本设计是测温电路,根据设计要求可以使用热敏电阻之类的感温器件利用其感温效应,然后将随被测温度变化的电压或电流采集过来,经过A/D转换后,将数据传输到单片机进展数据的处理,然后在显示电路上显示,这样就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比拟麻烦。2.方案二在单片机电路设计中,大多都是使用传感器,这是非常容易想到利用数字温度传感器,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进展转换,然后传输给单片机进展数据处理,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路设计比拟简洁,软件设计也比拟简单,故采用方案二。3.总体设计框图温度计电路设计总体设计方框图如图1.1所示,控制器采用单片机STC89C52,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。STC89C52STC89C52单片机晶振电路模块复位电路模块温度传感器数码显示模块报警模块按键模块图1.1总体设计方框图1.3.2单片机的选择1.方案一:选择Microchip公司的PIC系列单片机作为世界上最为顶尖的单片机研发与生产企业,微芯公司设计的PIC系列单片机一度风行全球,其优秀的性能和卓越的品质受到了许多人的青睐,其优点毋庸赘述。但是,高知名度的缺点也显而易见,价格昂贵,性价比不高是其软肋[3]。2.方案二:选择德州仪器的MSP430系列单片机MSP430单片机是一个16位的、具有精简指令集的混合型单片机,它具有极低的功耗、丰富的片内外设和方便灵活的开发手段。但是,由于MSP430单片机系列价格较高,比拟适合于较为复杂的应用系统[4]。3.方案三:选择Atmel公司的STC89C52单片机。STC89C52单片机是一个低功耗,高性能CMOS8位单片机,片内含8KBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚构造,芯片内集成了通用8位中央处理器和ISPFlash存储单元,片上Flash允许程序存储器在系统可编程,亦适于常规编程器,在功能强大的微型计算机的STC89C52单芯片上,拥有灵巧的8位CPU,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案可为许多嵌入式控制应用系统提供高性价比的解决方案[5]。STC89C52引脚构造图如图1.2。STC89C52实物图如图1.3。图1.2AT89S52构造图图1.3STC89C52实物图基于以上三个方案的分析,我们选择STC89C52单片机。1.3.3温度传感器的选择1.DS18B20的介绍温度传感器的种类众多,在高精度、高可靠性的场合时DALLAS〔达拉斯〕公司生产的DS18B20温度传感器很不错的。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢送。〔1〕DS18B20的主要特征1〕全数字温度转换及输出;2〕最高12位分辨率,精度可达土0.5摄氏度;3〕12位分辨率时的最大工作周期为750毫秒;4〕可选择寄生工作方式;5〕检测温度范围为–55°C~+125°C;6〕内置EPROM,限温报警功能。用户可定义报警设置;7〕64位光刻ROM,内置产品序列号,方便多机挂接;8〕多样封装形式,适应不同硬件系统;9〕独特的单线接口仅需要一个端口引脚进展通信;10〕多个DS18B20可以并联在惟一的三线上,实现多点组网功能;11〕无须外部器件;12〕可通过数据线供电,电压范围为3.0~5.5V;13〕零待机功耗;DS18B20有64位ROM的构造,开场8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进展通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限[6]。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进展。操作协议为:初始化DS18B20〔发复位脉冲〕→发ROM功能命令→发存储器操作命令→处理数据。DS18B20芯片封装构造如图1.4。图1.4DS18B20芯片封装构造DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部构造框图如图1.5所示。I/OCI/OC64位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置存放器8位CRC发生器Vcc图1.5DS18B20内部构造框DS18B20工作原理:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个局部,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解DS18B20的内部存储器资源。DS18B20共有三种形态的存储器资源。它们分别是:ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码〔DS18B20的编码是19H〕,后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码〔冗余校验〕。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丧失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EPROM〔常用于温度报警值储存〕的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EPROM的镜像。第6、7、8个字节为计数存放器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EPROM,并在RAM都存在镜像,以方便用户操作[7]。DS18B20工作时存放器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图1.6所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度LSB温度MSBTH用户字节1TL用户字节2配置存放器保存保存保存CRCTMR1R011111图1.6DS18B20字节定义1.3.4显示模块选择数码管如图1.7是一种半导体发光器件,其根本单元是发光二极管。图1.7数码管图1.数码管的分类数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元〔多一个小数点显示〕;按能显示多少个“8〞可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮[8]。如图1.8。图1.8八段数码管实物图2.数码管驱动原理数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,在有些时候需要做一个简单的显示系统。那么在单片机I/O资源够用的情况下可以直接用单片机的I/O口驱动数码管,也可以根据数码管的驱动方式的不同,可以分为静态式和动态式两类。〔1〕静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进展驱动,或者使用如BCD码二-十进制译码器译码进展驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个STC89C51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进展驱动,增加了硬件电路的复杂性[8]。〔2〕动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到一样的字形码,但终究是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制翻开,该位就显示出字形,没有选通的数码管就不会亮[9]。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2mS,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低[10]。静态驱动方式简单不容易出错,如果电路设计适宜,也能够用较少的线完成多个数码管的驱动。但是动态驱动方式省单片机的资源,如今已经有很多这样成熟的基于动态扫描的芯片。所以能满足本文显示设计要求,采用LG3641BHLED数码管做为显示电路,数码管显示电路采用4位共阳LED数码管从P14,P15,P16,P17串口输出段码。第二章系统硬件电路设计2.1系统整体电路图该系统电路主要包括:单片机最小系统、DS18B20温度传感器系统、报警系统、数码管显示模块电路及电源接口和数据下载接口等电路,如图2.1所示。图2.1中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图2.1中的按健复位电路是上电复位加手动复位,使用比拟方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。图2.1系统整体电路图2.2单片机最小系统最小系统包括晶振电路、复位电路、按键设置局部,STC89C52单片机最小系统的电路如图2.2,单片机STC89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要[11],很适合便携手持式产品的设计使用系统可用二节电池供电。图2.2单片机最小系统电路2.3温度传感器系统DS18B20温度传感器电路,如图2.3。图2.3DS18B20温度传感器系统DS18B20采用单线进展数据传输,外接一个4.7K上拉电阻与单片机的P10口相连进展数据的双向传输[12]。2.3.1DS18B20的测温原理器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门翻开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进展计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度存放器中,计数器1和温度存放器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进展减法计数,当减法计数器1的预置值减到0时,温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开场对低温度系数晶振产生的脉冲信号进展计数,如此循环直到减法计数器计数到0时,停顿温度存放器的累加,此时温度存放器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度存放器值大于被测温度值[13]。由表1-1可见,DS18B20温度转换的时间比拟长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保存未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表1-2是一局部温度值对应的二进制温度数据[14]。表1-1DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比拟。假设T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进展报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码〔CRC〕。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比拟,以判断主机收到的ROM数据是否正确。表1-2一局部温度对应值表温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H2.4报警电路设计报警电路中加一PNP三极管驱动,基极接单片机P11口,当端口变成低电平时,驱动三极管会导通,VCC电压加载到蜂鸣器使其发声、报警发光二极管亮,如图2.4。图2.4报警电路2.5显示电路设计如图2.5,采用LG3641BHLED数码管显示电路采用4位共阳LED数码管从P14,P15,P16,P17串口输出段码。用PNP三极管进展驱动,当相应的端口变成低电平时,驱动相应的三极管会导通,驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。图2.5数码管显示电路2.6电源电路设计此次选用的是串联起来的4节1.5V的5号电池,从经济的角度考虑的,干电池比拟廉价,但其还有缺乏之处,干电池存储的是电量。随着电量的消耗,它的供电电压就会不断的下降,所有需要使用一个稳压器,来保证电源供给的是标准的5V电压。4节1.5V串联起来产生的和电压最大是6V,而本文的STC89C52单片机工作电压的范围是4V-5.5V,在该系统中我们使用的电压是5V。这时我们可以用LM7805稳压器来产生稳定的5V电压[15]。稳压电路如以下列图2.6所示:图2.6LM7805稳压电路在该电路中,C12是极性电容,起到稳压的作用,而C2是非极性电容,它起的作用是滤除输出电压中不是直流的成分,即滤波。LM7805稳压芯片的稳压压差为2V左右,在实际使用中容易出现电压过低的状态,此时提供的电源达不到系统的电源要求,会出现程序跑飞的现象,而另一款LM2904的稳压压差可以到达40mV,效果比LM7805好很多,但考虑到经济原因就采用LM7805,只要在稳压前端提供较大的电源供给即可。第三章.系统软件设计3.1主程序主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。系统开场运行时,温度传感器测量并计算温度值通过P1.0口传输进单片机里进展处理,经过处理后的数据再通过P0口传输到数码管进展显示。3.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进展CRC校验,校验有错时不进展温度数据的改写。其程序流程图如图3.1示。图3.1读温度流程图3.3温度转换命令子程序温度转换命令子程序主要是发温度转换开场命令,当采用12位分辨率时转换时间约为750mS,在本程序设计中采用1s显示程序延时法等待转换的完成[16]。温度转换命令子程序流程图如图3.2所示图3.2温度转换流程图3.4计算温度子程序计算温度子程序将RAM中读取值进展BCD码的转换运算,并进展温度值正负的判定,其程序流程图如图3.3所示。图3.3计算温度流程图3.5键盘扫描流程图如图3.4。开场开场ENTER_FLAG为1是否有UP按下DISPLAY显示退出子程序(RET)返回主程序ENTER子程序Flag=1DOWN子程序否是是否否是否是是ENTER按键是否按下是否有ENTER按下是否有DOWN按下UP子程序图3.4按键扫描流程图第四章测试与结果分析4.1仿真软件介绍本次仿真用了Proteus(海神)软件,Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统[17]。1.该软件的特点〔1〕全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。〔2〕具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、1C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。〔3〕目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。〔4〕支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机存放器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象[18]。2.程序编译用Keil软件,KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。4.2仿真结果4.2.1用Keil进展程序编译运用keil软件编译C语言程序,其结果如以下列图4.1和图4.2所示,在结果栏显示“yyp〞—0Error(s),0warning(s).说明此程序在软件编译上无语法等错误。将此程序生成*.hex文件调入硬件中用Proteus进展调试仿真。图4.1Keil编译C语言程序图4.2Keil编译C语言程序4.2.2在Proteus中仿真将生成的yyp.hex文件调入Proteus电路图的单片机中,点击图左下角的开场键运行,程序的开场界面如图4.3,数码管显示“〞。图4.3仿真程序初始化程序初始化后通过调节DS18B20温度传感器的数值,数码管会显示相应的数值,例如10℃,其结果如图4.4所示。图4.4仿真程序正常运行结果在设置系统报警温度上下限时,按下按键S1,数码管会显示“H38C〞〔系统默认上限为38℃〕,此时进入温度上限设置模式,可通过调节S2和S3分别增加和减小数码管上显示的数字,例如设置上限为39℃,如图4.5所示。接着再次按下键S1,数码管会显示“L05C〞〔系统默认下限为5℃〕,此时进入温度下限设置模式,可通过调节S2和S3分别增加和减小数码管上显示的数字,例如设置下限为5℃,如图4.6所示。图4.5仿真设置最高温度报警线图4.6仿真设置温度报警最低线当温度超过设置的上下限时,系统会进展声光报警,蜂鸣器会发出“滴……滴……滴〞蜂鸣声,同时LED灯会闪烁。当系统未检测的到DS18B20温度传感器或运行错误时,数码管会显示错误的数字“8.8.8.8〞,如图4.7所示。图4.7仿真程序出错4.3创新设计在本次设计的根基上我们创新了另一个温度报警器电路。其主要功能是:当温度超过上限温度时红色发光二极管发光并报警,当温度低于下限温度时黄色发光二极管发光并开场报警。仿真电路如图4.8。图4.8创新的温度报警器电路图总结与致谢通过本次课程设计,我学到了很多东西,同时在做的过程中也发现很多的问题,从最初的课题选择到对相关课题资料的搜集与摘选,再到自己课程设计报告内容思路的设计、编写以致最后阶段的修改与完善。在这一过程中,我对我们大学前三年所学习的相关电子知识又有了更深一层的学习和理解,让我对自己所学的又有了更深的掌握。虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比拟好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西而不结合实践是很难理解的,更谈不上掌握。从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。在此过程中,我也要感谢对我一直悉心指导和帮助的指导教师——许教师。正是在他不厌其烦的指导和对我们的启发中,让我对我的课程设计思路逐渐清晰明朗,每当在我课程设计中遇到困难时就会充满希望,总能迎刃而解,总之非常感谢他这段时间对我们的鼓励和指导。参考文献[1]李朝青.单片机原理及接口技术〔简明修订版〕[M].杭州:北京航空航天大学出版社,1998[2]李广弟.单片机根基[M].北京:北京航空航天大学出版社,1994[3]江力.单片机原理与应用技术[M].清华大学出版社.2006[4]蔡美琴,等.MCS一51系列单片机系统及其应用[M].北京:高等教育出版社,1999[5]王树勋.MCS一51单片微型计算机原理与开发[M].北京:机械工业出版社,1995[6]何希才.传感器及其应用电路[M].北京:电子工业出版社,2001[7]刘迎春、叶湘滨.传感器原理设计与应用(第三版)[M].长沙:国防科技大学出版社,1997[8]靳达.单片机应用系统开发实例导航[M].北京:人民邮电出版社,2003[9]潘新民,王燕芳.微型计算机实用系统设计[M].北京:人民邮电出版社,1992[10]胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,1996[11]何力民.MCS一51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,1993[12]江晓安.等数字电子技术[M].编著.西安电子科技大学出版社.1993[13]阎石.数字电子技术根基〔第三版〕[M].北京:高等教育出版社,1989附录附录一分组表硬件电路谈宁贾焕祯软件电路张颖韩丽娜编写程序李晶杨彦平调试杨彦平毛芸芸附录二程序代码#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)

温馨提示

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

评论

0/150

提交评论