智能窗帘报告_第1页
智能窗帘报告_第2页
智能窗帘报告_第3页
智能窗帘报告_第4页
智能窗帘报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、hefei university 2015年合肥学院电子设计竞赛项目报告项目名称: 智能卧室窗帘系统 作者姓名: 梁波 1205022039 12通信(二)班 毛会磊 1205022002 12通信(二)班 朱春松 1305011019 13电子(一)班 指导教师: 完成时间: 2015年3月16日 摘要本电路根据办公和生活环境需要,采用at89c51单片机控制系统,利用p3口的特殊功能与p1口的空闲模式和掉电模式,根据其不同控制模式,实现半自动控制、自动控制、定时控制的相互转换控制窗帘机。该设计包括光电开关电路、系统主控模块、电源转换电路、保护电路等组成,可实现窗帘自动升降。关键词单片机;定

2、时控制;光电开关;步进电机1 引言51.1 系统设计的背景及意义51.2 设计的基本内容51.3设计思想及基本功能62 总体电路设计与原理说明72.1方案选取72.2 方案介绍82.2.1 自动控制窗帘基本功能92.2.2控制器总体结构设计93 系统硬件设计103.1 89c51单片机及相关电路113.1.1 89c51单片机概述113.1.2 晶振电路113.1.3 复位电路123.1.4 显示电路133.2 光敏传感器电路143.3 a/d转换电路163.4 步进电机电路163.5键盘接口电路173.6 红外控制电路184系统软件设计204.1主程序软件设计214.2 光控电机程序设计22

3、4.3 lcd1602显示程序设计224.4光照采集程序设计235 总结25参考文献25附录 1:原理图26附录 2:部分子程序271 引言1.1 系统设计的背景及意义当今时代,科技的发展和人们生活水平显著提高,人们对居住环境方便快捷的要求越来越高,智能家居系统应运而生。智能家居是现代电子技术、通讯技术及自动化技术相结合的产物。随着高新技术及电子器件的发展,光控、温控及遥控窗帘应运而生,给人们生活带来很多方便。同时,也为人们的生活环境及智能 家居的实现提供了依据,为此,研究和设计智能窗帘控制系统具有深远的现实意义。窗帘机的控制方式大体上有三种:声控、光控、时控,声控和遥控属于半自动类而光控虽属

4、全自动式,但因光敏器件的灵敏度,冬夏等不同季节的光照度的不同,以及人们对开闭窗帘在时间上的要求不同,而难以实施和普及。因此,设计一款价格低廉,结构简单,灵敏度高,抗干扰能力强,实现红外线遥控控制、时间控制、手动控制三种功能的为一体的智能窗帘,具有十分重要的意义。在欧美等发达国家,电动窗帘已经广泛应用。在十多年前,电动窗帘就已经 进入我国,可一直没有大的推广,这两年,随着电控技术的不断提高及价格的不 断下降,电动窗帘热才又卷土重来。据了解,全国共有170 多种电动窗帘器获得 了国家专利,但就其技术本身而言,还是大同小异,但销价却有了很大的差别,贵的要数千元,便宜的只有几百元。尽管遥控自动窗帘系统

5、在国内是一个新兴的行业,但是,它也正以不可抵挡之势迅速崛起。遥控自动窗帘系统走进中国以来,再短短四年的时间里,遥控自动窗帘系统生产商由最初的几家公司增加到如今的百余家企业,其行业发展之迅 速是目前国内任何其他行业所无法比拟的。目前,我国遥控自动窗帘系统生产厂商、分销商、集成商与装饰公司都形成了相当规模,不少国内知名企业纷纷涉足遥控自动窗帘系统行业。随着自动窗帘热潮在世界范围内的日渐兴起,随着中国电子技术的飞速发展、人们生活水平的不断提高以及智能电子技术在生活中的广泛应用,自动窗帘已经成为未来家居装饰潮流发展的最新方向。从目前的发展趋势来看,在未来的20 年时间里,自动窗帘行业将成为中国的主流行

6、业之一,其市场的发展前景是非常广阔的。1.2 设计的基本内容本设计通过分析电动窗帘的发展和现状来规划电动窗帘的智能功能,从而对电动窗帘控制器进行设计。采用步进电机作为执行元件,以光敏电阻作为传感元件的传感器作为检测元件,89c51单片机作为控制芯片,辅助键盘和显示,最终实现了电动窗帘控制器的多项智能项目。主要章节分为:(1)引言:介绍系统设计的背景及意义,设计的基本内容。(2)总体设计方案:给出了电动窗帘控制器的总体方案设想,智能项目,和设计结构规划。(3)软件设计:选用选用汇编语言作为本次软件设计的编程语言。(4)总结与展望。1.3设计思想及基本功能该器具有一般的窗帘控制器的最基本的功能,即

7、通过电动按钮来开闭窗帘,在此基本功能的前提下,本设计根据需求还设计了可以根据光照强度和设定时间自动开闭窗帘的功能,在选取设计方案和采用元器件方面,该器本着简单实用经济的思想,尽量简化电路设计,用最简单的电路布线和选用最经济实用的器件来达到设计要求。自动窗帘控制器具有以下几个基本功能: 1.手动控制该功能使电动窗帘具有手动正传、手动反转 和手动停止的功能。用户可以通过遥控器对窗帘的开合进行控制,避免了手动拉动窗帘的麻烦。 2.半自动手动控制半自动手动控制是在需要关闭或打开窗帘的时候,只需要人工按一下“正转”或“反转”按键后,窗帘到位自动停止。3.光控调节功能 当用户无暇顾及窗帘的开合程度时可以打

8、开光控调节功能,窗帘的关闭和开启通过环境亮度自动完成窗帘的开启或关闭操作控制,“天黑关闭,天亮打开”单片机会自动获取信息调节室内光照强度,使室内一直处于舒适的光照环境。具有智能管理,不产生误动作。4.定时控制功能 根据设置输入的开启或关闭时间,来控制窗帘的关闭和打开。窗帘的正转、反转和停止功能可由单片机输出电平来控制步进电机的运转以实现。环境亮度的控制通过光敏电阻和运放组成的电路来控制单片机输出电平继而控制电机的正转和反转。时间自动控制可以由定时器来控制。2 总体电路设计与原理说明2.1方案选取单片机在各种电子产品中的应用已经越来越广泛,很多的电子产品利用单片机所取得的便利性得到了人们的好评,

9、针对单片机控制的自动窗帘控制器的智能化要求,实现其自动控制的方案有两种:方案(一)基于温度检测以及声控检测器件的自动控制方案(二)基于光照强度器件的自动控制这二个方案都是基于单片机控制的,采用步进电机控制以及液晶显示,不同的设计部分在于检测器件的选取上。方案一的原理图如图一:方案(二)的器框图如图2:方案(一)与方案(二)的区别主要在于检测器件的应用,方案(一)采用温度采集和声音检测元件,通过设定的温度来控制窗帘的开闭,以减少光照对室内的温度影响,利用声音控制虽然方便性有所提高,但是其误差较大。方案(二)采用的时钟模块实用性更强。综合考虑以上因素,器设计采用方案(二)。2.2 方案介绍 方案:

10、基于光照检测的自动控制。 原理框图如下: 光控模块 红外遥控模块 蜂鸣器 单片机系统 键盘 lcd显示屏 2.2.1 自动控制窗帘基本功能(1) 手动控制:该功能使电动窗帘具有手动正传、手动反转 和手动停止的功能。而且增加了工作状态指示,电机工作在正传、反转和停止状态的时候,数码管均有不同工作状态指示。(2)半自动手动控制:半自动手动控制是在需要关闭或打开窗帘的时候,只需要人工按一下“正转”或“反转”按键后,窗帘到位自动停止。(3)环境亮度控制:窗帘的关闭和开启通过环境亮度自动完成窗帘的开启或关闭操作控制,“天黑关闭,天亮打开”具有智能管理,不产生误动作。(4)时间自动控制:根据设置输入的开启

11、或关闭时间,来控制窗帘的关闭和打开。窗帘的正转、反转和停止功能可由单片机输出电平来控制步进电机的运转以实现。环境亮度的控制通过光敏电阻和运放组成的电路来控制单片机输出电平继而控制电机的正转和反转。时间自动控制可以由定时器来控制。2.2.2控制器总体结构设计自动窗帘控制器设计的总体框图如图3所示:由光电传感器来探测外界的光强,从传感器出来的信号经过信号调理电路的放大,滤波调理后输入到a/d转换器,a/d转换器件完成一个转换过程需要一定时间,如果在这段时间内信号的幅度发生变化,转换结果将会受到影响,所以期间要用到采样保持电路。转换后的信号由单片机控制器,来实现电机的运行与停止。显示部件用来显示电动

12、窗帘控制器的各种状态信息。键盘是主要的输入设备,控制单片机的各种参量。3 系统硬件设计3.1 89c51单片机及相关电路3.1.1 89c51单片机概述at89c51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能cmos8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单 个芯片中,atmel的at89c51是一种高效微控制器。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.2 晶振电路电路中的

13、晶振即石英晶体震荡器。由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。通过基准频率来控制电路中的频率的准确性。同时,它还可以产生振荡电流,向单片机发出时钟信号。图4是单片机的晶振电路。电路中的电容c1和c2的典型值通常选择为30pf左右,该电容的大小会影响振荡电路频率的高低、振荡器的稳定性和起振的快速性。晶体振荡频率的范围通常在1.212mhz。晶体的频率越高,系统的时钟频率越快,单片机的运行速度越快。但反过来,运行速度对于存储器的速度要求就越高,对印刷电路板的工艺要求也就越高,即要求线间的寄生电容要小。晶体和电容应该尽可能安装得与单片机芯

14、片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。89c51常选择振荡频率12mhz的石英晶体。图4.晶振电路3.1.3 复位电路复位是单片机的初始化操作,只需要给89c51的复位引脚rst加上大于2个机器周期(即24个时钟振荡周期)的高电平就可以使89c51复位。复位时,单片机初始化为0000h,从0000h单元开始执行程序。除了进入系统的正常初始化之外,当程序运行错误(如程序跑飞)或操作错误使系统处于锁死状态时,也需要复位键使rst脚为高电平,使89c51摆脱“跑飞”或“死锁”状态而重新启动。下图是复位电路图。图5.复位电路3.1.4 显示电路显示部分则主要显示时间,用于设置时间。

15、采用led数码管进行显示是一种经济实用的方法。每位数码管由7个笔画加上小数点共8个发光二极管组成;有共阴极和共阳极两种类型,公共端用来进行位控制,笔画端用来进行字符控制;数码管显示有静态显示和动态显示两种方法。在数码管显示中,有2个技术问题需要解决,这就是整数高位和闪烁显示问题。虽然某些新型led驱动芯片本身具有闪烁控制和熄灭控制功能,但通过合理的软件设计,采用廉价芯片组成的驱动电路同样可以实现整数高位灭零和闪烁显示功能,达到降低系统硬件成本的目的。本设计采用的就是4位led数码管的串行驱动电路来达到显示时间和消除闪烁显示的目的。采用led数码管进行显示是因为led数码管具有以下几个优点:(1

16、)能在低电压、小电流条件下驱动发光,能与cmos、itl电路兼容。(2)发光响应时间极短(0.1s),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。驱动器采用74ls164,74ls164是8 位串行输入,并行输出的移位寄存器。其引脚及各个引脚的作用如下图所示:符号引脚说明dsa1数据输入dsb1数据输入q0q336输出gnd7地 (0 v)cp8时钟输入(低电平到高电平边沿触发)/mr9中央复位输入(低电平有效)q4q71013输出vcc14正电源图6.74ls164引脚及说明由89c51的p3.0和p3.1来控制led数码管的显示。显示电路图如3.3.2所示。图7.显示

17、电路3.2 光敏传感器电路光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管、光电倍增管、光敏电阻等。光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。图8.光敏传感器当光敏电阻受到脉冲光照射时,光电流要经过一段时间才能达到稳定值,而在停止光照后,光电流也不立刻为零,这就是光敏电阻的时延特性。由于不同材料的光敏,电阻时延特性不同,所以它们的频率特性也不同

18、,硫化铅的使用频率比硫化镉高得多,但多数光敏电阻的时延都比较大,所以,它不能用在要求快速响应的场合。应用光控原理工作,天亮窗帘自动打开,天黑窗帘自动关闭。由运放组成比较电路,同向输入端有两个电阻分压得到一个电压值,作为基准电压进行比较,而反相输入端用一个光敏电阻对外部环境的光线进行采集,利用光敏电阻暗时电阻大,亮时电阻小的特点,来确定反向输入端的电压值。再两者进行比较,比较后的信号再送入单片机89c2051的p0口,从而通过单片机来控制电机的正反转。来实现天亮窗帘自动打开,天黑窗帘自动关闭这一自动控制功能。3.3 a/d转换电路pcf8591是一个单片集成、单独供电、低功耗、8-bit cmo

19、s数据获取器件。pcf8591具有4个模拟输入、1个模拟输出和1个串行ic总线接口。pcf8591的3个地址引脚a0, a1和a2可用于硬件地址编程,允许在同个ic总线上接入8个pcf8591器件,而无需额外的硬件。在pcf8591器件上输入输出的址、控制和数据信号都是通过双线向ic总线以串行的方式进行传输。pcf8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。pcf8591的最大转化速率由ic总线的最大速率决定。pcf8591 特性:单独供电;pcf8591的操作电压范围2.5v-6v;低待机电流;通过i2c总线串行输入/输出;pcf8591通过3个硬件

20、地址引脚寻址;pcf8591的采样率由i2c总线速率决定;4个模拟输入可编程为单端型或差分输入;自动增量频道选择;pcf8591的模拟电压范围从vss到vdd;pcf8591内置跟踪保持电路;8-bit逐次逼近a/d转换器;通过1路模拟输出实现dac增益。3.4 步进电机电路步进电机为一种数字伺服执行元件,具有结构简单、运行可靠、控制方便、控制性能好等优点,广泛应用在数控机床、机器人、自动化仪表等领域。为了实现步进电机的简易运动控制,一般以单片机作为控制系统的微处理器,通过步进电机专用驱动芯片实现步进电机的速度和位置定位控制。单片机在本次试验中对步进电机的控制从而达到对转角和位移的控制的方法。

21、本次设计采用两个型号为130hz308-450的三相反应式步进电机对旋转角度和位移进行控制,该步进电机力矩大、耐负载冲击、精度高。其步距角为1.2,即=1.2,即本次设计的测控系统对回转台转角的控制精度可以达到1.2。步进电机的驱动电路是根据控制信号工作的。而本次测控系统是以单片机位控制中心的,下面将介绍步进电机控制系统。步进电机控制系统主要由脉冲分配器,功率驱动电路,步进电机几部分构成的。步进电机控制系统的方框图如图9所示:图9.步进电机电路3.5键盘接口电路 键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单片机的主要手段。本设计中的键盘采用44矩阵键盘。16个键分

22、别为:0-9十个数字键,用于时间设定输入;设定键,设定自动窗帘开和关的时间;复位键,在程序出错或者有误操作的时候;正转键,使步进电机正转,窗帘打开;反转键,使步进电机反转,窗帘关闭;停止键,步进电机停止运转;确定键,时间设定完成后确定输入。由于按键比较多,加上减少所战占用的端口,可以将按键组成一个矩阵,如图10所示。图10.键盘接口电路3.6 红外控制电路红外通信基本原理:红外通信是利用950nm近红外波段作为传递信息的媒体,即通信信道。发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射信号。接收端将接收到的信号装成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二

23、进制信号后输出。常用的有通过脉冲宽度来实现信号调制(pwm)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(ppm)两种方法。简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调。红外遥控系统主要由遥控发射器、一体化接收头、单片机、接口电路组成。遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头来完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控制器,由其内部cpu完成对遥控指令解码,并执行相应的遥控功能。红外遥控控制过程

24、:本系统以89c51单片机为核心,由发射和接受两部分组成,发射部分主要完成编码和调制,接收部分完成调解和解码。其发射部分主要由89c51单片机完成编码,然后由红外发射管发射红外线,接收部分主要由光电转换,放大,解调,解码组成。其中光电转换,放大调解由红外线一体化接头来完成,接收单片机主要完成解码功能。遥控器发射及其编码:红外线遥控采用自定义编码方式,由发送单片机来完成。遥控发射器专用芯片很多,根据编码格式可以分为脉冲宽度调制和香味调制两大类。当发射器案件按下后,即有遥控码发出,所按的键不同遥控编码也不同,这码具有以下特征:采用脉宽调制的串行码,以脉宽为0.26ms、间隔0.26ms、周期为0.

25、52ms的组合表示二进制的“1”(如图11a),其特征是脉冲中高电平的宽度等于0.26ms,相当于10个26s的宽度;以脉宽为0.26ms、间隔为0.52ms、周期为0.78ms的组合表示二进制的“0”(如图11b),其特征是脉冲中而低电平的宽度是高电平的二倍,等于0.52ms,相当于20个26s的宽度。可以根据传输数据的不同来调节脉冲的宽度。图11.二进制信号二进制信号的调制:二进制信号的调制由发送单片机来完成,它把编码后的二进制信号调制成频率为38khz的间断脉冲串,相当于用二进制信号的编码乘以频率为38khz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图3所示,

26、a是二进制信号的编码波形,b是频率为38khz(周期为26s)的连续脉冲串,c是经调制后的间断脉冲串(相当于c=ab),用于红外发射二极管发送的波形。 二进制信号的解调:二进制信号的调制仍由发送单片机来完成,它把编码后的二进制信号调制成频率为38khz的间断脉冲串,相当于用二进制信号的编码乘以频率为38khz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图3.3所示,是二进制信号的编码波形,b是频率为38khz(周期为26s)的连续脉冲串,c是经调制后的间断脉冲串(相当于c=ab),用于红外发射二极管发送的波形。二进制信号的解码:二进制信号的解码由接收单片机来完成,它把

27、红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。基于字节传输的红外遥控数据格式:在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26s)的高电平作为传输开始,接着发送8位数据(字节高位在前,低位在后),最后发送10个脉冲宽度的低电平作为传输结束,如图14所示。4系统软件设计4.1主程序软件设计主程序的流程图如图15所示。图15 主程序流程图主程序构成无限循环,主要完成单片机初始化,关中断,菜单显示内容初始化,按键扫描,电机运行,计时等功能。启动主程序,先关中断并且设置堆栈,接着初始化寄存器,初始化显示内容;然后执行按键查询,执行相应的操作。如果是设定键,则设定时间,

28、开始计时;到时间后电机开始相应的工作,工作完成后停机。如果是电机控制键,则也执行相应的工作。如果都不是,返回显示。检测室内是否开灯,如果开灯,返回显示,如果无开灯,判断当前光照是否大于800lx,如果大于800lx,电机正转,窗帘打开。在窗帘打开的前提下,判断光照是否小于400lx,如果小于400lx,电机反转,窗帘闭合,如果大于400lx,电机停止,返回显示,重新进行判断。4.2 光控电机程序设计光控电机程序设计流程图如图16所示。图16 光控电机程序设计流程图光控电机程序的设计是本设计的关键部分,根据光照强度的变化,单片机控制电机的正反转,实现窗帘的开闭。当执行到该子程序入口时,首先进行初

29、始化,判断当前光强是否大于800lx,若果条件不成立,返回重新初始化,如果符合条件,电机正转,窗帘打开。如果传送器触到安装在轨道上的形成开关,电机停止转动,如果没触到,电机继续正转,直到触到形成开关电机才停止。在窗帘打开的前提下,光电传感器检测到当前的光强小于400lx时,电机反转,窗帘闭合。如果传送器触到安装在轨道上的形成开关,电机停止转动,如果没触到,电机继续反转,直到触到形成开关电机才停止。4.3 lcd1602显示程序设计当lcd1602的寄存器选择信号rs为1时,选择数据寄存器;当lcd1602的读写选择线rw为0时,进行写操作;当lcd1602的使能信号en置高电平后再过两个时钟周

30、期至低电平,产生一个下降沿信号,往lcd写入显示数据,lcd执行命令,判断执行是否完毕,如果没有执行完毕,返回到选择指令寄存器。如果执行命令完毕,显示数据,子程序返回。写数据到lcd子程序流程图如图17所示。图17 写数据到lcd子程序流程图4.4光照采集程序设计光电传感器采用的是光电池,其输出的是线性电压,线性度良好。光照采集程序设计流程图如图18所示。图18 光照采集程序设计流程图 5 总结该设计通过分析自动窗帘系统的现状和人们对自动窗帘系统功能的需求,对自动窗帘系统控制器进行总体设计。总体设计采用步进电机为单片机控制元件,执行窗帘开闭的主要任务;以光敏电阻为检测元件,提供单片机外界光照变

31、化;以红外检测电路,实现手动控制;以89c51单片机为主控制芯片,控制整个系统运行;此外辅助以按键和显示电路,在各模块的配合下,最终实现自动窗帘控制系统的智能化要求。自动窗帘控制系统具有以下几个基本功能:光照控制:根据光照强度值,通过感光器采集,自动打开或关闭窗帘。即当早晨光照强度增强到设定值,通过感光器采集,单片机控制步进电机打开窗帘;当夜晚光照强度减弱到设定值,通过感光器采集,单片机控制步进电机关闭窗帘。红外控制:当光照强度未达到设定值,手动操作红外遥控器,由红外接收系统接收信号,单片机控制步进电机打开或关闭窗帘。参考文献1阎石.数字电子技术基础(第五版) 北京:高等教育出版社,20062

32、李哲英.电子技术及其应用基础(数字部分)北京:高等教育出版社,20033郭天祥.十天学会单片机和c语言编程 北京;电子工业出版社,20094 李广第. 单片机基础. 北京:北京航空航天大学出版社,20015 瞿贵荣.电动窗帘红外遥控电路.家庭电子,2005,2:35-366 王丽君,杨伟丰. 电机无线遥控系统设计的研究大众科技,2009,11:124-1257 张培志,陆伟. 仇芝基于单片机技术的无线遥控家居照明系统.仪器仪表用户,2008附录 1:原理图附录 2:部分子程序/*主函数*/void main()beep = 0; /开机叫一声 delay_1ms(150);p0 = p1 =

33、p2 = p3 = 0xff;/单片机io口初始化为1init_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 = 99)temperature = 99;guanxian = ad

34、0832read(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_dia

35、nji();/调试窗帘电机bujindj(); /步进电机函数delay_1ms(1);/*独立按键程序*/void key() /独立按键程序static uchar key_new;key_can = 20; /按键值还原p3 |= 0xf0; /对应的按键io口输出为1if(p3 & 0xf0) != 0xf0)/按键按下delay_1ms(1); /按键消抖动if(p3 & 0xf0) != 0xf0) & (key_new = 1)/确认是按键按下key_new = 0;switch(p3 & 0xf0)case 0x80: key_can = 1; break; /得到按键值 ca

36、se 0x40: key_can = 2; break; /得到按键值 case 0xb0: key_can = 3; break; /得到按键值 case 0x70: key_can = 4; break; /得到按键值 flag_lj_en = 1;beep = 0;delay_1ms(80);beep = 1;else key_new = 1;flag_lj_en = 0;/*设置函数*/void key_with()if(menu_1 = 0)if(key_can = 2)/设置手动还是自动模式flag_zd_sd +;if(flag_zd_sd = 3)flag_zd_sd = 0;

37、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

38、= 2) /设置开关窗帘时间menu_2 = 1;write_string(1,0, kai 00:00 ); write_string(2,0,guan 00:00 );if(menu_1 = 3) /设置报警光线报警menu_2 = 1;write_string(1,0, set guanxian );write_string(2,0, 00% );if(menu_1 = 4) /设置报警温度menu_2 = 1;write_string(1,0, set wendu ); write_string(2,0, 00 );write_zifu(2,9,0xdf); /显示度if(menu_1

39、 = 5) /手动把窗帘归0menu_2 = 1;write_string(1,0, tiaoshi dianji ); 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) /设置开关的

40、时间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)/加fe

41、n+=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

42、(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 =

43、 (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+=

44、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)/

45、减 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); /显示日swi

46、tch(menu_2) / 光标显示case 1: write_guanbiao(1,2,1); break;case 2: write_guanbiao(1,5,1); break;case 3: write_guanbiao(1,8,1); break;case 4: write_guanbiao(1,14,1); break;case 5: write_guanbiao(2,3,1); break;case 6: write_guanbiao(2,6,1); break;case 7: 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

温馨提示

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

评论

0/150

提交评论