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

下载本文档

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

文档简介

东莞理工学院本科毕业设计毕业设计题目温湿度控制器学生姓名学号系别专业班级指导教师姓名及职称刘华珠高级工程师起止时间2011年11月2012年6月摘要本论文介绍了一种以单片机STC12C5A60S2为主要控制器件,以PT100,SHT15分别为温,湿度传感器。本设计主要包括硬件电路的设计和系统软件的设计。硬件电路主要包括控制器,测温湿控制电路和显示电路等。控制器用带有AD转换的单片机,温度传感器PT100,湿度传感器采用SHT15,显示电路采用1个8位共阴极LED数码管,用锁存器是显示效果更好。测温湿控制电路由温湿度传感器和预置温湿度值比较报警电路组成,当实际测量温湿度值大于预置温湿度值时,发出报警信号(发光二极管点亮)而且使外电路驱动(继电器动作)。软件部分主要包括主程序,测温湿度子程序,显示子程序和按键子程序等。本次设计采用的SHT15湿度传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D器以及串行接口电路在同一芯片上实现无缝链接,从而具有超快响应,抗干扰能力强,性价比高等优点。而且PT100在要求的范围内线性度很好。关键词温度测量,湿度测量,温度算法,PT100,SHT15ABSTRACTTHISPAPERPRESENTSANEWDESIGNOFDIGITALTHERMOMETERSANDHYGROMETERITINCLUDESAMAINCONTROLDEVICEMICROCONTROLLERSTC12C5A60S2ANDATEMPERATUREANDHUMIDITYSENSORTHISDESIGNINCLUDESHARDWAREANDSYSTEMSOFTWARETHEHARDWAREDESIGNINCLUDESAMAINCONTROLLERCIRCUIT,TEMPERATUREANDHUMIDITYMEASUREMENTANDCONTROLCIRCUITSANDSHOWCIRCUITMAINCONTROLLERUSESSCMSTC12C5A60S2,TEMPERATURESENSORUSESPT100,ANDHUMIDITYSENSORUSESSHT15,SHOWCIRCUITISATOTALOFEIGHTCIRCUITSUSINGDIGITALLEDOFTHEALTOGETHERDRIVERSHOWCIRCUITUSESATCHES74573TEMPERATUREANDHUMIDITYCONTROLCIRCUITINCLUDESTHETEMPERATUREANDHUMIDITYSENSORANDPRESETTEMPERATUREANDHUMIDITYVALUESCOMPAREDALARMCIRCUITWHENTHEACTUALMEASUREMENTOFTEMPERATUREORHUMIDITYVALUESISGREATERTHANTHEPRESETTEMPERATUREORHUMIDITYVALUES,THEALARMSIGNALLIGHTEMITTINGDIODEISLITISSENTANDOUTPUTCIRCUITWILLBESENTRELAYACTIONTHEMAJORSOFTWAREINCLUDESTHEMAINROUTINES,TEMPERATUREANDHUMIDITYROUTINES,SHOWROUTINESANDDIGITALTOANALOGROUTINESTHEHUMIDITYSENSORSHT15INTHISDESIGNINCLUDESACAPACITIVEPOLYMERSENSINGELEMENTFORPOWERCONSUMPTIONMAKESITTHEULTIMATECHOICEFOREVENRELATIVEHUMIDITYANDABANDGAPTEMPERATURESENSORBOTHTHEMOSTDEMANDINGAPPLICATIONSARESEAMLESSLYCOUPLEDTOA14BITANALOGTODIGITALCONVERTERWITHA14ANDTHEA/D,ASWELLASSERIALINTERFACECIRCUITSINTHESAMECHIPONTHEREALIZATIONOFAGAPLINKTOASUPERFASTRESPONSE,ANTIINTERFERENCECAPABILITYANDCOSTEFFECTIVEADVANTAGESANDPT100WITHINTHEREQUIREDRANGELINEARITYISVERYGOODTHEDESIGNOFDIGITALTHERMOMETERSANDHYGROMETERWITHSTC12C5A60S2ANDPT100ANDSHT15,NOTONLYHASASIMPLEEXTERNALCIRCUIT,BUTALSOHASAHIGHPRECISIONMEASUREMENTKEYWORDSTEMPERATUREMEASUREMENT,HUMIDITYMEASUREMENTS,PT100,SHT15目录前言1一设计任务要求和温湿度计的发展史111设计任务及要求112设计温湿度计的依据和意义113温度计的发展史214湿度计的由来315露点意义3二设计任务分析及方案论证421设计总体方案及方案论证422元器件的选择5221主控制器芯片5222温湿度传感器7223驱动显示电路823温湿度测量的方法及分析9三硬件电路的设计1031主控制电路和测温湿控制电路1032驱动显示电路12四软件设计及分析1341SHT15传输时序和指令集与测温模块137411通讯复位时序13412启动传输时序14413数据传输和指令集14414湿度的测量时序15415输出转换为物理量15416SHT15的DC特性1742程序流程图1943程序的设计20431SHT15的初始化程序20432毕业设计C是主函数,做了温度的算法26433AD转换子程序35434LED显示子程序36435软件在硬件上的调试分析45结论46参考文献47致谢48附录48引言温度与湿度与人们的生活息息相关。在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。传统湿度计采用干湿球显示法,不仅复杂而且测量精度不高。而采用单片机对温湿度进行测量控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。用LED数码管来显示温湿度的数值,看起来更加直观。采用SHT15作为湿度传感器,可以同时测温,测湿,但是,为了能更广的范围,温度传感器我们采用了PT100。其实,SHT15这种传感器不易焊接,但是里面有一个14位A/D以及串行接口电路在同一芯片上,从而具有超快的响应,抗干扰能力强,性价比高等优点。用单片机来控制温湿度可以完成温湿度的制动控制,通过单片机的串口与外部电路相连,把采集到的参数跟以设定的比较,最后由单片机向外部电路指示具体的行动。总之,无论在日常生活,还是工业,农业都离不开周围环境的温湿度的测量,因此,研究温湿度的控制和测量具有非常重要的意义第一章设计任务要求和温湿度计的发展史11设计任务及要求设计一个以单片机为核心的温湿度测量系统,可实现的功能为(1)系统可由用户预设温度值和湿度值,测温范围100200,测湿范围0100且误差小于5;(2)超出预设值时系统会自动报警,即发光二极管亮,且要求要用继电器启动外电路显示;12设计温湿度计的依据和意义温度与湿度与人们的生活息息相关。在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。传统的湿度计采用干湿球显示法,不仅复杂而且测量精度不高。而采用单片机对温湿度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。用LED来显示温湿度的数字看起来更加直观。采用SHT15作为湿度传感器,可以同时测温,测湿,但是,为了能更广的范围,温度传感器我们采用了PT100。其实,SHT15这种传感器不易焊接,但是里面有一个14位A/D以及串行接口电路在同一芯片上,从而具有超快的响应,抗干扰能力强,性价比高等优点。用单片机来控制温湿度可以完成温湿度的制动控制,通过单片机的串口与外部电路相连,把采集到的参数跟以设定的比较,最后由单片机向外部电路指示具体的行动。总之,无论在日常生活中还是在工业、农业方面都离不开对周围环境进行温湿度的测量。因此,研究温湿度的控制和测量具有非常重要的意义。13温度计的发展史温度计是测温仪器的总称。根据所用测温物质的不同和测温范围的不同,有煤油温度计、酒精温度计、水银温度计、气体温度计、电阻温度计、温差电偶温度计、辐射温度计和光测温度计等。最早的温度计是在1593年由意大利科学家伽利略15641642发明的。他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。使用时先给玻璃泡加热,然后把玻璃管插入水中。随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。后来伽利略的学生和其他科学家,在这个基础上反复改进,如把玻璃管倒过来,把液体放在管内,把玻璃管封闭等。比较突出的是法国人布利奥在1659年制造的温度计,他把玻璃泡的体积缩小,并把测温物质改为水银,这样的温度计已具备了现在温度计的雏形。以后荷兰人华伦海特在1709年利用酒精,在1714年又利用水银作为测量物质,制造了更精确的温度计。他观察了水的沸腾温度、水和冰混合时的温度、盐水和冰混合时的温度;经过反复实验与核准,最后把一定浓度的盐水凝固时的温度定为0,把纯水凝固时的温度定为32,把标准大气压下水沸腾的温度定为212,用代表华氏温度,这就是华氏温度计。在华氏温度计出现的同时,法国人列缪尔16831757也设计制造了一种温度计。他认为水银的膨胀系数太小,不宜做测温物质。他专心研究用酒精作为测温物质的优点。他反复实践发现,含有1/5水的酒精,在水的结冰温度和沸腾温度之间,其体积的膨胀是从1000个体积单位增大到1080个体积单位。因此他把冰点和沸点之间分成80份,定为自己温度计的温度分度,这就是列氏温度计。华氏温度计制成后又经过30多年,瑞典人摄尔修斯于1742年改进了华伦海特温度计的刻度,他把水的沸点定为零度,把水的冰点定为100度。后来他的同事施勒默尔把两个温度点的数值又倒过来,就成了现在的百分温度,即摄氏温度,用表示。华氏温度与摄氏温度的关系为9/532,或5932。现在英、美国家多用华氏温度,德国多用列氏温度,而世界科技界和工农业生产中,以及我国、法国等大多数国家则多用摄氏温度。随着科学技术的发展和现代工业技术的需要,测温技术也不断地改进和提高。由于测温范围越来越广,根据不同的要求,又制造出不同需要的测温仪器。14湿度计的由来湿度计是测量空气内含水分多少的仪器。史记天官书中即有测湿的记载。我国汉朝初年就已出现湿度计,它是利用天平来测量空气干燥或潮湿的。天平湿度计的使用方法,是把两个重量相等而吸湿性不同的物体,例如灰和铁,分别挂在天平两端。当空气湿度发生变化时,由于两个物体吸入的分水不同,重量也就起了变化,于是天平发生偏差,从而指示出空气潮湿的程度。这就是湿度计的由来。15露点意义气温愈低,饱和水气压就愈小。所以对于含有一定量水汽的空气,在气压不变的情况下降低温度,使饱和水汽压降至与当时实际的水汽压相等时的温度,称为露点(DEWPOINT)。露点温度是指空气在水汽含量和气压都不改变的条件下,冷却到饱和时的温度。形象地说,就是空气中的水蒸气变为露珠时候的温度叫露点温度。露点温度本是个温度值,可为什么用它来表示湿度呢这是因为,当空气中水汽已达到饱和时,气温与露点温度相同;当水汽未达到饱和时,气温一定高于露点温度。所以露点与气温的差值可以表示空气中的水汽距离饱和的程度。在100的相对湿度时,周围环境的温度就是露点温度。露点温度越小于周围环境的温度,结露的可能性就越小,也就意味着空气越干燥,露点不受温度影响,但受压力影响。湿球温度的定义是在定压绝热的情况下,空气与水直接接触,达到稳定热湿平衡时的绝热饱和温度。第二章设计任务分析及方案论证21设计总体方案及方案论证按照系统设计功能的要求,确定系统由5个模块组成主控制器,温湿度传感器,报警电路,按键电路及显示电路。显示模块模块报警电路按键电路温湿度传感器主控制器图21总体电路框图主控制器的功能有单片机来完成,主要负责处理由温湿度传感器送来数据,并把处理好的数据送向显示模块。温湿传感器主要用来采集周围环境参数,并把所采集来的参数送向主控制器。按键电路主要用来完成单片机的复位操作和温湿度初始值的设定。这里需要四个按键,一个用来温度设定的累加,一个是用来温度设定的递减,一个用来设定湿度的累加,一个用来设定湿度的递减。报警电路就是用一个发光二极管显示,而且外加一个继电器来驱动外电路,用来判断周围环境的温度或者湿度是否超出设定值了,任何一个超出设定值发光二极管就会被点亮。而且继电器会发出声响,锁存器用来驱动显示电路主要用来驱动4位数码管发光的。由于单片机的输出电流太小(只有几MA)不能驱动继电器,所以这里必须增加一个驱动显示模块。22元器件的选择221主控制器芯片STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期1T的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快812倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换250K/S,针对电机控制,强干扰场合。1增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统80512工作电压STC12C5A60S2系列工作电压55V33V(5V单片机)STC12LE5A60S2系列工作电压36V22V(3V单片机)3工作频率范围035MHZ,相当于普通8051的0420MHZ4用户应用程序空间8K/16K/20K/32K/40K/48K/52K/60K/62K字节5片上集成1280字节RAM6通用I/O口(36/40/44个),复位后为准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20MA,但整个芯片最大不要超过55MA7ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P30/P31)直接下载用户程序,数秒即可完成一片8有EEPROM功能STC12C5A62S2/AD/PWM无内部EEPROM9看门狗10内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)11外部掉电检测电路在P46口有一个低压门槛比较器5V单片机为132V,误差为/5,33V单片机为130V,误差为/312时钟源外部高精度晶体/时钟,内部R/C振荡器温漂为/5到/10以内用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟常温下内部R/C振荡器频率为50V单片机为11MHZ155MHZ33V单片机为8MHZ12MHZ精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准。13共4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。142个时钟输出口,可由T0的溢出在P34/T0输出时钟,可由T1的溢出在P35/T1输出时钟。15外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,POWERDOWN模式可由外部中断唤醒,INT0/P32,INT1/P33,T0/P34,T1/P35,RXD/P30,CCP0/P13也可通过寄存器设置到P42,CCP1/P14也可通过寄存器设置到P4316PWM2路)/PCA(可编程计数器阵列,2路)也可用来当2路D/A使用也可用来再实现2个定时器也可用来再实现2个外部中断上升沿中断/下降沿中断均可分别或同时支持17A/D转换,10位精度ADC,共8路,转换速度可达250K/S每秒钟25万次18通用全双工异步串行口UART,由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口。19STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RXD2/P12可通过寄存器设置到P42,TXD2/P13可通过寄存器设置到P4320工作温度范围4085工业级/075商业级21封装PDIP40,LQFP44,LQFP48I/O口不够时,可用2到3根普通I/O口线外接74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。222温湿度传感器测湿模块选用湿度传感器SHT15。而温度传感器则用PT100,本来SHT15也有测温的功能,但是它不能满足设计的要求,且他的线性度没有PT100好,因此测温传感器就用PT100,测湿的传感器用SHT15。下面图说明它的线性度好。SHTXX系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专利的工业COMS过程微加工技术(CMOSENS),具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D器以及串行接口电路在同一芯片上实现无缝链接,从而具有超快响应,抗干扰能力强,性价比高等优点。其内部机构图如下图22所示。图22SHT15结构图7223驱动显示电路驱动显示模块选用2个4位共阴极数码管和3个锁存器74573。由于单片机的端口输出电流太小,这里必须加锁存器来使数码管显示,使显示的效果更好。LED数码管也称半导体数码管,是目前数字电路中最常用的显示器件。它是以发光二极管作段并按共阴极方式或共阳极方式连接后封装而成的。图22所示是两种LED数码管的外形与内部结构,、分别表示公共阳极和公共阴极,AG是7个段电极,DP为小数点。LED数码管型号较多,规格尺寸也各异,显示颜色有红、绿、橙等。LED数码管的主要特点如下1能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。2发光响应时间极短小于01S,高频特性好,单色性好,亮度高。3体积小,重量轻,抗冲击性能好。4寿命长,使用寿命在10万小时以上,甚至可达100万小时。成本低。因此它被广泛用作数字仪器仪表、数控装置、计算机的数显器件。图23LED数码管外形和内部结构图锁存器的功能下表显示23温湿度测量的方法及分析SHT15是一个两线串行接口的数字温湿度传感器,一个接口是时钟线,一个接口是数据线(支持双向传输)。它是四针单排封装,一个接电源,一个接地线,另两个直接和单片机的P2_5和P2_6相连。、单片机通过P2_5和P2_6向SHT15发送命令,SHT15接收到命令后做出相应的应答。由于SHT15内部包含一个14位A/D转换器,所以单片机接收到就是数字信号,只需要做相应的处理就能得到所需要的数据。这里减少了很多外部的电路的连接,用起来比较方便。第三章硬件电路的设计31主控制电路和测温湿控制电路本次硬件设计的核心就是STC12C5A60S2,其他部件都是围绕它设计的。湿度传感器SHT15的DATA口和SCK口分别与STC12C5A60S2的P2_5口和P2_6口相连。测温的PT100则在电桥的微弱的变化产生的信号放到运放中放大等处理再接到P1_0。预置数电路就是4个按键,进行行列扫描,分别与STC12C5A60S2的P1_1,P1_2P1_3和P1_4口相连。当有按键按下时单片机收到有效的信号,S1键是用来设置温度的加1,S2键是用来设置温度减1,S3键用来设置湿度的加01,S4键是用来设置湿度减01。报警电路就是把两个发光二极管和STC12C5A60S2的P2_3,P2_4口相连,因为要更好的显示出控制外电路工作,所以要大点的电流驱动外电路,那么在电路中要显示出来,那么要加一个继电器才能显示有足够大的电流。如下图显示同样湿度也一样,只是把P23改为P24单片机复位有两种一种是上电复位,一种是按键复位。这次用的就是按键复位,当按键按下时单片机的RST口从低电平变为高电平,从而进入复位状态。当按键松开后,VCC给10UF电容充电,从而把RST口拉至电平,单片机进入工作状态。STC12C5A60S2中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30PF士10PF,而如果使用陶瓷谐振器,建议选择40PF士L0PF。这里用到的是110592M的石英晶体振荡器和两个30PF的电容。具体原理图如下图31所示。图31主控制电路和测温湿电路原理图32驱动显示电路数码管的显示有两种方法一种是静态显示,一种是动态扫描显示。静态显示就是数码管的段选端一对一与单片机的I/O相连,位选端则根据数码管的极型来接地(GND)或者是高电平(VCC)。静态显示实现起来比较简单,但是浪费了单片机的I/O口资源。动态扫描显示就是几个数码管的段选端可以同时接到单片机的I/O口,位选端一对一的接到单片机的其它I/O口,当位选信号选中某个数码管时,那个数码管就被点亮,而其它数码管不亮。动态扫描显示节省了单片机的I/O资源。采用动态显示方案,设计中使用八个共阴极数码管作为显示载体,通过八路并口传输,共使用了8个I/O口。显示时采用循环移位法,即八位数码管依次循环点亮,利用人眼睛的视觉暂留效果达到连续显示,主程序每运行一遍便调用一次显示子程序,将数据显示出来。STC12C5A60S2的P0口与3个锁存器相连,其中一个锁存器与四个四位数码管的数码管的A,B,C,D,E,F,G和DP,顺序可以根据硬件接线方便而定。而其他两个从锁存器出来的则连到数码管的位选端上,一个数码管有4个位选端,4416正好连在剩下的锁存器上。具体原理图如下图32所示。图32显示电路原理图第四章软件设计及分析41SHT15传输时序和指令集与测温模块7411通讯复位时序串行时钟输入SCK用于微处理器与DTH91之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCK频率。串行数据DATA三态门用于数据的读取。DATA在SCK时钟下降沿到来之后改变状态,并仅在SCK时钟上升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。为避免信号冲突,微处理器应驱动DATA在低电平。需要一个外部的上拉电阻(例如10K)将信号提拉至高电平。如果与DTH91通讯中断,下列信号时序可以复位串口当DATA保持高电平时,触发SCK时钟9次或更多。这些时序只复位串口,状态寄存器内容仍然保留。图41通讯复位时序412启动传输时序用一组“启动传输”时序,来表示数据传输的初始化。它包括当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平。在下一次指令前,发送一个“传输启动”时序。启动传输时序如下图42所示。图42启动传输时序413数据传输和指令集后续命令包含三个地址位(目前只支持“000”),和五个命令位。DTH91会以下述方式表示已正确地接收到指令在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位)。在第9个SCK时钟的下降之后,释放DATA(恢复高电平)。发布一组测量命令(00000101表示相对湿度RH,00000011表示温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320MS,分别对应8/12/14BIT测量。确切时间随内部晶振速度的变化而变化,最多可能有30的变化。DTH91通过下拉DATA至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。接着传输2个字节的测量数据和1个字节的CRC奇偶校验。UC需要通过下拉DATA为低电平,以确认每个字节。所有的数据从MSB开始,右值有效(例如对于12BIT数据,从第5个SCK时钟起算作MSB;而对于8BIT数据,首字节则无意义)。用CRC数据的确认位,表明通讯结束。如果不使用CRC8校验,控制器可以在测量值LSB后,通过保持确认位ACK高电平,来中止通讯。在测量和通讯结束后,SHT15自动转入休眠模式。SHT15的指令集如下表41所示。表41命令集414湿度的测量时序图43测量湿度的时序415输出转换为物理量由能隙材料PTAT正比于绝对温度研发的温度传感器具有极好的线性。可用如下公式将数字输出转换为温度值TEMPERATURED1D2SOTD1和D2的值如下表42所示。表42温度转换系数为了补偿湿度传感器的非线性以获取准确数据,建议使用如下公式1修正输出数值RHLINEARC1C2SORHC3SORH2C1,C2和C3值如下表43所示。表43湿度转换系数湿度传感器相对湿度的温度补偿实际测量温度与2577相差较大时,应考虑湿度传感器的温度修正系数RHTRUETC25T1T2SORHRHLINEART1和T2的值如下表44所示。表44温度补偿系数RHTRUE就是测量的湿度值。416SHT15的DC特性。SHT15的DC特性如下表45所示。表45DHT91的DC特性PT100在桥式电路的变化的信号传到仪用中放大,(大概放大60倍左右,一度输出的电压大概为23豪伏,因为设计要求中有负的100度,即输出电压为23伏,因为AD转换中不能转换0伏以下的电压以及大于5伏的电压,所以加了一个加法器,又要加一个1/2比例电路。(23伏叠加之后输出的范围为069伏)加了1/2比例电路后输出的电压是反向的,所以应该要求再加一个反向电路使输出的电压在05V之间,再接入AD转换之中。具体电路如下。42程序流程图图44程序流程图因为温度的只有一个AD转换,所以就不列流程图了。43程序的设计431SHT15的初始化程序INCLUDE/INCLUDE/MICROCONTROLLERSPECIFICLIBRARY,EGPORTDEFINITIONSINCLUDE/KEILLIBRARYISUSEDFOR_NOP_OPERATIONINCLUDE/KEILLIBRARYINCLUDE/KEILLIBRARYTYPEDEFUNIONUNSIGNEDINTIFLOATFVALUEENUMTEMP,HUMI/BITFLAG0DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTDEFINENOACK0DEFINEACK1DEFINESTATUS_REG_W0X06DEFINESTATUS_REG_R0X07DEFINEMEASURE_TEMP0X03DEFINEMEASURE_HUMI0X05DEFINERESET0X1ESBITDATAP23SBITSCKP24/UCHARTABLE3/VOIDSEND_BYTEUCHARXVOIDSEND_TWOUINTY/以下为读写SHT15湿度程序/CHARS_WRITE_BYTEUNSIGNEDCHARVALUEUNSIGNEDCHARI,ERROR0FORI0X80I0I/2/SHIFTBITFORMASKINGIFI/MASKINGVALUEWITHI,WRITETOSENSIBUSELSEDATA0_NOP_/OBSERVESETUPTIMESCK1/CLKFORSENSIBUS_NOP_NOP_NOP_/PULSWITHAPPROX5USSCK0_NOP_/OBSERVEHOLDTIMEDATA1/RELEASEDATALINE_NOP_/OBSERVESETUPTIMESCK1/CLK9FORACKERRORDATA/CHECKACKDATAWILLBEPULLEDDOWNBYSHT11SCK0RETURNERROR/ERROR1INCASEOFNOACKNOWLEDGE/CHARS_READ_BYTEUNSIGNEDCHARACKUNSIGNEDCHARI,VAL0DATA1/RELEASEDATALINEFORI0X80I0I/2/SHIFTBITFORMASKINGSCK1/CLKFORSENSIBUSIFDATAVALVAL|I/READBITSCK0DATAACK/INCASEOF“ACK1“PULLDOWNDATALINE_NOP_/OBSERVESETUPTIMESCK1/CLK9FORACK_NOP_NOP_NOP_/PULSWITHAPPROX5USSCK0_NOP_/OBSERVEHOLDTIMEDATA1/RELEASEDATALINERETURNVAL/返回读命令的值/VOIDS_TRANSSTARTVOID/TRANSMISSIONSTARTDATA1SCK0/INITIALSTATE_NOP_SCK1_NOP_DATA0_NOP_SCK0_NOP_NOP_NOP_SCK1_NOP_DATA1_NOP_SCK0/VOIDS_CONNECTIONRESETVOIDUNSIGNEDCHARIDATA1SCK0/INITIALSTATEFORI0I100RH_TRUE100/CUTIFTHEVALUEISOUTSIDEOFIFRH_TRUE/状态寄存器默认温度14BIT,湿度12BITINCLUDE/刚开始要复位寄存器,且转换时12BIT为80MSDEFINEUINTUNSIGNEDINT/80MS可不理会,主机处于检测状态DEFINEUCHARUNSIGNEDCHARSBITDU_CHOICEP20SBITWE_CHOICEP21SBITWE_CHOICE1P22/第二个位选信号SBITDATAP23SBITSCKP24SBITTEM_INCP11/温度加SBITTEM_DECP12/温度减SBITHUM_INCP13/湿度加SBITHUM_DECP14/湿度减SBITTEM_LEDP25SBITHUM_LEDP26EXTERNUCHARCODETABLEEXTERNUCHARCODETABLE1UCHARKEY0/按键全局变量UINTIDATATEM_DAULT25,HUM_DAULT500/温度、湿度赋初值温度25湿度50UCHARIDATAAJ_FUHAO0,AJ_BAI0,AJ_SHI0,AJ_GE0UCHARIDATAAJ_QIAN_HUM0,AJ_BAI_HUM0,AJ_SHI_HUM0,AJ_GE_HUM0/TYPEDEFUNIONUNSIGNEDINTIFLOATFVALUEUINTAA20/定时中断1中的加数用UCHARIDATABAI0,SHI0,GE0,FUHAO0,QIAN_HUM0,BAI_HUM0,SHI_HUM0,GE_HUM0UNSIGNEDLONGGET_AD10,GET_AD30FLOATGET_AD20UINTGET_AD0UINTHUMIDITY_DAT0VOIDDISPLAYUCHARFUHAO,UCHARBAI,UCHARSHI,UCHARGEVOIDDISPLAY_HUMUCHARQIAN,UCHARBAI,UCHARSHI,UCHARGE/VOIDADJUST_DISPLAYUCHARFUHAO,UCHARBAI,UCHARSHI,UCHARGEVOIDADJUST_DISPLAYUCHARAJ_FUHAO,UCHARAJ_BAI,UCHARAJ_SHI,UCHARAJ_GEVOIDAJ_DISPLAY_HUMUCHARAJ_QIAN_HUM,UCHARAJ_BAI_HUM,UCHARAJ_SHI_HUM,UCHARAJ_GE_HUM/VOIDAJ_DISPLAY_HUMUCHARQIAN_HUM,UCHARBAI_HUM,UCHARSHI_HUM,UCHARGE_HUM/VOIDSERIAL_INITIALVOIDINITVOIDSEND_BYTEUCHARXVOIDSEND_TWOUINTYUNSIGNEDINTGET_AD_RESULTUNSIGNEDCHARCHANNELVOIDDELAY1MSUINTZ/1MS延时VOIDDELAYMSUNSIGNEDINTN/延时10N毫秒程序UNSIGNEDINTI,JFORI0I1000FUHAO0BAIGET_AD3/1000SHIGET_AD31000/100GEGET_AD31000100/10/QIANGET3/1000BAIGET_AD31000/100SHIGET_AD31000100GEGET_AD3100010/ELSEIFGET_AD2HUM_DAULT/湿度大于设置值则继电器开HUM_LED1ELSEHUM_LED0/否则继电器关/SEND_TWOGET_AD2IFGET_AD3TEM_DAULT/温度大于设置值则继电器开TEM_LED1ELSE/否则继电器关TEM_LED0/以上为判断程序/VOIDTIMER0INTERRUPT1/定时中断0TH065536350/256/定时赋初值TL065536350256AA2IFAA217/让16为数码管定时扫描AA21/数码管扫描程序/DISPLAYFUHAO,BAI,SHI,GEDISPLAY_HUMQIAN_HUM,BAI_HUM,SHI_HUM,GE_HUMADJUST_DISPLAYAJ_FUHAO,AJ_BAI,AJ_SHI,AJ_GEAJ_DISPLAY_HUMAJ_QIAN_HUM,AJ_BAI_HUM,AJ_SHI_HUM,AJ_GE_HUM/以上为数码管扫描程序/以下为外部中断1行列扫描按键程序/VOIDEXT1INTERRUPT2UCHARA30,A40,A50,A60UCHARX0,Y0EX10/扫描时关中断TEM_INC1TEM_DEC1/HUM_DEC1HUM_INC1/IE10/ET00HUM_INC0/列扫描HUM_DEC1A5TEM_INCA6TEM_DECIFA5IFA5/扫描时关中断SEND_TWO1IFA50IFA51/EA0/TEM_DEC1/行扫描/TEM_INC1HUM_INC1HUM_DEC0A3TEM_INCA4TEM_DECIFA3IFA3SEND_TWO2IFA30IFA31/EX10/WHILETEM_DEC0/KEY2YXIFKEY0/加TEM_DAULTTEM_DAULT1IFKEY1/减TEM_DAULTIFKEY2/加HUM_DAULTIFKEY3/减HUM_DAULTIFHUM_DAULTVOIDAD_INTERNAL_DELAYUCHARDELAY_TIME/延时函数UNSIGNEDINTNWHILEDELAY_TIMEN6000WHILEN/UNSIGNEDINTGET_AD_RESULTUNSIGNEDCHARCHANNELUNSIGNEDINTADC_DATA0UINTRESULTUCHARA/转换次数UNSIGNEDCHARADC_HIGH,ADC_LOW/FORA0A/74573高电平输入,低电平锁存DEFINEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHAREXTERNUCHARIDATAAA,BAI,SHI,GE,FUHAO,QIAN_HUM,BAI_HUM,SHI_HUM,GE_HUMEXTERNUINTAA2SBITDU_CHOICEP20SBITWE_CHOICEP21SBITWE_CHOICE1P22/0X40负号译码UCHARCODETABLE1/带小数点090XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,0XFF,0XEFUCHARCODETABLE0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X40/,0X77,0X7C,0X39,0X5E,0X79,0X71/VOIDDISPLAYUCHARFUHAO,UCHARBAI,UCHARSHI,UCHARGEVOIDDELAYUINTZVOIDINIT/VOIDMAININIT/初始化子程序WHILE1IFAA20AA0TEMPIFTEMP100TEMP0BAITEMP/100SHITEMP100/10GETEMP10DISPLAYBAI,SHI,GE/VOIDDELAY1MSUINTZ/1MS延时UINTX,YFORXZX0XFORY110Y0Y/VOIDDISPLAYUCHARFUHAO,UCHARBAI,UCHARSHI,UCHARGEVOIDDISPLAYUCHARFUHAO,UCHARBAI,UCHARSHI,UCHARGEIFAA21DU_CHOICE1P0TABLEFUHAODU_CHOICE0P00XFFWE_CHOICE1P00XFEWE_CHOICE0/DELAY20IFAA22DU_CHOICE1P0TABLEBAIDU_CHOICE0P00XFFWE_CHOICE1P00XFDWE_CHOICE0/DELAY20IFAA23DU_CHOICE1P0TABLESHIDU_CHOICE0P00XFFWE_CHOICE1P00XFBWE_CHOICE0/DELAY1IFAA24DU_CHOICE1P0TABLEGEDU_CHOICE0P00XFFWE_CHOICE1P00XF7WE_CHOICE0/DELAY20VOIDDISPLAY_HUMUCHARQIAN_HUM,UCHARBAI_HUM,UCHARSHI_HUM,UCHARGE_HUMIFAA25DU_CHOICE1P0TABLEQIAN_HUMDU_CHOICE0P00XFFWE_CHOICE1P00XEFWE_CHOICE0/DELAY20IFAA26DU_CHOICE1P0TABLEBAI_HUMDU_CHOICE0P00XFFWE_CHOICE1P00XDFWE_CHOICE0/DELAY20IFAA27DU_CHOICE1P0TABLE1SHI_HUMDU_CHOICE0P00XFFWE_CHOICE1P00XBFWE_CHOICE0/DELAY1IFAA28DU_CHOICE1P0TABLEGE_HUMDU_CHOICE0P00XFFWE_CHOICE1P00X7FWE_CHOICE0DELAY20WE_CHOICE1P00XFFWE_CHOICE0/WE_CHOICE1VOIDADJUST_DISPLAYUCHARAJ_FUHAO,UCHARAJ_BAI,UCHARAJ_SHI,UCHARAJ_GE/WE_CHOICE11IFAA29DU_CHOICE1P0TABLEAJ_FUHAODU_CHOICE0P00XFFWE_CHOICE11P00XFEWE_CHOICE10/DELAY20IFAA210DU_CHOICE1P0TABLEAJ_BAIDU_CHOICE0P00XFFWE_CHOICE11P00XFDWE_CHOICE10/DELAY20IFAA211DU_CHOICE1P0TABLEAJ_SHIDU_CHOICE0P00XFFWE_CHOICE11P00XFBWE_CHOICE10/DELAY1IFAA212DU_CHOICE1P0TABLEAJ_GEDU_CHOICE0P00XFFWE_CHOICE11P00XF7WE_CHOICE10/WE_CHOICE11/DELAY20VOIDAJ_DISPLAY_HUMUCHARAJ_QIAN_HUM,UCHARAJ_BAI_HUM,UCHARAJ_SHI_HUM,UCHARAJ_GE_HUMIFAA213DU_CHOICE1P0TABLEAJ_QIAN_HUMDU_CHOICE0P00XFFWE_CHOICE11P00XEFWE_CHOICE10/DELAY20IFAA214DU_CHOICE1P0TABLEAJ_BAI_HUMDU_CHOICE0P00XFFWE_CHOICE11P00XDFWE_CHOICE10/DELAY20IFAA215DU_CHOICE1P0TABLE1AJ_SHI_HUMDU_CHOICE0P00XFFWE_CHOICE11P00XBFWE_CHOICE10/DELAY1IFAA216DU_CHOICE1P0TABLEAJ_GE_HUMDU_CHOICE0P00XFFWE_CHOICE11P00X7FWE_CHOICE10DELAY20WE_CHOICE11P00XFFWE_CHOICE10/P00XFE/WE_CHOICE0/VOIDINITWE_CHOICE0DU_CHOICE0WE_CHOICE10/TEMP0/TMOD0X11TMOD0X21TH0655367000/256TL0655367000256/TH16553650000/256/TL16553650000256SCON0X50TH10XFDTL10XFDET01/ET11开了这个,发不了数据EX11/开外部中断1IT10/设置为电平触发,才能保证处部中断扫描时不会进入死循环TR11EA1TR01PT01按键的程序在毕业设计C是主函数中,所以就不写出来了。435软件在硬件上的调试分析软件在KEIL里编译通过以后还得在硬件电路上调试,让数码管显示正确的温湿度值,按键能够设定初始值,LED发光二极管能够指示报警,且继电器能动作,这些功能都实现,本设计基本完成。硬件电路是我本着连线简单的原则焊接的,数码管的段选信号端(A,B,C,D,E,F,G,DP)并不是与单片机的P1口(从07)正好相互对应的。所以这里我们需要对数码管所要显示的0,1,2,3,4,5,6,7,8,9,和“不显示”从新编码。在开始调试的时候我就忽略了这一点,我用的是资料书中常用到那种,所以数码管显示的是乱码。我以为是硬件电路出了错误,我用万用表把每根线从新测了一遍,发现硬件电路一切正常啊。这时我才忽然想到

温馨提示

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

评论

0/150

提交评论