1、南京邮电大学 毕业设计(论文)题 目 智能感光窗帘自动调节与控制系统专 业 电气信息工程学生姓名班级学号指导教师指导单位 自动化学院日期:2012年3月14日至2012年6月5日毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行 研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包 含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献 的个人和集体,均已在文中以明确方式标明并表示了谢意。论文作者签名:日期:2012年6月5日摘 要随着社会的不断进步,物联网已经成为国家五大新兴战略性产业之一,是当 今科技发展的重要方
2、向。智能窗帘作为物联网智慧家居的一环,也得到了越来越 多的关注和需求。但是,通过对国内外产品的调查,发现现阶段的智能窗帘存在 着诸多缺憾。如:不能多层复合控制,无智能操作界面,只能单一模式运行,参 量出厂固定,采用简单的机械记忆,光控易受干扰等多方面的缺点。本文基于嵌入式单片机,设计搭建一种新的智能窗帘系统,来解决现阶段的 不足。该系统通过对光控的重新设计,对开合帘和百叶帘进行复合控制;通过使 用液晶屏和相应的交互界面,提供智能简便的操作体验;通过多项可设参数和多 种控制模式,来适应不同的环境需求;通过实时存储来避免重复调校等。在此基础上,系统一方面设计一键读取、一键控制、自动定位、超加超减等
3、 创新性功能使交互操作更智能友好,一方面设计取平均法、三点控制、定向读取 等措施使智能控制更准确稳定。另外,采用步进电机替代管状电机控制百叶帘,使系统成本大大降低的同时,控制更精确可靠。关键字:智能感光窗帘;嵌入式单片机;步进电机;交流电机;ABSTRACTWi th th e pr o gr ess o f so ci ety,th e Inter net o f Th i ngs h as b eco me o ne o f th e fi ve emer gi ng str ategi c i nd ustr i es.It i s an i mpo r tant d i r ecti
4、o n i n sci ence and tech no lo gy d evelo pment.Smar t cur tai ns as par t o f th e nsmar t h o me o n th e Inter net o f Th i ngs get mo r e and mo r e attenti o n and d emand.Ho wever,th r o ugh th e i nvesti gati o n o f d o mesti c and fo r ei gn pr o d ucts,at th i s stage smar t cur tai ns th
5、 er e ar e many sh o r tco mi ngs.Fo r example:we canno t multi-layer co mpo si te co ntr o l,smar t user i nter face,o nly a si ngle mo d e,facto r y fi xed par ameter s,usi ng a si mple mech ani cal memo r y,suscepti b le to i nter fer ence li gh t co ntr o l,and many o th er sh o r tco mi ngs.Bas
6、ed o n th e emb ed d ed mi cr o co ntr o ller d esi gn to b ui ld a new smar t cur tai n system,to ad d r ess th e d efi ci enci es at th i s stage.Th e system r e-d esi gns o f li gh t co ntr o l co mpo si te co ntr o l th e o peni ng and clo si ng cur tai ns and Veneti an b li nd s;b y usi ng th e
7、 LCD scr een and th e co r r espo nd i ng i nter face,pr o vi d es a smar t and easy o per ati ng exper i ence;can b e set th r o ugh a numb er o f par ameter s and a var i ety o f co ntr o l mo d es,ad apt to d i ffer ent envi r o nmental need s;uses r eal-ti me sto r age to avo i d d upli cati o n
8、 o f ad justment.On th i s b asi s,th e system d esi gn a key to r ead,o ne-b utto n co ntr o l,auto mati c po si ti o ni ng,super ad d i ti o n and sub tr acti o n and o th er i nno vati ve featur es th at make i nter o per ab i li ty mo r e i ntelli gent and fr i end ly.On th e o th er h and,th e
9、d esi gns o f aver agi ng meth o d,th r ee-po i nt co ntr o l d i r ecti o nal r ead make i ntelli gent co ntr o l mo r e accur ate and stab le.In ad d i ti o n,th e stepper mo to r i nstead o f th e tub ular mo to r to co ntr o l th e Veneti an b li nd s,so th at th e system gr eatly r ed uce th e
10、co st at th e same ti me,mo r e accur ate and r eli ab le co ntr o l.Key words:intelligent light sensing curtain;embedded microcontroller;stepper motor;AC motor;目 录第一章绪论.11.1 项目概述.11.2 国内外发展现状.11.3 设计目的与意义.21.4 研究思路与方法、各章节安排.3第二章总体方案设计.42.1 控制系统功能.42.2 系统总体结构设计.42.3 设备与元器件的选用.5第三章 系统硬件设计.63.1 总体设计.6
11、3.2 8 9C54最小系统.63.3 12864液晶显示.73.4 DS1302时钟电路.83.5 无线收发电路.83.6 I2C 总线.93.6.1 PCF8 591及光敏二极管电路.93.6.2 AT24co2 存储器.93.7 窗帘驱动电路与机械设计.103.7.1 开合帘控制系统.103.7.2 百叶帘控制系统.11第四章系统软件设计.134.1 总体设计.134.1.1 程序流程.134.1.2 主函数.134.2 基本模块子程序.154.2.1 液晶显示(12864发送接收).154.2.2 时钟模块(DS1302发送接收).164.2.3 模数转换(Fc 连接 PCF8 591
12、).164.2.4 存储记忆(I2c 连接 AT24co2).184.2.5 无线接收.184.2.6 交流电机驱动.194.2.7 步进电机驱动.194.3 智能控制子程序.204.3.1 操作界面设计.204.3.2 光控设计.214.3.3 时控与双控.234.3.4 手动控制.234.3.5 重置与校准定位.244.3.6 控制参数设置.244.3.7 定时中断程序.25第五章系统测试与分析.265.1 系统开发与测试.265.2 遇到的问题及解决方法.265.3 系统使用说明.29结束语.30致谢.31参考文献.32附录A系统实物照片.33附录B设备与元器件选用表.34附录C程序部分
13、源代码.35南京邮电大学2012届本科生毕业设计(论文)第一章绪论1.1 项目概述随着科技的深化发展,人民生活水平的日益提高,自控系统从安防、采暖、采光、烹煮等领域不断扩展,家居智能化的趋势越来越明显。本文针对的,是智 能窗帘这一块,它的任务是通过简单省力的操作来实现室内采光自动变化,解决 一些实际的困难与需求。例如:已经上床睡觉,却发现窗帘没关;小朋友、残疾者拉窗帘的不便;外 出旅游,需要房间保持定时采光,去湿去霉;希望早上窗帘到点打开,用明亮的 阳光来唤醒自己;由于生活的紧凑,没有精力管理窗帘又希望室内采光自动保持 在舒适的程度;飘窗、高窗、悬窗、落地窗等窗帘的拉不动或够不着;希望非触 碰
14、地拉动层层叠叠的窗帘,保持其造型的美观 这种种问题,通过使川智能 电动窗帘便能轻松解决,从而使现代生活变得更方便舒适。人们对智能窗帘的要求一般有:定时开关窗帘、根据光线自动调节采光、电 子控制取代手动拉扯这三点,在此基础上,也进一步有:多窗并行控制、多种复 合控制、无线遥控、高精确采光、静音运行、远程控制、中控兼容等适应不同场 合的不同需求。1.2 国内外发展现状本小节,就如今国内外智能窗帘的构造类型、电动机的选用、智能控制的创 新点等几个方面进行介绍。1.2.1窗帘的构造方面主要的构造类型有开合帘、卷帘、罗马帘、百叶帘、风琴帘等。经典的开合 帘在遮光和美观上都有不错的效用,有普遍的适用性;卷
15、帘简洁、方便,主要在 办公大楼、会展中心等高窗场所使用;罗马帘美观、高档,主要在酒店大厅、餐 厅等高档娱乐场所使用;百叶帘具有出色的调光功能,在办公室、洗手间等场所 使用;风琴帘独特的蜂巢设计,使空气存储于中空层,可防紫外线、隔热、防静 电,拉绳隐藏在中空层,完美实用,主要应川于别墅、阳光房和家庭居室。1.2.2 窗帘的电动方面拉线类窗帘主要为管状电机。直流管状电机噪音较小,扭力偏小,可以在小 型窗户使川,但不适合高窗用;交流管状电机是普遍适用的升降帘电机,一般升 降帘使用3ON以下的扭力。其配件为与电机配合良好,精度要求较高。开合帘一般采用改变电流方向控制电机的正反转达到开、闭窗帘的目的。在
16、 六米内用一只强力电机就能使窗帘分两边或一边缓慢地拉开或闭上。要求轨道光 滑,走动机构灵活。电机的适应电压范围宽,出轴转矩、负载能力大。-1-南京邮电大学2012届本科生毕业设计(论文)1.2.3 窗帘的智能控制方面目前最常见的智能窗帘,控制上通过墙上电气开关或三四个键遥控,开合帘、罗马帘、卷帘、风琴帘可以根据设定的时间或者光照强度进行打开和关闭,百叶 帘可以自动旋转角度调节光强,一般也都可以进行手动控制。通过对国内外知名电动窗帘企业及电动窗帘配件供应企业产品进行的调查,整合列举它们的优势和创新点:阻力感知:向上遇阻:冰冻时,电机自动探知阻力,停止运行,保护卷帘窗的帘片。向下遇阻:卷帘窗下面有
17、东西或者其他阻力时,电机自动探知阻力,停止运 行或者向上反弹,避免压坏下面的东西。有两种状态:一是遇阻即停止,另一种 是遇阻反弹。定限位的创新:自动设置上下限位:第一次通电后,电机向上运行,遇到外置在卷帘窗顶端 的阻碍装置,卷帘窗停止,电机记住此点向下一点为上限位点,以后每次都会运 行到此点向下一点固定位置停止,避免每次撞击卷帘窗的帘片以此保护卷帘窗。让电机向下运行,卷帘窗走到最低端遇到阻力,停止,并且记住此点为下限位点,无需人工遥控器设置下限位。也可以手动设置上下限位:通过遥控器设置。还有第三点限位:第三个限位可以设置在中间任何位置。这样,阳光强烈时,只要按一下遥控器,卷帘窗直接到达设置好的
18、第三点限位,既可以挡住部分强烈 的阳光,也可保证室内光线。“拇指转轮”定角度:通过一个类似鼠标转轮的装置,控制百叶帘的叶片翻 转角度,使翻转更加精确;多样的传感:传感对象:风感,光感,温感,雨水传感,红外存在传感;传感方式:有线,无线(电池驱动,太阳能驱动)群窗并联控制:可以使用一台开关同时遥控多台电机,实现多台电机的同 步运行,电机使用电子限位方式,可以实现精准定位。1.3 设计目的与意义虽然现有的智能窗帘已经能够实现这样那样的功能,并且有着一些不错的创 新点。但同时,我们也能够看到它们的很多缺憾,也即可以优化改进的地方:单层控制:国内外电动窗帘产品,多数为简单的遥控电机正反转,着重于多种多
19、样的电 机的开发。智能产品中虽有并联技术等大面积集群控制,但是基本上皆为控制单 层窗帘。然而,随着智能家居的不断推广,人们对智能生活的细腻要求越来越高,-2-南京邮电大学2012届本科生毕业设计(论文)在办公室、家庭等场所对光线的多层控制是一个有待深入发展的方向。若是简单 的将两个智能窗帘系统联合使用,将造成传感误判、智能冲突、控制繁琐等问题。没有界面:目前无论遥控、墙控都没有显示界面一说,至多有几个指示灯。人们总要对 照说明研究后,才能进行设置和控制,对于普通开关以外的操作,很有些不便。模式单一:目前智能产品中虽有光感应、温度感应、定时控制、雨水感应等诸多传感应 川,然而多为只有其中某一项传
20、感在使川,而不能实现多模式复合控制,不能适 应生活各方面带来的复杂需求。阀值固定:目前市面上的产品通常出厂便固定好了光控开关阀值、灵敏度等,然而不同 的自然环境和生活需求所产生的不同的采光需求使产品不能很好的适应与调整。断电的记忆方法:目前的智能窗帘通常采用机械定位限位的方法来硬性实现记忆,但是它也仅 仅只能记得有限的几个位置,真正的智能化控制是有很多的设置量和状态量的,增加记忆功能是个可以考虑的方向。光的错误干扰:安装位置不当会导致“外界光污染和室内灯光,影响误导光传感器的判断”。针对这两小节所谈到的国内外智能窗帘的现状,我们可以扬长避短,在延续 已有系统的优点上,解决其现有的种种缺憾,设计
21、出更智能更实用的系统。1.4 研究思路与方法、各章节安排以51系列单片机为操作与数据处理中心,程序由C语言编写,运川Kei lC51 单片机集成仿真开发平台。实现初步功能:以光敏信号和时钟信号为数据信号输 入,指示灯为数据信号输出,数字按键为控制信号输入,通过继电器控制电机的 运转为控制信号输出;在此基础上,逐步完善液晶显示、无线遥控、数据存储、模数转换等硬件模 块,并就各模块编写驱动程序和功能函数;通过可调稳压电源和电源线测试开合帘和百叶帘的独立运行;其后,就操作界面和智能设计进一步优化系统、丰富功能;最后,实现整个系统强弱电正式连接,加装窗帘,搭建出符合现实的模型;本文以2-5章来介绍这个
22、系统。其中,第2章介绍整个系统的功能和软硬件总 体结构规划;第3章详细介绍系统硬件(3.1讲总体,3.2-3.6讲智能控制的各个模 块,3.7讲窗帘的驱动电路和机械结构);第4章详细介绍软件程序(4.1讲主流 程和主程序,4.2讲各个硬件模块的驱动和功能函数,4.3讲智能控制各个子程序);第5章介绍系统的开发进程,中间的方案,遇到的问题及如何解决。-3-南京邮电大学2012届本科生毕业设计(论文)第二章 总体方案设计2.1 控制系统功能本课题智能感光窗帘自动调节与控制系统采用无线遥控,通过8 9C54单片机 控制开合帘和百叶帘的智能运转,相比国内外已有产品,设计以下功能创新:1、实现开合帘和百
23、叶帘的联合控制,满足多层次、多样化的采光需求;2、使川液晶屏显示,界面直观友好,信息丰富,操作简单易懂;3、提供窗帘的光控阀值、灵敏度等六项参数设置,来适应不同的需求;4、提供了手动、光控、时控、双控四种模式,并可快速切换;5、设计“一键读取、一键切换、一键控制、自动定位、超加超减”等创新性 功能使操作简便、交互智能,不需学习便可轻松掌握系统的控制;6、自动记忆所有参数,即使断电后,也不用重新设置;7、采用光敏二极管定向读取光强,不受室内光线干扰;2.2系统总体结构设计系统以单片机为核心,实现以光敏信号(模数转换)和时钟信号为数据信号 输入;液晶显示屏为数据信号输出;无线遥控(无线接收)为控制
24、信号输入;通 过继电器控制交流电机、通过驱动电路控制步进电机为控制信号输出。各个功能 模块规划设计,如图2.1所示。图2.1总体结构设计软件上,通过定时器确定各个模块的调用频率,主函数以此频率循环扫描各 个功能模块,达到联合有序的控制,如图2.2所示。-4-南京邮电大学2012届本科生毕业设计(论文)A读取指令 读取光强 读取时间 刷新显示 控制电机八 八,八 A-定时器-图2.2程序总体设计2.3设备与元器件的选用控制部分:复杂的电路选用功能模块,以杜邦线等进行接口连接;简单的电 路选用散列元件,以铅线等在面包板上连接。开合帘部分:选用成品的电动机和轨道、旧窗帘,改装其电路接线,选用固 态继
25、电器控制其正反转。百叶帘部分:选用普通的百叶帘,改装其机械结构,以步进电机驱动角度。具体设备与元器件的选用明细见附录B,选用原因和使用方法见第三章。-5-南京邮电大学2012届本科生毕业设计(论文)第三章系统硬件设计3.1总体设计根据总体模块设计,做出硬件各模块连接设计(如图3.1所示)和实物总组装设计(如图3.2所示)图3.1硬件总体模块设计3.2 89C54最小系统从程序大小考虑,选用16k flash的8 9C54单片机;从下载方便考虑,选用宏晶公司STC芯片;芯片及其时钟电路如图3.3,其中,标示了其各个管教所对应的功能模块。-6-南京邮电大学2012届本科生毕业设计(论文)P1.O-
26、P1.3 P1.0vcc5VDC步进电机 zzPl.lPl.2PO.OP0.1Pl.3P0.2P1.4-P1.7 二Pl.4Pl.5P0.3P0.4P0PT2272 Pl.6P0.5128 64数据Pl.7P0.6RST/VPDP0.7P3.O-P3.2 空 P3.0/RxDEA/VppP3.1/TxDALE/PROGP3.2/INT0PSENP3.3-P3.4 I【C P3.3/INT1P2.7P2.7 2272C5 P3.5-P3.7 1302 二P3.4/T0P2.6P2.2-P2.6P3.5/T1P2.5_II_畲 二DQ Ain?DO A_ 12864捽制l|30pF _ 1-P3.
27、7/RDP2.3XTAL2P2.2C6 11 I 1XTAL1P2.1P2.0-P2.1_ _ _1 J_do nl|30pF ll/0592MHzH交流电机图3.3最小系统3.3 12864 7位晶显示选用四行8列中文字库液晶显示屏12864模块,显示电路如图3.4所示,其中 1OK变阻器可以调节屏幕对比度,由单片机5V电源共同供电。图3.4液晶模块接口连接电路常见的ST7920芯片主控的LCD128 64模块引脚定义如下表3.1:表3.1液晶模块引脚定义(空脚略)引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指
28、令/数据选择信号;审行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7-14DBO-7H/L数据0-715PSBH/L并/串行接口选择:H-并行;L-审行17/RETH/L复位低电平有效19LED_ALED+5V背光源正极20LED_KLED-OV背光源负极-7-南京邮电大学2012届本科生毕业设计(论文)3.4 DS1302时钟电路由于单片机管脚充足,所以这里选用三信号线制DS1302,如果出现I/O 口不 足的情况,也可以选用c总线标准的时钟芯片和模块,但其电路要略显复杂。DS1302功能模块的相关电路如下图3.5所示。
29、10K 1OK 10:J%-XBT1BATTERY图3.5时钟模块电路3.5 无线收发电路鉴于窗帘操作的简便小巧要求,本课题采用四个按键的2262芯片集成发射器,分别可以发送0001、0010、0100、分00四个编码。信号接收,由PT2272芯片、天线等构成R03BS无线接收模块,电路如图3.6所 示,其地址需与PT2262配对。示2272芯片引脚说明:DO、DI、D2、D3:数据输出;GND:电源负;+5V:电源正;Vt:解码有效输出;ANT:天线。2272后缀:M4是非 锁;L4是互锁;T4是自锁。这里选用M4方式。图3.6无线接收模块电路-i-一 二 ZE V rJSO 5 一 J S
30、 O z v-V 8A e-8-南京邮电大学2012届本科生毕业设计(论文)3.6 12c总线使用C总线能有效节省单片机I/O 口,各个模块的通用使电路简单、程序简 洁,本课题中模数转换和数据存储两个模块就很适合采用12c总线的通信方式。3.6.1 PCF8591及光敏二极管电路如图3.7所示,左侧为PCF8 591的光敏模拟信号输入,总线的可变地址000,右侧为12c连线,两个上拉电阻能稳定信号。图3.7模数转换模块和光敏二极管电路3.6.2 AT24cO2 存储器虽然单片机本身附带EEPR0M存储器,但是其只能所有数据同时写入,不能单 独更新,不适合本系统的使用,所以选用ATMEL公司AT
31、24C02这个经典的EEPROM,采用IIC总线连接,上拉电阻由于3.6.1中已有,略。如图3.8所示,可更改地址为llloVCCSCLSDA图3.8存储模块电路-9-南京邮电大学2012届本科生毕业设计(论文)3.7窗帘驱动电路与机械设计3.7.1 开合帘控制系统开合帘的驱动,采用独立元件在面包板上搭建,如图3.9所示,单片机通过 PNP三极管控制继电器通断,在继电器两端设立一个回流二极管保护电路。1K 8550P2.0/P2.f图3.9开合帘驱动电路开合帘的导轨选用嘉鸿电动窗帘B型导轨,长一米,如图3.10中蓝底图所示。其配件选用如图3.10红色框框出的部分。主端头连接交流电机,同步带在主
32、副端 头间运动,带动滑车运动来实现开闭布帘。B型主端头 B型副端头 导轨 滑车 单墙码 天棚帘连接杆麦 一/飞 4才二吊轮 夹紧耳 驳接条 双墙码 天棚帘滑轮同步带顶装码4图3.10 B型导轨及其配件电机采用嘉鸿B型带限位交流电机,如图3.H所示。其机械限位行程开关有 两个,分别对全开和全关位置进行定位。定位步骤:安装好整个系统;拆下 行程设置盖;将设置杆拨向B行程旋钮,让电机旋转,停在想要的位置后,拨 何设置杆,即设置好了 A行程;将设置杆拨向A行程旋钮,让电机反向旋转,停在想要的位置后,拨回设置杆,即设置好了 B行程;盖上设置盖。因为需要单片机来控制电机的正反转,所以我们需要改装其供电线路
33、。电机 有6根控制线引出,如图3.H右下所示。我们不用它附带的控制器,白色灰色悬 空,剩余四根。作用分别为黄绿色接地、棕色拉开、黑色遮蔽、蓝色接零线。让 棕色和黑色通过继电器连接市电,其他直接连接市电,即完成电路改装。-10-南京邮电大学2012届本科生毕业设计(论文)3.7.2 百叶帘控制系统百叶帘的驱动,同样采用独立元件在面包板上搭建,如图3.12所示,单片机 通过ULN2003驱动芯片控制步进电机走步。ULN2003有7个驱动接口,我们只用其 中4个即可,电源采用12V独立供电,以解决其运行时,液晶屏供电不足的问题。需要注意的是,由于ULN2003有反向作用,所以单片机输出不再是0通1断
34、,而应为1通0断。另外,由于本课题步进电机功率较小、运行时间较短,故可以 选用此芯片,但是如果要运用大功率长时间的驱动,就不适合选用ULN2003 了。图3.12步进电机驱动电路百叶帘电机选用28 BYJ-48 12VDC步进电机,百叶帘选用做普通的百叶帘进行 改装。改装方法:去掉旋转棒及其传动系统,订做一根长一些的传动杆插入,一 头以联轴器与步进电机轴相连。由于步进电机轴尺寸为3*5*5mm,传动杆尺寸-11-南京邮电大学2012届本科生毕业设计(论文)2*4mm,所以联轴器选用外径20*25mm,内径5*4mm。在本课题中,由于成本问题,步进电机用两根裸螺钉、铁丝塑料、旋转器构成四个方向上
35、的固定改装完成后,即可通过步进电机对角度进行控制,而上下拉动仍然用手拉线 控制,整体原理和操作方式如图3.13所示。步进电机联轴器转动器 传动杆转动器 升降装置升降绳百叶叶片图3.13百叶帘机械原理与外观效果-12-南京邮电大学2012届本科生毕业设计(论文)第四章系统软件设计4.1总体设计4.1.1程序流程软件上,分两条线走。一是定时器确定各个模块的调用频率,二是主函数在 初始化后,以此频率循环扫描各个功能模块,达到联合有序的控制,程序流程图 如图4.1所示。图4.1程序流程图4.1.2主函数主函数分为初始化和循环体两个部分。(1)初始化(程序略,详见附录)-13-南京邮电大学2012届本科
36、生毕业设计(论文)步进电机全相断电、设置步进速度、交流电机保证关断;无线键值清零、设置项清零、中间变量清零;定时器初始化、1302初始化;读取1302时间,如果时间不正常,写入一个初值;读取24c02中模式等各项参数,如果参数不正常,写入一个初值,自动重 新定位;开机读取时钟,发布时控命令;开机读取光强,灵敏度阀值更新,发布光 控命令;显示进入主界面、刷新屏幕;(2)循环体循环“读取时间、读取光强、处理按键、刷新屏幕、布帘控制、百叶控制”功能,下面以程序注释来细谈,代码有部分省略,详见附录。wh i le开始循环体读取d sl302实时时间,发布时控命令i f(Read Ti meFlag)标
37、志位为 1,开始 Read Ti meFlag=O;标志位清零Dsl302_Read _Ti me();读取时间参数,根据开关窗帘时刻,发布时控命令i f(xx_l 0 xx_2 0ll(xx_l 0=xx_2 0&xx_l lxx_2 l)如果:开帘时刻小于闭帘时刻 i f(ti me_b ufl 4xx_l 0ll )如果实时时刻小于开帘时刻,或者实时时刻大于闭帘时刻Or d er l=2;就蔽帘else Or d er l=l;否则就开帘)e lse 开帘时刻大于等于闭帘时刻,与上类同,略)读取光强值进行优化,发布光控命令i f(Read AD_Flag)Read AD_Flag=0;标
38、志位清零AD_d ata 3=AD_d ata 2;AD_d ata 2=AD_d ata l;更新最近三次光强值AD_d ata l=255-Read _AD(0);读取最新光强值计算最新三次光强平均值,赋给AD_d ata 0AD_d ata 0=(mt)AD_d ata l+(i nt)AD_d ata 2+(i nt)AD_d ata 3)/3;Do Sensi();根据灵敏度区间,发布光控命令)处理按键i f(ke yMo to r _o r d er)Mo to r _E(-1);Mo to r _d ata;else.Wr i teMo to r=l;记录电机位置标志置一)els
39、e i f(Mo to r _n&(mo d=3).手动情况下有指令i f(Wr i teMo to r&(Mo to r _d ata=Mo to r _o r d er).记录电机位置循环体结束4.2基本模块子程序4.2.1液晶显示(12864发送接收)单片机管脚定义,定义具体含义,见3.3节。sb i t RS=P2八2;sb i t RW=P2八3;/P2.2-P2.5 是 128 64 相关sb i t E=P2 八 4;sb i t PSB=P2A5;sb i t RES=P2 八 6;#d efi ne DataPo r t PO/128 64 数据函数声明vo i d Ch e
40、ck_Busy();/检测忙位vo i d Wr i te_Cmd(unsi gned ch ar Cmd);写命令vo i d Wr i te_Data(unsi gned ch ar Data);写数据vo i d Ini t_LCD();液晶屏初始化vo i d LCD_PutStr i ng(unsi gned ch ar x,unsi gned ch ar y,unsi gned ch ar*s);显示字符串-15-南京邮电大学2012届本科生毕业设计(论文)显示字符审函数体,其他函数略,详见附录/x:横坐标值,范围0-8 y:纵坐标值,范围14vo i d LCD_PutStr i
41、 ng(unsi gned ch ar x,unsi gned ch ar y,unsi gned ch ar*s)swi tch(y)case 1:Wr i te_Cmd(0 x8 0+x);b r eak;地址为 10000000case 2:Wr i te_Cmd(0 x90+x);b r eak;地址为 10010000case 3:Wr i te_Cmd(0 x8 8+x);b r eak;地址为 10001000case 4:Wr i te_Cmd(0 x98+x);b r eak;地址为 100H000d efault:b r eak;由上得,屏幕刷新行顺序为1324)wh i
42、le(*s0)Wr i te_Data(*s);s+;DelayUs2x(50);)4.2.2时钟模块(DS1302发送接收)单片机管脚定义,定义具体含义,见3.4节,数值宏定义略。sb i t SCK=P3A7;sb i t SDA=P3A6;sb i t RST=P3A5;变量定义与函数声明exter n unsi gned ch ar ti me_b uf 1 8;空年月日时分秒周,实时读取用exter n unsi gned ch ar ti me_b uf 8;空年月日时分秒周,存储默认值向DS1302写入一字节数据:vo i d Ds 1302_Wr i te_Byte(unsi
43、gned ch ar ad d r,unsi gned ch ar d);从DS1302读出一字节数据:unsi gned ch ar Ds 1302_Read _Byte(unsi gned ch ar ad d r);向DS 1302写入时钟数据:vo i d Ds 1302_Wr i te_Ti me(vo i d);从DS1302读出时钟数据:vo i d li 1302_Read _Ti me(vo i d);/DS1302初始化:vo i d Ds 1302_Ini t(vo i d);4.2.3模数转换42c连接PCF8591)变量与单片机管脚定义b i t ack;应答标志位s
44、b i t SDA=P3A3;sb i t SCL=P3A4;12c总线通用函数声明-16-南京邮电大学2012届本科生毕业设计(论文)启动总线:vo i d Star t_I2c();结束总线:vo i d Sto p_I2c();/*字节数据传送函数功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不成答或非成答都使ack=0假)发送数据正常,ack=l;ack=0表示被控器无应答或损坏。*/vo i d Send Byte(unsi gned ch ar c);/*字节数据传送函数功能:用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完
45、后请用应答函数。*/unsi gned d i ar RcvByte();应答子函数:vo i d Ack_I2c(vo i d);非应答子函数:vo i d No Ack_I2c(vo i d);/*向无子地址器件发送字节数据函数功能:从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla.如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/b i t ISend Byte(unsi gned ch ar sla,unsi gned ch ar c);/*向无子地址器件读字节数据函数功能:从启动总线到发送地址,读数据,结束总线的全过程,从器件地址sla,返回值在c.
46、如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/b i t IRcvByte(unsi gne d ch ar sla,unsi gned ch ar*c);读AD转值程序:输入参数Ch i表示需要转换的通道,范围从0-3 返回值范围0-255unsi gned ch ar Read _AD(unsi gned ch ar Ch i)unsi gned ch ar Vai;Star t_I2c();启动总线Send Byte(Ad d Wr);i f(ack=0)r etum(0);发送器件地址,i f 为查错Send Byte(0 x40lCh i);i f(ack=0
47、)r etum(0);发送器件子地址,i f 为查错Star t_I2c();Send Byte(Ad d Wr+1);i f(ack=0)r etur n(0);Val=RcvByte();No Ack_I2c();发送非应位-17-南京邮电大学2012届本科生毕业设计(论文)Sto p_I2c();结束总线r etur n(Val);)4.2.4存储记忆42c连接AT24co2)与PCF8 591共用12c总线,所以管脚定义等与4.2.3相同,但其使用另两种 12c通用函数:收发多字节数据。/*向有子地址器件发送多字节数据函数 功能:从启动总线到发送地址,子地址,数据,结束总线的全过程,从
48、器件地址sla,子地址sub a,发送内容是s指向的内容,发送no个字节。如果返回1表示操作成功,否则操作有误。注意:使川前必须已结束总线。*/b i t ISend Str(unsi gned ch ar sla,unsi gned ch ar sub a,unsi gned ch ar*s,unsi gned ch ar no);/*向有子地址器件读取多字节数据函数功能:从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件 地址sla,子地址sub a,读出的内容放入s指向的存储区,读no个字节。如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/b i t I
49、RcvStr(unsi gned ch ar sla,unsi gned ch ar sub a,unsi gned ch ar*s,unsi gned ch ar no);4.2.5无线接收由于程序总体逻辑采用定时器定频率,主函数循环运行方式,若采用中断式 接收无线信号有可能破坏逻辑频率,故采用扫描式使用PT2272O 管脚定义sb i t R10=P1A7;sb i t Rll=P1A6;/P1.4-P1.7 是 2272 信号sb i t R12=PlA5;sb i t R13=P1A4;sb i t R_f=P2八7;2272有信号中断变量定义与扫描2272代码 unsi gned c
50、h ar key;无线键值 在定时程序中,约100ms扫描i f(R_f&ti meO0)i f(Cur tai n_d ata=5)Cur tai n_n=O;拉至U头了else Cur tai nl=l;Cur tai n0=0;Cur tai n_d ata+;.)e lse 窗帘收拢,类同于窗帘打开,略4.2.7步进电机驱动为求平稳有力,不求速度快慢,故步进电机转动采用四相八拍方式。管脚定义与宏定义sb i t A1=P1AO;sb i t Bl二Pl八1;定义步进电机连接端口sb i t C1=P1A2;sb i t D1=P1A3;#d efi ne Co i l_ABl A1=1