1、题 目 智能遥控窗帘系统的设计 毕业论文设计任务书院(系) 物电学院 专业班级 通信1103 学生姓名 赵 京 一、毕业论文设计题目 智能遥控窗帘系统的设计 二、毕业论文设计工作自 2014 年 11 月 26 日 起至 2015 年 6 月 15 日止三、毕业论文设计进行地点: 物理与电信工程学院实验室 四、毕业论文设计的内容要求: 智能家居系统是一个大的社会系统工程,我们应当加快我国智能家居标准化进程。自动窗帘系统作为智能家居中一个很重要的部分,需要在我国智能家居这一领域,建立起一个新兴、健康的产业链。因此,本课题主要采用单片机与无线收发模块完成,可实现窗帘手动、自动、遥控、定时的窗帘的开
2、度的控制。 本次毕业设计要求: 1.采用单片机控制电机实现窗帘手动、自动、无线遥控的窗帘的开度的控制; 2.完成系统的软硬件设计。 五、毕业论文设计应收集资料及参考文献: 阅读和学习关于单片机应用、数据采集和远程监控方面的专业资料,参阅的外文文献不少于3篇。 六、毕业论文设计的进度安排: 1月10日3月20日:查阅资料,完成外文翻译原文和开题报告。 3月21日4月20日:完成系统的硬件及软件的基本设计并提交中期检查报告。 4月21日5月20日:进一步完善系统的硬件及软件的设计,准备作品验收。 5月21日6月15日:撰写、修改毕业设计论文,准备并完成答辩。 指 导 教 师 系(教 研 室) 系(
3、教研室)主任签名 批准日期 接受论文 (设计)任务开始执行日期 学生签名 I智能遥控窗帘系统的设计赵京(陕西理工学院 物理与电信工程学院 通信工程专业 2011级3班,陕西 汉中 723003)指导教师:魏瑞摘要智能遥控属于电子及信息科学的一个重要分支,并且在现代家居中有着较好的发展前景。本文论述了将一个基于光照检测的自动控制和手动控制结合可共同作用的智能遥控窗帘系统。该系统核心采用的是单片机STC89C52,其次利用了光照传感器、键盘显示接口电路以及信号调理电路等外围电路,整个系统在各模块的配合下可实现手动控制、自动控制等功能。并通过红外遥控器,控制实现该系统的各个功能。该设计在理论层面上,
4、用程序语言驱动各模块工作,实现系统的内在联系,并使用Protues软件进行仿真设计。整个电路布线简单,易操作。关键词自动控制;STC89C52;红外解码IIThe Design of the capacity remote control curtainZhaoJing (Grade 2011,Class3,Major of Communication Engineering ,Dept of Electrinics and Information Engineering Shaanxi University of Technology,Hanzhong 723003,Shanxi)Tutor
5、:Wei Ruiabstract:Intelligent Remote belong to a branch of electronics and information science, and has good prospects in the modern home. This article discusses the detection of a light-based automatic control and manual control can be combined with intelligent remote control curtains interaction sy
6、stem. The core of the system uses a single-chip STC89C52, followed by use of the light sensor, keyboard and display interface circuits, and signal conditioning circuits and other peripheral circuits, the whole system in cooperation with each module allows manual control, automatic control and other
7、functions. By infrared remote control to achieve the systems various functions. The design at the theoretical level, with a programming language to drive each module to achieve internal relations system and use Protues simulation software design. The entire circuit wiring is simple, easy to operate.
8、 keywords:automatic control; STC89C52; infrared decodingIII陕西理工学院毕业设计目录引 言61 方案选择71.1 设计目的要求71.2 方案选择72 硬件设计92.1 系统的总体结构设计102.2 单片机最小系统102.3 外围电路132.3.1 键盘电路132.3.2指示灯显示电路142.3.3 红外线接收电路142.4 模块介绍152.4.1 光敏传感器152.4.2 步进电机162.4.3 电压比较部分173 软件设计193.1 主程序设计193.2主要子程序设计203.2.1 键盘程序设计203.2.2 步进电机程序设计204
9、仿真与调试224.1 软件介绍与使用224.1.1 KEIL软件介绍224.1.2 KEIL软件的使用224.2 注意事项234.3 安装调试235 总 结25致 谢26参 考 文 献27附录A28附录B40IV引 言21世纪是一个信息化时期,学问与科技成为时代的潮水,在它们的促使下,智能化也因此取得了很大的进步,其感化在社会生活中日趋得到彰显。智能控制系统在现代技术的有机结合,起着重要的作用,如计算机技术,网络通信技术和综合布线技术。在通讯技能、计算机技能、网络技能、智能控制技能的迅猛发展潮水下,家庭生活达成了现代化与智能化,居家情况也变得更为舒适与安闲。智能化产物的策划在转换人们工作方式与
10、生活习惯的同时,让人们对生活质量的提高提出了更多的要求,便利、安逸成为了人们所寻求的生活方式,在现今家庭生活环境中,居家情况早已不单单限制在物理空间上,人们更多关注的是一个平安、便利、安逸的环境。智能化的电子产品和计划将以前的被迫稳定物体转变为人们可以容易运用自如的器材,这些产物具备供给全方位的信息互换的效益,不光是能够优化人们的生活方式,辅助人们公道的分配时间,巩固居家环境的安全性,乃至能够为各类动力花费节省资本。在智能化产物中,单片机的使用仍旧愈来愈普遍,单片机以它体积小、质地轻、耗电省、可靠性高、价钱便宜等长处,开始不断发展,并普遍应用于仪器边幅、家用电器、疗养设备、航天航空范畴、工业专
11、用设备的经管及过程控制等范畴,在很多的大中型的电气设备以及小型的电子产品中也用到了单片机进行控制。而该体系选用的主控器件STC89C52,恰是运算与控制单位的整合体。体系的总体主要由硬件和软件两部分组成。硬件个别由单片机增添的外围电路和各类完成单片机体系控制功能的接口电路构成;软件部分主要由单片机体系达成它特定控制功能的种种流程程序构成。本设计中论述了自动窗帘控制系统的硬件制作和软件设计过程,以达到最大可能满足不同人对窗帘开闭的不同要求。同时,该体系在针对人们日常需求的设计开发外,还提出多种解决方案,在考虑了经济性和简便性的前提下,可能够供往后对控制系统的作用进行扩大发展。鉴于人们对智能化的需
12、求以及对便利舒适生活的追求,智能窗帘控制系统改变了传统窗帘的不便之处,它能够根据外界光照不同的强度来自动控制窗帘的开关,并通过红外遥控器的无线收发功能完成智能控遥控,更加便捷了使用时的简单与舒适。本次毕业设计采用光敏传感器检测光照强度的变化,并且将光敏检测模块电阻的变化转化为电压变化,然后经过运算比较器将变化的电压信号传入单片机,单片机通过电机驱动电路驱动步进电机的正转或者反转实现窗帘的开关。本设计正是把利用STC89C52 单片机的优点以及简单实用性,顺利的完成了对智能遥控控制的设计要求,并且为智能化的家居设备提供了良好的基础。此外,该系统可进行扩展,比如可以加上防火,防盗,甚至室内煤气浓度
13、监测等功能,还可以联网接入整个智能家居系统,使该系统更具有实用性,而且也完善了系统。1 方案选择1.1 设计目的要求智能家居系统是一个大的社会系统工程,我们应当加快我国智能家居标准化进程。自动窗帘体系作为智能家居一个很重要的部分,必须在我国智能家居这一领域建立起一个新兴、健全的产业链。于是本课题主要利用单片机与红外线收发模块实现,该体系拥有普通的窗帘控制系统的最普遍的作用,即通过按键来开闭窗帘,在此基本功能的前提下,本设计按照需还要设计了能够根据不同光照强度自动开关窗帘的功能,在选择设计方案和选用元器件部分,该系统本着简易实用易操作的思想,尽可能简化电路设计,用最简易的电路布线和采用最经济实用
14、的器件来达到设计要求。自动窗帘控制系统能够实现以下几个基本功能:(1)手动控制:该功能是通过按键来控制窗帘的开关,可以使窗帘处于开或关任意一种状态;(2)光照控制:系统可以根据用户设定的光照强度值通过感光器采集光照自动开光窗帘;(3)无线遥控:通过红外线接受来控制窗帘的开关以及手动与自动模式的切换。1.2 方案选择单片机在各类电子产品中的使用中已经愈来愈普遍,许多电子产品采用单片机所得到的简便性得到了人们的赞许,对于单片机控制的自动窗帘控制体系的智能化要求,实现其自动控制的方案有两种。方案一:基于温度检测的自动控制自动窗帘控制体系总体方案设计是在基于满足设计要求的前提下并且依照理论上的可实现性
15、和硬件上的简单经济实用性,而进行设计的重要指标。在综合考虑各种因素的前提下,设计出自动控制体系的总体结构,并且在基本功能要求的基础上尽量考虑整个体系的可扩展性。本方案是利用温度检测来自动控制窗帘的开关,给温控系统设定一个温度固定值,当从外界检测到的温度大于此温度固定值时,窗帘自动关闭,反之窗帘自动打开,以此实现温度检测对窗帘的自动控制。键盘模块单片机电源模块显示模块温度检测 图1.1 方案一原理框图方案二:基于光照强度器件的自动控制本方案采用光敏传感器对外界进行光照检测,通过电压比较器传入单片机来控制电机驱动实现对窗帘开关的自动控制,当光照增强时窗帘自动打开,当光照减弱时窗帘自动关闭,模拟白天
16、夜晚窗帘的自动控制。依据光照强度来开关窗帘主要原理是用光敏检测器件采集外界的光照强度,把光敏传感器收集的信号利用信号校正电路放大,经过LM393电压比较器发送给单片机。传输的信号由STC89C52单片机来控制,并且做出相应的响应,驱动电机的正转或者反转以实现对窗帘开关的控制。指示灯显示模块是用来显示自动窗帘控制系统的各种状态。红外遥控器与按键作为输入设备,通过不同按键指令来控制单片机进行各种运转状态和切换自动窗帘系统的制动方式。单片机键盘模块红外遥控指示模块光照检测图1.2 方案二原理框图方案三:基于风力传感器的自动控制本方案利用风力传感器检测室外的风力大小来控自动制窗帘的开关,当传感器检测到
17、有风时,通过风力使风车转动,在风车的前后安装上红外对发管,通过收集信号频率的变化,分析此时的风力是否达到关窗的要求。当达到关窗的要求时,向单片机发送个信号,然后单片机调用相关程序来控制窗帘关闭。电源模块单片机键盘模块显示模块风力检测 图1.3 方案三原理框图1.3 方案确定 以上三个方案都是基于单片机控制自动窗帘系统的,通过电机驱动电路驱动步进电机实现窗帘的开关,不同的设计部分在于自动控制检测器件的选取上。三个方案的区别主要在于检测器件的选择,方案一采用温度采集检测器件,通过设定的温度比较来控制窗帘的开关,但由于外界光照对室内温度的影响存在一定的误差;方案二采用的光照强度检测实用性更强,电路简
18、单,红外遥控的使用也更加方便;方案三采用风力传感检测器件,由于没有时间的限制,在无风的夜晚时也有可能会打开窗帘对用户造成不必要的困扰。自动窗帘控制体系总体结构方案的设计是在满足设计要求的前提下并依据理论上的可实现性和硬件上的经济易操作有实用性,而进行设计的重要标准。综合考虑以上因素,本次毕业设计采用方案二基于光照强度器件检测的自动控制窗帘系统,实现此次毕业设计课题智能遥控窗帘系统的设计要求。2 硬件设计随着科学技术的发展和人们生活水平的日益提升,人们对生活便利安逸性的追求愈来愈猛烈,而窗帘在每个家居生活中必不可少的,它的基本功能是庇护居民的秘密和遮挡阳光等。根据这些需求窗帘的便利使用性自然也受
19、到了居民的关注。但是普通的窗帘基本上是要人手动去开关的,每次开关不仅费时费力,而且还有可能错过最佳开窗时间,特别是大型窗帘,比较重,而且长大,在开关时需要费很大力气才能开关窗帘,使用特别的不方便;对于这类状况,自动遥控窗帘便因此产生。现有的自动遥控窗帘大多都是利用按键控制或红外遥控控制开关窗帘,虽然省了力气也比较方便,但是有些部分的设计还是不够人性化。因此,本系设计自动遥控窗帘系统提出可以根据光照强度的不同开关窗帘,具体有以下几大功能:手动控制模式:此功能是在要打开或者关闭窗帘的时候,通过“开关按键”来切换窗帘开关的状态,窗帘在步进电机的带动下可以自动开关。光照控制模式:此功能是利用设定的光照
20、强度与外界光照强度的对比结果来控制窗帘的开关状态,模拟白天黑夜对窗帘的开关控制。2.1 系统的总体结构设计按照光照检测来开关窗帘主要原理是利用光敏电阻采集外界的光照强度,从光敏电阻采集的信号传入校正电路放大,经过LM393电压比较器发送给单片机。传入的信号由STC89C52单片机来处理,并且做出相应的响应,经过电机驱动电路驱动电机的正转与反转。指示灯显示模块是用来显示自动窗帘控制系统的各种状态。红外遥控器与按键部分作为输入设备,通过不同按键来控制单片机进行各种状态运转和切换窗帘开关的制动模式3。本次毕业设计智能遥控窗帘系统的设计的总体框图如图2.1所示。光敏传感红外解码信号比较89C52指示灯
21、显示模块按键部分步进电机图2.1 智能遥控窗帘系统控制器结构框图2.2 单片机最小系统STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可在线编程Flash 存储器。片上Flash允许程序存储器在系统内可编程,同时也适于常规编程器。在单芯片上,具有灵巧的8 位CPU 和在系统内可编程Flash存储器,使得STC89C52为诸多嵌入式控制应用系统供应高灵活、超有用的解决方案9。STC89C52具备如下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断布局,全双工串行口,片内晶
22、振和时钟电路2。图2.2 单片机引脚图引脚功能P0口: P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。P1口:P1 口是一个拥有内部上拉电阻的8 位双向I/O 口,P1 作为输出缓冲器能够驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口电平拉高,此时可以作为输入口使用。作为输入口使用时,被外部器件拉低电平的引脚由于内部电阻存在的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作为定时器和计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如下表2.1所示。 表2.1 引脚功能引脚号 第
23、二功能P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P2口:P2口是一个拥有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。P3口:P3 口是一个拥有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻会把端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部器件拉低的引脚由于内部电阻存在的原因,将输出电流(IIL)。P3口亦作为STC89C52特殊功能(第二功能)使用,第二功能如下表2.2所示。表2.2 P3口引脚功
24、能 引脚号 第二功能P3.0 RXD(串行输入)P3.2 (外部中断0)RST:复位引脚。单片机最小系统内部的晶振工作时,RST引脚持续大于2 个机器周期的高电平将使单片机初始化。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位能够让此功能无效。在DISRTO默认状态下,复位高电平有效。XTAL1:振荡器反相放大器和内部时钟产生电路的输入端。XTAL2:振荡器反相放大器的输出端。晶振电路电路中的晶振即石英晶体震荡器。因为石英晶体震荡器具备良好的频率稳定性和抗外界干扰的能力,因此,石英晶体震荡器是用来产生基准频率的。通过基准频率来调节电路
25、中的频率的准确性。同时,它还可以产生振荡电流,向单片机传输时钟信号。图2.3是单片机的晶振电路。片内电路与片外器件构成了一个时钟产生电路,CPU的所有操作都是在时钟脉冲同步下进行。片内振荡器的振荡频率与晶振频率非常接近,一般都在1.2MHz24MHz之间取值。C1和C2是反馈电容,它的取值在20pF100pF之间选取,这里的经典取值为30pF。本次电路选取的电容值为30pF,晶振频率为12MHz。振荡周期;机器周期; 指令周期。XTAL1接外部晶体的一个端口,XTAL2接外部晶体的另一个端口。在单片机内部接入上述振荡器的反相放大器的输出端。通常,晶振的输出时钟频率为0.5MHz-16MHz,经
26、典值为12MHz或者11.0592MHz。电容C1和C2可以帮助起振,经典值为30pF,调节C1和C2可以达到微调晶振频率的目的。图2.3 单片机晶振电路图复位电路复位电路的主要功能是让单片机进行复位初始化,在初始化的整个过程中需要在复位引脚上加上大于2个机器周期的高电平。复位后的单片机初始化地址为0000H,然后继续从0000H单元开始执行程序。在复位电路中作用复位信号,等到系统电源稳定后,再去除复位信号。但是为了要在复位按键稳定的之前,电源稳定后还要经一定的延时去抖才能撤除复位信号,以防在按键过程中引起的延时抖动执行错误程序而影响单片机复位。图2.4所示的 RC 复位电路可以实现上述基本功
27、能。图2.4 复位电路图2.3 外围电路2.3.1 键盘电路按键按下后单片机引脚电平改变调用相关程序运行。K2是手动开关,K3是手动和自动的模式转换键。按键与单片机连接电路如图2.5所示。 图2.5键盘接口电路2.3.2指示灯显示电路指示灯显示模块主要是显示当前窗帘的工作模式与窗帘此时所处的状态。本次设计的窗帘共有4个LED指示灯来指示。如图2.6图所示。LED1与LED2分别表示该系统的工作方式,LED1为自动方式、LED2为手动方式,LED3与LED4分别表示为窗帘的关状态与开状态。图 2.6 指示灯电路2.3.3 红外线接收电路HS38B是用于红外线遥控接收的小型一体化接收头,它的主要功
28、能包括放大,选频,解调几大部分,要求输入的信号必需是已经被调制了的信号。经过它的接收放大和电光转换及解调后会在输出端直接输出原始信号的反相信号。其不需要任何外接元件,就能实现从红外线接收端到输出与TTL电平信号兼容的所有工作内容,而体积和普通的塑封三极管大小差不多,从而使电路达到最简化,使用更加方便!它的灵敏度和抗干扰性都非常好,适用于各种红外线遥控和红外线数据的传输,中心频率38.0kHz。接收器对外只有3个引脚:从左至右依次为OUT、GND、VCC。OUT脚即图示1号脚与单片机IO口直接相连4。芯片如图2.7所示。红外接收头内部放大器的增益很大,很容易引起干扰,依次在接收头的供电脚上必须加
29、上滤波电容。故红外接收部分电路如图 2.8。红外遥控模块的工作原理是在红外遥控器发射端发射数字信号,经调制后进入电光转换电路驱动发光二极管发射红外光信号,在接收端,接收红外线信号,经解调后进入电光转换电路,恢复出原始信号输出到单片机的P3.2接口。单片机P3.2接口的第二功能是外部中断,利用这一功能在单片机收到信号后立刻停止当前工作状态,接收并处理红外信号以完成红外遥控功能1。 图 2.7 HS38B引脚 图 2.8 红外线接收电路图 2.4 模块介绍2.4.1 光敏传感器自动窗帘控制系统的光控功能是可以按照光照的不同强度来实现自动控制窗帘的开关的,因此需要用到光照传感元器件,在本次设计中采用
30、了光敏电阻。光照检测电路如图2.9所示。光敏电阻又称光导管,常用的制作材料是硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具备在特定波长的光度照射下,其阻值迅速减小的性质。这是因为光照产生的载流子都参与了导电,在外加电场的作用下做漂移运动,电子流向电源的正极,空穴流向电源的负极,因此能够让光敏电阻的阻值迅速减小。光敏电阻属于半导体光敏检测器件,除了具备灵敏度高,反应速度快,光谱特性及r值一致性良好等性质外,在高温、多湿的恶劣环境下,扔然能够保证高度的稳定性和可靠性,可广泛运用于照相机,太阳能庭院灯,草坪灯,验钞机,石英钟,音乐杯,礼品盒,迷你小夜灯,光声控开关,路灯自动开关以及
31、各种光控玩具,光控灯饰等光控自动开关控制范畴。图2.9 光照检测电路部分2.4.2 步进电机步进电动机是一种将电脉冲信号转换成角位移或者线位移的机电元器件。步进电机的输入是脉冲序列,输出则是相应的增量位移或步进运动。正常运行条件下,它每转一周具有固定的步数;做连续步进转动时,其旋转的转速与其输入的脉冲序列的频率保持一一对应的关系,它不受电压波动和负载变化的任何影响。下图2.10为步进电机运行原理图。步进电机控制指令功率驱动电路脉冲控制单元反馈与保护图2.10 电机运行原理图在步进电机驱动电路中,步进控制器的作用是把输入脉冲转变成环型脉冲,用来控制步进电机的转向。在实际使用中则由软件代替步进控制
32、器模块,其优点是使线路布局简单,降低成本,提高可靠性和稳定性。在智能窗帘控制体系中选用了型号为28BYJ-48的4相5线步进电动机,它的优点是力矩大,精度高,它的步进角度是5.625/64度。步进电机驱动电路与单片机的连接如图2.11。图2.11 步进电机电路与单片机的连接2.4.3 电压比较模块LM393芯片是由两个独立的、高精度电压比较器构成的集成电路,失调电压低,最大为2.0mV。它专门为获得加宽电压范围、单电源供电而设计,也可以用双电源对其进行供电;而且不管电源电压是多少,电源消耗的电流都很低。它还有另一个性质就是即使是单电源供电,比较器的共模输入电压范围接近地电平电压。主要运用在限幅
33、器、简单的模/数转换器、脉冲发生器、延时发生器、宽频压控振荡器、MOS时钟计时器、多频振荡器和高电平数字逻辑门电路中。LM393被设计成一种能直接连接TTL和CMOS的芯片;当利用双电源对其供电时,它能构兼容MOS逻辑电路,这是低功耗的LM393相对于标准比较器的独特优势8。它还有其他优势如1.高精度比较器;2.减少由于温漂引起的失调电压;3.可以单电源供电; 4.输入共模电压范围接近地电平;5.兼容逻辑电路。它的特点如下:u 电源电压范围大: 单电源:20.V - 36V 双电源:10.V - 18Vu 电源电流消耗低(0.4mA);u 输入共模电压范围接近地电平;u 差模输入电压范围等于电
34、源电压;u 输出电平兼容TTL,DEL,ECL,MOS和CMOS逻辑电路。LM393管脚图如下图2.12所示,引脚功能如表2.3所示。 (a) (b) 图2.12 管脚排列图表2.3 引脚功能引出端序号 符号 功能1 OUT A 输出 A3 IN A+ 同相输入 A2 IN A- 反相输入 A4 GND 接地端5 IN B+ 同相输入 B6 IN B- 反相输入 B7 IN B- 输出 B8 VCC 电源电压3 软件设计本次系统软件设计部分的电路主要分为5个模块,分别是电源模块、红外遥控模块、手动控制模块、电机驱动执行模块、单片机主控器件模块。本章介绍了智能遥控窗帘控制体系的主程序设计以及各主
35、要模块子程序的设计过程,程序代码和仿真详见附录B。3.1 主程序设计主程序主要实现体系结构初始化操作及各个子程序之间的共同作用,主程序是能够无限循环的,主要的功能是让单片机初始化不断运行程序实现窗帘各种状态的运转。对按键与红外遥控信号进行扫描,控制步进电机工作等功能。主程序流程图如图3.1所示。图3.1 主程序流程图主程序流程说明:电路主要分为以下几个模块,分别是电源模块、指示灯显示模块、按键模块、步进电机驱动模块、红外遥控模块、单片机主控器件模块,各模块具有不同的子程序设计5。主程序的作用主要是先初始化系统的状态以及指示灯的指示内容;然后扫描按键和红外遥控按键的操作内容,并且对按键进行分析以
36、及处理,通过分析处理,对于控制键,调用相关程序运行执行相应的功能及切换智能窗帘系统的制动模式。3.2主要子程序设计3.2.1 键盘程序设计在操作按键的过程中,不管是按下还是松开,按键触点在闭合和断开时都会产生抖动,这时逻辑电平是非常不稳定的,如果不能正确处理,可能会导致单片机对按键命令的错误执行。解决这个问题的最有效办法就是利用软件延时。当按键按下后延时50ms,过滤掉按键起始时的抖动,然后处理该按键对应的按键内容,处理完按键内容以后对按键要做按键判断释放。这样就避免了一下程序误操作。图3.2是键盘程序设计流程图。图3.2 键盘程序流程图3.2.2 步进电机程序设计步进电动机是控制窗帘开关的主
37、要执行器件,其程序设计主要是根据单片机控制指令和按键指令驱动电机的正转或者反转。步进电机程序设计的主要任务是判断电机转动的方向,依次按顺序传送控制脉冲,判断所要求的控制步数是否已经传送结束,图3.3是步进电机程序流程图。图3.3 步进电机程序流程图4 仿真与调试4.1 软件介绍与使用4.1.1 KEIL软件介绍KeiluVision是美国Keil Software公司开发的51系列兼容单片机C语言软件设计系统,和汇编相比,C语言在功能上、结构性、可续性、可维护上有了明显的优势,因此使用广泛。 KeiluVision软件供给大量的库函数和功能强大的集成开发调试工具,全windows用户界面。此外
38、特殊的一面是只要看一下编译后生成的汇编代码,就能体会到KeiluVision生成目标代码的效率极其之高。多数语句生成的汇编代码很紧凑,极易理解。在开发大型软件时更能体现出高级语言的优势。KeiluVision软件提供了包含C编译器、宏汇编、连接器、库管理器和一个功能强大的仿真调试器等在内的完整的开发系统。运行KeiluVision软件需要PENTIUM及以上的CPU,16MB或更多的RAM,20MB以上的空闲的硬盘空间和WIN98、NT、WIN2000、WINXP等操作系统6。4.1.2 KEIL软件的使用启动Keil C51设计软件,进入用户编辑界面。1)需要建立一个新工程,单击Projec
39、t菜单,在弹出的下拉菜单中选择New Project选项。2)接下来选择用户想保存的路径,输入工程文件的名称,比如保存在C51文件里,工程文件的名称为C51,,然后点击保存.3)此时页面会弹出一个对话框,让你选择单片机的型号,你可以按照你采用的单片机型号来选择,keil c51软件基本上能够包含所有的51系列的单片机型号,在这里我还是以大家用的比较多的Atmel 的89C51来说明7,选择89C51之后,右边框栏是对这个单片机的基本介绍,然后点击确定.4)结束上一步操作之后,就可以开始编写程序了。单击“File”菜单,点击下拉菜单中的“New”选项。这时光标会在编辑窗口中闪烁,此时可以输入用户
40、的应用程序了,但是要先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项选中,在“文件名”一栏右边的编辑框中,输入想要命名的文件名,同时必须输入正确的扩展名。注意,若用语言编写程序,则扩展名必须为(.c);若用汇编语言编写程序,则扩展名必须为(.asm)。最后,点击“保存”按钮。5)回到用户编辑界面后,单击“Target 1”前面的“”号,然后在“Source Group 1”上单击右键,弹出菜单,接着单击“Add File to Group Source Group 1”6)选中Test.c,然后单击“Add ”7)输入程序8)单击“Project”菜单,在下拉菜单中点击“Built Target”选项(或者使用快捷键F7),编译结束后,再单击“Project”菜单,在下拉菜单中点击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F59)程序调试:,单击“Debug”菜单,在下拉菜单中点击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中点击“Stop Running”选项(或者使用快捷键Esc);最后单击“View”菜单,再在下拉菜单中点击“Serial Windows #1”选项,就能看到你编辑的程序运行后