版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HefeiUniversity合肥学院电子设计竞赛项目报告项目名称:智能卧室窗帘系统作者姓名:梁波12通信(二)班毛会磊12通信(二)班朱春松13电子(一)班指导教师:完毕时间:3月16日[摘要]本电路根据办公和生活环境需要,采用AT89C51单片机控制系统,运用P3口的特殊功效与P1口的空闲模式和掉电模式,根据其不同控制模式,实现半自动控制、自动控制、定时控制的互相转换控制窗帘机。该设计涉及光电开关电路、系统主控模块、电源转换电路、保护电路等构成,可实现窗帘自动升降。[核心词]单片机;定时控制;光电开关;步进电机TOC\o"1-3"\h\u20731引言 5102921.1系统设计的背景及意义 550041.2设计的基本内容 577381.3设计思想及基本功效 6186822总体电路设计与原理阐明 755202.1方案选用 74512.2方案介绍 8240562.2.1自动控制窗帘基本功效 9253102.2.2控制器总体构造设计 9214523系统硬件设计 10239523.189C51单片机及有关电路 11225983.1.189C51单片机概述 11222893.1.2晶振电路 11105203.1.3复位电路 12138823.1.4显示电路 13312043.2光敏传感器电路 14203893.3A/D转换电路 1616173.4步进电机电路 16112523.5键盘接口电路 17188853.6红外控制电路 18166584系统软件设计 20128264.1主程序软件设计 21160394.2光控电机程序设计 2232654.3LCD1602显示程序设计 22202564.4光照采集程序设计 23107985总结 2531218参考文献 2520874附录1:原理图 2630983附录2:部分子程序 271引言1.1系统设计的背景及意义
当今时代,科技的发展和人们生活水平明显提高,人们对居住环境方便快捷的规定越来越高,智能家居系统应运而生。智能家居是当代电子技术、通讯技术及自动化技术相结合的产物。随着高新技术及电子器件的发展,光控、温控及遥控窗帘应运而生,给人们生活带来诸多方便。同时,也为人们的生活环境及智能家居的实现提供了根据,为此,研究和设计智能窗帘控制系统含有深远的现实意义。窗帘机的控制方式大致上有三种:声控、光控、时控,声控和遥控属于半自动类而光控虽属全自动式,但因光敏器件的敏捷度,冬夏等不同季节的光照度的不同,以及人们对开闭窗帘在时间上的规定不同,而难以实施和普及。因此,设计一款价格低廉,构造简朴,敏捷度高,抗干扰能力强,实现红外线遥控控制、时间控制、手动控制三种功效的为一体的智能窗帘,含有十分重要的意义。在欧美等发达国家,电动窗帘已经广泛应用。在十数年前,电动窗帘就已经进入我国,可始终没有大的推广,这两年,随着电控技术的不停提高及价格的不断下降,电动窗帘热才又卷土重来。据理解,全国共有170多个电动窗帘器获得了国家专利,但就其技术本身而言,还是大同小异,但销价却有了很大的差别,贵的要数千元,便宜的只有几百元。尽管遥控自动窗帘系统在国内是一种新兴的行业,但是,它也正以不可抵挡之势快速崛起。遥控自动窗帘系统走进中国以来,再短短四年的时间里,遥控自动窗帘系统生产商由最初的几家公司增加到如今的百余家公司,其行业发展之迅速是现在国内任何其它行业所无法比拟的。现在,我国遥控自动窗帘系统生产厂商、分销商、集成商与装饰公司都形成了相称规模,不少国内出名公司纷纷涉足遥控自动窗帘系统行业。随着自动窗帘热潮在世界范畴内的日渐兴起,随着中国电子技术的飞速发展、人们生活水平的不停提高以及智能电子技术在生活中的广泛应用,自动窗帘已经成为将来家居装饰潮流发展的最新方向。从现在的发展趋势来看,在将来的20年时间里,自动窗帘行业将成为中国的主流行业之一,其市场的发展前景是非常广阔的。1.2设计的基本内容本设计通过分析电动窗帘的发展和现状来规划电动窗帘的智能功效,从而对电动窗帘控制器进行设计。采用步进电机作为执行元件,以光敏电阻作为传感元件的传感器作为检测元件,89C51单片机作为控制芯片,辅助键盘和显示,最后实现了电动窗帘控制器的多项智能项目。重要章节分为:(1)引言:介绍系统设计的背景及意义,设计的基本内容。(2)总体设计方案:给出了电动窗帘控制器的总体方案构想,智能项目,和设计构造规划。(3)软件设计:选用选用汇编语言作为本次软件设计的编程语言。(4)总结与展望。1.3设计思想及基本功效该器含有普通的窗帘控制器的最基本的功效,即通过电动按钮来开闭窗帘,在此基本功效的前提下,本设计根据需求还设计了能够根据光照强度和设定时间自动开闭窗帘的功效,在选用设计方案和采用元器件方面,该器本着简朴实用经济的思想,尽量简化电路设计,用最简朴的电路布线和选用最经济实用的器件来达成设计规定。自动窗帘控制器含有下列几个基本功效:1.手动控制该功效使电动窗帘含有手动正传、手动反转和手动停止的功效。顾客能够通过遥控器对窗帘的开合进行控制,避免了手动拉动窗帘的麻烦。2.半自动手动控制半自动手动控制是在需要关闭或打开窗帘的时候,只需要人工按一下“正转”或“反转”按键后,窗帘到位自动停止。3.光控调节功效当顾客无暇顾及窗帘的开合程度时能够打开光控调节功效,窗帘的关闭和启动通过环境亮度自动完毕窗帘的启动或关闭操作控制,“天黑关闭,天亮打开”单片机会自动获取信息调节室内光照强度,使室内始终处在舒适的光照环境。含有智能管理,不产生误动作。4.定时控制功效根据设立输入的启动或关闭时间,来控制窗帘的关闭和打开。窗帘的正转、反转和停止功效可由单片机输出电平来控制步进电机的运转以实现。环境亮度的控制通过光敏电阻和运放构成的电路来控制单片机输出电平继而控制电机的正转和反转。时间自动控制能够由定时器来控制。2总体电路设计与原理阐明2.1方案选用单片机在多个电子产品中的应用已经越来越广泛,诸多的电子产品运用单片机所获得的便利性得到了人们的好评,针对单片机控制的自动窗帘控制器的智能化规定,实现其自动控制的方案有两种:方案(一)基于温度检测以及声控检测器件的自动控制方案(二)基于光照强度器件的自动控制这二个方案都是基于单片机控制的,采用步进电机控制以及液晶显示,不同的设计部分在于检测器件的选用上。方案一的原理图如图一:方案(二)的器框图如图2:方案(一)与方案(二)的区别重要在于检测器件的应用,方案(一)采用温度采集和声音检测元件,通过设定的温度来控制窗帘的开闭,以减少光照对室内的温度影响,运用声音控制即使方便性有所提高,但是其误差较大。方案(二)采用的时钟模块实用性更强。综合考虑以上因素,器设计采用方案(二)。2.2方案介绍方案:基于光照检测的自动控制。原理框图以下:光控模块
红外遥控模块蜂鸣器
单片机系统
键盘LCD显示屏2.2.1自动控制窗帘基本功效手动控制:该功效使电动窗帘含有手动正传、手动反转和手动停止的功效。并且增加了工作状态批示,电机工作在正传、反转和停止状态的时候,数码管都有不同工作状态批示。(2)半自动手动控制:半自动手动控制是在需要关闭或打开窗帘的时候,只需要人工按一下“正转”或“反转”按键后,窗帘到位自动停止。(3)环境亮度控制:窗帘的关闭和启动通过环境亮度自动完毕窗帘的启动或关闭操作控制,“天黑关闭,天亮打开”含有智能管理,不产生误动作。(4)时间自动控制:根据设立输入的启动或关闭时间,来控制窗帘的关闭和打开。窗帘的正转、反转和停止功效可由单片机输出电平来控制步进电机的运转以实现。环境亮度的控制通过光敏电阻和运放构成的电路来控制单片机输出电平继而控制电机的正转和反转。时间自动控制能够由定时器来控制。2.2.2控制器总体构造设计自动窗帘控制器设计的总体框图如图3所示:由光电传感器来探测外界的光强,从传感器出来的信号通过信号调理电路的放大,滤波调理后输入到A/D转换器,A/D转换器件完毕一种转换过程需要一定时间,如果在这段时间内信号的幅度发生变化,转换成果将会受到影响,因此期间要用到采样保持电路。转换后的信号由单片机控制器,来实现电机的运行与停止。显示部件用来显示电动窗帘控制器的多个状态信息。键盘是重要的输入设备,控制单片机的多个参量。3系统硬件设计3.189C51单片机及有关电路3.1.189C51单片机概述AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微解决器,俗称单片机。单片机的可擦除只读存储器能够重复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业原则的MCS-51指令集和输出管脚相兼容。由于将多功效
8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为诸多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.2晶振电路电路中的晶振即石英晶体震荡器。由于石英晶体震荡器含有非常好的频率稳定性和抗外界干扰的能力,因此,石英晶体震荡器是用来产生基准频率的。通过基准频率来控制电路中的频率的精确性。同时,它还能够产生振荡电流,向单片机发出时钟信号。图4是单片机的晶振电路。电路中的电容C1和C2的典型值普通选择为30PF左右,该电容的大小会影响振荡电路频率的高低、振荡器的稳定性和起振的快速性。晶体振荡频率的范畴普通在1.2~12MHz。晶体的频率越高,系统的时钟频率越快,单片机的运行速度越快。但反过来,运行速度对于存储器的速度规定就越高,对印刷电路板的工艺规定也就越高,即规定线间的寄生电容要小。晶体和电容应当尽量安装得与单片机芯片靠近,以减少寄生电容,更加好地确保振荡器稳定、可靠地工作。89C51常选择振荡频率12MHz的石英晶体。图4.晶振电路3.1.3复位电路复位是单片机的初始化操作,只需要给89C51的复位引脚RST加上不不大于2个机器周期(即24个时钟振荡周期)的高电平就能够使89C51复位。复位时,单片机初始化为0000H,从0000H单元开始执行程序。除了进入系统的正常初始化之外,当程序运行错误(如程序跑飞)或操作错误使系统处在锁死状态时,也需要复位键使RST脚为高电平,使89C51摆脱“跑飞”或“死锁”状态而重新启动。下图是复位电路图。图5.复位电路3.1.4显示电路显示部分则重要显示时间,用于设立时间。采用LED数码管进行显示是一种经济实用的办法。每位数码管由7个笔画加上小数点共8个发光二极管构成;有共阴极和共阳极两种类型,公共端用来进行位控制,笔画端用来进行字符控制;数码管显示有静态显示和动态显示两种办法。在数码管显示中,有2个技术问题需要解决,这就是整数高位和闪烁显示问题。即使某些新型LED驱动芯片本身含有闪烁控制和熄灭控制功效,但通过合理的软件设计,采用便宜芯片构成的驱动电路同样能够实现整数高位灭零和闪烁显示功效,达成减少系统硬件成本的目的。本设计采用的就是4位LED数码管的串行驱动电路来达成显示时间和消除闪烁显示的目的。采用LED数码管进行显示是由于LED数码管含有下列几个优点:(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。(2)发光响应时间极短(<0.1μs),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。驱动器采用74LS164,74LS164是8位串行输入,并行输出的移位寄存器。其引脚及各个引脚的作用以下图所示:符号引脚阐明DSA1数据输入DSB1数据输入Q0~Q33~6输出GND7地(0V)CP8时钟输入(低电平到高电平边沿触发)/MR9中央复位输入(低电平有效)Q4~Q710~13输出VCC14正电源图6.74LS164引脚及阐明由89C51的P3.0和P3.1来控制LED数码管的显示。显示电路图如3.3.2所示。图7.显示电路3.2光敏传感器电路光敏传感器是最常见的传感器之一,它的种类繁多,重要有:光电管、光电倍增管、光敏电阻等。光敏电阻又称光导管,惯用的制作材料为硫化镉,另外尚有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料含有在特定波长的光照射下,其阻值快速减小的特性。这是由于光照产生的载流子都参加导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值快速下降。图8.光敏传感器当光敏电阻受到脉冲光照射时,光电流要通过一段时间才干达成稳定值,而在停止光照后,光电流也不立刻为零,这就是光敏电阻的时延特性。由于不同材料的光敏,电阻时延特性不同,因此它们的频率特性也不同,硫化铅的使用频率比硫化镉高得多,但多数光敏电阻的时延都比较大,因此,它不能用在规定快速响应的场合。应用光控原理工作,天亮窗帘自动打开,天黑窗帘自动关闭。由运放构成比较电路,同向输入端有两个电阻分压得到一种电压值,作为基准电压进行比较,而反相输入端用一种光敏电阻对外部环境的光线进行采集,运用光敏电阻暗时电阻大,亮时电阻小的特点,来拟定反向输入端的电压值。再两者进行比较,比较后的信号再送入单片机89C2051的P0口,从而通过单片机来控制电机的正反转。来实现天亮窗帘自动打开,天黑窗帘自动关闭这一自动控制功效。3.3A/D转换电路PCF8591是一种单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。PCF8591含有4个模拟输入、1个模拟输出和1个串行I²C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I²C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的址、控制和数据信号都是通过双线向I²C总线以串行的方式进行传输。
PCF8591的功效涉及多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由I²C总线的最大速率决定。PCF8591特性:单独供电;PCF8591的操作电压范畴2.5V-6V;低待机电流;通过I2C总线串行输入/输出;PCF8591通过3个硬件地址引脚寻址;PCF8591的采样率由I2C总线速率决定;4个模拟输入可编程为单端型或差分输入;自动增量频道选择;PCF8591的模拟电压范畴从VSS到VDD;PCF8591内置跟踪保持电路;8-bit逐次逼近A/D转换器;通过1路模拟输出实现DAC增益。3.4步进电机电路步进电机为一种数字伺服执行元件,含有构造简朴、运行可靠、控制方便、控制性能好等优点,广泛应用在数控机床、机器人、自动化仪表等领域。为了实现步进电机的简易运动控制,普通以单片机作为控制系统的微解决器,通过步进电机专用驱动芯片实现步进电机的速度和位置定位控制。单片机在本次实验中对步进电机的控制从而达成对转角和位移的控制的办法。本次设计采用两个型号为130HZ308-450的三相反映式步进电机对旋转角度和位移进行控制,该步进电机力矩大、耐负载冲击、精度高。其步距角为1.2°,即=1.2°,即本次设计的测控系统对回转台转角的控制精度能够达成1.2°。步进电机的驱动电路是根据控制信号工作的。而本次测控系统是以单片机位控制中心的,下面将介绍步进电机控制系统。步进电机控制系统重要由脉冲分派器,功率驱动电路,步进电机几部分构成的。步进电机控制系统的方框图如图9所示:图9.步进电机电路3.5键盘接口电路键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功效,是人工干预单片机的重要手段。本设计中的键盘采用4×4矩阵键盘。16个键分别为:0-9十个数字键,用于时间设定输入;设定键,设定自动窗帘开和关的时间;复位键,在程序出错或者有误操作的时候;正转键,使步进电机正转,窗帘打开;反转键,使步进电机反转,窗帘关闭;停止键,步进电机停止运转;拟定键,时间设定完毕后拟定输入。由于按键比较多,加上减少所战占用的端口,能够将按键构成一种矩阵,如图10所示。图10.键盘接口电路3.6红外控制电路红外通信基本原理:红外通信是运用950nm近红外波段作为传递信息的媒体,即通信信道。发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射信号。接受端将接受到的信号装成电信号,再通过放大、滤波等解决后送给解调电路进行解调,还原为二进制信号后输出。惯用的有通过脉冲宽度来实现信号调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种办法。简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,方便运用红外信道进行传输;红外通信接口就是针对红外信道的调制解调。红外遥控系统重要由遥控发射器、一体化接受头、单片机、接口电路构成。遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接受头来完毕对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,对于普通的红外遥控系统,此串行码输入到微控制器,由其内部CPU完毕对遥控指令解码,并执行对应的遥控功效。红外遥控控制过程:本系统以89C51单片机为核心,由发射和接受两部分构成,发射部分重要完毕编码和调制,接受部分完毕调解和解码。其发射部分重要由89C51单片机完毕编码,然后由红外发射管发射红外线,接受部分重要由光电转换,放大,解调,解码构成。其中光电转换,放大调解由红外线一体化接头来完毕,接受单片机重要完毕解码功效。遥控器发射及其编码:红外线遥控采用自定义编码方式,由发送单片机来完毕。遥控发射器专用芯片诸多,根据编码格式能够分为脉冲宽度调制和香味调制两大类。当发射器案件按下后,即有遥控码发出,所按的键不同遥控编码也不同,这码含有下列特性:采用脉宽调制的串行码,以脉宽为0.26ms、间隔0.26ms、周期为0.52ms的组合表达二进制的“1”(如图11A),其特性是脉冲中高电平的宽度等于0.26ms,相称于10个26μs的宽度;以脉宽为0.26ms、间隔为0.52ms、周期为0.78ms的组合表达二进制的“0”(如图11B),其特性是脉冲中而低电平的宽度是高电平的二倍,等于0.52ms,相称于20个26μs的宽度。能够根据传输数据的不同来调节脉冲的宽度。图11.二进制信号二进制信号的调制:二进制信号的调制由发送单片机来完毕,它把编码后的二进制信号调制成频率为38KHz的间断脉冲串,相称于用二进制信号的编码乘以频率为38KHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图3所示,A是二进制信号的编码波形,B是频率为38KHz(周期为26μs)的持续脉冲串,C是经调制后的间断脉冲串(相称于C=A×B),用于红外发射二极管发送的波形。二进制信号的解调:二进制信号的调制仍由发送单片机来完毕,它把编码后的二进制信号调制成频率为38KHz的间断脉冲串,相称于用二进制信号的编码乘以频率为38KHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图3.3所示,是二进制信号的编码波形,B是频率为38KHz(周期为26μs)的持续脉冲串,C是经调制后的间断脉冲串(相称于C=A×B),用于红外发射二极管发送的波形。二进制信号的解码:二进制信号的解码由接受单片机来完毕,它把红外接受头送来的二进制编码波形通过解码,还原出发送端发送的数据。基于字节传输的红外遥控数据格式:在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26μs)的高电平作为传输开始,接着发送8位数据(字节高位在前,低位在后),最后发送10个脉冲宽度的低电平作为传输结束,如图14所示。4系统软件设计4.1主程序软件设计主程序的流程图如图15所示。图15主程序流程图主程序构成无限循环,重要完毕单片机初始化,关中断,菜单显示内容初始化,按键扫描,电机运行,计时等功效。启动主程序,先关中断并且设立堆栈,接着初始化寄存器,初始化显示内容;然后执行按键查询,执行对应的操作。如果是设定键,则设定时间,开始计时;届时间后电机开始对应的工作,工作完毕后停机。如果是电机控制键,则也执行对应的工作。如果都不是,返回显示。检测室内与否开灯,如果开灯,返回显示,如果无开灯,判断现在光照与否不不大于800LX,如果不不大于800LX,电机正转,窗帘打开。在窗帘打开的前提下,判断光照与否不大于400LX,如果不大于400LX,电机反转,窗帘闭合,如果不不大于400LX,电机停止,返回显示,重新进行判断。4.2光控电机程序设计光控电机程序设计流程图如图16所示。图16光控电机程序设计流程图光控电机程序的设计是本设计的核心部分,根据光照强度的变化,单片机控制电机的正反转,实现窗帘的开闭。当执行到该子程序入口时,首先进行初始化,判断现在光强与否不不大于800LX,若果条件不成立,返回重新初始化,如果符合条件,电机正转,窗帘打开。如果传送器触到安装在轨道上的形成开关,电机停止转动,如果没触到,电机继续正转,直到触到形成开关电机才停止。在窗帘打开的前提下,光电传感器检测到现在的光强不大于400LX时,电机反转,窗帘闭合。如果传送器触到安装在轨道上的形成开关,电机停止转动,如果没触到,电机继续反转,直到触到形成开关电机才停止。4.3LCD1602显示程序设计当LCD1602的寄存器选择信号RS为1时,选择数据寄存器;当LCD1602的读写选择线RW为0时,进行写操作;当LCD1602的使能信号EN置高电平后再过两个时钟周期至低电平,产生一种下降沿信号,往LCD写入显示数据,LCD执行命令,判断执行与否完毕,如果没有执行完毕,返回到选择指令寄存器。如果执行命令完毕,显示数据,子程序返回。写数据到LCD子程序流程图如图17所示。图17写数据到LCD子程序流程图4.4光照采集程序设计光电传感器采用的是光电池,其输出的是线性电压,线性度良好。光照采集程序设计流程图如图18所示。图18光照采集程序设计流程图5总结该设计通过分析自动窗帘系统的现状和人们对自动窗帘系统功效的需求,对自动窗帘系统控制器进行总体设计。总体设计采用步进电机为单片机控制元件,执行窗帘开闭的重要任务;以光敏电阻为检测元件,提供单片机外界光照变化;以红外检测电路,实现手动控制;以89C51单片机为主控制芯片,控制整个系统运行;另外辅助以按键和显示电路,在各模块的配合下,最后实现自动窗帘控制系统的智能化规定。自动窗帘控制系统含有下列几个基本功效:光照控制:根据光照强度值,通过感光器采集,自动打开或关闭窗帘。即当上午光照强度增强到设定值,通过感光器采集,单片机控制步进电机打开窗帘;当夜晚光照强度削弱到设定值,通过感光器采集,单片机控制步进电机关闭窗帘。红外控制:当光照强度未达成设定值,手动操作红外遥控器,由红外接受系统接受信号,单片机控制步进电机打开或关闭窗帘。参考文献[1]阎石.《数字电子技术基础(第五版)》北京:高等教育出版社,[2]李哲英.《电子技术及其应用基础》(数字部分)北京:高等教育出版社,[3]郭天祥.《十天学会单片机和C语言编程》北京;电子工业出版社,[4]李广第.单片机基础.北京:北京航空航天大学出版社,[5]瞿贵荣.电动窗帘红外遥控电路.家庭电子,,2:35-36[6]王丽君,杨伟丰.电机无线遥控系统设计的研究大众科技,,11:124-125[7]张培志,陆伟.仇芝基于单片机技术的无线遥控家居照明系统.仪器仪表顾客,附录1:原理图附录2:部分子程序/*****************主函数********************/voidmain(){ beep=0; //开机叫一声 delay_1ms(150); P0=P1=P2=P3=0xff; //单片机IO口初始化为1 init_time0(); //初始化定时器 init_ds1302(); //ds1302初始化 init_eeprom();//开始初始化保存的数据 init_1602(); //lcd1602初始化 init_1602_dis_csf();//lcd1602初始化显示 temperature=read_temp();//读温度 delay_1ms(650); temperature=read_temp();//读温度 while(1) { key(); //按键程序 if(key_can<10) { key_with(); } if(flag_200ms==1) { flag_200ms=0; temperature=read_temp();//读温度 环境温度 if(temperature>=99) temperature=99; guanxian=ad0832read(1,0)*99.0/255; if(menu_1==0) { read_time(); //读时间 init_1602_ds1302();//显示时钟 write_sfm2(1,13,guanxian); //显示温度 write_sfm2_18B20(2,13,temperature); //显示温度 } if(temperature>=t_high) beep= ~beep;//蜂鸣器温度报警 else beep=1; } if(menu_1==0) { shoudong_kaiguan(); //手动开关窗帘 zinengchuanglian_dis(); //智能窗帘定时解决函数 } tiaoshi_dianji(); //调试窗帘电机 bujindj(); //步进电机函数 delay_1ms(1); }}/********************独立按键程序*****************/voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值还原 P3|=0xf0;//对应的按键IO口输出为1 if((P3&0xf0)!=0xf0) //按键按下 { delay_1ms(1); //按键消抖动 if(((P3&0xf0)!=0xf0)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P3&0xf0) { case0x80:key_can=1;break; //得到按键值 case0x40:key_can=2;break; //得到按键值 case0xb0:key_can=3;break; //得到按键值 case0x70:key_can=4;break; //得到按键值 } flag_lj_en=1; beep=0; delay_1ms(80); beep=1; } } else { key_new=1; flag_lj_en=0; } }/**********************设立函数************************/voidkey_with(){ if(menu_1==0) if(key_can==2) //设立手动还是自动模式 { flag_zd_sd++; if(flag_zd_sd>=3) flag_zd_sd=0; if(flag_zd_sd==0) //手动 write_string(1,0,"sd"); if(flag_zd_sd==1) //定时模式 write_string(1,0,"ds"); if(flag_zd_sd==2) //光线控制 write_string(1,0,"gx"); write_eeprom(); //保存 flag_kaig_moshi=0; } if(key_can==1) //设立键 { menu_1++; if(menu_1==1) //设立时间 { menu_2=1; write_string(1,0,"::W:"); write_string(2,0,"20--"); } if(menu_1==2) //设立开关窗帘时间 { menu_2=1; write_string(1,0,"kai00:00"); write_string(2,0,"guan00:00"); } if(menu_1==3) //设立报警光线报警 { menu_2=1; write_string(1,0,"SetGuanxian"); write_string(2,0,"00%"); } if(menu_1==4) //设立报警温度 { menu_2=1; write_string(1,0,"SetWendu"); write_string(2,0,"00"); write_zifu(2,9,0xdf);//显示度 } if(menu_1==5) //手动把窗帘归0 { menu_2=1; write_string(1,0,"tiaoshidianji"); write_string(2,0,"0"); write_guanbiao(2,6,0); } if(menu_1>2)//回到正常显示 { menu_1=0; write_guanbiao(1,2,0); //关闭光标 init_1602_dis_csf();//初始化液晶显示 } } if(key_can==2) //选择键 { flag_200ms=1; if(menu_1==1) //设立时间 { menu_2++; if(menu_2>5) menu_2=1; } if(menu_1==2) //设立开关的时间 { menu_2++; if(menu_2>4) menu_2=1; } } if(menu_1==1) { if(menu_2==1) //设立时 { if(key_can==3) //加 { shi+=0x01; if((shi&0x0f)>=0x0a) shi=(shi&0xf0)+0x10; if(shi>=0x24) shi=0; } if(key_can==4) //减 { if(shi==0x00) shi=0x24; if((shi&0x0f)==0x00) shi=(shi|0x0a)-0x10; shi--; } } if(menu_2==2) //设立分 { if(key_can==3) //加 { fen+=0x01; if((fen&0x0f)>=0x0a) fen=(fen&0xf0)+0x10; if(fen>=0x60) fen=0; } if(key_can==4) //减 { if(fen==0x00) fen=0x5a; if((fen&0x0f)==0x00) fen=(fen|0x0a)-0x10; fen--; } } if(menu_2==3) //设立秒 { if(key_can==3) //加 { miao+=0x01; if((miao&0x0f)>=0x0a) miao=(miao&0xf0)+0x10; if(miao>=0x60) miao=0; } if(key_can==4) //减 { if(miao==0x00) miao=0x5a; if((miao&0x0f)==0x00) miao=(miao|0x0a)-0x10; miao--; } } if(menu_2==4) //设立星期 { if(key_can==3) //加 { week+=0x01; if((week&0x0f)>=0x0a) week=(week&0xf0)+0x10; if(week>=0x08) week=1; } if(key_can==4) //减 { if(week==0x01) week=0x08; if((week&0x0f)==0x00) week=(week|0x0a)-0x10; week--; } } if(menu_2==5) //设立年 { if(key_can==3) //加 a { nian+=0x01; if((nian&0x0f)>=0x0a) nian=(nian&0xf0)+0x10; if(nian>=0x9a) nian=1; } if(key_can==4) //减 { if(nian==0x01) nian=0x9a; if((nian&0x0f)==0x00) nian=(nian|0x0a)-0x10; nian--; } } if(menu_2==6) //设立月 { if(key_can==3) //加 { yue+=0x01; if((yue&0x0f)>=0x0a) yue=(yue&0xf0)+0x10; if(yue>=0x13) yue=1; } if(key_can==4) //减 { if(yue==0x01) yue=0x13; if((yue&0x0f)==0x00) yue=(yue|0x0a)-0x10; yue--; } } if(menu_2==7) //设立日 { if(key_can==3) //加 { ri+=0x01; if((ri&0x0f)>=0x0a) ri=(ri&0xf0)+0x10; if(ri>=0x32) ri=0; } if(key_can==4) //减 { if(ri==0x01) ri=0x32; if((ri&0x0f)==0x00) ri=(ri|0x0a)-0x10; ri--; } } write_sfm2_ds1302(1,2,shi); //显示时 write_sfm2_ds1302(1,5,fen); //显示分 write_sfm2_ds1302(1,8,miao); //显示秒 write_sfm1(1,14,week); //显示星期 write_sfm2_ds1302(2,3,nian); //显示年 write_sfm2_ds1302(2,6,yue); //显示月 write_sfm2_ds1302(2,9,ri); //显示日 switch(menu_2) //光标显示 { case1:write_guanbiao(1,2,1);break; case2:write_guanbiao(1,5,1);break; case3:write_guanbiao(1,8,1);break; case4:write_guanbiao(1,14,1);break; case5:write_guanbiao(2,3,1);break; case6:write_guanbiao(2,6,1);break; case7:write_guanbiao(2,9,1);break; } write_time(); //把时间写进去 } /***************设立开关窗帘时间*********************/ if(menu_1==2) { if(menu_2==1) //设立开窗帘时间时 { if(key_can==3) //加 set_ds1302time(1,&k_shi,0x24); if(key_can==4) //减 set_ds1302time(0,&k_shi,0x24); } if(menu_2==2) //设立开窗帘时间分 { if(key_can==3) //加 set_ds1302time(1,&k_fen,0x60); if(key_can==4) //减 set_ds1302time(0,&k_fen,0x60); } if(menu_2==3) //设立关窗帘时间时 { if(key_can==3) //加 set_ds1302time(1,&g_shi,0x24); if(key_can==4) //减 set_ds1302time(0,&g_shi,0x24); } if(menu_2==4) //设立关窗帘时间分 { if(key_can==3) //加 set_ds1302time(1,&g_fen,0x60); if(key_can==4) //减 set_ds1302time(0,&g_fen,0x60); } write_sfm2_ds1302(1,5,k_shi); //显示开时 write_sfm2_ds1302(1,8,k_fen); //显示开分 write_sfm2_ds1302(2,5,g_shi); //显示关时 write_sfm2_ds1302(2,8,g_fen); //显示关分 switch(menu_2) //光标显示 { case1:write_guanbiao(1,5,1);break; case2:write_guanbiao(1,8,1);break; case3:write_guanbiao(2,5,1);break; case4:write_guanbiao(2,8,1);break; } write_eeprom();//保存开关窗帘时间时间 } if(menu_1==3) //设立光线等级 { if(key_can==3) //加 { guanxian_set++; if(guanxian_set>=99) guanxian_set=99; } if(key_can==4) //减 { if(guanxian_set!=0) guanxian_set--; } write_sfm2(2,7,guanxian_set); write_guanbiao(2,6,1); write_eeprom();//保存开关窗帘时间时间 } if(menu_1==4) //设立温度等级 { if(key_can==3) //加 { t_high++; if(t_high>=99) t_high=99; } if(key_can==4) //减 { if(t_high!=0) t_high--; } write_sfm2(2,7,t_high); write_guanbiao(2,6,1); write_eeprom();//保存开关窗帘时间时间 } }/*************手动开关窗帘***************/voidshoudong_kaiguan() //手动开关窗帘{ staticucharh_value,l_value; if(flag_zd_sd==0) //手动模式 { if(menu_1==0) { if(key_can==3) { h_value++; flag_z_f=1;//手动开窗 l_value=0; if(h_value>=2) { h_value=0; flag_z_f=0;//停止开窗 } } if(key_can==4) { flag_z_f=2;//手动关窗 l_value++; h_value=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加工粉料合同范例
- 政府征地合同范例
- 保险产品推广合同范例
- 德国租房合租合同范例
- 旅游项目转让合同模板
- 房屋装修洽谈合同范例
- 挂靠分包合同模板
- 新房托管服务合同范例
- 岩板供应合同模板
- 城市房产中介合同模板
- 2024年安全输液管理:如何确保患者安全
- 政府软件开发服务合同模板
- 军事训练模拟系统的效能评估
- 分层次教学与个性化辅导计划
- 六宫对角线数独题目10已知数
- 基于物联网的农业无人机高效配送方案
- 毛细支气管炎护理查房课件
- EHS(环境健康安全)管理制度
- GB/T 10476-2024尿素高压冷凝器技术条件
- 2024-2030年中国金融BPO行业市场发展分析及投资前景与策略研究报告
- 反假货币知识与技能竞赛参考题库大全-上(单选题)
评论
0/150
提交评论