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

下载本文档

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

文档简介

1、基于单片机的的智能晾衣系统 设计作者:日期:安徽大学嵌入式系统工程训练课程设计报告题 目基于单片机的智能晾衣系统设计学院电子信息工程学院专业通信工程专业组员 姓名与学号指导教师张红伟、赵博20 1 8年7月基于单片机的的智能晾衣系统设计随着社会经济水平的发展,现在人们的生活追求个性化、自动化,追求快节奏,追 求充满乐趣的生活方式,家装要求的档次越来越高 ,生活家居人性化、智能化的 要求使智能控制技术在智能家居电子产品中得到了广泛应用,伴随着智能家居的快速发展,晾衣工具的智能化发展明显落后与其他家用器具智能化发展之后,现在己经引起社会的很大关注。本论文为了把握市场动态,顺应时代主题,设计并实现了

2、智能晾衣架系统。采用单片机进行采集光照、雨滴两个外部天气信号,并通过单片机控制旋转衣架,旋转衣架通过步进电机进行调节,当外部天晴,且无 雨时,将衣架转出,晾晒衣物;当下雨或者没有阳光时,转回室内,防止被雨打 湿,或者天已黑。其中光照传感器采用光敏电阻, 雨滴传感器采用ly-69雨滴检 测传感器,控制硬件采用步进电机,按键电路设定光照和雨滴的阈值,l602液晶 显示感测量和设定值,及工作状态。通过设计和实验调试完成了基于单片机的智 能晾衣系统。, i i1 . . . . . . . . .i1.1 i:九j与忌乂 . . . . . .41. 2本设计的发展现状 42. 3研究方法51 . 4

3、 研究内容5二.智能晾衣系统的硬件设计 53. 1 设计要求51.1 2 整体设计框图 .62.3 系统组成概述 62.4 系统设计要求 72 . 5光强采集模块72. 6温湿度传感模块82 .7驱动模块92.8显示模块. . . . . . * . .1)三.基于单片机的的智能晾衣系统的软件设计 13. 1 系统分析3. 2 stc 89c52 rc|1片机介绍.1 23. 3程序设计1 43 .4软件算法1 4四.实验调试165 .结论与展望 186 .心得 .18参考文献一、引言1.1 研究背景与意义基于现在晾衣架发展现状,本设计开发了一种能帮助人们摆脱原始操作的智 能晾衣架。本新型晾衣

4、架主要特点在于:可以伸缩,操作简单,占地面积小,美观实 尸构优点。同类产品虽有可收缩式的,但属组装而成,操作比较麻烦,而本晾才 架只需按下打开按键,衣架杆即可自动伸展开来。同时晾衣架能识别晴雨天气一 自动完成收衣服功能的目的。晴雨智能晾衣架能有效地避免在下雨时, 衣服无人 收起而被雨淋湿;或在天色变晚时,衣架能自动收回,避免衣服在外面过夜1.2 智能晾衣架的发展现状在中国各大中城市以及农村普遍是将衣物晾晒于阳台内部或外部,而传统的晾晒衣物方式是阳台内天花板下设置有钢筋挂钩, 钩卜通常是挂有竹杆或其它杆 体。人们通常习惯于用一支撑杆将衣物支撑到晾衣杆晾晒,这样晾晒衣物费时费 力,而且布置钢筋及竹

5、杆与当今现代化建筑结构的阳台也不搭配、有失雅观。另外,家庭通常大都是老人晾衣物,因此,传统的支撑晒衣、收衣不仅是费神费力,而目.容易扭伤筋胃或支撑不顺扎伤人体。正因传统晾晒衣方式有众多的不便, 后出现手摇晾衣架,手摇晾衣架改变了支撑晾衣架的传统习惯, 同时也给众多家 庭带来了更多的方便。但手摇晾衣架需设置多个机械装置和支撑点,同时需多根 网线布置来带动其晾衣杆上下升降。由几支撑点及多根网线的布置,手摇式晾衣架给原本漂亮的阳台增添了不美的因素。其次,手摇晾衣架的升降每次都要人工 转换接头,目.需要人力摇动慢慢将杆升降,若晾杆承载的衣物重量过大 ,摇上去 既费力又容易伤手。因此,手摇晾衣架虽然改变

6、传统支撑晾衣的不便,但没有彻底改变费神费力的根本状态。人们期望着一种更方便更美观的新型晾衣架的出 现。1.3 研究方法(1)文献法。由于本研究将会触及到很多单片机方面的绘图以及变成等方面 的知识和技术,为了能够更好的完成研究,所以需要对大量的期刊杂志等书籍进 行浏览、整理和分析。这样做能够快速而且有效的获得大量对本研究由有利的信 息和材料,因此成为研究方法不可缺少的部分。(2)观察法。合理的观察对研究有很大的帮助,这种研究方法具有很强的目的 性和计划性,在实验中往往能达到意想不到的效果, 从而开辟人们的思路,招致 新的发现,因此也成为研究方法不可缺少的部分。1.4 研究内容基于单片机的的智能晾

7、衣系统设计,需要采用单片机作为控制中心,实现自动晾衣的功能,并根据具体情况进行相应的调整,具体性能和指标如下:(1)智能晾衣杆全自动工作,可实现无人操控(2)晾衣杆只有两个位置,伸出去,缩回来(3)位置检测:晾衣杆伸出去时,到达指定位置能够停下来(4)光敏传感器:天黑时候将衣服收回来,天亮时候或者阳光猛烈的时候伸出去晾晒(5)温湿度传感器:下雨温湿度变大的时候将衣服收回来(6)参数灵敏度调节(动态设置):按键+液晶显示(7)供电:5 v电源供给单片机、电机:、智能晾衣系统的硬件设计采用单片机进行采集光照、雨滴两个外部天气信号,并通过单片机控制旋转 衣架,旋转衣架通过步进电机进行调节,当外部天晴

8、,且无雨时,将衣架转出,晾 晒衣物;当下雨或者没有阳光时,转回室内,防止被雨打湿,或者天已黑。2. 1设计要求(1 )构建一个型号为stc8 9 c52的单片机系统(内含用口通信电路,单片机最 小系统),作为系统的主控模块,负责数据的采集、处理与分析、执行部件的控 制等;1.1 )检测功能:实时检测温湿度传感器测得的温度值、 湿度值;实时检测环境的 光强值;实时检测限位开关的状态,为电机转动时提供停转信号;1.2 显示功能:通过液晶屏16 0 2对系统的参数及系统状态进行指示;1.3 执行部件:2路继电器模块,在本系统中采用 2路继电器实现对电机正转、反转和停转的控制,以此来模拟晒衣、收衣和停

9、止的动作 ;1.4 程序编写:使用k eil c软件编译环境,使用c语言进行系统程序的编写, 并在程序中对采集到的数据进行分析、处理和显示。2.1 整体设计框图控制总体款图如下图2. 1所示,通过光照传感器和雨滴传感器感知外部大 气的光照和雨滴情况,按键设定光照和雨滴的阈值,衣架位置传感器采集衣架所 在位置,最后单片机驱动步进电机,将衣架来回于室内室外。图2.1 系统程序框图2.3 系统组成概述系统主要由:控制系统核心、温湿度模块、光强检测模块、电机驱动模块、直流 电机、开关模块和显示模块。控制系统核心作为系统的控制核心和数据处理中心; 湿度检测模块用来采集环境湿度信号;光强检测模块用来采集环

10、境光强信号;电 机驱动模块用来功率放大驱动电机正反转,进而带动晾衣架做伸出或缩回运动; 开关模块是用来设置系统工作模式,并在手动工作模式下,设置晾衣架的伸出或 缩回;显示模块用来显示湿度数据、光强情况、晾衣架状态等内容2.4 系统设计要求(1)简单性:智能晾衣架是为现在生活节奏快的上班一族设计,因此本设计必须操作简单,因为忙碌一天的上班族是不愿意在这些小事上花费精力。而且本设计就是为了解决生活小事,若是操作繁杂,这就与我们的初衷恰恰相反的,所 以此设计必须操作简单。(2)经济性:本设计拥有着大量的潜在市场,是能够在家庭中应用的。所以 必须要设计合理。设计合理中经济性尤为重要,而且我们设计的是智

11、能晾衣架,作为一个晾衣架本身功能来说,就决定了本设计的产品价格就不能太高。并且 , 任何人都喜欢性价比高的产品。所以我们的设计应该追求物美价廉。 这就要求我 们不仅要技术先进,经济上也要更加合理。(3)实用性:本设计是工具,因此我们设计应该多考虑一些实用功能,不能设 计那些不实用的功能。本设计针对的是经常在露天晾晒衣物的人群设计,所以在设计过程中也会做一些调整,添加实用的功能,减少冗杂而不必要的功能。(4)安全、可靠性:因为智能晾衣架是应用于家庭的, 所以要保证其安全、 可靠性。从电子元件、电路设计、材料的选用都应注意提高其安全性与可靠性。2. 5 光强采集模块为了对外部光照强度的测量,论文采

12、用光敏电阻对光照进行测量,如图2. 2 所示光敏电阻,此光敏电阻是负参数的光敏电阻,也就是说光照增强后电阻阻减 小,我们通过实验测量得到光敏电阻的电子变化范围在几百欧姆到几兆欧姆之间 变化,当光强度很大时,光敏电阻的阻值可达几百欧姆,当在黑暗的环境中时,测 量光敏电阻两端的阻值,可达几兆欧姆的电阻。图2. 2光敏电阻 为了实现与光敏电阻的阻值想匹配的电阻,我们采用10k的电阻进行上拉电阻。通常情况下, 光敏电阻的阻值在千欧姆上,所以当光照弓s度很大时,光敏电阻的阻值很小,进行 图2.2电路后输出的信号就是很小的电压信号; 当光照强度很小时,即黑暗情况 下,光敏电阻的阻值很大,进行图2 .2电路

13、后输出的信号就是接近供电电源的电 压3. 3 v。在电压信号输出后,采用1 0 4电容进行滤波,已得到更平滑的信号 波形,方便单片机对信号的处理,不会因为光照的不稳定 ,而导致误判。图2.2光敏电阻2.6温湿度传感模块dh t1 1数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 ntc测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、 抗干扰能力强、性价比极高等优点。每个dht11传感器都在极为精确的湿度校验 室中进行校准。校准

14、系数以程序的形式存在 otp内存中,传感器内部在检测型号 的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。 超小的体积、极低的功耗,使其成为给类应用甚至最为苛刻的应用场合的最佳选 择。产品为4针单排引脚封装,连接方便。连接方式如图2.3图2 . 3 dht11连接方式2 .7驱动模块1 .电机要实现正反转控制,将其电源的相序中任意两相对调即可(我们称为 换相),通常是v相不变,将u相与 愀目对调节器,为了保证两个接触器动作时 能够可靠调换电动机的相序,接线时应使接触器的上口接线保持一致,在接触器的下口调相。由于将两相相序对调,故须确保二个km线圈不能同时得电,否则会 发

15、生严重的相间短路故障,因此必须采取联锁。为安全起见,常采用按钮联锁(机 械)与接触器联锁(电气)的双重联锁正反转控制线路(如下图所示);使用了按 钮联锁,即使同时按下正反转按钮,调相用的两接触器也不可能同时得电,机械上 避免了相间短路。另外,由于应用的接触器联锁,所以只要其中一个接触器得电, 其长闭触点就不会闭合,这样在机械、电气双重联锁的应用下,电机的供电系统 不可能相问短路,有效地保护了电机,同时也避免在调相时相间短路造成事故,烧 坏接触器。2 .用单片机控制直流电机正反转: 继电器介绍:继电器nc vcccom gnd no in继电器引脚图vcc就是电源正极,gn则是电源负极,in是通

16、断信号的输入引脚。而另一 边,nc即常闭端,com即公共端,no即常开端。在中学物理中已经学过,开路即通 路、断路,闭合指的是开关闭合,也就是说,在没有任何上电之类的动作时,nc 和cgm端相当于已经连通,这种继电器模块的连线一般为:因为在一般情况下n c是闭合的,所以我们要接到no接口,然后信号输入引脚即in引脚给低电平,nc 端断开,nc端闭合,负载端电路形成闭合回路,开始工作,当in端给高电平时,no 端断开,负载即停止工作。如果想一直工作,给信号停止工作,即把nc端的连线接在nc端就行了。继电器的g nd要和单片机的g nd接在一起共地,也可以使用 同一个电源来达到共地的效果)继电器被

17、发明的目的使用来用弱电控制强电,保 证人们不会在高压电路中因为某种因为发生危险 (当然单片机使用的继电器模块 驱动电流很小,甚至光耦隔离的继电器,只需要一个低电平的信号即可触发,并不 需要太大的电流。3 .继电器常开端接5 v电压,常闭端接地。继电器公共端,常闭端,常开端,当 p3.4 口为1时,继电器com与常开端吸合,为5v, p3.5 口为0,继电器c om端 与常闭端吸合,电机两端产生电压差,实现正转,再根据采集到的数据与阈值比较 判断来改变p 3.4, p3.5状态,实现正转,反转,停转,模拟收衣,晾衣。2. 8 显示模块1 6 02液晶也叫160 2字符型液晶,它是一种专门用来显示

18、字母、数字、 符号等的点阵型液晶模块。它由若干个5x7或者5x1 1等点阵字符位组成,每个 点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有问 隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形 (用 自定义cg ram,显示效果也不好)。1 602l c d是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 市面上字符液 品大多数是基于hd4 4780液晶芯片的,控制原理是完全相同的,因此基于 hd44780w的控制程序可以很方便地应用于市面上大部分的字符型液晶。三、基于单片机的的智能晾衣系统的软件设计软件部分c语言进行

19、编写,开发环境选择keil4。采用单片机进行采集光照、 温湿度两个外部天气信号,并通过单片机控制旋转衣架,旋转衣架通过步进电机 进行调节,当外部天晴,且无雨时,将衣架转出,晾晒衣物;当下雨或者没有阳光 时,转回室内,防止被雨打湿,或者天已黑。3.1系统分析外部天气的光照和下雨情况,如下表3.1:是否启阳光是占卜雨衣架状态否否收回否是收回是否晾晒是是收回所以我们可以通过表格发现,只有当外部天气是晴天 ,且没有雨的时候,衣物是可以进行晾晒的,其他条件下,都需要将衣物拿回室内3 .2 s tc 89 c 5 2r c单片机介绍t2/pe 0 | vcc140|t2ex/pe 1 q239_ p0,

20、0/ad0p1, 2 338 p0. 1/ad1pl 3 437 po. 2/ad2pl 4 _536:_ p0.3/ad3pl 5 635p0.4/ad4pl 6 y734 p0. 5/ad5pl 7 833| p0,6/ad6rst g321 p0, 7/ad7rxd/p3.0 |10311| eatxd/p3. 11130ale/progint0/p3. 212 stc89c52rc 22 psenint1/p3,3 l 一1328 1 p2. 77al5t0/p3.4 |1427 1p2.6/a14t1/p3,5 |1526, p2. 5/a13(k/p3.6 lj1625二i p2.

21、 4/al2rd/p3. 7 l_j1724 1 p2. 3/a11xtal21823 p2,2/a10xtal1o1922_p2,1/a9vss i2021 p2. 0/a8图3.2 stc89c52弓i脚图主要特性如下:1?.增强型8051单片机,6时钟/机器周期和1 2时钟/机器周期 可以任意选择,指令代码完全兼容传统8051.2 .工作电压:5.5v3 . 3 v(5v单片机)/ 3 . 8 v2. 0v (3v单片机)3?.工作频率范围:040mhz ,相当于普通8051的08 0 mhz实际工作频率可达4 8 mhz4 .用户应用程序空间为8 k字节5 .片上集成512字节ram6

22、 .通用i/o 口(32个),复位后为:p1/p2/ p 3/p4是准双向口/弱上拉,p0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为i/o口用时,需 加上拉电阻。7? i sp(在系统可编程)/iap(在应用可编程),无需专用编程器, 无需专用仿真器,可通过用口(rxd/p3 . 0,txd/p3.1)直接下载用户程序,数秒 即可完成一片8?.具有eepromb能9?具有看门狗功能10?.共3个16位定时 器/计数器。即定时器t 0、t1、t211?.外部中断4路,下降沿中断或低电平触 发电路,power down模式可由外部中断低电平触发中断方式唤醒1 2 .通用异步用行口(

23、uart),还可用定时器软件实现多个u art1 3.工作温度范围:-4 0+ 8 5c (工业级)/075 c (商业级)1 4 .pdip封装stc8 9c52ro片机的工作模式1、掉电模式:典型功耗 0.1仙a,可由外部中断唤醒,中断返回后,继续执行原程 序2?、空闲模式:典型功耗2m咫?、正常工作模式:典型功耗 4ma7ma 掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备stc896 2rci片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片 机,指令代码完全兼容传统8051单片机,1 2时钟/机器周期和6时钟/机器周期 可以任意选择。3. 3程序设计c语言是

24、计算机程序设计语言的一种,它处于机器语言与高级语言之间,它不仅具备机器语言的特点,同时又具备高级语言的特点。c语言1 9 72年产生于 美国,它是由贝尔研究所的 d.m.rit chi e推出的。在此之后,各种不同类型的 计算机都被移植成为c语言。c语言不仅能够编写工作系统和控制程序代码,还 能够作为设计应用程序的语言,其编写的应用程序与计算机硬件无绝对关系。如 今,c语言的使用范围非常之广泛,因为该语言极其强大的处理数据的能力,已经 不仅仅是应用在软件的开发上,很多种类的科研也都开始使用c语言编程网。c语言简明易懂、开发和维护都很方便,并且不受硬件操作能力约束,采用 模块化设计移植很容易,开

25、发周期短。使用c语言开发单片机的控制程序代码, 储存单元的分配都是通过编译器自动完成的, 程序设计者只需要关注程序本身的 设计,无需考虑储存单元分配等问题。c语言可以采用模块化的编程,对一些常 用控制功能或算法的函数可以编写相应的程序块,在使用时直接调用,可以极其方便的进行程序开发和移植,缩短程序开发周期。3 .4 软件算法算法从最初对的系统初始化、外设初始化后,就通过按键9设定 光照和雨滴的阈值,来决定怎么样的光照强度和怎么样的雨滴强度, 才能使衣架出去晾晒,或者回到室内。之后就判断是否有雨,是否有 光照,若有达到相应强度的光照和没有雨时就出去晾晒衣物,其他清 理进室内。但是有时机器也会被东

26、西给卡主,所以需要检查衣架是否 有故障,若有故障,就停下来,若无故障就完成上一步没有完成的动 作,即回到室内或者出室晾晒。算法图i ej rlfflm四、实验调试通过设计调试得到图4.1测试图:1.用手遮住光强传感器使外界光照低于设定阈值30 c d,此时电机反转收回衣架2.用手电筒模拟强光使光强大于阈值10 0 cd,此时电机正转晾出衣架3.用手捂住温湿度传感器使其湿度大于设定阈值70,此时电机反转收回衣架4.无论何时按下按键k 3 ,电机总会停止转动,手动收衣架可以看出实现运行正常,且可行。当外部天晴,且无雨时,将衣架转出,晾晒 衣物;当下雨或者没有阳光时,转回室内,防止被雨打湿,或者天已

27、黑。五.结论展望本报告设计并实现了基于单片机的智能晾衣系统,通过实验调试,当外部大 晴,且无雨时,衣架转出,晾晒衣物;当下雨或者没有阳光时,转回室内。完成要 求中智能晾衣杆全自动工作,实现无人操控;晾衣杆有两个位置,伸出去,缩回来; 可以进行位置检测:晾衣杆伸出去时,到达指定位置能够停下来;有软件容错处理: 晾衣杆伸缩过程中遇到各种障碍,能够通过软件容错处理来停止;使用光敏传感器:天黑时候将衣服收回来,天亮时候或者阳光猛烈的时候伸出去晾晒;使用雨滴 传感器:下雨的时候将衣服收回来;参数灵敏度可以调节(动态设置):按键+液晶 显示;采用5 v供电:5v电源供给单片机、电机。本报告实现了智能晾衣系

28、统,还需要结合市场,对衣架的结构和工作方式。比如旋转还是上下伸缩,前后 伸缩等,进一步完善系统,使之满足市场需求,更好的为客户服务。六、心得张旭:1.通过这次单片机课设,我们学到了很多平时难得的东西,首先是团队协 作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理2 .通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们 处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题 和实践能力的提高都将受益于我在以后的学习、工作和生活中。3 .此次的设计,其实也是我们所学知识的一次综合运用,让我深深的认识到了学 习单片机要有一定的基础,要有电

29、子技术方面的数字电路和模拟电路等方面的 理论基础,特别是数字电路;也要有编程语言的汇编语言或 c语言。要想成为 单片机高手,我们首先要学好汇编语言,然后转入c语言学习,所以我们不能 学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。高彭:1 .在智能晾衣架系统的设计与搭建中,我学到了很多。温湿度器件,ad转换 模块,继电器以及单片机主板,我认识了好多器件。不仅仅是它们在书上描 写到的那些,还有它们在实际中的应用。2 .在这次设计中更可贵的是懂得了将实际情况加入到搭建的系统中。根据 实际可能发生的情况以及用户可

30、能的需求来改进系统,更多的从使用者的角 度去考虑这个系统需要怎样的功能,怎样做才能更便利。3 .当中间遇到了很多的问题,比如高压继电器的驱动问题,软硬件结合的问 题。这些问题的解决有一部分要归功于与另一组的讨论,团队合作与交流的 重要性在开发中也很重要。通过搭建系统学到了很多软硬件知识,也认识到 了自己的很多不足,希望能慢慢弥补。乐子成:1 .通过本次嵌入式实验我加深了对书本上所学习知识的理解与运用,讲学习到的专业知识付诸实践提高了对专业的兴趣与了解 .2 .在一次次的p pt修改中,收获了最后成功的喜悦.也让我知道了团队分工 的重要,众人拾柴火焰高,好的团队精神往往事半功倍.3 .科技发展日

31、星月异,唯有不断学习,才能充实自己,立足于当下.宋星阳:当今世界的发展已经不断的面向智能、面向科技、面向网络。 如今,我们的 生活已经不断网络化、智能化了,比如说汽车、电脑等等工具。而单片机是这 里面最重要的一部分,此设计也是对我们通信工程有用的一门学生很有用的一 门学科之一。经过小学期学期的设计,我有以下几点感想和对这门课设的总结 1 .自己通过课设也是被单片机的强大功能所震撼 ,课堂上也没有感受到单片的优越性和可操作性,单片机的应用越来越广泛,越来越重要。2 .做课设很重要,不仅要反复操作,还要反复学习,做到各部分软硬件要熟练。3 .时间要安排合理得当,切记不能拖拖拉拉,撰写报告要仔细认真

32、,注重报 告的格式要求和内容的详略得当。总之,此次设计对我很受益 ,收获很多。参考文献1潘清明,丁左武,蒋伟,郑孙伟.防雨、防暴晒、夜晚能自动收缩的智能晾衣 架设计j.机电产品开发与创新,2 007, 0 6: 7 981.2吕广红,黄崇林,陈晓铭.基于at 89 c 52的智能晾衣架的设计j .自动化 与仪器仪表,2013, 02 : 7 1 -7 3.3 刘秋呈,顾凯燕,刘辉.感光智能晾衣架的设计j.科学咨询(科技管理),20 1 3 ,05: 6 7.附件:#incl u de #include /ty p edef un s ig n ed char u 8 ;/ def ined f

33、or un s ign e d 8 b i ts int eg er variable无符号8位整型变量*/t y p edef un s ig n ed i nt u 16;/* d e fin e dfor u n sign e d 16-bi t s in t egerv a riabl e无符号16位整型变量*/#define addwr 0x90/ 写数据地址#define a d drd 0x91/ 读数据地址u n s igned char rea dad c(u nsi gned c har ch 1 );b i t ack; ?/应答标志位 sb it s da=p 2 八1

34、;s bit sc l = p2a0;s bit k4=pi3;sbi t k5=p1八 4 ;sbi t k 6 =p1 八5;sb i t k7 =p1a6 ;sb i t k 8 = p 1a 7;s b i t b eep=p3a3;sbit j d1=p2a 7 ;sbi tjd2=p2a6;sbit j d 3 =p2a5;sbit jd4=p2a4;s bi t jd5=p 2 八3;sb it j d6=p2a2;s bi t led rs_ p o rt =p3a5; /* 定义 lc d控制端口 */s bit led_rw_ p ort =p3 a 6;sbit le d

35、 _ e n_ po r t = p 3 a4;# d efine led_dat a_port pounsi g ned char k 1 f 1 ag= 0 ;un s i gne d in t y = 0,g h 2=160 ,gl1= 8 0,r h 1 = 8 0 , r 11 = 5 0,th1= 2 5,t 1 1=18;/*定义数字asci i编码*/unsigned c h ar mun_ch a r_ tab le口 = 0 1 3 3456789a b c def;u nsign e d c h ar te m p_ta b 1 e = r: % t: c;uns i g

36、n e d cha r temp_tab 1 e1 =gz:000 g : 0 0 0-0 00;# d efi ne u char u n si g ned c ha r# define uint unsi g ned int#de f ine data_0_ time 4/ / / / / io 口 区 1/- - /sb it p2_0 = p 3 a 2 ;f f , - , _ _ _ , , _ _ _ _ , , 一 _ _ , , _ _ _ _ , , 一 _ - 区 / / /ui8 u8flag,k;u 8 u8temp ;ui8 u8 t_da ta_h,u8 t_d

37、a ta_ l , u 8 rh_dat a_h,u 8 rhd a ta_l,u8chec k data;u8u8t_dat a _h_temp,u8t_d ata l_temp,u 8rh_data_h_temp,u8 rh_dat a _l_temp,u8 c heckd a ta_te m p ;u8 u8 c omdata;u8 s t r 5 ;/ / /以下是 dht11 驱动程序 / / /vo i d del a y(u16 j )u8 i;fo r ( ; j0 ; j-)f or( i =0;i27; i +);void delay_10us (void)u8 i;i-;

38、i-;i ;i -;i-;i-;voidcom(v oid )u8 i;f o r ( i =0; i 8;i+ )u 8 fla g= 2;whi 1 e( ! p2_0)&u8flag +);e lay_10us();delay_10us ();delay _ 10us();u8te m p=0;if (pl 0 ) u8t e mp= 1 ;u8flag= 2 ;while( (p2 0) & u8fla3 +);/ 超时则跳出for循环i f (u 8 f lag =1) br e a k ;/ 判断数据位是0还是1/如果高电平高过预定0高电平值则数据位u8co mda ta=1;u8

39、c o mdata | =u8t e mp;/0 / r of-湿度读取子程序/-/-以下变量均为全局变量/温度图8位=u8tdata/温度低 8 位=u8 t _data_l/ / 湿度wj 8 位=u8 r h _ d ata_h-/湿度低 8 位=u8rh _data_l/ /校验 8 位=u8 c hec k da t a/调用相关子程序如下一 /- delay();, delay 10us();,c om();/- vo i d rh(void )/主机拉低18 msp2_ 0 =0;de 1 ay(180);p2_ 0 =1;/总线由上拉电阻拉高主机延时20usde 1 a y_1

40、0u s ();de 1 ay_10 u s();de 1 a y_1 0 us();dela y _ 1 0 u s();/主机设为输入判断从机响应信号p2 0=1;/判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if (!p2_0)/tu8flag= 2 ;/判断从机是否发出8 0 us的低电平响应信号是否结束while (!p2_0 ) &u8 f lag+);u8 f l ag =2 ;/ /判断从机是否发出80us的高电平,如发出则进入数据接收状态w h ile(p2_ 0 ) & & u8f lag + +);/数据接收状态com ();u8 r h_da t a h_

41、temp=u8co mda t a ;c om();u 8rh_data_l t emp=u8comda a ;c om();u 8 t_dat a h_temp= u8comda ta;com ();u 8 t _dat a _l_ t emp= u8co mdata;com();u8check da ta_t e m p=u 8comdata;p2 _0=1;/ /数据校验u8temp = (u8t_d a t a_h_temp+u8jda ta_l_temp+u 8 rh data_h_temp+u8 r h_d a ta l_t e mpp ;i f (u8 t emp=u 8 c h

42、ec kdata_temp) u8rh_dat a _h =u8rh_data_h_te mp;u8r h da t a l=u8rh data_l_ t em p;u 8 t data h=u8t data h te m p ;u8t data l=u8t data l temp;u8checkdata = u8 checkd ata temp;/f i /fi/ / 以上是dht1 1 驱动程序/ / / /以下是lcd16 02驱动程序/ / v o id lcd_d e 1 ay(uchar m s ) /*lcd1 6 0 2 延时* /ucha r j;w h i 1 e( m s

43、-)fo r (j=0;j 2 5 0; j +);voi d 1c d_busy_wai t () / *lcd1602忙等待 */l c d_rs_ p o rt =0;lcd_rw p o rt =1 ;lcd_ e n_p o r t =1 ;lc d _data_port = 0 x ff;while (l c d_data_port & 0x80);lcd_en_p o rt =0;void l c d_comma d wr i te(u char co mm and) /*lcd 160 2命令字写入*/lcd_b u sy_wait ();lcd_rs_por t =0;1 c

44、d_rw_po r t = 0 ;l c d e n_p o r t =0;1 cd_ data_po r t = co m man d;lcd_en p ort = 1;1 c d _en p o r t =0;初始化* / v oi d lcd _ sy s t e m_r e s e t() /*lcd1602lcd_de 1 a y (20 );l c d comm and writ e ( 0x38);lc d _dela y (100);lc d _co mmand_ r it e (0x38);1 c d _ d ela y (50 );1 c d _command _write

45、 (0x38);1 c d_d e la y ( 1 0);lcd_comm a nd_wri t e(0x08);1c d c ommanl _wr i t e (0x0 1 );1cd_c o mmanl _wr it e ( 0 x 06);led command_w i te( 0 x0c);v oid 1cd_c h ar_ w r i t e (uch a r x_pos,y_pos , 1c d dat)/*lcd1602字符写入*/ x _ pos &=0x0 f ; /* x 位置范围 015 */y _ pos &= 0x01; /* y 位置范围01*/if( y p o

46、s= 1) x _pos += 0x40;x_ p os += 0x80 ;1c d _command_wr te(x_po s );1 c d_busy_wai t ();1 cd_rs _ port = 1;1 cd_rw_ p o rt = 0;1c d e n _ por t = 0;1cd_ d at a _port = 1cd_d a t ;1 c d_e n _por t =1;l c d_e n _p o rt = 0;/ / / / / / 以上是 l cd 1 6 02 驱动程序/ / / /川 /i /mm / / /以下是 a d程序 i/iiiiii /illi /v

47、oid _nop(void ) iii2 c延时程序? n t k;for (k=0 ; k v 10; k+ +);/ / /iiiiiiii/ /iiiii/iii /iii /启动总线 _ _ _ _ - */void star t _i2 c ()sda= 1 ;/发送起始条件的数据信号_nop ();sc l=1; _nop() ;/起始条件建立时间大于 4. 7 us,延时_n o p();_no p ();_ nop ();_nop();sda= 0 ;/发送起始信号_nop ();/起始条件锁定时间大于4_nop();_n o p ();_ nop ();n op ();s c

48、 l=0; / /钳住i2 c总线,准备发送或接收数据nop ();_n op();/* - - 结束总线 一 */void s top 12cosda=0; /发送结束条件的数据信号no p(); 发送结束条件的时钟信号scl = 1 ;/ /结束条件建立时间大于 4_nop();_n。p();_nop();_nop();_no p ();sda=1; /发送i2c总线结束信号_ nop();_nop ();_nop ();_n op(); v o id key s can()字节数据传送函数函数原型:vo id se n d by t e( u n s igne d c har c);功能

49、:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,弁对此状态位进行操作.(不应答或非应答都使ack=0假)发送数据正常,ack=1; ac k = 0表示被控器无应答或损坏。void*/sen dbyte( u n s i g n ed ch a r c)u nsig ne d c har bitcntfor(bi t cnt =0; bitcnt 8 ; b i t c nt +)/要传送的数据长度为8位if(c v bi t cnt )&0 x 80)sda= 1 ;/ 判断发送位else sd a=0;_ n op();scl=1;/置时钟线为高,通知被控器开始接收数据位_n

50、op();_ nop();/保证时钟高电平周期大于4_n o p ();nop ();_nop();s c l= 0;_no p();_ nop ();sd a=1;/8位发送完后释放数据线,准备接收应答位_n o p ();_nop();scl =1;_ nop ()_no p ();_nop();/判断是否接收到应答if(sda=1)a c k=0;else a ck= 1 ;信号s cl=0;_ nop();_n o p();/ * 字节数据传送函数函数原型:u n s igned cha rrcv b yte();功能:用来接收从器件传来的数据,弁判断总线错误(不发应答信号),发完后请

51、用应答函数。 */?unsigned c har r c vby te()un s ign e d char r e tc ;u ns i gne d c ha r bi t cn t;ret c = 0;sda=1;/置数据线为输入方式fo r (bitcnt= 0 ; bi t cn tv 8;bitcnt+)_nop ();scl=0/ /置时钟线为低,准备接收数据位nop();_nop();/时钟低电平周期大于4.7us_nop();_nop();_nop();scl= 1;/置时钟线为高使数据线上数据有效nop();_n 。p();retc= ret c1;i f(sda= 1)retc=retc+

温馨提示

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

评论

0/150

提交评论