版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪论课题的目的及意义在我们的日常生活中,特别是人员流动比较大的地方,比如学校、银行、火车站、商场、公交车、地铁等公共场所上,如果可以将人数实时的统计出来,将环境的温湿度,时间信息显示出来,便可以给我们的生活带来诸多便利。虽然电子计数器是日常生活中的重要组成部分,但计数器种类繁多,如何选择方便的多功能计数器已成为核心问题,计数器能否超越简单的技术功能,成为生产和生活的一把利器。而基于单片机的自习室监控系统能够满足广大用户的需求,实时性好,具有精度高、技术稳定、体积小、功能强、可靠性高、性能价格比高等特点。人数统计系统在平时生活中应用非常的广泛,截止目前,它已经有了30多年的发展史。在不同时间段,设计师们对电子计数器的要求也不同。最开始的时候,设计师所追求的只是,扩宽技术的范围,提高技术精确度,稳定度等。同时,这也是人们衡量电子计数器的技术水平,判定电子计数器价格高低的重要来源和依据。目前,电子计数器基本技术已经逐渐完善和成熟,对于现代技术来说可以轻松地将电子计数器的计数上限值扩展到无限大。就目前来说,迅速发展起来的单片机微型计算机,已经被应用到各个领域,在很大的程度上[1],生产技术水平的提高也是对单片机技术产品和设备的完善。因此,对于一些可以掌握单片机技术并且开发、应用和管理维护的一些智能化产品高级工程技术人才,得到众多企业的青睐。单片机拥有功能强、体积很小、可靠性高、在性能方面还有价格比高等很多的优点。单片机已经成为实现工业生产技术进步的重要关键。如果真要做到完美实现和对接,还是需要设计者的刻苦钻研,不能安于表面现状,因为单片机的创新和发展有非常大的潜力。电子计数器是一款很多功能的电子测量仪器,非常的实用,可以测量出一定时间内输入的脉冲数目,而最终结果也是以数字的形式显示。1.2课题国内外的发展随着科学技术的发展,国外美国早就在一些大型购物中心、商场等地方安装客流量自动计数器,而国外欧尚的购物中心也使用客流计数器来对进店人数进行统计,达到很好的效果,还有其他包括麦德龙[2]、易初莲花等;在内的多家购物中心都在入口或者电梯口处安装了客流计数器,客流量计数器一般采用红外对射技术,有发射源和接受源分布在两侧,每当有人经过时,红外线被阻挡,以此记一人次,从而达到计数的效果。一般计数器产生的数据会先储存在电脑内部后由CPU判断有多少人进出,产生的数据可存储于电脑中,由此管理者通过数据来进行分析,进而产生商业价值。客流量作为考核购物中心运营的一个重要指标,客流量越大,商场受人们喜爱程度就越高,这在业内已经形成了一个公式。通过用每天进店的人数除以商场可经营的面积,数据如果大于0.5的时候,该商场的运营处于良性阶段,当数据如果小于0.3时,此时商场就会面临很大运营的压力。由于国外自动化发展较快,计数器与互联网相结合,可以进行远程控制,远程监测,报警也更加具有特色。计数器变得越来越高端,越来越靠近人工智能,随着更多高科技的加入,添加了更多的辅助功能,从计数到报警,这系列过程,变得更加精确,更加稳定,受到其他国家大量的学习,效仿。研究内容对于教室,自习室,商场计数设计来说,常用的有三种方案:第一种通过人工进行监测,有人现在门口,当有客人进去时,计数器按下,进行加1,这种方法很可能出现人工纰漏,检测不够精准还费时费力,数据不够精准;第二种可以通过安装压力传感器,每当接收到按压的信息时,则可进行人数统计,但考虑到这种方法两个弊端:1、大面积安装压力传感器费用较高,太过麻烦,当压力传感器被破坏时就会出现计数不精准的情况;2、此方法就拿用在自习室来说,当有同学在教室范围活动,并未出现人数增减,站立坐下时压力传感器感受到按压感传递信息同样会进行计数,这种方法计出的数据同样不够精准所以第二种方法也不考虑;第三种方法可以通过刷卡的方式进行计数在每个自习室门口安装一个刷卡机,给每个同学配置一张此卡,在进出教室时进行刷卡,这种方法虽然费用较低,但对于学生来说可能会出现漏刷或者多刷的现象同样计出的数据是不精准的。本次设计采用单片机进行控制,可以实现对食堂就餐人数进行统计,在疫情这个环境下,可以提高人们的生命安全,具有研究意义,设计将实现以下几点功能:可以统计进入的人数,出去的人数以及剩余的人数;可以检测环境的温湿度;可以对时间信息进行采集;可以通过按键进行相关参数的设置;检测的信息参数可以显示在屏幕上;1.3本论文章节安排本次单片机疫情环境下食堂就餐人数监控系统设计将详细的阐述其软件,硬件原理,将通过5大章节来完成论文述。具体安排如下所示:第一章:论文的起始章节主要对设计的背景意义,设计的发展状况做出了解,梳理出设计的整齐思路,明确设计的研究内容。第二章:系统硬件选型,首先确定设计的核心设计方案,紧接着逐一对各个模块进行选型介绍,主要进行硬件论证说明。第三章:系统软件设计,在第二章的基础上,介绍相应硬件模块的原理,根据所学的模电知识搭建其原理,介绍其电路设计,最终搭建出设计整体电路图。第四章:本章主要进行系统软件设计,编写每个硬件模块的驱动程序,并画出硬件程序流程图,同时对系统软件进行介绍。第五章:在论文的末尾,主要进行原理图,程序的验证,进行测试,测试焊接好的实物,然后把软件硬件联调做出最后的修改完善。2系统硬件选型2.1单片机型号的选择方案一:设计采用8位单片机,STC系列的89C52型号的控制器,作为之前89C51的升级版本,其内部的程序存储范围达到8K,可以通过C语言或者汇编语言对控制器进行驱动的编写,两种编程语言相互兼容选择性强,且芯片将串口RXTX引出,方便程序的下载与调试,可以进行多次内部擦出,完全满足一般功能的设计,深受人们青昧。方案二:选用CMOS低功耗八位微控制器,AT89C51是一款低压,性能高的CMO八位微控制器,可在线编程,擦除的4K字节闪存,习惯称之为微处理器。该芯片是一款可重复擦除100次的只读存储器。该芯片与行业标准的MSC-51指令与引脚完全兼容,采用ATMEL高密度非易失性存储器技术制造。AT89C51单片机芯片拥有多功能八位CPU以及4K字节在线闪存,因此,被称作高效微控制器。在嵌入式控制系统中ATMEL的AT89C51单片机被广泛应用且为其提供了一种方便,容易,廉价的解决方案。综合上述的描述,考虑到资源的合理利用和成本以及开发的难易程度最终决定采用STC89C51单片机作为主控芯片。2.2显示器件的选择方案一:设计状态,人数等信息将显示在液晶屏幕上,对于液晶屏幕来说,常用的有0LED屏幕,LCD12864屏幕,LCD1602屏幕,由于OLED,LCD12864屏幕价格贵,且屏幕大浪费屏幕空间,本次设计又不需要显示中文。为此选择LCD1602作为本次太阳能智能手机充电器的人机交互显示屏幕,LCD1602液晶屏幕可以显示两行,每行显示16个字符,可以显示数字,字符,字母等数据,可以在5V环境下工作,屏幕背光可调,显示清晰,完全满足本次设计。方案二:数码管显示方案,由多组LED组成,通过亮起数码管的不同,拼接而成不同的数字,可以显示阿拉伯数字,小数点,简单字符等等,操作简单方便,驱动程序简单,深受初级开发者的喜爱。2.3人数检测模块选择方案一:红外传感器检测方案采用E18-D80Nk红外传感器对人数进行统计,当在一定的范围内检测到有人经过时,会给予单片机相应的电平信号。此模块将发射与接收结合到一块的广电传感器,检测的范围也可以手动调节。此红外传感器检测距离远,实用方便,抗感染力强,在电子厂流水线,避障,检测等领域拥有广阔的发展前景。方案二:红外对管检测方案选用红外对管作为人数计量模块,此传感器拥有两个分开的部分,红外发射管及红外接收管,白色灯管发射管了你发射相应频率的红外线,黑色灯管可以接受,经过内部比较器的信号处理,点亮相应的指示灯,同时输出相应的数字信号。由于简单,方便,整理的,便于携带,此款设计则拥有广阔的市场。综上所述:采用红外对管硬件搭建比较麻烦,驱动程序比较复杂,为此本系统将采用红外模块E18-D80NK来实现对人数的统计。2.4温湿度检测传感器选择方案一:采用数字型温度传感器DS18B20,该传感器只有一个线与单片机进行通讯,测量的范围从-55到125,误差范围很小,精度不到0.1。湿度传感器采用HS110,该传感器是电容式数字传感器,测量的范围为0到100,误差较大,高大百分之2,此种方案采用两个传感器来完成设计要求。方案二:方案二:采用一体化温湿度传感器DHT11。DHT11是一种数字输出复合温湿度传感器,包括电阻元件和NTC型温度检测元件。它可以测量20—95%RH湿度,误差为±5%RH,0—50℃,误差范围为±2℃。综上所述,虽然方案一的测试范围广,精度较高,但此次设计监测的是一般环境下的实时温湿度数据,方案二的DHT11温湿度传感器能够满足设计要求,而且该温湿度传感器物美价廉,因此本模块采用方案二。2.5系统总方案确定经过对本设计的了解,确定了大体的研究方向及思路,并对其硬件模块进行论证分析,最终决定采用AT89C51作为设计的核心CPU,外围模块采用E18-D80NK红外管进行人数进出的测量计数,采用DHT11进行温湿度测量,LCD1602进行液晶显示,以及蜂鸣器进行报警。对适应场所的人数及环境做出精准的测量及检测。图1系统总框图本系统通过E18-D80NK红外管来实现对商场人数的检测计数,通过DHT11来检测周围环境的温湿度,将检测的数据显示在LCD1602上,通过蜂鸣器是否需要报警,使设计变得更加人性化。硬件电路设计主控芯片电路设计由于本次设计采用8位单片机,所以在电路搭建的时候,需要搭建51单片机的最小工作的电路。在这个电路的骨架下,才能通过程序进行相关功能的实现。设计主控制器的电路包括电源部分,晶振部分以及复位部分。毋庸置疑电源模块为单片机提供电力,给芯片通电。晶振模块为单片机提供源源不断的脉冲方波,在这些脉冲的驱动下,单片机才能进行程序的执行。复位模块:仿真程序的卡顿,使得程序从头开始执行。除此之外,最小系统还有一个程序下载端口,方便设计功能的调试,完善。具体的电路设计如下图3所示。·图2单片机最小系统在上文的介绍中可以得知,晶振电路的重要性,本设计的震荡源有12HMZ的晶振和两个30pf的电容组成,连接到单片机的XT1和XT2引脚,其中电容的作用帮助晶振起振,晶振电路相当于人体大脑,缺一不可。3.2液晶LCD1602电路设计3.2.1LCD1602概述设计采用液晶屏幕LCE1602一共具有16个引脚,各个接口说明如下表所示:屏幕的1脚和16脚一个是背光负极一个是屏幕负极;2脚和15脚作为背光,电源的正极,屏幕3脚通常在接10K电位器,用来调节屏幕亮度,4脚5脚6脚屏幕的数据引脚进行显示方式,显示位置,显示命令的选择,4脚RS,作为寄存器的选择引脚,给与高电平为数据寄存器,相反低电平为指令寄存器。5脚EW用来决定进行读操作还是写操作,设计采用写数据的方式因此只要给予改引脚低电平即可。6脚使能引脚,是液晶屏幕进行命令的执行。7脚到14脚则连接单片机io口进行显示数据的传输。图3液晶显示电路设计上图3为LCD1602液晶设计电路,屏幕的RSRWEN连接单片机的P2.5P2.6P2.7引脚,7到14脚通过10K排阻与单片机进行连接,4个引脚的那个连接单片机的VCC和GND,通过程序控制其显示的位置,显示的格式,光标的移动,光标的闪烁等,通过数据传输将采集的温湿度进行显示。液晶的3脚通常接电位器用来对屏幕亮度进行调节。3.3红外传感器电路设计对于红外模块传感器电路设计来说,该传感器对外只有3个引脚,一个接电源正极,一个接电源负极,剩下的连接单片机用来数据的传输。当有人经过,该传感器的引脚将有高电平转成低电平,便可得知有人经过或者离开。检测的范围还可以经过传感器一遍的按钮进行调节,具体的电路如下图4所示:图4红外模块原理图3.7按键模块电路设计设计具有按键人机交互显示界面,通过按键进行时间等信息的调节,为了节约单片机的I0口,设计采用独立键盘的形式,分别连接单片机p2.1,p2.2,p2.3引脚,当按键按下,相应的单片机i0口将会便成低电平[14],进而执行相应的指令,设计通过软件演示来对硬件按键进行消抖处理,下图3-6为按键模块电路设计:图5按键输入电路设计3.8蜂鸣器报警模块电路设计报警电路作为本设计重要的组成部分,通常采用蜂鸣器进行设计,本次采用有源蜂鸣器加PNP三极管组成,由于蜂鸣器需要大电流进行驱动,通常选择三极管进行电流的方大,将蜂鸣器连接到三极管的负极,另一端连接负极,单片机控制三极管导通,从而控制蜂鸣器是否导通,是否进行发声鸣叫。当单片机给三极管基极一个低电平时,将会造成设计的需求,进行报警操作。具体的电路设计如下图6所示:图6蜂鸣器报警电路设计4系统软件设计4.1编程语言选择及优势对于本设计程序的编写将采用功能强大的C语言。对于51系列单片机来说C语言编程是其首选。该编程语言相比于汇编语言:不用去了解编程语言相关的指令集,不必去了解相关的存储结构;在编写程序时也不用去考虑存储器内部的地址和数据类型;使用C语言编程可以缩短程序调试,开发的时间;C语言功能强大,移植性高,功能模块化强,方便后续其他项目开发。C有着诸多的优势:1.C2.C语言在时序控制方式,相对于汇编语言更加简单。3.从自主学的角度考虑,C语言咋网络平台上的历程更加丰富。4.C语言的语句相对来说较少,更容易阅读,而汇编语言在初学者看来闲的杂乱无章。4.2开发软件介绍KeilC51是单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil软件界面如图7所示。本章主要基于本章节的程序流程图,利用C语言将本设计的商场人数统计得以实现,并详细阐述了软件设计。图7开发软件4.3系统程序设计4.3.1主程序设计下图8为系统程序主框图,上电瞬间系统进行初始化操作,进入一个大循环,两个红外传感器将检测的结果传递给单片机,当左边的传感器检测到有人时,统计的数量将加1;当右边的传感器检测到有人时,统计的数量将减1。统计的结果将会实时显示在LCD1602上,系统内部还可以设定人数上限报警值,人数大于报警值蜂鸣器将发出鸣响进行提醒,此外系统的按键扫描过程,可以对报警值进行改变。最后为了使系统变得更加人性化,功能化,还添加了温湿度的检测,并也可以显示在液晶屏幕上。图8系统主程序框图4.3.2温湿度采集程序设计本设计的温湿度采集模块采用DHT11传感器实现,当CPU给予该传感器起始信号后,该模块将对周围的温湿度进行采集,紧接着将采集的数据传递给单片机,单片机对其进行处理加工,最终显示在LCD1602屏幕上。图9温湿度采集程序设计4.3.3LCD1602程序设计LCD1602液晶显示器上电后,首先执行初始化操作,清除屏幕,并清除内部存储器。之后,与微控制器执行双向通讯。微控制器控制显示器的亮度和内容。延迟后,在LCD上显示检测到的温度和湿度以及人数的变化。这些值会根据按键操作实时更改。单片机控制写引脚写入要显示的命令。显示器然后执行指令以显示内容。LCD1602的显示程序流程图如图10所示。图10LCD1602程序设计5系统仿真测试及实现5.1系统仿真测试通过硬件的搭建与软件的编写,最终完成了设计的所有内容,利用proteus搭建一与原理图一样的电路,通过C语言编写软件KEil编写本设计的单片机程序,将生成的HEX文件写入本仿真系统,经过仿真确定原理图与程序准确无误,最后可以焊接实物,仿真软件如图11所示。图11仿真软件介绍系统仿真用来对系统原理图及程序修正,在仿真中LCD1602液晶,按键输入,蜂鸣器报警,人数红外检测等都严格按照原理图与单片机引脚进行连接,紧接着便须将KEIL生成的HEX文件烧录,以此验证系统可行性。搭建好的仿真图如图13所示:图12系统仿真图在对系统程序逻辑性进行分析后,紧接着搭建仿真进行测试,由于本系统主要传感器为人体红外感应,在仿真的搭建中根据其感应的原理,平时没人的时候该端口始终为高电平,只要连接传感器的端口在检测到有人的时候为低电平,系统便可进行人数的统计,根据这一特性搭建仿真的时候,用按键进行代替人体红外传感器,用来模拟人数的进出,通过测试发现编写的程序,搭建的原理图可行性很高,为接下来实物的焊接做了保障。上电瞬间,系统执行初始化,仿真LCD1602液晶第一行显示温度,湿度,该模块程序原理图没出现问题。仿真具体显示界面如图14所示:图13LCD1602初始化界面由于仿真无法模拟真实场景中人进出,为此根据红外传感器原理。在单片机P3.0,P3.1端口接了两个电阻用来模拟人进人出及现场剩余的人数。通过验证发现该模块程序原理图没有问题,具体的仿真验证图如图15所示:图14人数检测模块仿真测试通过仿真的验证发现系统每个模块都可以按照预想的功能进行实现,进而使系统可行系得以提高,为实物焊接做好准备。总结本次的设计比较系统和完整,对我来说是一个挑战,设计过程中需要我不断的查阅资料,不仅让我更加巩固了之前所学到的知识,也了解和掌握了在课堂上没有学习到的内容,还让我收获了很多的实践经验,这些都让我收获颇丰。整个设计大部分功能的都需要软件编程来实现,因此花了不少功夫去学习,在软件编程的过程中不仅要思考如何去设计各个部分的子程序,还需要考虑如何才能让各个部分的子程序连接成为一个整体,使得整个软件部分可以实现我们的要求。与此同时,还要去学习巩固C语言的相关知识,去解决各种的问题。程序设计完成后还要有实物,自己动手焊接了一个,焊接过程中也出现了很多问题,不过经过了不断的测试和完善,最终还是解决了问题。毕竟理论仅仅是理论,需要实践去验证,这也需要自己去慢慢的完善,面对的困难要努力去克服这样才能感受到这次设计的价值所在,才能把事情做得更好。虽然本次设计已经完成,设计时也考虑了其他的方案,但是由于我现在所学知识的不足和自身实际经验的缺乏,以至于否决了很多方案,所以这个设计做的相对简单。设计中还存在着一些瑕疵,例如:软件的编写有些复杂,不够优化,硬件连接不是特别合理,计数器的设计不够人性化等等,这些都是接下来需要改进和完善的地方。计数器在今后的发展一定会不断地完善,将会是电子产品不可或缺的一部分。参考文献[1]张毅刚·单片机原理与应用设计[M]·电子工业出版社,2019(13):19-21.
[2]张鑫·单片机原理及应用[J]·电子工业出版社.2015(15):45-76.
[3]李成勇·单片机设计教程[M]·电子科技大学出版社.2018(11):8.
[4]郭天祥·52单片机C语言教程[D]·电子工业出版社.2015(16):7.
[5]马玉丽·52单片机应用技术[M]·大连海事大学出版社,2017(10):32-34.
[6]王柏壹·多功能测距仪设计[M]·电子测试,2013(10):32.[7]孙宝元、杨宝清·传感器及其应用手册[D]·北京大学出版社,2015(15):28.[8]吴恩仪,陈凌君.基于STC89C52单片机的超声波测距系统设计[J].南方农机,2020,51(06):124.[9]李全利·单片机原理及应用技术[M]·北京:高等教育出版社,2009[10]李维提、郭强·液晶显示应用技术[M]·北京:电子工业出版社,2006[11]赵小兰、胡征、王培坤·单片机原理及系统[J]·电试,2013[12]孙宝元、杨宝清·传感器及其应用手册,2002[13]郑人杰·计算机软件测试技术[M]·北京:清华大学出版社,
1992
[14]胡汉才·单片机原理及系统设计[M]·北京:清华大学出版社,2002[15]刘笑.ADC0809A/D转换芯片的原理及应用[J].桂林电子科技大学,2019[16]HamldStone·MieroeomPuterInterfaeingUniversityofMassachusetts,1982[17]MeehanJoanne·SCMinMerseysideTQMJournal,2008[18]DavidL.Raney,EricC.Slominski,MechanizationandControlConceptsforBiologicallyInspiredMicroAerialVehicles,AIAA2003-5345.[19]刘文楷,苏宁宁,戴澜.霍尔传感器读出电路的低噪声运算放大器设计[J].电子世界,2016(17):79-80.[20]许瑞庆.脉搏检测系统设计及其信号处理算法研究[D].南京信息工程大学,2018.[21]沙占友主编.集成化智能传感器原理与应用.北京:电子工业出版社,2014,36-56.附录附录1原理图附录2源程序清单/********************************************************************************/#include<reg52.h>//#include"eeprom.h"#include<intrins.h>#defineucharunsignedchar //宏定义#defineuintunsignedinttypedefunsignedcharunint8;typedefunsignedcharunint16;typedefunsignedintU16;ucharcodetable[]={"H:%T:c"};ucharcodetable1[]={"enter:A:t:"}; //进出剩余人数ucharcodetable2[]={"SH:%WH:C"};ucharcodetable3[]={"SL:%WL:C"};sbitTRH=P3^7;//温湿度传感器DHT11数据接入sbitrs=P2^6;sbiten=P2^7;sbitbeep=P2^0;//蜂鸣器控制端sbitk1=P3^2;//按键sbitk2=P3^3;sbitk3=P3^4;sbith1=P1^2;//红小灯sbith2=P1^3;//绿小灯sbitir1=P3^0;//进sbitir2=P3^1;//出ucharhtemp=33,ltemp=15,hrh=80,lrh=20,num0=0,num1=0; //温湿度上下线初始化bityyp=1,lalarm=0; //设置标志位,报警标志位uchars1num,num,shis,shig,wens,weng;unint8TH_data,TL_data,RH_data,RL_data,CK_data; // dht11内部变量定义unint8TH_temp,TL_temp,RH_temp,RL_temp,CK_temp; // dht11内部变量定义unint8com_data,untemp,temp;unint8respond;voiddelay(uintx)//毫秒级延时函数{uinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}voiddi() //蜂鸣器报警{ beep=0; delay(100); beep=1;}voidwrite_com(ucharcom){ rs=0;//命令 P0=com; delay(5); en=1; delay(5); en=0;}voidwrite_date(uchardate){ rs=1;//数据 P0=date; delay(5); en=1; delay(5); en=0;}voidinit1602(){ write_com(0x38); //设置工作方式 write_com(0x0c); //设置光标 write_com(0x06); //设置输入方式 write_com(0x01); //清屏 write_com(0x80); for(num=0;num<16;num++) { write_date(table[num]); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_date(table1[num]); }}voidinit16021() //设置温度上下限显示初始化函数{ write_com(0x80); for(num=0;num<16;num++) { write_date(table2[num]); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_date(table3[num]); } write_com(0x80+0x40+13); write_date(0xdf); write_com(0x80+13); write_date(0xdf); }voidwrite_H(ucharadd,uchardate){ ucharshi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);}voidwrite_L(ucharadd,uchardate){ ucharshi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); }//////////////////////////////////***********DHT11子程序*************************//*********************************************************************************/voiddelay_ms(U16j){unint8i; for(;j>0;j--) { for(i=0;i<27;i++); }}/*********************************************************************************//*********************************************************************************///5us级延时程序/*********************************************************************************/voiddelay_us(){unint8i;i--;i--;i--;i--;i--;i--;}/********************************************************************************//****************************************************************************///收发信号检测,数据读取/****************************************************************************/charreceive(){unint8i;for(i=0;i<8;i++){respond=2;while((!TRH)&&respond++);delay_us();delay_us();delay_us(); temp=0;if(TRH)temp=1;respond=2;while((TRH)&&respond++); //超时则跳出for循环 if(respond==1)break; //判断数据位是0还是1 //如果高电平高过预定0高电平值则数据位为1com_data<<=1;com_data|=temp;}return(com_data);}/****************************************************************************//****************************************************************************///湿度读取子程序//温度高8位==TL_data//温度低8位==TH_data//湿度高8位==RH_data//湿度低8位==RH_data//校验8位==CK_data//调用的程序有delay();,Delay_5us();,RECEIVE();/***************************************************************************/voidGET_TRH(){//主机拉低18msTRH=0;delay_ms(180);TRH=1;//DATA总线由上拉电阻拉高主机延时20usdelay_us();delay_us();delay_us();delay_us();//主机设为输入判断从机响应信号TRH=1;//判断DHT11是否有低电平响应信号如不响应则跳出,响应则向下运行if(!TRH){respond=2;//判断DHT11发出80us的低电平响应信号是否结束while((!TRH)&&respond++);respond=2;//判断从机是否发出80us的高电平,如发出则进入数据接收状态while(TRH&&respond++); //数据接收状态RH_temp=receive();RL_temp=receive();TH_temp=receive();TL_temp=receive();CK_temp=receive();TRH=1;//ST=1;//数据校验untemp=(RH_temp+RL_temp+TH_temp+TL_temp);if(untemp==CK_temp){RH_data=RH_temp;RL_data=RL_temp;TH_data=TH_temp;TL_data=TL_temp;CK_data=CK_temp;}} //湿度整数部分 shis=(char)(0X30+RH_data/10);//湿度的十位 shig=(char)(0X30+RH_data%10); //湿度的个 //温度整数部分 wens=(char)(0X30+TH_data/10);//温度的十位 weng=(char)(0X30+TH_data%10); //温度的个位 //温湿度显示函数 write_com(0x80+2); write_date(shis); write_date(shig); write_date('%'); //湿度符号 write_com(0x80+10); write_date(wens); write_date(weng); write_date(0xdf); //温度符号}/****按键扫描******/voidkeyscan(){ if(k1==0) { delay(10); if(k1==0) { s1num++; while(!k1); //等待按键释放 yyp=0; di(); switch(s1num) { case1: init16021(); //设置温度上下限初始化// hrh=byte_read(0x2000);// htemp=byte_read(0x2200);// lrh=byte_read(0x2400);// ltemp=byte_read(0x2600); write_H(3,hrh); write_H(11,htemp); write_L(3,lrh); write_L(11,ltemp); write_com(0x80+4); write_com(0x0f); //打开光标 break; case2: write_com(0x80+0x40+4); break; case3: write_com(0x80+12); break; case4: write_com(0x80+0x40+12); break; case5: s1num=0; write_com(0x0c); //关闭光标 yyp=1; init1602(); //上电后显示初始化 break; } } } if(s1num!=0) { if(k2==0) { delay(10); if(k2==0) { while(!k2); //等待按键释放 di(); switch(s1num) { case1:hrh++; if(hrh==85)hrh=0; write_H(3,hrh); write_com(0x80+4);// SectorErase(0x2000);//擦除扇区// byte_write(0x2000,hrh);//重新写入数据 break; case2:lrh++; if(lrh==60)lrh=0; write_L(3,lrh); write_com(0x80+0x40+4);// SectorErase(0x2400);//擦除扇区// byte_write(0x2400,lrh);//重新写入数据 break; case3:htemp++; if(ltemp==50)ltemp=0; write_H(11,htemp); write_com(0x80+11);// SectorErase(0x2200);//擦除扇区// byte_write(0x2200,htemp);//重新写入数据 break; case4:ltemp++; if(ltemp==50)ltemp=0; write_L(11,ltemp); write_com(0x80+0x40+12);// SectorErase(0x2600);//擦除扇区// byte_write(0x2600,ltemp);//重新写入数据 break; } } } if(k3==0) { delay(10); if(k3==0) { while(!k3); //等待按键释放 di(); switch(s1num) { case1:hrh--; if(hrh==0)hrh=85; write_H(3,hrh); write_com(0x80+4);// SectorErase(0x20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巴楚县2025-2026学年数学四年级下学期期末统考试题(含解析)
- AED除颤仪维护保养与护理实践
- 2026年农村电商物流网络优化策略题库
- 崇左市凭祥市2025届数学三年级第二学期期末学业质量监测模拟试题含解析
- 护理敏感指标解读:跨专业合作
- 产程观察中的胎膜早破处理
- 护理查房中的护理效果评估
- 山西省运城市绛县2025届数学三年级下学期期中学业水平测试试题(含解析)
- 2026年广东省清远市阳山县中考物理适应性模拟试题含解析
- 山西省汾阳市禹门河小学2025届四年级数学第二学期期末联考模拟试题含答案解析
- origin基本操作大全入门必备课件
- 金属非金属矿山安全标准化规范
- 附件4 《广东省数据经纪人管理规则(试行)》(征求意见稿)
- 商业综合体智能化系统
- 医学影像处理-荧光素钠辅助脑胶质瘤手术体会
- 不动产权籍调查表2
- GB/T 7253-2019标称电压高于1 000 V的架空线路绝缘子交流系统用瓷或玻璃绝缘子元件盘形悬式绝缘子元件的特性
- GB/T 16839.1-2018热电偶第1部分:电动势规范和允差
- Unit-10-The-Sad-Young-Me教学讲解课件
- 《社会学概论新修(第五版)》课件第一章
- GB4962-2008氢气使用安全技术规程完整
评论
0/150
提交评论