基于单片机的环境温湿度检测系统_第1页
基于单片机的环境温湿度检测系统_第2页
基于单片机的环境温湿度检测系统_第3页
基于单片机的环境温湿度检测系统_第4页
基于单片机的环境温湿度检测系统_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

105/114摘要环境温湿度检测系统是日常生活、工业生产和农业治理中广泛使用的一种设备。该设备具备以下要紧功能:实时检测出环境中的温度和湿度参数值,并显示出来,依照设定的报警限予以报警指示,能够和上层操纵器通信。随着单片机的大规模应用,单片机在检测系统中也越来越多的被使用。本设计以AT89S52这款低功耗、高性能、在系统编程的8位单片机为系统操纵处理核心,由单总线数字温湿度传感器DHT11、数码管显示屏、LED与蜂鸣器、通信串口和按键操纵输入等五个部分组成,从而实现环境问世的监测系统的要紧功能。后期的探究设计——换用红外遥控操纵和LCM为显示屏、外加时钟和存储芯片、增加照度检测电路,极大地提升了系统的性能,使系统不仅能够检测并显示环境温度、湿度和照度变量,而且能够按照时刻顺序存储适量的数据。此外,系统有降压整流和稳压滤波电路,可用交流市电(220V)、各种安全直流电(5~24V)、太阳能电池等为系统供电,同时能够存储少量电能(900mAh),因此,系统有较宽的工作电压,可满足多种应用场合。本设计由Protel画出了电路原理图和PCB图,并由此完成了硬件的制作,使用C51语言对单片机进行编程操纵,并模块化仿真,最后通过综合调试,符合预期的设计要求。关键词:AT89S52单片机DHT11传感器PCB设计温湿度检测AbstractEnvironmenttemperatureandhumiditydetectionsystemisakindofequipmentwhichiswidelyusedindailylife,industrialproductionandagriculturalmenagement.Theequipmenthasfollowingmainfunction:detectingthetemperatureandhumidityparametersintheenvironmentreal-timeanddisplaythem,givingalarmindicationaccordingtothesetlimits,andbeingabletocontactwithuppercontroller.WiththeSCMusedlarge-scalely,theSCMismoreandmoreusedindetectionsystem.Thisdesign,usesthe8-bitSCMnamedAT89S52,whichhasalotofadvantagessuchaslow-powerdissipation,high-performanceandISP,andmadeupoffiveparts:single-wiredigitaltemperatureandhumiditysensor,digitrondisplay,LEDandbuzzer,serialcomunicationsandkeysinput,thusperformthefunctionofenvironmenttemperatureandhumiditydetectionsystem.Theexplorationdesigninlaterstage,includinginfraredremotecontrolandLCMdisplay,clockandmemorychips,andilluminationdetectioncircuit,immenselypromotesthepropertyofthesystem,makesitnotonlydetecteanddisplaythetemerature,humidityandillumination,butalsostoresomedatainorderoftime.Inaddition,withstep-downrectifierandstabilivoltfiltercircuit,thesystemcanuseutilitypowerAC220V,differentsafetyDC5~24V,solarbatterytosupplypower,andstoresomeelectricenergyabout900mAh,sothatithasawidepowersupplyvoltageandmeetsdifferentapplicationplaces.ThedesigngivesthecircuitdesignschematicsandPCBdiagramwithProtel,andcompletesthehardwarepartoftheproduction,andusesC51languagesystemtoaccomplishthecontrolprogramofSCM,andsimulateseverypartsuccessfully.Throughthesyntheticaldebugging,thedesignachievestherequireddesigns.Keywords:AT89S52SCM,DHT11sensor,serialcommunication,temperatureandhumiditydetection,PCBdesign目录第一章前言 11.1设计的目的意义调查 11.2设计的市场现状分析 21.3设计的内容要求讲明 31.4设计的实施方案构想 4第二章硬件的设计 52.1单片机的选用 52.2传感器的选用 72.2.1初期设计 72.2.2最佳方案 82.2.3电路设计 92.3数码管驱动电路设计 102.3.1数码管的选用 102.3.2驱动电路的设计 102.4报警电路设计 122.4.1蜂鸣器驱动电路 132.4.2LED驱动电路 132.5操纵输入电路设计 142.6串口通信电路设计 162.7稳定电源电路设计 172.8系统三大部分的PCB设计 182.8.1系统主体部分PCB设计 192.8.2串口通讯PCB设计 202.8.3稳压电源部分PCB设计 21第三章程序的设计 233.1程序功能描述、单片机内部资源分配和程序流程图 233.1.1程序功能描述 233.1.2单片机内部资源分配——两个定时器的分工 233.1.3程序的流程图 243.2编程语言和工具的选择以及程序文件的分配 253.2.1编程语言的选择 253.2.2编程工具的选择 263.2.3程序文件的分配 263.3传感器通信程序设计 273.3.1握手确认 273.3.2数据传送 283.3.3相关问题解决方案 313.4数码管扫描程序设计 323.5报警及设置程序设计 333.5.1报警驱动 333.5.2报警值调整 343.6按键扫描程序设计 343.7串口发送数据程序设计 363.7.1波特率设置 363.7.2数据发送格式 373.7.3发送方式 373.8Keil综合编译和结果分析、程序下载 383.8.1综合编译情况和结果分析 383.8.2生成HEX文件下载至单片机中 40第四章系统后期探究优化设计简介 414.1换用红外操纵和LCM显示的探究 414.1.1红外操纵 414.1.2LCM显示 444.2增加实时时钟和存储芯片来记录数据的探究 484.3增加照度检测电路的探究 50结束语 54参考文献 56附录 57附1单片机驱动程序 57附2硬件制作元器件安装图、布线图 78第一章前言本章要紧叙述了温湿度检测系统设计的一些差不多情况,包括目的意义、市场现状、设计要求和实施方案等几个部分。1.1设计的目的意义调查现代社会,随着国家的经济不断进展,人们的生活水平逐渐提高,在衣食住行差不多满足之后,追求一种健康长寿的生活方式差不多成为时代的潮流。家庭居室,工作场所是人们每天较长时刻生活的两个环境,而环境中的温度和湿度变化则和人们的生理、心理等躯体健康状况息息相关。相关研究结果摘录如下;据生理学家研究,室内温度过高时,会阻碍人的体温调节功能,由于散热不良而引起体温升高、血管舒张、脉搏加快、心率加速。冬季,假如室内温度经常保持在25度以上,人就会神疲力乏、头晕脑胀、思维迟钝、经历力差。同时,由于室内外温差悬殊,人体难以适应,容易患伤风感冒。假如室内温度过低,则使人体代谢功能下降,脉搏、呼吸减慢,皮下血管收缩,皮肤过度紧张,呼吸道粘膜的抵抗力减弱,容易诱发呼吸道疾病。因此,科学家们把人对‘冷耐受”的下限温度和”冷耐热”的上限温度,分不定为11度和32度。然而,人的体感并不单纯受气温或气湿两种因素的阻碍,而是两者综合作用的结果。通过实验测定,最适宜的人的室内温湿度是:冬天温度为18至25度,湿度为30%至80%。夏天温度为23至28度,湿度为30%至60%。在此范围内感到舒适的人占95%以上。在装有空调的室内,室温为19至24度,湿度为40%至50%时,人会感到最舒适。假如考虑到温湿度对人思维活动的阻碍,最适宜的室内温度应是工作效率最高的值。温度应是18度,湿度应是40%至60%,现在,人的精神状态最好,思维最敏捷。因此,随时关注环境的温湿度变化而由此采取措施对人们的健康生活和高效工作有着重要的意义。除此之外,工业生产、农业治理和医疗护理等环境中的温湿度也是两项重要的检测操纵参数,对安全生产、粮食丰收和病人康复等意义重大。部分要求数据如下:由此看来,研究设计环境温湿度检测系统十分有必要。1.2设计的市场现状分析纵观市场,温湿度检测技术差不多比较成熟,已有的各种温湿度检测产品,五花八门,犹如八仙过海,各显神通,如A2000家用温湿度报警表、YD-808A工业用温湿度显示器等产品。从功能上分析这些产品能够看出,一个比较完整的环境温湿度检测系统应该具备以下要紧的四个功能:(1)实时检测出环境中的温度和湿度参数;(2)检测的参数值显示在显示设备上(如数码管,液晶显示器等);(3)依照环境要求,设定温度湿度报警的上下限值,并实时报警;(4)与上层监控设备通信(如PC),实现数据传输(双向或单向);因此,本设计也应该具备这些功能,同时对每一个部分进行优化设计,也能够扩展系统功能。除了功能上的分析之外,再看这些产品的造价和供电情况,有以下两个问题:(1)价格太高,不符合一般消费者的消费水平,如A2000家用温湿度报警表,淘宝网上售价300左右;(2)供电都比较单一,规定在直流6V,9V,12V或交流220V等,除了购买产品主体之外,还需要一个特定的电源适配器;综上所述,本设计设计出的环境温湿度检测系统,除了具备市场上已有产品的功能之外,还应尽量降低制作价格,确保有较宽的工作电压。1.3设计的内容要求讲明依照上述市场调查情况和毕业设计任务书的要求,本设计的研究内容包括以下几个方面:1、差不多要求(1)要紧检测环境变化中的温度和适度参数;(2)温湿度参数显示在LED数码管屏幕上;(3)能够设置温湿度报警点,并能按照设置实时报警;2、操纵要求(1)依照需求,温湿度数据能够发送给上层监控设备,如一般电脑等;(2)能够按照时刻顺序,以一定格式将温湿度数据导出保存,以便进行再分析处理;3、制作要求(1)造价低廉,工作可靠;(2)工作电压较宽,满足不同的供电测试条件;(3)做出产品样机,调试通过,能够正常工作;因此,本温湿度检测系统的设计应以这三方面的要求为依据,从而进行各个部分的详细设计。1.4设计的实施方案构想基于单片机的环境温湿度检测系统实施方案构想如下:1、由温度和湿度传感器对环境中的温度和湿度变量进行采样;2、单片机和传感器通信,获得采样数据并暂存;3、单片机对数据进行预处理(如校验等),对有效数据再进行以下四种处理:驱动显示电路,把数据显示在数码管上;扫描输入的操纵信号,设定报警限值;依照设定的报警,驱动报警电路工作,予以报警指示;扫描输入的操纵信号,依照需要发送数据给上层设备,在设备上进行数据再处理或保存;在系统供电端有稳压滤波电路或电能存储器件,保证系统正常工作;选用价格低廉的器件或设计电路,减少花费;在以上方案都实施的情况下,对系统进行优化创新设计,强化功能;因此,本系统的设计应按照那个思路进行具体设计,把每一步的构想转化为现实的设计。系统的结构图如下:第二章硬件的设计依照绪论中的分析讲明,能够明确温湿度检测系统的硬件电路分为电源稳压、传感器检测、数码管显示驱动、报警驱动、输入操纵、数据发送等六大部分,其中后五个部分都以单片机为核心,由单片机来进行操纵处理,因此单片机的选用至关重要。2.1单片机的选用自从20世纪70年代,因特尔公司推出第一代单片机以来,单片机的进展如雨后春笋。各大电气商、半导体商依照不同的操纵需求,尤其在嵌入式系统操纵方面,以因特尔公司的51单片机的框架结构为基础,研发了各种各样的、功能强大的单片机。而今,我们差不多进入了一个单片机可广泛选择的、百花齐放的时代。因此,选用一款价格低廉,性能优良的单片机已不再困难。在MCS-51单片机8051的基础上,ATMEL公司开发的AT89系列的单片机自问世以来,以其较低廉的价格和独特的程序存储器——快速闪存器为用户所亲莱,尤其是AT89S52这款单片机,它有以下几个特点:1、与MCS-51单片机产品兼容,完全可采纳51指令系统用汇编或C51编程;2、8K字节在系统可编程FLASH存储器,同时有1000次擦写周期,这使得。调试程序和下载程序十分方便;3、全静态操作,工作频率范围为0Hz~33MHz,频率范围宽,便于系统功耗操纵;4、三级加密程序存储器,使程序和系统更加难以仿制,确保了产品的知识产权;5、32个可编程I/O口线,每个I/O都能够独立或联合使用,实现不同的数据操作,而且PI端口的高三位第二功能为ISP编程,实现在系统调试;6、三个16位定时器/计数器,其中定时器2也能够作为串口波特率的产生;7、八个中断源,分为两个优先级,可软件设置;8、一个全双工通用异步接收发送数据借口,以便与外设进行串行数据通信;9、有低功耗空闲和掉电模式,掉点后可由中断唤醒,可设置掉电标识符;10、宽工作电压范围,VCC为2.7~5.5V,与TTL电平和CMOS电平兼容;总之,AT89系列单片机与MCS-51系列单片机相比,前者和后者有兼容性,但前者的性能价格比等指标更为优越。因此,选用AT89S52单片机可实现温湿度检测系统的功能,下图为该单片机的DIP40封装外观和引脚功能:图2-1单片机的引脚图依照单片机的推举外围电路,复位(10K电阻,10uf电容)、晶振(12MHZ,电容22pf)电路设计如上图所示:图2-2单片机复位电路图2-3单片机晶振电路2.2传感器的选用2.2.1初期设计本设计的初期构想是用一个温度传感器和一个湿度传感器来检测环境中的温度和湿度参数,其中温度传感器选用单总线数字温度传感器DS18B20,湿度传感器选用数字式湿度传感器SHT11,则检测部分功能框图如下:图2-4传感器初期设计方案比较DS18B20和SHT11,这两个传感器的通信都比较复杂,具体过程为:主机发起通信、传感器确认通信、主机给传感器写命令字、传感器给主机发送检测数据,且SHT11还要求外部输入串行时钟信号。这种通信的复杂,不仅体现在硬件电路的设计上,而且体现在程序的设计上,同时串行通信对时序要求比较严格,如此对单片机来讲将是一个巨大的挑战,况且单片机还要进行其他的后续操纵处理。除此之外,这两大传感器的价格都不菲,DS18B20在8元左右,而SHT11则在50元左右,这对支付能力也是一个巨大的考验。因此,这种方案不可取,必须寻求其他的传感器解决方案,从而简化硬件电路和程序设计,让单片机有更多的内外部资源来处理后续操作。2.2.2最佳方案后期采纳单总线数字温湿度传感器DHT11。这款传感器由广州奥松电子科技有限公司研发,与单片机的通信十分简洁方便,无需外接时钟信号,通信如下:图2-5单总线数字温湿度传感器DHT11与单片机通信除此之外,它还有专门多突出的优点:(1)温湿度传感器的一体化结构能同时对相对湿度和温度进行测量,并以数字信号输出,从而减少用户对信号的预处理负担;(2)独特的单总线数据传输线协议使得读取传感器更加便捷,而且还有全部校准数据字节,编码方式为8位二进制数;(3)40位二进制数据输出,高位先出,格式为:湿度整数部分8位,小数部分8位;温度整数部分8位,小数部分8位,最后8位为校验字节,为前32位数据的和。(4)宽工作电压,几乎与AT89S52的电压相同,为3~5.5V,而且功耗较低,通信最大电流为2.5mA。其简要的性能参数如下表所示;表2-1温湿度传感器DHT11性能参数从表中能够看出,它的测量范围较小,但对实验或民用差不多足够了,假如要工业使用的话,可选用该公司的同类工业级产品AM323,测量范围为-55.0~+125.0度,测量范围为0.0~100.0%RH,同时能够和DHT11完全互换。2.2.3电路设计按照讲明书的要求,DHT11与单片机的连接距离小于20米时,需要在VCC和DATA引脚之间接一个5K左右的电阻,因此电路设计如下:图2-6温湿度传感器DHT11与单片机连接电路至此,传感器的硬件电路设计完成,另一部分的工作确实是编程问题,在下一章节介绍。2.3数码管驱动电路设计2.3.1由于温湿度传感器DHT11测温范围为0~50℃,测湿范围为20~90%RH,温度和湿度差不多上两位数据,因此能够用两个两位一体的数码管来显示温湿度数据,共阴极或共阳极都能够,本设计中选用两个型号为FJS5202FH2.3.2数码管驱动软件设计有两种方案,一种是静态驱动,即四位数码管的段选信号和位选信号,分不接入操纵器的端口,需要8×4+4=36个端口;另一种是动态驱动,段选信号线公用,而位选信号分开操纵,需要8+4=12个端口。考虑到单片机可用的I/O引脚只有32个,为不扩展引脚而外加芯片,因此采纳动态驱动方式较合理。数码管驱动电路一般也有两种设计方案,一种是使用八D锁存芯片74HC373或74LS373锁存驱动,另一种是用三极管放大驱动。市场上74HC373芯片较74LS373芯片价格廉价也为2元左右一块,而三极管只有0.2元左右,四个三极管共8角钞票,相对来讲比较经济实惠,因此选用后一种方案。而相关器件电气参数为:(1)红色共阳极数码管(实际上是八个并联的红色LED)的电压范围1.5~2.0V,最大工作电流为20mA×8=160mA;(2)单片机每个引脚灌电流(外部电流流入单片机)大约为24mA,拉电流(单片机电流流入外设)小于1mA。依照这两项参数,初步确定三极管选用90系列PNP型,用集电极接数码管位选引脚,基极用电阻限流后接单片机引脚予以位选操纵。再考虑数码管电流的限定,符合要求的三极管只有8550和9012,其简要参数见下表:表2.2可选三极管参数由表能够看出,8550的电流和功率都专门大,既白费资源又不利于降低系统功耗,因此选用9012较为合适。因此,这部分的电路设计如下:图2.7数码管段选信号与单片机连接电路图2.8数码管位选信号与单片机连接电路用单片机P0端口作为数码管段选信号,P2端口的高四位作为位选信号,四个电阻的粗略大小为:R=(VCC-VEB)/Ib=(5.5V-0.7V)/1mA=4.8K,可选用E24系列的电阻4.7K或5.1K。2.4报警电路设计本设计需要指示一种温湿度正常状态、一种数据发送状态和四种超限报警状态,即温度超下限,温度超上限,湿度超下限,湿度超上限,可采纳简单的声(蜂鸣器)光(LED)报警电路。LED颜色和状态及蜂鸣器状态分配如下表所示:表2.3报警指示状态分配注:“——”表示LED熄灭或蜂鸣器无声。2.4.1蜂鸣器驱动电路依照蜂鸣器的参数:电压1.3~1.5V,电流20~80mA,电阻6~8Ω知,可用选用集成放大芯片LM386驱动,但更经济的是用一个三极管9012或8550驱动即可,电路如图所示:图2.9蜂鸣器报警驱动电路2.4.2LED驱动电路依照LED的参数:电压1.5~2.5V,电流10~20mA,则可用一电阻对电源进行下拉,限流分压后,LED阴极接入单片机予以操纵,电阻阻值大约为:R=(VCC-VLED)/I=(5.5V-2V)/10mA=350Ω,选用330Ω或360Ω的电阻即可,具体电路如下图所示:图2.10报警LED驱动电路2.5操纵输入电路设计本设计的操纵输入部分为简单的三个按键,由于单片机默认状态下端口引脚为高电平,能够接上按键与地相连,单片机检测按键端口的电平情况来决定是否有按键按下和哪个按键被按下,抖动问题采纳软件延时方式,减少硬件电路设计,电路如图所示:图2.11操纵输入按键连接电路通过上述对各个模块的分布设计,现在可给出系统主体部分的原理总图。图2.12系统主体部分原理总图考虑到PCB设计单面板布线的可行性,单片机的外部资源(端口引脚)分配按下进行:传感器DHT11数据线——P11;蜂鸣器HXD驱动三极管基极——P10;程序调试ISP插座——P15、P16、P17;按键KEY1、2、3——P32、P33、P35;串口RXD、TXD——P30、P31;数码管段选信号、位选信号——P0、P23、P24、P25、P26;LED绿、黄、红——P22、P21、P20。2.6串口通信电路设计单片机AT89S52有一个全双工的UART接口,即RXD(P3.0)和TXD(P3.1),因此能够用来和上层设备如PC通信,然而由于PC的串口使用RS232电平通信协议,而单片机使用TTL电平通信协议,这两种电平的特点见下表:表2.4RS232和TTL电平标准比较比较两表,能够看出RS232电平和TTL电平并不兼容,为使单片机和PC通信,必须先转换电平,可采纳新型集成芯片MAX232实现数据发送转换和接收转换的双重功能,依据芯片手册上的推举电路,经合理简化后设计的串口发送数据部分电路为:图2.13通信串口电路其中J1与单片机串口相连,J2经针脚到插孔的RS232数据线与电脑相连,即可实现电脑和单片机的全双工通信。2.7稳定电源电路设计按照设计要求,系统供电要求多样化,除了交流220V的市电是必用的外,还应该具备其他供电要求,如太阳能电池,各种安全直流电压源等,而且还应该有一定的蓄电能力。考虑到市电电压太高且为正弦变化,而太阳能电池输出电压不稳定等问题,必须要对市电进行降压,对变动的电压进行稳压,而单片机系统的电压要求在5V左右,因此,可考虑用集成稳压模块LM7805进行终端稳压。LM7805是三端正5V电源稳压器件,输入电压为直流5~24V,输出电压为4.8~5.2V,最大同意电流为1.5A,有电流限制、热过载爱护和短路爱护功能,确保输出电压正常稳定。具体电路设计如下:图2.14稳压电源电路该电路有四个电源插座,其中J1为市电AC220V供电输入,J2为太阳能电池或其他输出直流为5~24V的电压源的输入,J3为充电输出接口,可为充电电池(1.2V×4只)恒流充电,J4为系统供电+5V电压输出端口,由此接到系统的电源端。当用市电供电时,先通过220V/12V的变压器T1把电压降低至有效值为12V的交流电,再用电桥BR1进行全波整流为有效值12V(峰值大约为17.0V)的脉动电压,然后前置电容EC1和C1滤波,经LM7805稳压并后置电容C2滤波,输出大约为稳定的+5V直流电,一部分为系统供电,另一部分为电池充电,通过调节电位器CR1可调整充电电流,给不同的电池充电。LED1为电源指示灯。当用太阳能电池等输出为直流电的电源设备时,直接接入J2端口,亦可为系统供电。使用这种设计,能够确保系统有较宽的工作电压,同时能够存储少量电能,从而达到在不同场合供电的目的。2.8系统三大部分的PCB设计在Protel99中新建设计文档,依照以上分析,画出系统主体部分、串口通信部分和电源部分的原理图,并选择合适的封装外形,设计相应的PCB图。三部分的PCB图及设计时应注意的问题简要介绍如下:2.8.1系统主体部分PCB设计图2.15系统主体PCB图设计要求:(1)传感器的安装位置传感器必须安置在PCB的边缘位置,不仅应确保没有发热吸湿的器件在其附近,而且传感器的感温感湿栅窗应朝向外部,否则可能会阻碍传感器对外部环境中温湿度的测量,如图2.15左下角的插座J2即为传感器的安装位置。(2)数码管的布线不仅数码管的引脚较多,与单片机的连线也较多,而且制作实验硬件使用的是单面板,只能在底面布线,因此,在布线的时候应该综合考虑三方(单片机、数码管和单面实验板)的特点,选择合理的布线方案。为保证多在底面布线,本设计对数码管采纳变码布线,即数码管a~Dp段并没有和单片机P00~P07一一对应,而且位选信号线和部分段选信号线在顶面布线,详细情况如图2.15所示,其中DG1和DG2为数码管。(3)电源开关、插头插座和按键的位置电源开关、插头插座和按键是经常使用的器件,为方便操作,需要安装在边缘位置,和其他元件的距离不应过小。如图2.15中的SW1、J1、J3、KEY-R、KEY1~KEY3以及ISP1等。(4)单片机的位置单片机是系统的核心,为了便于安装和更换,单片机的周围不应放置过多元件,留有余地。(5)布线要求布线不应过密,特不是DIP封装的元件,引脚之间禁止布线,否则可能导致连线短路或信号相互干扰。2.8.2图2.16串口通信部分PCB图设计要求:(1)芯片安装位置芯片U1的凹槽朝向J2,便于和J2连线。(2)电容封装选择由于电容C4引脚间有布线,封装应选用中间可布一线的外形,或把引脚间距较小的间距拉大,确保可布一线。(3)J2的焊盘尺寸J2的两端的固定焊盘应适当加大,以增强焊接力。因为串口插头较大,而且会有频繁的插拔,若固定焊盘过小,可能出现松动。2.8.3图2.17电源部分PCB图设计要求:(1)高压部分J1为AC220V的插头,T1为AC220V/12V的变压器,这两个器件在设计时应考虑安全问题。J1的引脚间距应加大,T1的输入输出线应适当加粗,确保高压隔离和大电流散热良好。(2)稳压器件的位置当LM7805工作电压高于5V时,会有较大热量产生,因此在设计时应放在PCB边缘通风散热良好的地点,同时散热片朝向外部。依照上述三部分的PCB图,用万用板和相应元器件焊接制作实验硬件,依据设计用细裸导线布线,完成三部分硬件的制作。第三章程序的设计本章依据差不多设计好的的硬件,选用合适的语言给每一个模块设计驱动程序,最后综合编译,生成下载文件。程序文档由传感器通信、数码管动态扫描、LED和蜂鸣器报警、按键输入检测和串口发送数据五个部分组成。3.1程序功能描述、单片机内部资源分配和程序流程图3.1.1程序功能描述程序设计的目的是操纵单片机引脚的电平变化,从而操纵相应外围电路按照要求工作,这些操纵包括单总线温湿度传感器的数据猎取、数码管的动态扫描显示、LED和蜂鸣器的联合驱动报警、按键信号检测和串口数据发送,同时这些操纵必须保持协调统一、可靠稳定地实现系统的要求功能。3.1.2单片机内部资源分配——两个定时器的分工数码管的显示在本系统中为关键部分,它的显示有连续性(扫描两位之间时刻差不能过大,否则会断续显示)和暂留性(每一位显示的停留时刻不能过短,否则亮度不高),因此采纳默认中断优先级较高的定时器0进行中断动态扫描,扫描时刻定为1毫秒。报警LED和蜂鸣器的状态变化也应该有实时性,否则会出现报警滞后的问题,因此用定时器1进行中断报警扫描,蜂鸣器的响声用最简单的“滴滴”声响,采纳频率为5Hz的方波,而LED的闪耀也同步进行,扫描时刻定为100微妙。此外,在串口发送数据期间,由于单片机本身要求,定时器1用作波特率产生器。其他操纵部分在主函数中进行或附加在定时器的中断服务中,但中断服务不能处理太多操作,否则程序执行效率专门低。3.1.3程序的流程图依照单片机的特点和系统各部分的运行时序,通过多次试验,最后确定系统高效稳定工作的执行顺序为:开始→初始化并启动两个定时器→扫描按键→推断按键值→执行相应功能→完毕返回至按键扫描,其中定时器0中断服务→扫描数码管→每隔1秒猎取传感器数据,定时器1中断服务→报警推断(低温,高温,低湿,高湿),重复进行此过程,即可实现系统循环工作。详细流程图如下图所示:图3-1系统程序流程图3.2编程语言和工具的选择以及程序文件的分配3.2.1编程语言的选择从程序的流程图能够看出,系统的程序较为复杂,假如选用执行效率相对较高的汇编来书写,代码会专门长,阅读不便,同时调试也专门困难。为了提高程序的可读性和调试的便利性,选用C语言来编写。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可执行性好,而且C语言既有高级语言的特点,也有汇编语言的特点,能直接对单片机硬件进行操作,因此使用起来十分方便。因此,C语言和MCS-51单片机结合之后产生的C51语言,与标准的C语言还有一定的差不,编程的时候应该注意这些问题。除此之外,C51的强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,这使得程序代码简单,结构清晰,易于调试和维护。特不是本征库的9个函数,尽管少,但都特不有用,其头文件为intrins.h,要紧功能为按位循环左移或右移,位测试等。3.2.2编程工具的选择由于单片机种类繁多,各大公司都纷纷开发了自己的编程软件,而KEILC51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。此外,Keil还支持自动添加多款单片机的编译预处理文件,包含各类单片机的头文件,如51单片机的头文件reg51.h。3.2.3程序文件的分配通过上述分析,程序可用五个C文件来存放五个功能独立的程序模块,另外有一个公共调用的延时函数文件和主函数文件,此外,各部分还有相应的调用头文件来进行连接,从而实现了程序和硬件对应,设计模块化,调试更为方便。具体文件分配如表:表3.1系统程序文件分配3.3传感器通信程序设计由于DHT11为单总线通信器件,为了确保单片机成功与其通信,编写的程序必须严格遵守它独特的通信协议。DHT11的通信由两部分组成——握手确认和数据传送。3.3.1握手确认先来看讲明书中的时序图:图3-2传感器与单片机握手确认时序从图中能够看出,传感器和主机相互确认的过程为:未通信时,通信线保持高电平;通信开始后,主机先拉低电平至少18毫秒,用以确保传感器能够检测到主机信号,之后主机再拉高电平20~40微妙等待传感器响应;传感器响应后,先拉低电平40~50微妙,予以通知主机,再拉高电平同样的时刻之后就转入数据传输时序,握手通信也就结束。部分程序如下(DHT为通信端口)://主机与DHT11通信开始DHT=0;//主机先拉低总线电平//调用延时函数,延时18毫秒DHT=1;//再拉高总线电平//调用延时函数,延时40微妙DHT=1;//拉高电平,设置总线为输入状态if(!DHT)//假如DHT11输出低电平响应,就开始接收数据{while(!DHT);//先等待DHT响应的低电平结束40~50微秒while(DHT);//再等待DHT响应的高电平结束40~50微妙//下面开始接收数据}3.3.2数据传送依旧先来看讲明书中的时序图。图3-3传感器发送数据0时序图3-4传感器发送数据1时序从图中能够看出,在数据传输时,单片机只要按照时序检测传感器输出的电平信号即可得到一位数据,具体要求为:不管数据是0依旧1,都以12~14微妙的低电平开始,之后,若数据是0,则传感器拉高电平并保持26~28微妙;若数据是1,则传感器拉高电平并保持116~118微妙,如此连续进行,送出40位的数据。由于电平变化时刻是以微妙计算,特不小,因此写程序时必须要严格精确的操纵时刻,这在设计时有两个探究过程。(1)初期构想——定时器精确计时法晶振为12MHz时,定时器最小定时为1微妙,先声明一个大小为40的无符号字符型数组,用来存储定时器获得的40个微妙数,单片机计时过程如下:图3-5定时器计时接收数据流程那么如此就得到了40个微秒时刻数,再对这40个时刻数进行推断,得到数据0或1,从而得到温湿度数据。通过分析和试验发觉,如此处理,单片机的数据量会比较大,而且定时器的启动和关闭、数组的操作会额外花费专门多时刻,这就导致尽管定时器计得专门精确,然而总的来讲,并不是专门精确,而且传感器的输出也会有一定的误差,因此这种处理数据的方式不可取,必须寻求新的解决方案。(2)合理方案——超时修改推断法通过后期的不断实验分析,采纳以下方案较为合理:图3-6超时修改数据流程这种方案正是利用了数据0和1高电平的时刻不同来推断数据,先认为是数据0的时刻(26~28微妙),延时30微秒越过那个时刻差不多足够了,再检测数据线是否仍然为高电平,假如是高电平就修改数据为1,同时等待数据1剩下的高电平结束,分字节接收,因此程序简要如下:while(!DHT);//先出现低电平约12-14微秒,等待结束//延时30微秒,越过数据0的高电平常刻26~28微秒Temp_Data=0x00;//先判定数据为0if(DHT)Temp_Data=0x01;//假如数据0高电平超时,则修改为数据1while(DHT);//等待数据1剩下的高电平常刻结束,大约118-30=88微秒//以下为接收数据处理程序3.3.3相关问题解决方案(1)精确延时函数毫秒延时://一次for循环大约8个机器周期,加上while推断和函数调用、返回,大约共120×8+40=1000us=1msvoidDelay_ms(unsignedintms){unsignedcharTemp;while(ms--)for(Temp=0;Temp<120;Temp++);}10微秒延时://nop一次1个机器周期,加上函数调用和返回各2个周期,共6+2×2=10usvoidDelay_10us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}(2)采样传感器数据的时序安排前期设计时,定义了两个温湿度全局变量,中断使用这两个变量来显示数据;而主函数则采样传感器,修改这两个全局变量,这种看似没有问题的设计,在实验时却始终得到的是乱码数据。结合相关资料和分析实验结果后发觉,这种设计的问题就在于中断和主函数可能同时访问了这两个变量,同时主函数在修改全局变量时可能被中断打断,导致温度或湿度数据只修改了几位,就被迫送入数码管显示,显示的因此也确实是乱码了。数据的修改和显示应遵从程序执行的时序,即先修改数据再显示或先显示再修改数据。考虑到传感器通信并不复杂,且最坏情况也为25毫秒左右,因此可在中断扫描数码管之前或之后,定时1s来读取传感器,如此安排程序位置后,经调试,系统显示数据正常。3.4数码管扫描程序设计依照硬件电路的设计,数码管采纳动态扫描方式驱动,而动态扫描方式较多,在那个地点选用switch-case结构完成。在设计硬件时,为了方便在单面板上布线,共阳极数码管采纳了变码编码方式,即数码管的a~Dp段和单片机的P00~P07并不对应,实际安排为:表3.2数码管段选信号线安排因此,10个数字和报警设定显示符号的编码定义为下表方式:表3.3数码管显示符号编码注:编码为十六进制,其中“┣”和“┫”代表温度和湿度,“L”和“H”代表低和高,如数码管前两位显示“┣L”时,代表正在进行低温报警值设定。当数码管显示实时温湿度数据时,前两位显示温度,后两位显示湿度;当数码管处于报警设定时,前两位显示当前设定的内容,后两位显示设定的值,如┫H、60,表示当前设定的为湿度上限,值为60%RH。以下为显示实时温湿度数据的部分程序:switch(Seg_Order){case0:Bit4=0;P0=Seg[Temperature/10];break;//显示温度高位case1:Bit3=0;P0=Seg[Temperature%10];break;//显示温度低位case2:Bit2=0;P0=Seg[Humidity/10];break;//显示湿度高位case3:Bit1=0;P0=Seg[Humidity%10];break;//显示湿度低位}显示完毕后修改Seg_Order的程序为:Seg_Order++;Seg_Order&=0x03;//超过四位后就返回第一位,从而显示下一位数码管。3.5报警及设置程序设计报警程序包括两个部分,一为报警驱动信号,另为报警值调整。3.5.1报警驱动这部分的程序较为简单,要紧是作温湿度超限的简单推断并为蜂鸣器和LED引脚送出电平信号即可如,蜂鸣器闪耀报警时信号为Buzzer=~Buzzer;红色LED熄灭为LED_R=1。3.5.2报警值调整程序设计思路为,进入某个限值设定状态时,先修改数码管显示状态全局变量,使其显示调整结果;再进入一个死循环,在循环中扫描按键,依照不同的按键执行相应操作:结束本次调整、调整值加一或调整值减一,流程如图。图3-7报警值调整流程如此进行四次,设定四个报警点,最后再把四个子函数放入一个主调函数中,即可实现一次完整的报警调整操作。3.6按键扫描程序设计由于系统只有三个按键,个数少,可采纳if-else结构逐个扫描,采纳经济型的延时去抖动法,为了保证按键可靠被按下,实验表明,按键短按一次总的时刻大约为300毫秒,因此按键按下抖动时刻、按下时刻和按键释放抖动时刻的延时共300毫秒为宜,而键KEY1为多功能键,有长按和短按之分,具体安排如下:表3.4按键与键值分配注:多功能键KEY1可靠短按总时刻定为500毫秒,只要超过此值即认为0是长按,依旧采纳超时检测法程序简要如下。if(Key1==0)//先扫描1号按键{Delay_ms(500);//延时500毫秒越过短按时长if(Key1){While(!Key1);//等待按键释放Delay_ms(100);//长按释放去抖returnKey_M;//返回键值}else{returnKey_R}}else{//剩下程序为扫描2,3号键}3.7串口发送数据程序设计由于串口发送数据时,需要用定时器1发生波特率,而且用较高的波特率发送数据时,定时器0也不能正常工作,因此在发送数据时,两个定时器的中断服务函数都被禁止访问,因此需要关闭数码管,关闭喇叭,而且还要重新初始化定时器为产生波特率,返回时再初始化为之前状态,恢复显示与报警。因此,串口数据发送有三个问题:波特率设置,发送格式,发送方式。3.7.1波特率设置为保证单片机和PC之间通信的实时性,再考虑定时器1的本身能够设置的大小,采纳BR=2400bps的波特率比较合适。定时器采纳自动重装方式2,初值计算为:由此对单片机的串口相关内部资源设定如下:TMOD=0x20;//定时器1工作于方式2,八位自动重装计数SCON=0x50;//设置串口工作于方式1,10位为一帧的异步串行通信方式PCON=0x00;//波特率不加倍TH1=0xf3;//为定时器1写入计数初值TL1=0xf3;TR1=1;//启动定时器,开始产生波特率3.7.2数据发送格式在发送数据之前,先发送数据格式为“NUMT(℃)H(%RH)”,即数据编号、温度数据、湿度数据;再开始只发送数据,格式如“0053052”。为使发送的数据能够在PC端的接收软件“串口调试助手”上清晰明了地显示,需要对发送的数据进行转码,由十六进制码转换为ASCII码,比如,为使大小为25的温度正常显示,需要进行如下转换:String2[12]=Temperature/10+0x30;//转化为32H的ASCII码,对应显示为“2”String2[13]=Temperature%10+0x30;3.7.3发送方式由于传感器采样时刻规定为至少1s,发送数据的间隔应大于1s,为使数据可靠转换完成和成功发送,定为每2秒钟发送一次,即用定时方式发送。此外,为表征数据成功发送,在每次数据发送完成之后,单片机为黄色LED送出一个脉冲信号,闪灯一次。串口发送数据部分程序为://按照讲明书,只要向串口缓冲器SBUF送入数据,就启动一次数据发送SBUF=Temp_Data;//等待发送完成,即标志位TI为1while(!TI);//清零标志位,为下一帧发送做预备TI=0;除了这些操作之外,在每次发送数据之前先扫描按键,确定是否停止发送。最后,需要讲明的是,主函数的工作专门简单——扫描按键,选择进入报警设定状态或数据发送状态。3.8Keil综合编译和结果分析、程序下载3.8.1综合编译情况和结果分析在KEIL中新建工程,如下图所示,写入各部分的代码后,综合编译。修改错误和消除警告后,得到如下内容:图3-8KEILC51工程建立与编译编译具体结果为:Buildtarget'Target1'assemblingSTARTUP.A51...compilingMpilingDpilingRead_DHT.pilingKey_SpilingSet_ApilingDigitron_SpilingSend_Function.c...linking...***WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?READ_COM?READ_DHTCALLER1:?C_C51STARTUPCALLER2:?PR?TIMER1_SERVE?DIGITRON_SHOWProgramSize:data=68.0xdata=0code=1499creatinghexfilefrom"TAHDS"..."TAHDS"-0Error(s),1Warning(s).编译结果分析综合编译后,成功创建了下载文件,但有一个警告,合理的分析和解释如下:从编译结果来看,警告的问题是多次调用了函数Read_DHT,而函数Read_DHT又调用了函数Read_Com。第一次调用(CALLER1)是在主函数中,第二次调用(CALLER2)是在文件DIGITRON_SHOWT的中断服务函数TIMER1_SERVE中。检查工程函数调用情况发觉,串口发送数据模块和数码管显示模块,都调用了传感器数据读取模块中的函数Read_DHT。在串口发送数据模块中的调用是从主函数中转入的,而在数码管显示模块中的调用则是发生在中断服务函数内。依照编译器的要求,假如一个函数同时出现在主函数和中断服务函数中,那么程序运行可能会发生一些不可预料的结果。如同本章3.3.3部分温湿度全局变量的问题,因此这种情况一般是不同意的,但不阻碍编译完成,会予以以上内容的警告。又因为函数Read_DHT尽管被中断服务函数和主函数调用,但被调用的时序不同,即在程序执行过程中,可不能出现中断服务函数和主函数同时调用它的情况。从程序执行的时序上来看,在中断服务函数调Read_DHT读取数据予以数码管显示期间,主函数没有调用它,相反,在主函数调用Read_DHT读取数据予以串口发送期间,定时器被初始化为产生波特率,而且不同意任何中断,那么中断服务函数也就没法调用它了,因此两个地点的调用并不矛盾,可不能出现未知的结果。因此,那个警告能够不用消除。3.8.2生成HEX文件下载至单片机中再次编译工程,创建HEX下载文件,即TAHDS.hex。由于单片机AT89S52有ISP功能,能够用接头为DIP10的排线连接系统主体PCB上的ISP1插座与编程器的ISP插座,把HEX文件下载至单片机U1;或直接把单片机在编程器中烧写程序后,取下安装在系统的DIP40底座上。第四章系统后期探究优化设计简介本系统由于前期差不多差不多完成设计,在后期又探究了一系列的优化设计方案,以提升系统性能。这些设计有些差不多试验成功,同时也完成了硬件的制作和软件的设计;有些只是从理论上完成了设计,给出了可能的电路图或可行的解决方案,现简要介绍如下。4.1换用红外操纵和LCM显示的探究4.1.1红外操纵考虑到工业测控场合一般比较危险,系统的报警设定和数据传输应该用远距离无线操纵比较安全,再从系统成本方面考虑,无线电通信代价比较高,而红外线则正适合一些距离要求不是专门高的场合。红外遥控技术是一种利用红外线进行点对点通信的技术,其相应的软件和硬件技术都差不多比较成熟。它有通信设备体积小、功率低、成本低廉,信号无干扰、传输准确度高的优点。因此,它的通信缺点是只能点到点视距传输,距离有限,但这对一些要求不是专门高的场合,远距离操纵差不多足够了。本设计使用型号为HS0038或SM0038的红外发射和接收装置,对系统进行远距离操纵的探究设计。HS0038或SM0038红外系统的编码和解码操作都十分简单,同时接收头有信号整形滤波功能,输出脉冲信号与TTL电平匹配,因此只须发射和接收特定个数的脉冲即可实现编码和译码,但最少为2个脉冲,数据发送或接收帧编码格式如图所示。图4-1红外发射和接收编码格式红外发送编码方式:为使接收可靠,规定第一个码宽为3ms,码间间隔和其余的码宽均为1ms,两次发射间隔不小于10ms。此外,发射脉冲需要38KHz的载波进行高频调制。红外接收译码方式:第一位码的下降沿开始接收,假如第一位码宽小于2ms,则认为是错误的码帧,停止接收;假如码间高电平大于3ms,则接收停止,一次数据的发送和接收完成,然后依照不同的脉冲个数来执行后续的操作。由上分析可知,单片机能够实现红外的编码发送和接收译码,依照红外发射管(相当于一只LED)的参数,用小型的单片机AT89S2051(可在系统编程)即可实现按键扫描和红外发射的功能。电路原理图和PCB图如图所示:图4-2红外遥控器的电路电路分析:单片机AT89S2051作为操纵器,引脚P33~P35接三个操纵输入按键Key1~Key3,高频脉冲信号经单片机P37引脚输出,经NPN型三极管9013或8050放大电流后,驱动红外发射管输出高频脉冲。调节滑动变阻器CR1可实现发射距离的操纵。单片机采纳上电自动复位方式。程序设计思路为:利用定时器装载高频载波信号初值,采纳自动重装方式2,高八位存放定时初值0xf3,对信号输出端口执行取反操作,从而产生38KHz的高频载波。图4-3红外遥控器PCB图设计要求:红外发射管的安装位置红外发射管应该安装在PCB的边缘,便于发射红外线而不受其他器件的阻挡。此外,红外接收头的电路比较简单,如图所示。为保证系统运行的稳定性和实时性,且红外接收的第一位码为低电平,可采纳外部中断方式触发,红外接收程序的设计依旧能够采纳前述的超时修改推断法。图4-4红外遥控接收电路4.1.2LCM显示考虑到数码管显示的字符比较简单,不能显示出具体的检测变量单位,因此可用LCM来作为显示器件,清晰的表达出系统的检测数据。LCM是液晶显示模块的英文简写,它具有显示字符多,电路连接简单等诸多优点。按照显示的字符种类能够分为英文字符液晶和中文字符液晶,其中英文字符液晶除了能够显示ASCII码表20H以后的字符外,还能够显示一些专门的符号。常用的英文字符集液晶1602与单片机的连接电路如图所示:图4-51602LCM与单片机的连接电路电阻R4能够依照显示亮度的需要,选用0~10K间的固定电阻或直接用一个滑动变阻器代替;D0~D7为数据线,而最高位D7为液晶状态位,RS、R/W和E为操纵信号线。液晶显示数据时需要执行读取器件状态(RS=0,RW=1,EN=1,D7为状态)、写命令字(RS=0,RW=0,EN=高脉冲,D0~D7为命令字)和写数据(RS=1,RW=0,EN=高脉冲,D0~D7为字符编码)三种差不多操作,这些操作能够实现在液晶的某个位置显示某个字符的功能,这些操作都须遵从严格的时序。以下作简要的编程分析。(1)读操作时序图4-61602液晶的读操作时序以读器件状态为例,从时序图中能够看出,在读状态开始时,首先要拉低RS电平,拉高RW电平,进入读命令状态,稍作延时,再拉高EN电平,使能器件,再次稍作延时,开始读取D0~D7的数据,并取出D7的位值,若为1,则器件禁止操作,反之为同意操作,从而读取到器件的当前状态,读取完毕之后还应该恢复器件状态,即拉低EN电平。相关程序如下:BitTemp_Status;//声明一个状态变量RS=0;//拉低电平,命令RW=1;//拉高电平,读取EN=1;//拉高电平,使能器件_nop_();//少做延时Temp_Status=(bit)(P0&Ox80);//读取最高状态_nop_();EN=0;//恢复器件returnTemp_Status;//返回状态值(2)写操作时序图4-71602液晶的写操作时序以读器件状态为例,从时序图中能够看出,在读状态开始时,首先要拉低RS电平,拉高RW电平,进入读命令状态,稍作延时,再拉高EN电平,使能器件,再次稍作延时,开始读取D0~D7的数据,并取出D7的位值,若为1,则器件禁止操作,反之为同意操作,从而读取到器件的当前状态,读取完毕之后还应该恢复器件状态,即拉低EN电平。相关程序如下:bitTemp_Status;//声明一个状态变量RS=0;//拉低电平,命令RW=1;//拉高电平,读取EN=1;//拉高电平,使能器件_nop_();//少做延时Temp_Status=(bit)(P0&0x80);//读取最高位状态_nop_();EN=0;//恢复器件returnTemp_Status;//返回状态值(2)写操作时序图4-81602液晶的写操作时序写命令字操作和写数据操作的区不在于RS的电平不一样,按照通信要求,写命令字时,首先应读取LCM的状态,等待器件同意操作后;再拉低RS、RW和EN的电平,并向数据线上送入命令字码;然后稍作延时,拉高EN电平,产生高脉冲;最后再次延时较长时刻,待命令字写入后,恢复器件。其中写命令字的程序如下:while(LCM_Status());//等待器件同意操作RS=0;//拉低操纵线电平RW=0;EN=0;_nop_();//稍作延时之后,向数据线送入命令字P0=Temp_Data;_nop_();EN=1;//拉高电平产生高脉冲_nop_();//延时确保命令字写入_nop_();EN=0;//恢复器件状态(3)LCM的命令字和初始化步骤表4.11602LCM命令字LCM的初始化步骤为:首先不检测器件状态,写入三次命令字0x38,每次写入之后延时5ms,之后每次写入命令字或数据必须检测器件状态;再次写入命令字0x38,设置LCM的显示模式;显示模式设置完之后就能够对LCM进行字符显示或屏幕处理的操作。4.2增加实时时钟和存储芯片来记录数据的探究考虑到气象研究可能需要较长时刻内的温湿度数据,为了使系统能够长时刻的检测和记录环境中的温湿度数据,必须为系统扩展存储器和增加高精度的时钟电路。考虑到单片机I/O资源的有限性,可选用串行通信的相关器件,存储器选用芯片CSI93C86,时钟芯片选用DS1302。两款芯片简要介绍如下:(1)CSI93C86是由CSIalyst公司生产,能够定义为16位(OGR=1)或8(ORG=0)位,容量为16Kbit的串行EEPROM存储器。它通过DI引脚写入,DO引脚读出,采纳该公司先进的CMOSEEPROM浮动门工艺加工,器件能够经受1,000,000次的写入/擦除操作,片内数据保存寿命达到100年。器件采纳低功耗工艺生产、工作电压宽达1.8~6.0V、能够以3MHz的时钟信号进行数据的高速读写。(2)DS1302是由DALLAS(达拉斯)半导体公司生产的实时时钟芯片,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数,从而提供实时时钟。该芯片采纳同步串行通信,与操纵器的通信仅需三根数据线:复位线(RST)、数据线(I/O)和串行时钟线(SCLK)。同样具有低功耗、宽电压和高速通信的特点。DS1302必须外接32.768KHz的晶振,备用电源端VCC1接入一个纽扣电池或大容量的电容来提供掉电供电,确保时钟的实时性。由此,两芯片与单片机的通信电路设计如图。图4-9存储器CSI93C86与单片机的连接电路图4-10时钟芯片DS1302与单片机的连接电路因此,能够用DS1302来精确记录时刻和日期,把这两项数据发送给单片机,单片机再采样温湿度数据,汇总后存储在93C86中,从而达到记录过去特定时刻的温湿度数据。环境的温湿度一般可不能突变,具有连续性。假如每小时记录一次,记录格式为:时刻月、日、时各一个字节,温湿度各一个字节,一个数据项共有5个字节,则一片93C86可记录16×1024bit/(5×8bit)=410个数据项,也确实是大约17天的数据。假如要研究过去两周的温湿度变化情况,只需在适当时候,由单片机读出,发送给电脑即可。4.3增加照度检测电路的探究考虑到在工业、农业和家庭的某些特定环境中,可能还需要监测环境中的照度变量,因此可为系统增加照度检测电路。照度测量初期构想可使用光敏电阻和模数转换器件来进行检测,但光敏电阻阻值与照度并不呈线性关系,大致如下图所示:图4-11光敏电阻阻值与光强关系而且,光敏电阻不仅对可见光敏感,对不可见光如红外线也敏感(这常用来检测红外发射管是否完好),因此这种方案测量精度不是专门高。后期,指导老师建议用硒光电池来作为可见光敏感元件。硒光电池输出电压较小,必须把电压放大到适当值域后,再经模数转换,由单片机对比标准照度予以数据修正,最后把照度显示出来。简要过程如下:图4-12照度检测过程但硒光电池价格比较昂贵,在一些照度要求不高的的情况下,能够用光敏电阻或其他光敏材料,通过相关的算法,来实现照度的大致测量。相应测量电路设计为:图4-13用光敏电阻检测照度电路其中,相应照度算法为:例如,天气晴朗时,测得DO=0xcc,则L=8400Lx。现在,可给出系统后期探究设计的结构图、原理总图和PCB图。图4-14后期探究设计系统结构图图4-15后期探究设计原理总图图4-16后期探究设计PCB图设计要求:(1)红外接收头的安装位置红外接收头应安装在PCB的边缘,便于接收遥控器发射的红外线,如图5.11的IR1位置。(2)光敏电阻的安装方向光敏电阻的

温馨提示

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

评论

0/150

提交评论