版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【7】。图4-4蜂鸣器4.1.5温湿度传感器DHT11是一种温度和湿度传感器,具有校准的数字信号输出。湿度精度为±5%,温度精度为+-2°C,湿度范围为20%~90%,温度范围为0°C~50°C。在基于单片机的早产儿育婴箱的湿度监测电路的设计中,我们对其采集湿度信息的误差范围有所要求,故希望选择传感器的时候更加倾向于选择精确度较高的湿度传感器,使得误差值维持在±5%之间。为了方便编程,我们选择仅仅只具备一个测量温湿度功能的传感器——DHT11,它的时序简单,在物理结构方面也没有电容传感器复杂。在硬件编程过程中,首先要了解器件的引脚定义,这会告诉你这个东西应该怎么连接。要想实现单片机中控制模块与DHT11湿度传感器之间的同步通讯,只需要将其接入单片机的微处理器。由于是进行数据之间的传输,因此连接DHT11湿度传感器的DATA引脚,实现两者之间的互通互联,它们之间传递的数据形式是由整数和小数一起构成,小数部分是为了后期的扩展而存在的。此外,每次单片机与传感器之间握手的时间也很短,只需要4ms左右的时间即可以完成。STC89C52单片机的P30引脚一般只做串口通用,我们通过这个引脚连接传感器的Pin2,传感器的Pin1和Pin4电源端口与单片机的GND、VDD引脚相连。但P30引脚接入外部器件的时候,我们要保证这个引脚不受外部器件低电平的影响。如果受外部电平的影响,那么在烧写程序的时候就会出现问题。以此,我们构造串行数据电路,但这个串行数据电路是单总线形式的。这里需要注意的是,我们在电源和DHT11湿度传感器的Pin2引脚之间要添加一个上拉电阻,以控制测量湿度的范围在20M之内。DHT11温湿度传感器时一款可以同时检测温度和湿度的数字传感器,采用的是单总线接口来进行通信,输出的是数字信号,无需外接转换电路从而节省了硬件成本的开销。DHT11的四个引脚功能分别对应的是VCC、GND、悬空和数字信号输出引脚。DHT11的电路连接原理图见图所示。如下图4-5所示。图4-5DHT11图4-5DHT11温湿度传感器特性相对湿度和温度测量;全部校准,数字输出;卓越的长期稳定性;无需额外部件;超长的信号传输距离;超低能耗;4引脚安装电气特性VCC=5V,T=25℃,除非特殊标注表4-4电器特性参数条件mintypmax单位供电DC355.5V供电电流测量0.52.5mA平均0.21mA待机100150uA采样周期秒1次表4-5引脚说明pin名称注释1VDD供电3-5.5VDC2DATA串行数据,单总线3NC空脚,请悬空4GND接地,电源负极特性相对湿度和温度测量全部校准,数字输出卓越的长期稳定性无需额外部件超长的信号传输距离超低能耗4引脚安装完全互换4.2硬件模块介绍根据早产儿育婴箱的设计功能需求和总体方案,合理的选取电子元器件。完成具体的硬件设计,如图4-6所示:图4-6硬件框图1)主控主控是电路的核心部分。主控用于控制温湿度传感器,完成对数据的采集和处理。同时,同时控制液晶显示模块的数据显示和蜂鸣器的报警。该模块采用STC89C52芯片,主要有低功耗,高性能等特点,该芯片8位微控制器有8位、数据存储空间为512B、程序存储空间有8KB,可以够满足本次设计的功能要求。图4-7主控(单片机)2)数据采集数据采集模块是电路的关键部分。它是早产儿育婴箱功能的重要组成部分,苗圃育婴箱箱内的温度和湿度由温湿度传感器检测。数据采集模块使用的是DHT11温湿度传感器.DHT11温湿度传感器的测量范围:湿度20%~90%,温度0℃~50℃。满足设计要求。如图4-8所示是温湿度传感器模块,其中4脚接地GND,1脚接电源VCC。3脚为数据传输端口与单片机的P3.5相连,电阻是用来限制高低电平,当为低电平时,提供电流使其正常工作。图4-8温湿度传感器模块3)液晶显示液晶显示模块是早产儿育婴箱的窗口。医护人员可以通过液晶显示模块可以实时查看育婴箱内部的温度和湿度,也可以查看育婴箱喂养及换尿布的时间。在该设计中,该模块使用LCD1602液晶显示器,这是一种能够在屏幕上同时显示32个字符的字符型液晶显示器。液晶显示器也广泛应用于日常生活中,其主要特点是功耗低,性能高,体积小,重量轻。如图所4-9示是液晶显示模块,该模块在使用的时候需要加上位排阻,上位排阻一共有9个引脚,1脚用来接电源VCC,2~9脚与单片机的P0.0~P0.7连接;而单片机的P30口和P31口是单片机的串口数据口,P3.0和P3.1用于将程序下载到单片机内部,这部分的中心部件是LCD1602,其中寄存器端(RS)与单片机的P2.4相连,读写信号(RW)端与单片机的P2.5相连,使能端(EN)与单片机的P2.6相连,数据端(D0~D7)与单片机的P0.0~P0.7连接,VO端用来调节显示器的对比度。图4-9液晶显示模块4)报警报警模块是对早产儿育婴箱内部温湿度值和喂养及换尿布时间做警示。报警模块使用的是蜂鸣器,当育婴箱内部的温度和湿度超过或低于设定范围时,通过单片机来控制蜂鸣器报警,当喂养时间到达给定时间范围时,蜂鸣器会立即发出报警声(嘀嘀嘀),换尿布时间达到给定值时,蜂鸣器会立即发出报警声(嘀-嘀-嘀)。如图4-10所示,蜂鸣器的一端接地GND端,另一端接电源端VCC.并与单片机的P2.0端口连接,当P2.0端口为低电平时,三极管导通放大电流促使蜂鸣器报警。图4-10报警模块5)按键本次设计的是早产儿育婴箱,需要实现显示功能,并且需要通过按键对温湿度和时间进行调整,所以在设计中按键的设计就显得非常重要。按键模块是对早产儿育婴箱的温湿度的调节,还可以对喂养和换尿布时间进行调节。该部分主要由设置、加、减和停止报警4个按键组成。如图4-11所示是按键模块,其中按键的一端接地,另一端分别接单片机的I/O口的P1.4、P1.5、P1.6和P1.7,当单片的接口检测到为低电平时,说明按键此时表示的是被按下的状态。图4-11按键模块6)指示灯指示灯模块实现当早产儿育婴箱内部温湿度高于或低于设定值是对医护人员的提示,喂养和换尿布时间达到给定值时同样也起到提示的作用。该部分主要由6个LED灯组成,温度上限、温度下限、湿度上限、湿度下限、喂养指示和换尿布指示灯分别对应6个LED指示灯。如下图4-12所示,温湿度上下限的指示灯一端接着电源VCC端,另一端分别接单片的P1端口的P1.0、P1.1、P1.2和P1.3端口,喂养和换尿布的一端接电源VCC端,另一端接单片机P3端口的P3.3和P3.4接口。当模块中的条件未达到所设置值时,相应的指示灯也会变亮。图4-12指示灯模块
7)电源电路如图4-13所示是电源电路,由自锁开关和电源座子两部分组成。当电路中将电源连接,自锁开关按下,则电路中的每个部分正常工作。图4-13电源电路8)晶振电路如图4-14所示是晶振电路,是电路中最重要的一部分。该部分有两个相同大小的电容和一个12MHZ的晶振组成,晶振的两端分别接单片机的XTAL1和XTAL2端。他的主要作用是为电路提供时钟频率,内部所有指令都是建立在晶振电路的基础上的。频率越高,运行速度越快。图4-14晶振电路5软件设计5.1开发工具5.1.1KeiluVision4KeiluVision4的产品到目前为止使用的有KeilMDK-ARM,KeilC51,KeilC166和KeilC251共四种。KeiluVision4在2009年2月宣布窗口管理系统,该系统比以前更灵活,使用多个监视器为用户节省时间,并可视地提供窗口的位置,以便从任何地方完全控制。用户打开一个新的用户界面,以充分利用屏幕空间,更有效地组织多个窗口,为用户提供简单,高性能的开发应用程序环境。新版KeiluVision4支持许多最新的ARM芯片,同时增加了一些新功能。2011年3月,ARM宣布将最新版本的KeiluVision4集成到最新的RealViewMDK开发工具中。其编译和调试功能可与ARM设备匹配。特征:1)最新的Keiluvision4,目的是提高开发工作人员的编程速度,能够用最快的速度,有效的进行程序开发。2)在之前的功能上uVision4在窗口增加了一个新的窗口管理系统,可以将uVision4窗口拖放到任何地方,支持多任务和多窗口显示。3)uVision4在uVision3功能基础之上,新增加一些应用方便的功能。4)uVision4有多任务显示窗口和灵活的窗口管理系统5)uVision4在窗口浏览窗口的同时显示外部寄存器的所有信息6)uVision4能够将多个调试的窗口一起保存5.1.2AltiumDesignerAltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要在操作系统中运行。原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术可与AltiumDesigner完美的结合,为用户提供完美的设计解决方案,方便用户使用,熟练操作这一款软件使使用者,在设计电路的过程中,可以提高电路设计的速度和精度。市场上最高版本目前为:AltiumDesigner19.0.12。主要功能原理图设计印刷电路板设计FPGA的开发嵌入式开发PCB设计封装库设计5.2系统软件的设计5.2.1总体功能设计本设计的软件功能由温湿度检测、喂养和换尿布时间三个功能组成,根据早产儿育婴箱的功能可知流程图如下:图5-1软件流程图如上图所示是早产儿育婴箱的总体流程图。当育婴箱通电时显示器和温湿度传感器初始化,按键扫描,设置温度上下限值和湿度的上下限值,如果当前检测的温湿度超过之前设定的温湿度上下限值时,然后蜂鸣器报警指示灯亮。如果喂养和换尿布时间超过之前设定的时间,蜂鸣器报警指示灯亮,目的是提醒用户。主程序:voidmain(){ unsignedintcount; shorttemperature; shorthumidity; lcd_init(); Timer0Init(); lcd_write_str(0,0,"Tem:00CHum:00%"); lcd_write_str(0,1,"F:00:00C:00:00");Change_count= cshi*3600+cfen*60; Feed_count=fshi*3600+ffen*60; while(1) { keyscan(); if(setn==0) { if(count++>=10) { count=0; ET0=0; RH(); ET0=1; //读出温湿度,只取整数部分 humidity=U8RH_data_H; temperature=U8T_data_H; lcd_write_char(4,0,temperature/10+0x30); lcd_write_char(5,0,temperature%10+0x30); lcd_write_char(13,0,humidity/10+0x30); lcd_write_char(14,0,humidity%10+0x30); if(temperature<=tl) led1=0; else led1=1; if(temperature>=th) led2=0; else led2=1; if(humidity<=hl) led3=0; else led3=1; if(humidity>=hh) led4=0; else led4=1; if((temperature<=tl)||(temperature>=th)||(humidity<=hl)||(humidity>=hh)) { if(FeedFlag==0&&ChangeFlag==0) beep=0; } else { beep=1; } } lcd_write_char(2,1,Feed_count/3600/10+0x30); lcd_write_char(3,1,Feed_count/3600%10+0x30); lcd_write_char(5,1,Feed_count%3600/60/10+0x30); lcd_write_char(6,1,Feed_count%3600/60%10+0x30); lcd_write_char(11,1,Change_count/3600/10+0x30); lcd_write_char(12,1,Change_count/3600%10+0x30); lcd_write_char(14,1,Change_count%3600/60/10+0x30); lcd_write_char(15,1,Change_count%3600/60%10+0x30); if(FeedFlag==1) { fled=0; } else { fled=1; } if(ChangeFlag==1) { cled=0; } else { cled=1; } } }}5.2.2LCD1602显示功能LCD1602主要显示早产儿育婴箱的当前检测温湿度、温度上限、温度下限、湿度上限、湿度下限、喂养时间和换尿布时间八个值。LCD1602显示流程图:图5-2LCD流程图如图5-2所示是LCD流程图,当电路板通上电源后LCD初始化,将检测到的数据显示到LCD显示器上,检测是否有数据如果有数据返回去继续检测是否有数据,如果没有数据则显示之前的数据。5.2.2DHT11温湿度传感器温湿度传感器进行收集数据,收集当前温度和湿度的值,并将其显示到LCD显示屏上。DHT11流程图如下:图5-3DHT11流程图如图5-3所示DHT11流程图,当电路连接到电源时,驱动DHT11温湿度传感器同时读取当前温度值和湿度值,如果没有检测到数据,返回继续检测数据。如果检测到数据则进行数据处理。
6测试6.1软件测试图6-1软件测试结果如图6-1软件测试结果所示,软件测试没有错误,也就是说,当该程序下载到电路板时,可以实现温度和湿度的检测,当温度和湿度高于或低于检测的测量值时,会通过蜂鸣器对使用者加以提醒,通过按键调节可以实现最佳温度的调节,喂养及换尿布时间的提醒,当时间到达设定的预先值时,蜂鸣器会发出警报。实现使用提醒。6.2硬件测试:该设计通过测试能实现温度和湿度的检测、喂养和换尿布的时间监控。通过按键对温湿度进行调节。但是育婴箱的恒温功能由于时间原因没有实现。当电源接通时,通过温湿度传感器(DHT11)检测当前温度值和是湿度值。假设检测到当前温度和湿度值分别为27℃、19%。然后蜂鸣器将报警,温度下限指示灯和湿度下限指示灯将亮起。可以按停止警报按钮停止警报。如图6-2所示图6-2温湿度下限指示灯亮当温度参数通过按键调节到适当的值时,温度报警就会停止,相应的指示灯也会灭掉。如图6-3所示图6-3温度下限指示灯灭当湿度参数通过按键调节到适当的值时,温度报警就会停止,相应的指示灯也会灭掉。如图6-3所示图6-4湿度下限指示灯灭当喂养和换尿布的检测时间到达时,相应的指示灯也会亮,如下图所示:图6-5喂养指示灯和换尿布指示灯亮
7总结毕业论文是学校检测学生的教学环节,是教学计划的组成部分,这是从大学毕业的唯一途径。我的毕业论文已经写好了。我认为在撰写论文的过程中,在孙凌老师的精心指导下,我能顺利完成毕业论文。在此郑重的向孙老师和在论文完成的过程中帮助过我的老师说一声谢谢。在写论文的过程中,我的收获也很大。首先,理论知识是毕业论文的基础。该论文是对该大学四年知识的最终测试,也是对大学四年所学知识最后的检验。所以,扎实的理论的知识是完成毕业论文的关键,换句话说,毕业论文的一半是具有扎实的理论知识。其次,毕业论文对检索能力和创作能力的要求比较高。毕业论文不仅仅是对理论的掌握,还有对语言组织能力和表达能力的运用。一篇好的论文不是写出来的,而是通过精心修改出来的,这需要足够的耐心和用心。在写论文的过程中,我遇到很多问题,有些是在我的知识范围之外,就会出现焦急的情绪,但是心里想着还是不能放弃,通过适当的调节情绪,在老师的精心帮助下与同学的相互讨论,最终完成了论文初稿。在写论文的过程中越是不懂得东西才要学,最重要的学习途径是同学之间的讨论,论文完成之后这是体验最深的一点。另外,能够广泛的搜集资料和查阅文献,能够提高论文的说服力。最后,尊重期刊是大学生的底线。撰写毕业论文是一件比较严谨而严肃的事情,也是检测大学生诚实守信的一个过程可以大量查阅、查找,也可以引用,但是不可以抄袭。这是对期刊发表者的最起码的尊重。在论文的完成过程中让我知道想要做好一件事必须有足够的毅力,就算做好也要向老师说的“要认真仔细的修改将错误降到最少”,这个过程是需要我们自己修改之后在和同学互换修改,有时候我们自己是看不出来自己的错误的。无论最后的成绩是好是坏,完成论文的时间将是我生命中最宝贵的资产。我的大学生活即将结束,我即将迎来新的生活。论文写完了,意味着要毕业了。未来充满选择,未来也有很多不可逃避的问题,我相信未来的我也会成为一个全新的自己,继续努力、认真的去走我的人生道路。面对生活的选择,我们没有办法倒退,年轻的我们只能勇往直前,我以斗志昂扬,激情万丈态度去迎接未来。因此,我们必须踏实工作,我们应该明白,命运最终掌握在自己手中。
参考文献伍军平,韦荣忠.广州市花都区新生儿死亡原因[J].中华妇幼临床医学杂志,2015,(04):24-27.吕强,徐洪良,新生儿保温箱设计[J].医疗卫生装备,2005(12):24-26.孙惠芹,新型婴儿保温箱的设计[J].医疗卫生装备,2008(01):18-20.刘加峰,基于FPGA的婴儿保温箱监护系统设计[J].医疗卫生装备,2015(11):14-17.窦银昆,郑真.压电蜂鸣器的应用[J].压电与声光,1982,(06):21-25.庄志强,黄浩源,莫卿具.无铅压电陶瓷的研究与应用[C]中国电子学会元件分会.中国电子学会第十五届电子元件学术年会论文集.北京:中国电子学会元件编印,2008:65-71.吴宗汉,林毓伦,沈一伟.实用蜂鸣器研制技术[M].江苏:东南大学出版社,2017:1-2.陈键.传感器及应用[M].北京:北京理工大学出版社,2009代国勇.基于STM32单片机温室大棚环境的智能控制系统设计及实现[D].石家庄铁道大学,2017.陈元伟,程丛丛,冯浩.基于单片机在温室大棚中的设计与实验[J].山东工业技术,2017(07):160.张红月,程晓芳.基于单片机的大棚温湿度控制系统[J].电子世界,2017(5):156-157.马东.基于单片机农业温室温湿度监控系统的设计[J].电子技术与软件工程,2017(6):256-257.杨丽文,陈如清.基于单片机的温室大棚环境参数监测系统设计[J].科技界,2015(25):170.基于AT89S52单片机的温湿度监控系统设计[J].计算技术与自动化,2006,25(4):44-46.林曌.基于单片机的温度湿度监控系统[J].科技视界,2014,9(6):182-183.易顺明,赵海兰,袁然.基于单片机的大棚温湿度控制系统设计[J].现代电子技术,011,8(7):131-134.佟云峰.单片机原理及应用[M].北京:机械工业出版社,2006.赵鸿图.基于单片机的温度控制系统设计与实现[J].微计算机信息,2008,24(9):54-56.吴兴纯,吴瑞武,杨燕云等.基于单片机的培养箱温湿度数字解耦控制系统设[J].计算机测量与控制,2012,20(2):371-373王刚.温室温湿度控制系统设计[J].中国新技术新产品,2011,9.杨庆.蔬菜大棚多点温度测控系统的设计与实现[J].湖北民族学院学报(自然科学版),2008,2.刘向举,刘丽娜.基于单片机的智能温度测控系统的设计[J].齐齐哈尔大学学报,2012,28(03):45-48.附录Ⅰ#include"common.h"#include"lcd1602.h"#include"dht.h"externunsignedcharU8RH_data_H;externunsignedcharU8T_data_H;sbitkey1=P1^4;sbitkey2=P1^5;sbitkey3=P1^6;sbitkey4=P1^7;sbitled1=P1^0;sbitled2=P1^1;sbitled3=P1^2;sbitled4=P1^3;sbitfled=P3^3;//喂食指示灯sbitcled=P3^4;//换尿布指示灯sbitbeep=P2^0;bitFeedFlag=0;bitChangeFlag=0;unsignedchartl=32,th=34,hl=55,hh=65;unsignedcharsetn=0;ucharcshi=3,cfen=0,fshi=2,ffen=0;longChange_count=0;//换尿布时间计时longFeed_count=0;//喂食时间计时voidTimer0Init(void)//11.0592M,定时50ms{ TMOD|=0x01; TL0=0x00; TH0=0x4C; ET0=1; TR0=1; EA=1;}voiddisplay_alarm(){ lcd_write_char(4,0,tl/10+0x30); lcd_write_char(5,0,tl%10+0x30); lcd_write_char(13,0,th/10+0x30); lcd_write_char(14,0,th%10+0x30); lcd_write_char(4,1,hl/10+0x30); lcd_write_char(5,1,hl%10+0x30); lcd_write_char(13,1,hh/10+0x30); lcd_write_char(14,1,hh%10+0x30);}voidkeyscan(){ if(key1==0) { delay_ms(10); if(key1==0) { while(key1==0); ET0=0; TR0=0; beep=1; setn++; if(setn>8) { setn=0; lcd_write_com(0x0c); lcd_write_str(0,0,"Tem:00CHum:00%"); lcd_write_str(0,1,"F:00:00C:00:00"); Change_count= cshi*3600+cfen*60; Feed_count=fshi*3600+ffen*60; ET0=1; TR0=1; } if(setn==1) { lcd_write_char(2,1,fshi/10+0x30); lcd_write_char(3,1,fshi%10+0x30); lcd_write_char(5,1,ffen/10+0x30); lcd_write_char(6,1,ffen%10+0x30); lcd_write_char(11,1,cshi/10+0x30); lcd_write_char(12,1,cshi%10+0x30); lcd_write_char(14,1,cfen/10+0x30); lcd_write_char(15,1,cfen%10+0x30); lcd_write_com(0x80+0x40+3); lcd_write_com(0x0f); } if(setn==2) { lcd_write_com(0x80+0x40+6); lcd_write_com(0x0f); } if(setn==3) { lcd_write_com(0x80+0x40+12); lcd_write_com(0x0f); } if(setn==4) { lcd_write_com(0x80+0x40+15); lcd_write_com(0x0f); } if(setn==5) { lcd_write_str(0,0,"Tml:CTmh:C"); lcd_write_str(0,1,"Hml:%Hmh:%"); display_alarm(); lcd_write_com(0x80+5); lcd_write_com(0x0f); } if(setn==6) { lcd_write_com(0x80+14); lcd_write_com(0x0f); } if(setn==7) { lcd_write_com(0x80+0x40+5); lcd_write_com(0x0f); } if(setn==8) { lcd_write_com(0x80+0x40+14); lcd_write_com(0x0f); } } } if(key2==0) { delay_ms(10); if(key2==0) { while(key2==0); if(setn==1) { fshi++; if(fshi==99)fshi=0; lcd_write_char(2,1,fshi/10+0x30); lcd_write_char(3,1,fshi%10+0x30); lcd_write_com(0x80+0x40+3); lcd_write_com(0x0f); } if(setn==2) { ffen++; if(ffen==60)ffen=0; lcd_write_char(5,1,ffen/10+0x30); lcd_write_char(6,1,ffen%10+0x30); lcd_write_com(0x80+0x40+6); lcd_write_com(0x0f); } if(setn==3) { cshi++; if(cshi==99)cshi=0; lcd_write_char(11,1,cshi/10+0x30); lcd_write_char(12,1,cshi%10+0x30); lcd_write_com(0x80+0x40+12); lcd_write_com(0x0f); } if(setn==4) { cfen++; if(cfen==60)cfen=0; lcd_write_char(14,1,cfen/10+0x30); lcd_write_char(15,1,cfen%10+0x30); lcd_write_com(0x80+0x40+15); lcd_write_com(0x0f); } if(setn==5) { if(th-tl>1) tl++; display_alarm(); lcd_write_com(0x80+5); lcd_write_com(0x0f); } if(setn==6) { if(th<99) th++; display_alarm(); lcd_write_com(0x80+14); lcd_write_com(0x0f); } if(setn==7) { if(hh-hl>1) hl++; display_alarm(); lcd_write_com(0x80+0x40+5); lcd_write_com(0x0f); } if(setn==8) { if(hh<99) hh++; display_alarm(); lcd_write_com(0x80+0x40+14); lcd_write_com(0x0f); } } } if(key3==0) { delay_ms(10); if(key3==0) { while(key3==0); if(setn==1) { if(fshi==0)fshi=99; fshi--; lcd_write_char(2,1,fshi/10+0x30); lcd_write_char(3,1,fshi%10+0x30); lcd_write_com(0x80+0x40+3); lcd_write_com(0x0f); } if(setn==2) { if(ffen==0)ffen=60; ffen--; lcd_write_char(5,1,ffen/10+0x30); lcd_write_char(6,1,ffen%10+0x30); lcd_write_com(0x80+0x40+6); lcd_write_com(0x0f); } if(setn==3) { if(cshi==0)cshi=99; cshi--; lcd_write_char(11,1,cshi/10+0x30); lcd_write_char(12,1,cshi%10+0x30); lcd_write_com(0x80+0x40+12); lcd_write_com(0x0f); } if(setn==4) { if(cfen==0)cfen=60; cfen--; lcd_write_char(14,1,cfen/10+0x30); lcd_write_char(15,1,cfen%10+0x30); lcd_write_com(0x80+0x40+15); lcd_write_com(0x0f); } if(setn==5) { if(tl>0) tl--; display_alarm(); lcd_write_com(0x80+5); lcd_write_com(0x0f); } if(setn==6) { if(th-tl>1) th--; display_alarm(); lcd_write_com(0x80+14); lcd_write_com(0x0f); } if(setn==7) { if(hl>0) hl--; display_alarm(); lcd_write_com(0x80+0x40+5); lcd_write_com(0x0f); } if(setn==8) { if(hh-hl>1) hh--; display_alarm(); lcd_write_com(0x80+0x40+14); lcd_write_com(0x0f); } } } if(key4==0) { delay_ms(10); if(key4==0) { while(key4==0); if(ChangeFlag==1) { Change_count= cshi*3600+cfen*60; cled=1; ChangeFlag=0; } if(FeedFlag==1) { Feed_count=fshi*3600+ffen*60; fled=1; FeedFlag=0; } beep=1; } }}voidmain(){ unsignedintcount; shorttemperature; shorthumidity; lcd_init(); Timer0Init(); lcd_write_str(0,0,"Tem:00CHum:00%"); lcd_write_str(0,1,"F:00:00C:00:00");Change_count= cshi*3600+cfen*60; Feed_count=fshi*3600+ffen*60; while(1) { keyscan(); if(setn==0) { if(count++>=10) { count=0; ET0=0; RH(); ET0=1; //读出温湿度,只取整数部分 humidity=U8RH_data_H; temperature=U8T_data_H; lcd_write_char(4,0,temperature/10+0x30); lcd_write_char(5,0,temperature%10+0x30); lcd_write_char(13,0,humidity/10+0x30); lcd_write_char(14,0,humidity%10+0x30); if(temperature<=tl) led1=0; else led1=1; if(temperature>=th) led2=0; else led2=1; if(humidity<=hl) led3=0; else led3=1; if(humidity>=hh) led4=0; else led4=1; if((temperature<=tl)||(temperature>=th)||(humidity<=hl)||(humidity>=hh)) { if(FeedFlag==0&&ChangeFlag==0) beep=0; } else { beep=1; } } lcd_write_char(2,1,Feed_count/3600/10+0x30); lcd_write_char(3,1,Feed_count/3600%10+0x30); lcd_write_char(5,1,Feed_count%3600/60/10+0x30); lcd_write_char(6,1,Feed_count%3600/60%10+0x30); lcd_write_char(11,1,Change_count/3600/10+0x30); lcd_write_char(12,1,Change_count/3600%10+0x30); lcd_write_char(14,1,Change_count%3600/60/10+0x30); lcd_write_char(15,1,Change_count%3600/60%10+0x30); if(FeedFlag==1) { fled=0; } else { fled=1; } if(ChangeFlag==1) { cled=0; } else { cled=1; } } }}voidTim0_str()interrupt1{ staticuintcount=0; TL0=0x00; TH0=0x4C; count++; if(setn==0) { if(FeedFlag==0) { if(count<=10) lcd_write_char(4,1,':'); else lcd_write_char(4,1,''); } else { lcd_write_char(4,1,':'); if(count==3) beep=1; if(count==7) beep=0; if(count==10) beep=1; if(count==14) beep=0; if(count==17) beep=1; if(count==20) { beep=1; } } if(ChangeFlag==0) { if(count<=10) lcd_write_char(13,1,':'); else lcd_write_char(13,1,''); } elselcd_write_char(13,1,':'); } if(count>=20) { count=0; if(ChangeFlag==1)beep=~beep; if(Feed_count>0) { Feed_count--; } else { FeedFlag=1; } if(Change_count>0) { Change_count--; } else { ChangeFlag=1; } }}延时程序:voiddelay_ms(ucharnms){#ifMAIN_Fosc==12000000Lunsignedchari,j;do{i=2;j=239;do{while(--j);}while(--i);}while(--nms);#elifMAIN_Fosc==11059200Lunsignedchari,j;do{_nop_();i=2;j=199;do{while(--j);}while(--i);}while(--nms);#endif}Lcd602程序:#include<reg52.h>#include<intrins.h>#include"lcd1602.h"#include"common.h"sbitRS=P2^5;sbitRW=P2^6;sbitE=P2^7;#defineDataPortP0voidlcd_clear(void){lcd_write_com(0x01); delay_ms(5);}voidlcd_write_com(unsignedcharbyte){ RS=0; RW=0; E=1; DataPort=byte; _nop_(); _nop_(); delay_ms(1); E=0; }voidlcd_write_data(unsignedcharbyte){ RS=1; RW=0; E=1; DataPort=byte; _nop_(); _nop_(); delay_ms(1); E=0;}voidlcd_init(){ delay_ms(5); lcd_write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 delay_ms(5); lcd_write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 delay_ms(5); lcd_write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 delay_ms(5); lcd_write_com(0x08);//关闭显示 delay_ms(5); lcd_write_com(0x01);//清屏指令 delay_ms(5); lcd_write_com(0x06); delay_ms(5); lcd_write_com(0x0c); delay_ms(5); }voidlcd_write_char(unsignedcharx,unsignedchary,unsignedcharbyte){ if(0==y) { lcd_write_com(0x80+x); } elseif(1==y) { lcd_write_com(0x80+0x40+x); } lcd_write_data(byte);}voidlcd_write_str(unsignedcharx,unsignedchary,unsignedchar*s){ if(0==y) { lcd_write_com(0x80+x); } else { lcd_write_com(0x80+0x40+x); } while(*s) { lcd_write_data(*s); s++; } }DHT11程序:#include"dht.h"U8U8FLAG,k;U8U8count,U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 意识的课件教学课件
- 2024年建筑工程施工合同详细描述
- 2024年度战略合作合同(含合作领域)
- 春艾青课件教学课件
- 2024年度水果品牌授权合同:授权生产和销售的具体条款
- 2024年度金融服务合同:银行为客户提供2024年度综合金融服务
- 2024年专利实施许可合同:生物医药产品专利应用
- 2024年度航空器材买卖合同
- 幼儿清明课件教学课件
- 毛笔楷体课件教学课件
- 《创意改善生活》课件 2024-2025学年湘美版(2024)初中美术七年级上册
- 黄瓜育种分析
- 砂石生产各工种安全操作规程
- 2019版外研社高中英语选择性必修一~四单词总表
- 从分数到分式的教学设计
- 狭窄隧道汽车双向行PLC控制设计
- 移相整流变压器设计及试验
- 05S502阀门井图集
- 舒方特方格练习(共6页)
- 90、808系列铝合金门窗自动计算下料表
- 管道定额价目表
评论
0/150
提交评论