基于单片机的智能晾衣架设计_第1页
基于单片机的智能晾衣架设计_第2页
基于单片机的智能晾衣架设计_第3页
基于单片机的智能晾衣架设计_第4页
基于单片机的智能晾衣架设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

图书分类号:密级:毕业设计(论文)基于单片机的智能晾衣架设计DESIGNOFINTELLIGENTCLOTHESHANGERBASEDONMICROCONTROLLER毕业设计(论文)PAGEII学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用或参考的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标注。本人完全意识到本声明的法律结果由本人承担。论文作者签名:日期:年月日学位论文版权协议书本人完全了解关于收集、保存、使用学位论文的规定,即:本校学生在学习期间所完成的学位论文的知识产权归所拥有。有权保留并向国家有关部门或机构送交学位论文的纸本复印件和电子文档拷贝,允许论文被查阅和借阅。可以公布学位论文的全部或部分内容,可以将本学位论文的全部或部分内容提交至各类数据库进行发布和检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。论文作者签名:导师签名:日期:年月日日期:年月日摘要智能晾衣架能够实现衣物的自动晾晒。相对于传统晾衣方式而言,具有自动控制,远程操控,省事方便的优点。目前,随着网络技术越来越加的发达,传感器技术的运用范围越来越广泛,智能晾衣架成为人们购买的热点。本文对智能晾衣架的机械传动及控制部分进行了设计,实现了晾衣架的远程红外手动控制,以及根据天气条件进行自动控制。另外,手机也能对该晾衣架进行远程控制。本次的智能晾衣架配有一个AT89C2051芯片为核心的红外遥控器,晾衣架采用AT89S52芯片进行整个系统的控制,利用直流减速电动机实现晾衣架的移动。手动模式时,遥控器能够对晾衣架进行控制。自动模式时,利用光敏电阻和温湿敏传感器DHT11进行信息采集,并由单片机发出PWM信号经驱动芯片L298N驱动电机以实现晾衣架的升降与进出。并且可以利用短信通过TC35进行远程通信,控制晾衣架伸出与收回。实现了实时控制、实时温湿度监控、实时光强监控。智能晾衣架在晴天能够自动伸出以晾晒衣物,在傍晚、下雨天、阴天等能够自动收回衣物。光照过强时还会自动降下遮阳薄膜。晾衣架的伸出与收回,采用的是齿轮与齿条传动。晾衣架的上升与下降,采用带轮传动,带动两边滚轮收放钢丝绳。遮阳薄膜的升降采用皮带轮传动。关键词智能衣架;红外遥控;传感器AbstractIntelligentclotheshangercanachievedryingclothesautomatically.Comparedtothetraditionalwayintermsoflaundry,ithassomeadvantagessuchasautomaticcontrol,remotecontrol,convenientandsavetime.Now,withmoreandmoreadded-developedofnetworktechnology,theuseofmoreextensiverangeofsensortechnology,intelligentclotheshangerbecomeahotbuy.Intheessay,theintelligentrackmechanicaltransmissionandcontrolpartsaredesigned.Achievingtheremoteinfraredhandcontrolrack,aswellasautomaticcontrolaccordingtoweatherconditions.Inaddition,thephonecanremotelycontroltherack.TheintelligentrackisequippedwithAT89C2051chipasthecoreinfraredremotecontroller.TheintelligentclotheshangerusesAT89S52chiptocontrolthewholesystem,usesaDCmotortoachievethemovement.Inmanualmode,theremotecontrollercancontroltheracks.Inautomaticmode,itusesphotoresistorandtemperatureandhumiditysensitivesensorsDHT11tocollectinformation.themicrocontrollerissuePWMsignalviaadriverchipL298Ndrivemotortoachieveautomaticcontrolracks.YoucanuseSMSforremotecommunicationbyTC35tocontrolracksextendableandretractable.Itachievesreal-timecontrol,real-timetemperatureandhumiditymonitoring,real-timemonitoringoflightintensity.Intelligentclotheshangercanextendautomaticallytodryclothesinsunny,andaccordingtotheweatherconditionsitcanmaketheappropriateaction,intheevening,rainy,cloudy,etc.toautomaticallyrecoverclothes.Whenthelightistoostrongitwillautomaticallyloweredshadefilm.Anextendableandretractableracks,usingthegearandrackdrive.Riseandfallracks,usingapulleytransmission,drivewheelonbothsidesoftheracktomaketheroperetractable.Liftingshadingfilmusingapulleytransmission.KeywordsIntelligentclotheshangerInfraredremotecontrolSensor毕业设计(论文)PAGE4目录26768摘要 I30026Abstract II18679目录 I285621绪论 1105711.1背景及意义 1317931.2设计方案 2105572智能晾衣架总体设计 4325272.1遥控器总体设计 4153972.1.1遥控器硬件构成 422862.1.2遥控器的工作流程 459852.2晾衣架总体设计 5191522.2.1晾衣架硬件构成 573262.2.2智能晾衣架的工作流程 724532.3本章小结 8264893遥控器硬件设计 9152663.1遥控器单片机选型设计 984753.2遥控器控制模块设计 1021803.2.1遥控方式的选择 1045403.2.2红外发射模块设计 10253273.3按键模块设计 11264153.4遥控器电源模块 12306133.5遥控器电路设计 1284233.6遥控器实物三维造型设计 13162753.7本章小结 14217844智能晾衣架控制电路设计 15152564.1晾衣架单片机选型设计 15245434.2红外接收模块 16176444.3显示模块 17216454.4照明模块 1930724.5指示模块 2027114.6传感器模块 20225764.6.1光敏电阻 20109354.6.2温湿敏传感器 21314524.7ADC模块 2115884.8行程开关 23143404.9驱动模块 2444774.10遮阳模块 25146014.11远程遥控模块 26257114.12供电电源模块 275864.13晾衣架主体电路图设计 27302124.14本章小结 28273025智能晾衣架机械传动结构设计 29138835.1顶板 29195145.2衣架 291185.3遮阳部分传动 3081375.4晾衣架前后传动 30290965.5晾衣架升降传动 311805.6晾衣架主体传动机构设计 32186915.7晾衣架主体外壳设计 32177765.8本章小结 33284246智能晾衣架的软件设计 34309326.1遥控器的低功耗模式 34241026.2按键消抖 3488916.3红外发射 35167206.4数码管显示 367126.5电机的PWM调速 36426.6本章小结 3713912结论 3828097致谢 4019166参考文献 4113804附录 422110附录1 4218119附录2 451绪论1.1背景及意义在科技快速发展的今天,智能家居作为一种新兴的产品已经得到了很大一部分人群的关注。随着近代的改革开放,现代化进程的推进,现在的家庭一般都不再是为了温饱而奋斗,家庭条件是迈上了一个新的台阶,手中的资金也是有了一定的富余,家居生活因此而向着智能化做出了转变。随着近十几年来经济的快速发展,房地产行业的运作依旧平稳快速,直接就使得家居装潢行业得到了飞速的发展。晾衣架作为家居生活不可或缺的一类产品,便顺势脱颖而出,在这些年间发展十分迅速。智能晾衣架作为一个独立的产品,逐步从起步阶段向成熟迈进。现在已经发展出了一系列智能化的家庭实用产品,走进了千家万户。目前在国内外,在智能家居产品方面已经取得一定的成果,市场上也已经开始陆续出现了相关的商品。但就总体来讲,生产出来的产品却不理想,尤其是没有制定出统一标准,并且在行业内缺乏权威行的产品,对智能家居产品的发展存在极大的影响。随着科技与经济的快速共同发展,人们的生活水平也在逐步的提高,对居住质量的要求也越来越高。因此,智能家居产品的发展也显得越发重要。智能家居产品得到发展是国家经济发展的必然趋势。从蒸汽机的发明,到电的产生,再到网络的出现,人们经历了第一次工业革命、第二次工业革命、第三次工业革命,现在又准备迎来第四次工业革命。第一次工业革命的时候,使得资本主义由工场手工业过渡到了大机器生产的时代。第二次工业革命的时候,电力被广泛应用。第三次工业革命的时候,网络将信息化镌刻在了人类璀璨的文明之中。随着电子信息技术和控制技术的日益发展,以及社会信息化的逐渐完善,人们的生活、工作、学习和通讯的关系日渐紧密。信息化社会改变了人们生活习惯和工作方式,同时也在逐步改变我们传统的家居生活。环视周围,以前只能在电视、电影或者书本上才能看到的智能式的家居产品,现在已经悄悄的融入在了我们的生活中。那些以前只能靠想象的智能家居生活已然能够成为现实。现在我们很容易就能够发现人们对于家的要求已经不再是简简单单的一个物质空间,人们现在更为关注更为注意的是一个安全、舒适、美观而又方便的居住环境。家居智能化已经成为了一种必然的趋势,毕竟现今社会人们对于物质有着更高的要求。智能晾衣架属于智能家居的一个产品,是智能家居最基本和重要的一个组成部分。据国家统计局统计的数据显示,截止到2006年11月1日零时,我国城市家庭用户已达1.8亿户。按2011年中国楼市总成交量600多万套,再加上老房2次置换的数量,目前整个晾衣机市场容量在100亿左右。即1亿台,而电动晾衣机的销售2011年已达到30万台以上,并保持每年100%以上的增长速度。智能晾衣架属于新兴产品,测算每套晾衣架的成本不是太高,随着智能晾衣架的规模化生产并且大量投入市场,更伴随着所用元器件价格的下降与产能的逐年增加,智能晾衣架的经济效益将不断上升[1]。虽然传统晾衣架还在被较为广泛的使用,但手摇晾衣架本身就存在结构简陋、使用寿命短易老化等一系列缺点,无法满足人们日常生活中日益增长的需求。随着人们生活水平的不断提高,智能家居生活理念的广泛传播,人们对自动化、智能化的晾衣架的需求也将会越来越大。现在人们的生活节奏不断的加快,多数人的日常都被忙碌的工作所占据,并且不和父母住在一起,家里白天除了周末就不会有人,导致平时换洗的衣服只能一大清早的晒,到了晚上太阳下山才能回家收,有时还会由于没有及时的收回导致晾晒的衣服被雨淋湿[2]。智能晾衣架的出现,很好的方便了人们的生活,解决了日常生活中人们在快节奏生活中晾晒衣物的难题。智能晾衣架,实现了衣物在无人在家情况下的自动晾晒,能自动根据天气情况调整晾衣架,方便了忙碌的上班族的家居生活。还与城市青年买房装修,追求个性化、时尚化与智能化的消费需求与潮流相契合。满足了家庭老人和孩子“即触即用、方便省心、安全舒适”的后顾之忧。智能晾衣架作为智能家居的一类产品,具有以下几个优点:(1)自动控制。平时在上班的时候,天气忽然变阴或者下雨而衣服却还晒在外面,不用紧张,智能晾衣架的系统会根据天气的状况自动完成收衣服,等你回到家,不会看到衣物被雨淋湿的情况。(2)轻松遥控。不再要像老式的晾衣架一样要用手来摇动手柄控制晾衣架,只需要按下遥控器上的按钮,智能晾衣架就会做出相应的反应,轻松又方便。1.2设计方案在人们的日常生活起居之中,晾衣架是每家每户都必然会购买的产品,因此说晾衣架与人们的生活有着相当密切的联系。在如今的社会中,无论是在国内,还是在国外,都已经陆续的出现了一系列的智能晾衣架。这些智能晾衣架一经面世,就成功的吸引了人们的眼球。现在随着生活水平的提高,更成了一部分人购买的热点。在国内外的研究中,智能晾衣架的功能还是处于一种比较简单的阶段。现在市面上的智能晾衣架并不少见。在国内,就有恋晴、牵手、金诺·卡迪、欧兰特、晾霸、巧太太、晒得乐、红杏、亿银、彩太太这十大品牌,其它牌子数不胜数;在国外,也有好易点、多灵等牌子。这些晾衣架虽然叫做智能晾衣架,但它们却大多都只能由电动机控制晾衣架的上下伸缩或前后伸缩,还有的加上了遥控系统,或者添加了照明和风干的功能,却不能够真正的称之为智能晾衣架。高端一点的智能晾衣架,在整个控制系统里面运用到了光敏传感器和湿敏传感器,使得晾衣架在天气晴朗的时候能够自动的将晾衣架伸展出去[3],使得晾衣架上的衣服能够得到充足的光照,让衣服能够自然晾干。而在一些阴天或是雨天亦或是雪天的时候,能够自动的将衣服收回去[4],使衣服免受雨水的侵害。但这些还远远不够。研究中存在的问题及解决方案如下:(1)由于此次智能晾衣架是设计成阳台升降式的,用户想要操控晾衣架的话,在墙面上安装按钮,用户使用起来不是特别方便,所以需要设计一个遥控器来遥控晾衣架。(2)需要让智能晾衣架能够实现智能操控,根据天气变化自己完成衣服的晾晒与收回。(3)一般的上班族因为早上上班比较早,所以会在晚上先把衣服晾在衣架上。因此需要晾衣架有照明功能。(4)有些时候用户虽然在户外,但是又需要控制衣服的晾晒的话,还需要有远程操控功能。(5)现在的智能晾衣架由于功能不完善,衣服在夏天晾晒的过程中就会因为长时间的暴晒而出现褪色、减少衣物面料的寿命、损伤衣物纤维是衣服变黄等现象。所以需要设计有自动放下的遮阳薄膜,以保证衣物不受到长时间的暴晒。2智能晾衣架总体设计此次设计的智能晾衣架,考虑到各个用户的身高不同,如果在墙上安装按键板的话不是特别的合适,毕竟每个人适应或者习惯的按键高度不同。所以此次的智能晾衣架设计配有红外遥控器。此次智能晾衣架是由遥控器和晾衣架这两个部分组成的。2.1遥控器总体设计2.1.1遥控器硬件构成结论随着传感器技术的越来越成熟,传感器的应用范围也越来越加的广泛,伴随着家居用品与传感器技术的完美结合,智能家居产品也表现出了不俗的市场价值与市场竞争力,同时也更加受到广大群众的关注。本文主要针对智能晾衣架这款产品进行了相对深入的研究。在本文中,主要设计研究的是一款运用红外遥控技术进行遥控的智能晾衣架。这款智能晾衣架不仅能够通过遥控器来遥控,还能根据天气情况来自动进行衣物的晾晒与收回工作。此外,用户更是能够通过手机发送短信来远程操控该智能晾衣架,使得用户能够对此款智能晾衣架有一个更好的操控体验。在此次的设计中,采用了红外遥控器作为智能晾衣架的控制器,避免的一般控制系统的布线问题。此次设计的智能晾衣架有自动模式和手动模式两种模式,并且能够通过遥控器在自动模式与手动模式之间灵活的进行切换。当智能晾衣架处于自动模式的时候,在天气晴朗且空气较为干燥的时候,会自动将晾衣架伸出使得衣物得到晾晒。而若到傍晚或者阴天的时候,此时的光照不强,光敏电阻的阻值就会发生相应改变,反馈到单片机的信息就会不同,晾衣架就会自动将衣架收回。又若是遇到快下雨的时候,空气中的大气湿度就会上升,此时温湿敏传感器检测到的湿度就会升高,从而会让晾衣架在下雨前及时的将晾晒的衣物收回。而当太阳光照过于强烈的时候(特别是在夏天),光敏电阻也会将此情况通过电阻的变化来反馈到单片机上,那么智能晾衣架上设计的遮阳薄膜就会被放下来,以遮挡部分太阳光以及紫外线,有效的保护衣物不被长时间暴晒。在晾衣架的顶部中央位置还设有一盏LED灯,通过遥控器遥控,可以来为用户提供晚上的照明。另外,短信远程操控功能能够让用户通过短信的“出”和“入”控制晾衣架的伸出和收回。本文主要为智能晾衣架选择了适当的硬件,并且详细地介绍了所用的相关硬件,设计并分析了智能晾衣架的电路原理,对智能晾衣架的操控软件部分也进行了一定的归纳整理与分析。本课题设计的是一款智能晾衣架,属于智能家居的一款产品,具有相当的可行性和一定的市场价值。随着经济的快速发展,技术水平的高速提升,一大批的智能家居产品如雨后春笋般在市场上面涌现出来。人们对于家居产品的注意力也从简单老式的产品转移到了智能化的家居产品上,智能化产品在国内市场必定掀起一股热潮。智能晾衣架在市场上也将能够占有一席之地。此次设计在硬件选取和软件控制上取得了一定的成果,但由于个人的水平有限,掌握的知识还不够完善与全面,目前的研究还不是很完善,此次智能晾衣架的设计还存在一定的问题,在很多方面还有待研究和改进。比如:(1)此次智能晾衣架的设计是在一种理想状态下进行的,还有许多其他的因素并没有考虑到,例如室外的温度在一定情况下会对一些元器件有一定的影响,会干扰到元器件的正常运作或者使其产生一定的差错,智能晾衣架的稳定性还需要进行进一步的研究与探讨。(2)设计的智能晾衣架只是属于简单实用的一类产品,拥有的功能还不够丰富,对于一些要求高的用户来说可能达不到预期的晾衣效果,智能晾衣架的功能还有待进一步的提高与完善。(3)由于经验不足,对于控制软件的编程还不够熟练,对于一些模块化的编程技巧运用也不够好,所以导致了编写的控制程序略显得繁复拢长。如果能够对编写的控制代码部分进行进一步的改进与完善,我相信此次设计的智能晾衣架在操控方面的效果会更加的好。致谢参考文献[1]周静红.基于单片机控制的智能晾衣架控制系统的设计[J].电子技术,2014.[2]张谦,孙晓,周浩,卢祥江,周叶青,谭利江,肖观生.基于单片机的智能晾衣架设计[A].机械工程与自动化,2012.[3]雷敏,杨万里,孔令倩,李飞,谷聚辉.基于单片机的户外型智能晾衣架设计[J].计算机光盘软件与应用,2014.[4]李倩,陆强,马志强.基于单片机的户外自动可折叠晾衣架的设计[A].中国科技信息,2013.[5]孙绍翔,周连佺,臧曙光,莫亦飞,屈晓龙.基于单片机和传感器的智能晾衣架系统设计[A].机械工程与自动化,2013.[6]刘秋呈,顾凯燕,刘辉.感光智能晾衣架的设计[A].科学咨询(科技·管理),2013.[7]戴玉梅,戴玉洁.光传感技术实验研究[A].沈阳大学学报,2012.[8]潘继强.基于DHT11的空气温湿度监控系统的设计与实现[A].计算机工程应用技术,2014.[9]李长有,王文华.基于DHTl1温湿度测控系统设计[B].机床与液压,2013.[10]高明青.基于单片机的直流电机控制[A].科技传播,2014.[11]李英辉.基于单片机的直流电机控制[A].才智,2013.[12]GeorgeStefanBogdan.MobileRemoteControlArchitecture[A].JournalofMobile,EmbeddedandDistributedSystems,2012.[13]刘凯,万在红,张雨晨,廖章祥,张超.基于GSM的智能晾衣架[J].电子设计工程,2014.[14]刘凯,万在红,张雨晨,廖章祥,张超.基于GSM的智能晾衣架系统的软件设计[A].科技广场,2014.[15]XingjianJia,ChangbaoChu.DesignofIntelligentHangerBasedonSingleChipandPro-E[A].TheOpenElectrical&ElectronicEngineeringJournal,2013.附录附录1红外发射程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitIR_outBit=P3^5;sbitkey1=P1^6;sbitkey2=P1^5;sbitkey3=P1^4;sbitkey4=P1^3;sbitkey5=P1^2;sbitkey6=P1^1;sbitkey7=P1^0;bitIRFlag=0; ucharIR_Value=0;/*******延时函数*************/voiddelay_us(unsignedchari)//定时器中断延时560us准确延时{ for(;i>0;i--) { TR0=1; while(TR0==1); }}/***********初始化函数**********/voidInit(){ IR_outBit=0;//关 TMOD=0x22;//8位自动重装模式 TH1=(256-13);//40KHZ初值 TL1=(256-13); TH0=(256-140);//定时器0初始值 TL0=(256-140); PT0=1; //定时器0优先级高 ET1=1; //开启定时器中断 ET0=1; EA=1;//开总中断 TR1=1;}/**********发射函数************/voidIRSend(){unsignedchari; ucharirdata; IRFlag=1; delay_us(16); IRFlag=0; delay_us(8); IR_outBit=1; for(i=0;i<8;i++) { IRFlag=1; delay_us(1); IRFlag=0; delay_us(1); } for(i=0;i<8;i++) { IRFlag=1; delay_us(1); IRFlag=0; delay_us(3); } irdata=IR_Value; for(i=0;i<8;i++) { if(irdata&0x01) { IRFlag=1; delay_us(1); IRFlag=0; delay_us(3); } else { IRFlag=1; delay_us(1); IRFlag=0; delay_us(1); } irdata=irdata>>1; } irdata=~IR_Value; for(i=0;i<9;i++) { if(irdata&0x01) { IRFlag=1; delay_us(1); IRFlag=0; delay_us(3); } else { IRFlag=1; delay_us(1); IRFlag=0; delay_us(1); } irdata=irdata>>1; } PCON&=(~(0x01));//进入空闲模式}//10msvoiddelay10ms(void)//误差0us{unsignedchara,b,c;for(c=1;c>0;c--)for(b=38;b>0;b--); for(a=130;a>0;a--);}voidKeyScan(){ if(key1==0) { delay10ms(); if(key1==0) { while(!key1); //等待按键释放 //发送红外编码 IR_Value=0x01; IRSend(); //调用发射函数,把按键值发射出去 } } if(key2==0) { delay10ms(); if(key2==0) { while(!key2); //等待按键释放 //发送红外编码 IR_Value=0x02; IRSend(); //调用发射函数,把按键值发射出去 } } if(key3==0) { delay10ms(); if(key3==0) { while(!key3); //等待按键释放 //发送红外编码 IR_Value=0x03; IRSend(); //调用发射函数,把按键值发射出去 } } if(key4==0) { delay10ms(); if(key4==0) { while(!key4); //等待按键释放 //发送红外编码 IR_Value=0x04; IRSend(); //调用发射函数,把按键值发射出去 } } if(key5==0) { delay10ms(); if(key5==0) { while(!key5); //等待按键释放 //发送红外编码 IR_Value=0x05; IRSend(); //调用发射函数,把按键值发射出去 } } if(key6==0) { delay10ms(); if(key6==0) { while(!key6); //等待按键释放 //发送红外编码 IR_Value=0x06; IRSend(); //调用发射函数,把按键值发射出去 } } if(key7==0) { delay10ms(); if(key7==0) { while(!key7); //等待按键释放 //发送红外编码 IR_Value=0x07; IRSend(); //调用发射函数,把按键值发射出去 } }}voidmain()//空闲模式{ Init();//初始化 EA=1; //总中断使能 EX0=1;//外部中断0使能 IT0=1;//下降沿触发 while(1) { KeyScan(); }}//定时中断T1voidtime1(void)interrupt3{ if(IRFlag==1) IR_outBit =~IR_outBit; else IR_outBit=0; }voidtime0(void)interrupt1 //560us{ staticunsignedchari=0; if(++i>=4) //得到精确的560us的延时 { i=0; TR0=0; }}附录2红外接收程序#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definenop_nop_();sbitCS=P3^4; //ADC0804sbitINTR=P3^3;sbitWr=P2^7;sbitRd=P2^6;sbitMA=P2^3;//电机1sbitMB=P2^2;//电机2sbitMC=P2^0;//电机3sbitENA=P2^5;//电机使能M1sbitENB=P2^4;// M2sbitENC=P2^1;// M3sbitIRIN=P3^2;//红外接收器数据线sbitLED1=P3^6;//灯sbitLED2=P3^7;//LED小灯,智能模式的时候不亮,手动模式的时候常亮sbitP1_0=P1^0;//DHT11sbitclk=P1^1;//TM1616定义时钟管脚sbitdin=P1^2;//定义数据管脚sbitstb=P1^3;//定义片选管脚sbitSA1=P1^4;//行程开关sbitSA2=P1^5;sbitSB1=P1^6;sbitSB2=P1^7;bitzd;//自动模式与手动模式标志位bitm3;ucharnum,flag=1;ucharx,PWM=50;//电机PWMucharADdata;ucharU8FLAG,k;ucharU8count,U8temp;ucharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;ucharU8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;ucharU8comdata;ucharIRCOM[7];ucharcodeseg7code[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管ucharcodechu[2]={"出"};ucharcoderu[2]={"入"};ucharchuru_state=0;voiddelay(ucharx)//x*0.14MS{unsignedchari;while(x--){for(i=0;i<13;i++);}}//ADC0804采样//voidADC0804() //查询方式{ P0=0xFF; CS=0; //片选有效 Wr=0; //写有效 _nop_(); //延时,调用系统函数 Wr=1; //禁止写 CS=1; //片选失效 while(INTR==1);//等待INT1变低,变低数据转换结束 CS=0; //片选有效 Rd=0; //读有效 _nop_(); ADdata=P0; //从P1口获取AD0804转换值 Rd=1; //读有效 CS=1; //片选失效 }voidDelay_10us(void){uchari; i--; i--; i--; i--; i--; i--;}voidDelay1(ucharj){uchari; for(;j>0;j--) { for(i=0;i<27;i++); }}voidCOM(void){uchari; for(i=0;i<8;i++) { U8FLAG=2; while((!P1_0)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(P1_0)U8temp=1; U8FLAG=2; while((P1_0)&&U8FLAG++); //超时则跳出for循环 if(U8FLAG==1)break; //判断数据位是0还是1 //如果高电平高过预定0高电平值则数据位为1 U8comdata<<=1; U8comdata|=U8temp;//0 }//rof} // //湿度读取子程序 // //以下变量均为全局变量 //温度高8位==U8T_data_H //温度低8位==U8T_data_L //湿度高8位==U8RH_data_H //湿度低8位==U8RH_data_L //校验8位==U8checkdata //调用相关子程序如下 //Delay();,Delay_10us();,COM(); //voidRH(void){ //主机拉低18ms P1_0=0; Delay1(180); P1_0=1;//总线由上拉电阻拉高主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us();//主机设为输入判断从机响应信号 P1_0=1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行 if(!P1_0) //T! { U8FLAG=2;//判断从机是否发出80us的低电平响应信号是否结束 while((!P1_0)&&U8FLAG++); U8FLAG=2;//判断从机是否发出80us的高电平,如发出则进入数据接收状态 while((P1_0)&&U8FLAG++);//数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P1_0=1;//数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; } }}voidtm1616write(ucharwr_date){ uchari; stb=0; nop; nop; for(i=0;i<8;i++) { clk=0; nop; nop; if(wr_date&0x01!=0) { din=1; } else { din=0; } nop; nop; clk=1; nop; wr_date=wr_date>>1; }}//TM1616采用固定地址显示数据子程序voidtm1616show(uchardata1,uchardata2,uchardata3,uchardata4){ ucharj; stb=1; clk=1; din=1; tm1616write(0x00);//显示模式设置,设置为4个GRID,7个SEG stb=1;//显示模式设置完毕,STB置1 tm1616write(0x44);//数据命令设置,设置普通模式、固定地址、写数据到显示寄存器 stb=1;//数据命令设置完毕,STB置1 for(j=0;j<4;j++)//4位数码管要发送4次数据 { tm1616write(0xC0);//设置显示地址1 tm1616write(data1);//传输显示数据1 stb=1;//显示数据1发送完毕STB置1 tm1616write(0xC2);//设置显示地址1 tm1616write(data2);//传输显示数据1 stb=1;//显示数据1发送完毕STB置1 tm1616write(0xC4);//设置显示地址1 tm1616write(data3);//传输显示数据1 stb=1;//显示数据1发送完毕STB置1 tm1616write(0xC6);//设置显示地址2 tm1616write(data4);//传输显示数据11 stb=1;//显示数据1发送完毕STB置1 } tm1616write(0x8F);//控制命令设置,设置显示开、显示最亮 stb=1;//显示数据发送完毕STB置1}voiddelayms(uintxms)//延时函数,延时xms{uinti,j; for(i=0;i<xms;i++)for(j=0;j<110;j++);}voidmain(){IRIN=1;//I/O口初始化 IE=0x81;//允许总中断中断,使能INT0外部中断 TCON=0x01;//触发方式为脉冲负边沿触发 TMOD=0x01; //T0工作在方式116位计数器 TH0=(65536-1000)/256; //预先设定定时器初值,1毫秒 TL0=(65536-1000)%256; EA=1; //开启总中断 ET0=1; //开启定时器0中断 TR0=1; //定时器0启动计数LED2=0; while(1) { if(IRCOM[5]=='1')//控制M1正转 { MA=0; IRCOM[5]=0;} if(IRCOM[5]=='2')//控制M1反转 { MA=1; IRCOM[5]=0;} if(IRCOM[5]=='3')//控制M2正转 { MB=0; IRCOM[5]=0;} if(IRCOM[5]=='4')//控制M2反转 { MB=1; IRCOM[5]=0;} if(IRCOM[5]=='5')//控制灯的开关 { LED1=~LED1; IRCOM[5]=0;} if(IRCOM[5]=='6')//自动键 { zd=1; LED2=1; IRCOM[5]=0;} if(IRCOM[5]=='7')//手动键 { zd=0; LED2=0; IRCOM[5]=0;} if(SA1==0||SA2==0)//M1行程开关,碰到就不转了 { MA=1;} if(SB1==0||SB2==0)//M2行程开关,碰到就不转了 { MB=1;} if(zd)//自动模式 { ADC0804();//读取光照强度 RH();//读取温湿度 tm1616show(seg7code[U8T_data_H%100/10],seg7code[U8T_data_H%10],0xFF,0xFF);//显示温度 if(ADdata>180&&m3==0)//光强大于180的时候M3反转5秒 { MC=0; delayms(

温馨提示

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

评论

0/150

提交评论