基于无人机的低空信息采集系统_第1页
基于无人机的低空信息采集系统_第2页
基于无人机的低空信息采集系统_第3页
基于无人机的低空信息采集系统_第4页
基于无人机的低空信息采集系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

基于无人机的低空信息采集系统LowaltitudeinformationacquisitionsystembasedonUAV目录摘要……………1关键词…………11前言………………12一级标题……………………22.1二级标题…………………22.1.1三级标题………………32.2××××………………………35结论………………8参考文献………………………9致谢……………10附录(没有附录的不标注)………11摘要:随着工业自动化发展越来越完善,各种传感器被用在了各种不同场合,自然也促进了现代农业的发展。本设计是以AT89S52单片机为核心的温湿度和二氧化碳浓度的空气检测系统,目的是实时监测农场的空气状况,温度,湿度,二氧化碳浓度。文中详细介绍了硬件设计部分,有温度检测系统,湿度检测系统,二氧化碳检测系统和LED显示屏模块及按键模块。众所周知温度,湿度,二氧化碳浓度这些条件对植物生长的影响是非常大的,不同植物对条件的需求也是不同的。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。湿度信号由HS1101传感器采集并传输给单片机处理。二氧化碳浓度信号由MG811二氧化碳传感器采集并输出电压信号,经PCF8591A/D转换器转换成数字信号后再传输给单片机处理。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、温度检测部分、湿度检测部分、二氧化碳浓度检测部分、按键模块关键词:AT89S52单片机;DS18B20温度芯片;湿度传感器HS1101;二氧化碳传感器MG811;A/D转换器PCF8591LowaltitudeinformationacquisitionsystembasedonUAVChina)Abstract:withthedevelopmentofindustrialautomationmoreandmoreperfect,varioussensorsareusedinvariousoccasions,whichnaturallypromotesthedevelopmentofmodernagriculture.ThisdesignisatemperatureandhumidityandcarbondioxideconcentrationdetectionsystembasedonAT89S52singlechipmicrocomputer.Thepurposeistomonitortheaircondition,temperature,humidityandcarbondioxideconcentrationofthefarminrealtime.Thispaperintroducesthehardwaredesignindetail,includingtemperaturedetectionsystem,humiditydetectionsystem,carbondioxidedetectionsystem,LEDdisplaymoduleandkeymodule.Asweallknow,temperature,humidityandcarbondioxideconcentrationhaveagreatinfluenceonplantgrowth,anddifferentplantshavedifferentrequirementsfortheconditions.ThetemperaturesignaliscollectedbytemperaturechipDS18B20andtransmittedtosinglechipmicrocomputerinthewayofdigitalsignal.ThehumiditysignaliscollectedbyHS1101sensorandtransmittedtoMCUforprocessing.Thesignalofcarbondioxideconcentrationiscollectedbymg811carbondioxidesensorandoutputvoltagesignal,whichisconvertedintodigitalsignalbypcf8591A/DconverterandthentransmittedtoMCUforprocessing.Thispaperalsointroducesthesoftwaredesignpart,inwhichthemodularstructureisadopted.Themainmodulesare:digitaltubedisplayprogram,temperaturedetectionpart,humiditydetectionpart,carbondioxideconcentrationdetectionpart,keymoduleKeywords:AT89S52singlechip;DS18B20temperaturechip;humiditysensorHS1101;carbondioxidesensormg811;a/Dconverterpcf85911前言随着我国科学技术的快速发展,农业现代化发展也越来越快,通过现代科学技术和工业成果来管理和发展农业,是农业现代化进程中一个必不可少的阶段。而在农业中,空气质量又是极为重要的一个因素,因为农作物的生长好坏很大程度上取决于空气质量的好坏。为了能全方面了解空气质量,制造利用先进技术构成的空气质量检测系统就很有必要,但就目前我国的空气质量检测系统发展状况来看,还有很多问题亟待解决。因此研究关于空气信息采集系统的问题符合我国农业现代化发展的进程。空气质量检测系统发展现状:采集和分析空气质量情况,为空气质量报告提供依据,都需要一套拥有先进的空气质量检测系统才能完成,一个地区的空气质量检测水平高低就需要看当地空气质量检测系统好坏。现在的空气质量检测系统一般都是由中心计算机、检测子站等部分组成,能够做到分析采集自动化处理空气质量数据,这种系统能够获取更加直观的空气质量检测数据。比如点式空气质量检测仪,有固定房式和车载式两种形式,系统正常运行时关于数据的采集和分析都是自动进行的,并且还可以把记录下来的数据传输到指定地点,因为其强大的数据传输和处理能力,就能实现远程操控和管理,减少工作量的同时还能使数据更加精准。除此之外还有一种开放式空气质量检测系统,与之前的点式系统完全不同,开放式用到的是线性采样,同时采集测量很多不同的空气参数,能够更全面地显示出所测量的空气数据,反应灵敏但同时对环境要求也更为严苛,在气候恶劣或者是空气质量不好,有较多灰尘悬浮物的话测量结果就不准确了。我国空气质量检测系统存在的问题:在有的年代,我国采取了牺牲环境来换取经济增长的方式,以求赶超世界上其它强国的发展的脚步,因而遗留下了许多环境问题,包括一些地区常年雾霾,pm2.5居高不下,所以我国对空气质量检测系统的要求就更高了。与国外相比,我国的环境空气检测系统不管是在稳定性还是使用寿命上都有着明显差距,设备更加落后,而且检测不到重金属等有毒污染物,想要检测到重金属和有机物这些有毒污染物,需要从国外进口设备。此外,全国统一的空气检测运行系统体系也没有健全,这就造成了各地检测水平不一,无法充分全面了解到全国空气环境信息。发展趋势:首先,根据各地实际情况,优先选择引用先进技术的仪器,以检测到更为全面详细的空气质量信息;其次提高生产工艺,保证生产出来的产品在使用中有良好的稳定性、精确性;同时增加检测的参数,要增加有害的重金属和一些有机物的检测,只有这样才能符合我国空气质量检测的要求。要发展全国各地的检测网络,把每个地区的空气检测信息联接起来,在全国范围内覆盖更全面、层次更深的空气检测网络,形成完整空气检测体系,实现数据共享。总之,空气环境问题是我国经济可持续发展要面临的首要问题,提高空气质量检测水平是解决这个问题的重中之重。1.1设计目的基于这种背景下,本设计旨在一个安装在无人机上用于实时检测低空空气信息的单片机系统,各个信息传感器采集到数据后传输给单片机进行处理,主要检测的空气参数是温度、湿度和二氧化碳浓度。1.2设计方案如上图所示,各类传感器采集到数据之后发送给单片机,为了便捷,温度传感器选用DS18B20和湿度传感器选用HS1101,因为它们输出的是数字信号可直接传输给单片机处理,而数字型二氧化碳传感器造价昂贵不实惠,所以使用的是MG811二氧化碳传感器,由于MG811输出的是模拟电压信号,必须经过A/D转换器转换为数字信号后才能发送给单片机进行处理,而系统的终端就是1602液晶显示屏和一个蜂鸣器,采集到的空气中的温度、湿度、二氧化碳浓度等数据经过单片机处理后就会依次显示在液晶显示屏上,而当这些数据超过初始设定值时,蜂鸣器就会发出警报,此外,还有独立按键模块对这些功能进行着控制,分别控制温度模块、湿度模块和蜂鸣报警器的开关。2硬件设计2.1电源电路用lm78系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中的lm78或lm79后面的数字代表该三端集成稳压电路的输出电压,如lm7805表示输出电压为5V,lm7909表示输出电压为负9V。因为三端固定集成稳压电路的使用方便,电子制作中经常采用。本设计电路的电源采用9V接口引入电源,再经由LM7805集成稳压芯片处理后输出5V的稳定电压,这种电源小巧玲珑,能节省下来不少空间,十分的方便。2.2单片机及其最小系统2.2.1单片机AT89S52及其介绍如图所示,AT89S52拥有8位CPU和系统可编程FLASH,它的可编程FLASH具有8K存储器。使用Atmel公司高密度非易失性存储器技术制造,同时它也兼容工业80C51的引脚和各种功能。片上Flash允许程序存储器在系统内编程,亦适于常规编程器。是一种低功耗、高性能CMOS8位微控制器,又因为其价格低廉,因此AT89S52广泛应用在了现实生活中的各种嵌入式系统中。AT89S52有2个全双工串行通信口,,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,40个引脚,2个读写口线,AT89S52可以按照常规方法编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本,同时它也可以支持在线编程。其主要性能参数如下:1、与MCS-51单片机产品兼容;2、8K字节在系统可编程Flash存储器;3、1000次擦写周期;4、全静态操作:0Hz-33MHz;5、三级加密程序存储器;6、32个可编程I/O口线;7、三个16位定时器/计数器;8、6个中断源;9、全双工UART串行通道;10、低功耗空闲和掉电模式;11、掉电后中断可唤醒;12、看门狗定时器;13、双数据指针;14、掉电标识符。2.2.2AT89S52的时钟振荡器AT89S52中有一个高增益反相放大器,其作用是用来组成内部振荡器,引脚X1和X2分别是放大器的输入端和输出端,放大器、石英晶体共同构成自激振荡器,石英晶体也可以用陶瓷震荡器来代替,在这里面石英晶体和陶瓷震荡器是用作反馈元件来使用的,它们构成的自激振荡器会在电路中产生振荡电流,发出时钟信号,提供基准频率,振荡频率高,系统时钟频率就高,单片机运行的就越快,对单片机要求也就更,因此采用合适的材料匹配合适的单片机很重要。振荡电路如图所示:电容容量会影响振荡频率的高低、稳定性,若使用石英晶体,电容用30pf,若使用陶瓷振荡,电容使用40pf,同时在画电路板的时候,电路板上的电容和晶振应尽量画在靠近单片机的位置,这样才能更好地维持其稳定地产生振荡电流,才能使单片机正常工作。2.2.3AT89S52的复位电路

复位的作用是使程序自动从0000H开始执行,因此我们只要在AT89S52单片机的RST端加上一个高电平信号,并持续10ms以上即可,RST端接有一个上电复位电路,它是由一个小的电容和一个接地的电阻组成的。按键复位电路另外采用一个按钮来给RST端加上高电平信号。

如图按键复位电路,上电时C0通过R2充电,维持宽度大于10ms的正脉冲,就可以完成复位操作。当C0结束充电后,RST端出现低电平,这是CPU将正常的工作。

如果需要按键进行复位,就按下按钮S0,C0通过S0和R2放电,RST端电位将会上升到高电平,从而实现人工复位,S0松开后C3重新充电,当结束充电后,CPU将会重新工作。下图中,R2是限流电阻,阻值不可以过大,否则不能起到复位作用。2.3湿度传感器HS1101HS1101湿度传感器采用专利设计的固态聚合物结构,其稳定性和灵敏度都很强,不需要校准的完全互换性。HS1101湿度传感器在电路中可以用一个电容代替,随着空气湿度从0%-100%的变化,其电容容量也会发生从160pf到200pf的变化,误差极小,响应时间短,温度系数为0.04pF/C。所以对湿度的测量变成对变化电容的容值检测。检测容值方案选择由555芯片构成的多谐振荡器。当电路通电时,电容HS0001被充电。当2脚的电压上升到2*VCC/3时,输出端3变为低电平,同时7脚放电,2脚电平开始下降。当2脚电平下降到VCC/3时,输出端3变成高电平。电容HS0001放电所需时间为:T1=RH4*C*㏑2放电结束后,VCC将通过RH3、RH4向电容充电。2脚电压由VCC/3上升到2*VCC/3所需的时间为:T2=C*㏑2*(RH4+RH3)当3脚上升到2*VCC/3时,电路又翻转为低电平。无限循环,于是可以用单片机的外部中断口检测这个在输出端3脚得到的矩形波,通过计算可以计算出其频率,计算频率公式为:f=1/(T1+T2)=C*㏑2*[1/(2*RH4+RH3)]电容公式为:C=1/(2*RH4+RH3)*f*㏑2于是就可以把计算得到的电容值C与空气湿度对应起来。2.4温度传感器DS18B20传统温度的传感器需要将测量的温度转化为模拟信号,再由A/D转换器转化为数字信号,再由单片机对其进行处理。数模信号混合电路想要做到起来并不简单,因此选用输出信号为数字信号的DS18B20来完成此设计。温度信号由DS18B20来获取,DS18B20是美国DALLAS公司生产的集成温度传感器。它将测温、处理及输入输出等模拟+数字电路集成在一块形似三极管的三端芯片上,体积小巧、功能强大,且数据的输入输出只需要一跟端口线,并且可在一根总线上并联多个芯片以实现多点测温,有三个引脚,其中DQ(2)为输出端。测量范围为-50℃到120℃,并其输出的是数字信号,具有体积小,硬件开销低,抗感染能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样。主要根据应用场合的不同而改变其外观。如上图所示,集成温度传感器的数据接口直接与单片机的P2.5口相连在电路中需要加一个10K的上拉电阻。2.5二氧化碳传感器MG811二氧化碳传感器主要有以下五种:1、催化剂传感器,它以催化剂为基本元件,在一定条件下可燃气体在其表面催燃。2、热导池二氧化碳传感器,利用二氧化碳热导率,利用热导元件在多个气体热导率相差较大时分辨气体。3、红外线二氧化碳传感器,近年来出现在市场上的新型设备,其原理是利用传感器里的红外线发射器发射出红外线,照射在空气中的二氧化碳上,当二氧化碳浓度发生变化时,对应的红外返回波也会发生变化,但造价昂贵。4、电化学二氧化碳传感器,利用一些气体的电化学原理,让空气中的二氧化碳与之发生反应,从而得到相关参数,目前被广泛使用,且价格便宜。5、半导体二氧化碳传感器,利用半导体金属氧化物,在一定空气条件下发生电流波动,从而得到气体相关数据,但是这种传感器受温度影响特别大,所以已经被淘汰不再使用。在这五种传感器中,电化学传感器较为稳定且反应灵敏,更是价格便宜,所以选择电化学传感器。而MG811是电化学传感器中物美价廉的存在,拥有良好的选择性和灵敏度,并且不会受外界温度变化的影响,十分稳定。其特点主要有:1、具有TTL电平信号灯输出指示,工作电压信号灯指示;2、双路信号输出(模拟量信号和TTL高低电平信号);3、TTL电平输出有效信号为低电平。(当检测气体浓度超过设定值时,输出低电平时信号红色指示灯亮,该口可直接接单片机I0);4、模拟量输出电压0~2V,浓度越低输出电压越高;5、对空气中的二氧化碳感应十分灵敏;6、使用寿命长并且在试用期间十分稳定;7、响应恢复特别快;8、可插拔的陶瓷探头,装上卸下都不费力气,隔绝热量也更好,而且陶瓷更有很好的散热能力;当把MG811传感器置于有CO2的空气中时,传感器里的感应部件会和二氧化碳发生反应:

负极反应:

2CO2+02+4Li++4e-=2Li2CO3;

正极反应:

02+4Na++4e-=2Na20;

总电极反应:

CO2+2Li++Na2O=2Na++Li2O3;

传感器的两极之间的电势差(E)符合了能斯特方程:

E=c-(A*T)/(2F)1n(P(C02));

上式中:

P(C02)——C02分压;c——常量;A——气体常量;T-绝对温度(K);

F——法拉第常量。

在外电路输出电压到元件上会使其加热,加热到一定温度后,元件会在它的两端输出电压信号,这个时候可以把元件等效于电池,并且它的值符合上面的方程方程。同时在测量的时候对元件的阻抗也有要求,必须控制在一百到一千欧姆之间,电流也必须小于1pA。

灵敏度特性:

如图给出了传感器的灵敏度特性曲线。

可以看出MG811在不同二氧化碳浓度下输出不同电压,浓度越高,电压越低。下图为相应回复曲线,可以看出MG811的响应恢复特性很好。因为MG811二氧化碳传感器元件会输出一个电压信号,二氧化碳浓度越低输出电压越高,所以本设计在电路中用一个滑动变阻器代替MG811传感器,输入0—5v,对应二氧化碳浓度为10000—0ppm。2.6A/D转换模块此次设计选用PCF8591A/D转换器,PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。PCF8591具有4个输入接口、1个输出接口和1个串行I2C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,可以在I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。PCF8591引脚图它的各引脚功能:VREF:基准电源端。AIN0~AIN3:模拟信号输入端。A0~A2:引脚地址端。VDD、VSS:电源端。(2.5~6V)SDA、SCL:I2C总线的数据线、时钟线。OSC:外部时钟输入端,内部时钟输出端。EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。AGND:模拟信号地。AOUT:D/A转换输出端。PCF8951主要特性(1)单独供电(2)传感器的电压范围2.5V-6V(3)低待机电流(4)通过I2C总线串行输入/输出(5)传感器通过3个硬件地址引脚寻址(6)传感器的采样率由I2C总线速率决定(7)4个模拟输入可编程为单端型或差分输入(8)自动增量频道选择(9)传感器的模拟电压范围从VSS到VDD(10)其中内置跟踪保持电路(11)8-bit逐次逼近A/D转换器通过1路模拟输出实现DAC增益2.71602液晶显示模块本设计采用了1602液晶显示,接口简单,控制方便。同时采用了并行接口方式,因为本设计用到的单片机I/O口不多。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,但它不能很好地显示图形。LCD1602液晶模块的读/写操作、显示屏和光标的操作都是通过指令编程来实现的(其中,1为高电平,0为低电平),分别介绍如下。(1)指令1:清屏。指令码01H,光标复位到地址00H。(2)指令2:光标复位。光标复位到地址00H。(3)指令3:输入方式设置。其中,I/D表示光标的移动方向,高电平右移,低电平左移;S表示显示屏上所有文字是否左移或右移,高电平表示有效,低电平表示无效。(4)指令4:显示开关控制。其中,D用于控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C用于控制光标的开与关,高电平表示有光标,低电平表示无光标;B用于控制光标是否闪烁,高电平闪烁,低电平不闪烁。(5)指令5:光标或字符移位控制。其中,S/C表示在高电平时移动显示的文字,低电平时移动光标。(6)指令6:功能设置命令。其中,DL表示在高电平时为4位总线,低电平时为8位总线;N表示在低电平时为单行显示,高电平时双行显示;F表示在低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。(7)指令7:字符发生器RAM地址设置。(8)指令8:DDRAM地址设置。(9)指令9:读忙信号和光标地址。其中,BF为忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平则表示不忙。(10)指令10:写数据。(11)指令11:读数据。[1]2.8蜂鸣器报警模块当温湿度或者二氧化碳浓度超过初始设定值时,单片机就会给蜂鸣器接口输入一个低电平,而与蜂鸣器相连的三极管相当于一个开关,基极输入低电平三极管就导通,蜂鸣器发出警报。2.9键盘部分键盘部分如图所示。因为整体电路需要按键不多,所以不采用矩阵按键,如果哪个键被按下,单片机就会检测到对应接口的低电平,从而给出相应指令。其中,通过编程使S4能控制报警器和报警器指示灯的开关,S5和S6分别控制温度传感器和湿度传感器。2.10PCB及整体电路原理图整体电路原理图如图所示:PCB图如图所示:3软件设计3.1DS18B20温度部分:DS18B20使用在单片机上非常简单,需要先初始化传感器,再由传感器自行采集处理温度信息,最后输出数字信号到单片机。以下是程序。voidinit_18B20(void){ reset_18B20();//复位 wbyte_18B20(0xcc);//忽略检查ROM匹配操作 wbyte_18B20(0x4e);//设置写模式 wbyte_18B20(0x25);//设置温度的上限为37摄氏度 wbyte_18B20(0x1c);//设置温度的下限为28摄氏度 wbyte_18B20(0x1f);//写配置寄存器}//传感器数据提取uintgetdat_18B20(){ floatc; uinttemp; ucharh,l; conv_18B20(); reset_18B20(); delay_18B20(1);//稍作延时 wbyte_18B20(0xcc); wbyte_18B20(0xbe);//读取温度数据的命令 l=rbyte_18B20();//读取低8位 h=rbyte_18B20();//读取高8位 flag_18B20=h&0x80; if(flag_18B20) //最高位为1,温度为负 { temp=h; temp=temp<<8;//把读到的高8位数据装到temp的高8位 temp=temp|1; temp=~temp+1; c=temp*0.0625; temp=c*100+0.5;//扩大一百倍,精确到小数点后两位 } else { temp=h; temp=temp<<8; temp=temp|1; c=temp*0.0625; temp=c*100+0.5; } return(temp);//温度整数部分2位,小数部分2位}3.2湿度部分:因为HS1101采集到的信息通过NE555P处理后输出的是一定频率的方波,即单片机接收到的信号也是方波,所以就需要用到单片机的计数器在一段时间内计数,从而能计算出其频率,再计算出其电容,最后与空气湿度对应起来。//对定时器和外部中断初始化的程序段voidinit_freq(){ TMOD=0x02; TH0=56; TL0=56;//定时器0,计时中断一次为200us EA=1; ET0=1; EX0=1;//开外部中断0 IT0=1;//跳变沿触发方式 TR0=1;}//中断程序段voidEX0_int()interrupt0{ num++;}voidT0_timer0()interrupt1{ time++; if(time==500)//200us*500=100ms,此乃100ms的定时 { EX0=0;//先关掉外部中断 TR0=0;//再关掉定时器 time=0;//复位十分重要 display_freq(); num=0;//同时把中断计数清零 TR0=1;//开启定时 EX0=1;//开启外部中断 }}3.3A/D转化及二氧化碳浓度计算部分bitIsend(unsignedcharsla,unsignedchara){Start_I2c();//启动总线SendByte(sla);//发送器件地址if(ack==0)return(0);SendByte(a);//发送数据if(ack==0)return(0);Stop_I2c();//结束return1;}unsignedcharIrcv(unsignedcharsla){unsignedchara;.Start_I2c();//启动SendByte(sla+1);//发送地址if(ack==0)return(0);a=RcvByte0;//读取数据Ack_I2c(1);//非就位答应Stop_I2c();//结束return(a);}voidmain(){uintC02;//二氧化碳浓度计算部分send(PCF8591,0x43);C02=rcv(PCF8591);CO2=CO2-255;CO2=abs(CO2);CO2*=39;)3.4液晶显示部分:液晶显示的程序已经模块化了,直接用就行//初始化voidinit_1602(){ lcden=0; wcom_1602(0x38);//数据总线8位,显示两行5*7点阵/字 wcom_1602(0x0c);//开显示功能,且光标不显示,不闪烁wcom_1602(0x01);//显示清屏 wcom_1602(0x06);//写入一个字后光标后移,且屏幕不移动}delay_1602(uintx)//延迟x毫秒{uinti,j;for(i=0;i<x;i++)For(j=0;j<100;j++);}//显示程序voidwcom_1602(uchara)//写指令{ lcdrw=0; lcdrs=0; P0=a; lcden=0;delay_1602(2); lcden=1;delay_1602(2); lcden=0;}voidwdat_1602(ucharb)//写数据{ lcdrw=0; lcdrs=1; P0=b; lcden=0;delay_1602(2); lcden=1;delay_1602(2); lcden=0;}voidwsingle_1602(ucharh,ucharl,uchardat)//显示字符{ ucharc; if(h==1)c=0x80; if(h==2)c=0xc0; c=c+l-1; wcom_1602(c); wdat_1602(dat);}voidwstring_1602(ucharh,ucharl,uchar*dat)//显示字符串{ ucharc; uchar*p=dat; if(h==1)c=0x80; if(h==2)c=0xc0; c=c+l-1; wcom_1602(c); while(*p!='\0'){wdat_1602(*p);p++;} p=0;}3.5按键部分S4能控制报警器和报警器指示灯的开关,S5和S6分别控制温度传感器和湿度传感器。程序如下:sbitDQ=P2^5;//DS18B20温度传感器与单片机接口sbitSD=P3^2;//HS1101湿度传感器与单片机接口sbitBELL=P2^6;//警报器接口sbitled0=P2^3;//警报器指示灯接口sbitled1=P2^4;//传感器指示灯接口sbitkey1=P2^2;//三个独立按键接口sbitkey2=P2^1;sbitkey3=P2^0;uinti;voiddelay(uintunsignedintx)//延迟x毫秒{unsignedinti,j;

for(i=0;i<x;i++)

for(j=0;j<100;j++);}voidjingbao(){if(key1==0)//按键按下{delay(10);//延时10msif(key1==0)//确认按键按下{i++;i=i%2;switch(i){case0:led0=1;BELL=1;break;//关闭警报器和其指示灯case1:led0=0;BELL=0break;//开启警报器和其指示灯default:break;}}while(!key1);//等待按键释放}voidwendu(){if(key2==0){delay(10);if(key2==0){i++;i=i%2;switch(i){case0:DQ=0;break;//关闭温度传感器case1:DQ=0;break;//开启温度传感器default:break;}}while(!key2);//等待按键释放}voidshidu(){if(key3==0){delay(10);if(key3==0){i++;i=i%2;switch(i){case0:SD=0;break;//关闭湿度传感器case1:SD=1;break;//开启湿度传感器default:break;}}while(!key3);//等待按键释放}3.6主程序为了简化 主程序,使用了头文件包含的形式:#include<1602.h>#include<DS18B20.h>#include<freqchk.h>#include<anjian.h>#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#definePCF85910x90//PCF8591AD转换器地址sbitlcdrs=P1^0;

温馨提示

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

评论

0/150

提交评论