基于单片机的照明控制系统.doc
基于单片机的照明控制系统 摘 要随着电子技术的飞速发展,基于单片机的控制系统已广泛应用于工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的发展与成熟,也为基于单片机的照明控制系统的普及与应用奠定了坚实的基础。 本文阐述了照明的有线、无线控制方式设计原理与实现方法。以设计过程为主线,分别从硬件和软件两个方面描述设计过程,即从硬件电路的设计方法到实现所要求功能的软件技术。该照明控制系统的主控制器、分控制器分别是以AT89C51与AT89C2051单片机为基础,实现了有线通信、无线数传、控制与显示等功能。文中详细地描述了控制电路的设计过程,包括:键盘与LED显示电路、RS485通信电路、无线数传电路、照明灯控制电路以及看门狗电路等。对于软件设计主要有主控制器、分控制器的有线通信程序设计与无线数字传输程序设计以及灯光控制、定时控制、键盘扫描与LED显示等程序设计。有线通信程序的功能是:通过RS485主从通信方式,由主控制器发出命令对全部或单个分控制器所控制的照明灯实现开启、关闭、灯光亮度调节、定时控制等功能。无线数传程序设计的功能是:通过无线数传模块实现照明灯的无线遥控,同样实现有线方式控制的功能。关键词:主控制器, 分控制器, 单片机, 有线通信, 无线数传, 灯光亮度控制, 定时控制目 录1 绪论11.1 单片机的应用技术11.2 有线通信技术21.3 无线数传技术22 基于单片机的照明控制系统的设计框架与性能32.1 系统设计要点32.2 系统的结构32.3 系统性能指标及技术要求53 基于单片机的照明控制系统的硬件电路设计73.1 主控制器的电路设计73.1.1 键盘的接口设计73.1.2 LED数码显示的接口设计83.1.3 看门狗监控电路的设计83.2 分控制器的电路设计93.2.1 时钟芯片的接口设计93.2.2 零点检测与可控硅控制电路的设计103.3 RS485通信电路的设计113.4 无线数传电路的设计133.4.1 无线数传电路的连接133.4.2 SRWF-1模块的特性144 基于单片机的照明控制系统的软件设计164.1 人机交互程序设计164.1.1键盘扫描程序设计174.1.2 LED数码显示程序设计184.2 照明启停控制程序设计194.2.1全部启停控制程序设计194.2.2单独启停控制程序设计214.3 照明亮度控制程序设计234.3.1全部亮度控制程序设计244.3.2单独亮度控制程序设计244.4 照明定时控制程序设计254.4.1全部定时控制程序设计264.4.2单独定时控制程序设计274.5 RS485通信程序设计284.5.1主机部分通信程序设计304.5.2从机部分通信程序设计314.6 无线数传通信程序设计325 结论34致 谢35参考文献361 绪论近十几年来,随着我国城市建设的快速发展,楼宇照明也相应飞速发展。在楼宇的照明数量与质量两个方面均有显著的变化与提高,特别是随着人民生活水平进入小康水平,楼宇照明水平提高很快,追求人工照明光环境的舒适性、个性化、安全、节能等方面日见突出。楼宇中人工光环境对于满足人们的生活、学习、娱乐以及工作方面有着重要的意义。照明控制系统传统是以照明配电箱通过手动开关来控制照明灯具的通断,或通过回路中串入接触器,实现远距离控制。而今出现的楼宇自控系统,是以电气触点来实现区域控制、定时通断、中央监控等功能。由于照明控制系统在楼宇自控系统中并非独立,同时控制功能简单,因此使用上有一定的局限性。故当楼宇自控系统出现故障时,照明系统亦受到影响。随着微电子技术与数字化技术的发展,开发出了智能化水平更高的专业照明控制的独立系统,从而能节约能源、延长灯具寿命、提高照明质量。根据使用客户的经验,不仅使照明管理与设备维修简单及降低费用外,还对环境改善、提高工作效率都有着显著的效果。本系统是以单片机为控制器的核心,其中上位机是以AT89C51为基础,下位机是以AT89C2051为基础,再连接外围电路,通过现场总线RS485通信方式实现照明灯具的智能控制,也可以通过无线数传模块实现无线通信,从而达到照明灯具的智能控制。1.1 单片机的应用技术电子技术和微型计算机的迅速发展,促进微型计算机测量和控制技术的迅速发展和广泛应用,单片机(单片微型计算机)的应用已经渗透到国民经济的各个部门和领域,它起到了越来越重要的作用。单片微型计算机就是将中央处理单元、存储器、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。单片机由硬件系统与软件系统组成。硬件系统是指构成微机系统的实体与装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。其中运算器和控制器一般做在一个集成芯片上,统称中央处理单元(Central Processing Unit),简称CPU,是微机的核心部件。CPU配上存放程序和数据的存储器、输入/输出(Input/Output,简称I/O)接口电路以及外部设备即构成单片机的硬件系统。软件系统是微机系统所使用的各种程序的总称,人们通过它对微机进行控制并与微机系统进行信息交换,使微机按照人的意图完成预定的任务。软件系统与硬件系统共同构成完整的单片微型计算机系统,两者相辅相成,缺一不可。12 有线通信技术在数据通信、计算机网络以及工业上的分布式控制系统中,经常需要采用串行通信来达到远程信息交换的目的。目前,有多种接口标准可用于串行通信,最常用的接口有RS-232、RS-422、RS-485。RS232是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。其后发展起来的RS-422、RS-485是平衡传送的电气标准,比起RS-232非平衡的传送方式在电气指标上有了大幅度的提高。但总的来说,RS-232、RS-422与RS-485最初都是由电子工业协会(EIA)制订并发布的, EIA于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。正因为RS-485的远距离、多节点(32个)、可以自行定义协议以及传输线成本低的特性,使得EIA RS-485成为工业应用中数据传输的首选标准。1.3 无线数传技术有线传输的方式虽然使用非常广泛且可靠性较高,但由于各方面的局限性,已经在众多方面被无线传输方式所取代。无线数字传输技术日益完善,其重要性也被人们所认识,相应的基于无线数字传输的产品也随处可见。无线数字传输系统安装简便、使用效率高,可应用于各个领域,例如,无线数据传输、无线数据采集、无线抄表、工业遥控、楼宇自动化、高档玩具等等。无线数传技术是通过单片机的串口与无线数传模块连接,将要发送的数据由无线数传模块向空中发出,然后由另一个终端设备的无线数传模块从空中接收数据,这样就实现了预期的任务。2 基于单片机的照明控制系统的设计框架与性能21 系统设计要点统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。在系统设计中设计方法的选用是系统设计能否成功的关键。硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。硬件电路的设计最重要的选择用于控制的单片机,并确定与之配套的外围芯片,使所设计的系统既经济又高性能。硬件电路设计还包括输入输出接口设计,画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真机上进行调试,发现设计不当及时修改,最终达到设计目的。软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用Keil C语言进行开发。此编程工具相比汇编语言具有结构化、适用范围大、可移植性好等特点。本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,达到设计功能要求。22 系统的结构系统的结构主要由三部分组成:(1)上位机系统;(2)下位机系统;(3)通信系统。这三部分共同完成了主控制器通过有线、无线通信方式与分控制器进行信息交换,达到控制照明灯具的目的。有线通信系统的结构框图如图2.1所示。该多机通信系统采用RS-485半双工主从式通信系统,主机可以发送数据或命令到从机,从机主要负责对分布的照明灯具进行控制,用中断的方式接收主机发来的命令或数据并做出回应。 图2-1 有线通信系统结构框图无线数据传输系统也是由主控制器和分控制器两部分组成,系统结构框图如图2-2所示。主控制器是发送遥控指令、发送数据信息、接收应答信息等,分控制器接收数据与遥控指令,完成对照明灯具的控制。图2-2 无线数传系统结构框图系统的主控制器通过RS-485总线或无线数传模块将数据或命令发送给分控制器,同时将信息送给数码显示单元进行显示,并有看门狗电路对运行程序进行有效监视。主控制器硬件电路结构如图2-3所示。分控制器接收主控制器的发来的数据和命令,通过可控硅电路对照明灯具进行开关、亮度控制,并且利用实时时钟芯片对照明灯具进行定时开关控制。分控制器硬件电路结构如图2-4所示。 图2-3 主控制器硬件电路结构框图 图2-4 分控制器硬件电路结构框图系统在单片机的控制之下完成数据的通信、显示,同时能够控制照明灯具,其硬件电路只是系统的实施工具,大量的工作是由软件来完成的。这些程序是系统的灵魂,是负责完成硬件电路实现功能和与用户交互的桥梁,是维护系统正常工作的工具。2.3 系统性能指标及技术要求(1) 照明启停控制系统 全开 全关 单独开 单独关(2) 照明亮度控制系统 全部亮度调节 单独亮度调节(3) 定时控制系统 对全部照明灯进行定时控制 对每个照明灯进行定时控制3 基于单片机的照明控制系统的硬件电路设计3.1 主控制器的电路设计主控制器采用AT89C51单片机作为微处理器,AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash 存储单元。主控制器系统的外围接口电路由键盘、数码显示及驱动电路、晶振、看门狗电路、通信接口电路等几部分组成。主控制器系统的硬件电路原理图如图3-1所示。 图3-1 主控制器系统的硬件电路原理图3.1.1 键盘的接口设计键盘的结构形式有两种,即独立式按键和矩阵式键盘。本系统使用的是4×4矩阵式键盘,第一行从左到右为1、2、3、4,第二行为5、6、7、8,第三行为9、0、开、关,第四行为增值、减值、定时、确认。该形式的键盘,每个按键开关位于行列的交叉处,采用逐行扫描的方法识别键码。矩阵键盘的列线从左到右分别与单片机的P1.0、P1.1、P1.2、P1.3相连,矩阵键盘的行线从上到下分别与P1.4、P1.5、P1.6、P1.7相连。每当按下一个键时,对应的行线与列线就会连通,这样单片机就能检测出信号,并通过键盘扫描程序对键盘进行扫描,以识别被按键的行、列位置。3.1.2 LED数码显示的接口设计数码显示与驱动电路由74LS138译码器、7447 TTL BCD-7段高有效译码器/驱动器、4个数码管以及5个A1015三极管组成。由单片机的P0.0P0.3口输出的四位BCD码,经7447芯片后,翻译成7段数码管a、b、c、d、e、f、g相应的段,并输出点亮数码管相应的段。单片机的P0.4、P0.5口输出的信号经74LS138译码器后产生的高电平信号加在A1015三极管的基极,控制三极管的导通,从而起到对相应数码管的选通作用。4个7段数码管都被接成共阳极方式。3.1.3 看门狗监控电路的设计本系统采用MAXIM公司的低成本微处理器监控芯片MAX813L构成硬件狗,与AT89C51的接口电路如图3.1所示。MR与WDO经过一个二极管连接起来,WDI接单片机的P2.7口,RESET接单片机的复位输入脚RESET,MR经过一个复位按钮接地。该监控电路的主要功能如下:(1) 系统正常上电复位:电源上电时,当电源电压超过复位门限电压4.65V,RESET端输出200ms的复位信号,使系统复位。(2) 对+5V电源进行监视:当+5V电源正常时,RESET为低电平,单片机正常工作;当+5V电源电压降至+4.65V以下时,RESET输出高电平,对单片机进行复位。(3) 看门狗定时器被清零,WDO维持高电平;当程序跑飞或死机时,CPU不能在16s内给出“喂狗”信号,WDO跳变为低电平,由于MR端有一个内部250mA的上拉电流,D导通MR获得有效低电平,RESET端输出复位脉冲,单片机复位,看门狗定时器清零,WDO又恢复成高电平。(4) 手动复位:如果需要对系统进行手动复位,只要按下手动复位按钮,就能对系统进行有效的复位。3.2 分控制器的电路设计分控制器采用低档型的AT89C2051单片机作为微处理器,AT89C2051也是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含2K bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),兼容标准MCS-51指令系统,具有15线可编程I/O口,该单片机具有体积小、成本低、结构简单、性价比较高等特点。分控制器系统的外围接口电路由晶振、实时时钟芯片、可控硅控制电路、零点检测电路、看门狗电路、通信接口电路等组成。分控制器系统的硬件电路原理图如图3-2所示。 图3-2 分控制器系统的硬件电路原理图3.2.1时钟芯片的接口设计 本系统利用单片机89C2051和时钟芯片DS1302进行串行数据通信,读取和写入实时数据,用于定时控制照明灯具的启停。DS1302是美国Dallas公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31日时可自动调整。DS1302与单片机的连接仅需要3根线,即SCLK、I/O、RST。RST接在P1.7上,此引脚为高电平时,选中该芯片,可对其进行操作。串行数据线I/O与串行时钟线SCLK分别接在P1.5和P1.6上,所有的单片机地址、命令及数据均通过这两条线传输。在本系统中,89C2051为主器件,DS1302为从器件,主器件在总线上产生时钟脉冲、寻址信号、数据信号等,而从器件则相应接收数据、送出数据。对DS1302的每一次读写需16个时钟脉冲,前8个脉冲输入操作地址和读写命令。其中位7必须为1;位0为0时向芯片写入数据,为1时从芯片读出数据;位6位1选定芯片中的地址。后8个脉冲写入或读出数据。DS1302采用双电源系统供电,VCC1在双电源系统中提供主电源,在这种运用方式下VCC2连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由两者中的较大者供电。当VCC1大于VCC2+0.2V时,VCC1给DS1302供电。当VCC1小于VCC2时,DS1302由VCC2供电。3.2.2零点检测与可控硅控制电路的设计这部分电路的设计采用单片机的I/O口灌电流的方法控制可控硅实现开关与调光控制,用光电耦合器M0C3021作为可控硅的驱动器,同时实现强、弱电的隔离。光电耦合器M0C3021通过一个非门与89C2051的P3.7口连接,当此脚输出高电平时,将会封锁住MOC3021,使双向可控硅BT131不导通,这样就会使照明灯关闭;当P3.7脚输出低电平时,使光电耦合器MOC3021打开驱动双向可控硅,从而将双向可控硅触发导通,这样就开启了所要控制的照明灯。对于照明灯的亮度调节,这里采用PWM(Pulse Width Modulation)方式,即脉冲宽度调制的简称,PWM是一种周期一定而高低电平的占空比可以调制的方波信号,当输出脉冲周期一定时,输出脉冲的占空比越大相对应的输出有效电压越大。在一个周期内的脉冲宽度(导通时间)为T1,周期为T,波形如图3-3所示。图3-3 脉冲波形图 则输出电压的平均值为:U=VCC×T1/T=VCC (3-1) 其中=T1/T(正脉冲的持续时间与脉冲周期的比值)称为占空比,的变化范围为01,VCC为电源电压。当电源电压VCC不变的情况下,输出电压的平均值U取决与占空比的大小,改变的大小就可以改变输出电压的平均值,这就是PWM的工作原理。灯泡的亮度与加在灯泡两端的电压成比例,而灯泡两端的电压与可控硅的导通角成比例,这样通过调节PWM信号的占空比来控制可控硅的导通角。因此占空比越大,灯泡就越亮,当占空比=1时,灯泡的亮度最高。由于89C2051单片机没有PWM信号输出功能,所以在这里采用单片机定时器配合软件的方法来实现PWM信号的输出。使用PWM方法进行可控硅控制时,调制频率不能低于市电频率,因为当频率低于50Hz时,超过了人眼视觉暂留效应,用于调光将产生闪烁的现象。当调制频率大于市电频率,可控硅将处于连续导通状态而不能达到调压的目的,因此必须使用过零检测作为触发可控硅的基点。在本系统中所使用的过零检测电路如图3.2所示,先由一个变压器将市电电压转换成10V左右的电压,经过整流、稳压后可作为系统工作电源,同时将变压器次级的同名端引出一根线连接到比较器LM311的正输入端,用以检测交流电的过零点,然后将过零信号送给单片机的P1.3口上。当检测到交流电的过零点时,就去触发双向可控硅,同时通过PWM信号的输出控制双向可控硅的导通时间,最终达到控制灯泡亮度的目的。3.3 RS485通信电路的设计本系统的有线通信方式采用RS485总线进行通信,RS485标准支持半双工通信,只需三根线就可以进行数据的发送和接收,同时具有抑制共模干扰的能力,接收灵敏度可达±200mV,大大提高了通信距离,在100K bps速率下通信距离可达1200m,如果通信距离缩短,最大速率可达10M bps。在这里使用的是主从式通信方式,主机由主控制器充当,从机为分控制器。主机处于主导和支配地位,从机以中断方式接收和发送数据,主机发送的信息可以传送到所有的从机或指定的从机,从机发送的信息只能为主机接收,从机之间不能直接通信。主机与从机的通信电路图分别如图3-4与图3-5所示。 图3-4 主机通信电路图图3-5 从机通信电路图主机与从机选用的RS485通信收发器芯片为MAX485,它是MAXIM公司生产的用于RS 485通信的低功率收发器件,采用单一电源+5 V工作,额定电流为300 A,采用半双工通信方式。它完成将TTL电平转换为RS485电平的功能。MAX485芯片内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;RE和DE端分别为接收和发送的使能端,当RE端为逻辑0时,器件处于接收状态;当DE端为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可,主机与从机分别使用P2.6与P1.0脚进行控制;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在进行通信时只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,这里选用120的电阻。 为了提高系统的抗干扰能力,采用光电耦合器TLP521对通信系统进行光电隔离。从机使用单片机的P1.0控制通信收发器MAX485的工作状态,平时置P1.0为低电平,使从机串行口处于侦听状态。当有串行中断产生时判别是否是本机号,若为本机地址则置P1.0为高电平,发送应答信息,然后再置P1.0为低电平接收控制指令,继续保持P1.0为低电平,使串行收发器处于接收状态;若不是本机地址,使P1.0为低电平,使串行收发器处于接收侦听状态。3.4 无线数传电路的设计无线数据传输需要通过无线数传模块来实现。本系统选用的是上海桑锐电子科技有限公司生产的SRWF-1型微功率无线数传模块。该模块的通信信道是半双工的,最适合点对多点的通信方式。单片机与无线数传模块之间可以进行信息的传送与回馈,即所谓的双向通信。3.4.1 无线数传电路的连接主控制器与分控制器各使用一个无线数传模块,形成发送与接收的无线通信通道。模块的数据输入和输出端与单片机的串行口连接,即模块的串行数据发射端TXD与单片机的串行数据输入端RXD连接;模块的串行数据接收端RXD与单片机的串行数据输出端TXD连接。单片机与无线数传模块SRWF-1的电路连接如图3-6所示。图3-6 单片机与无线数传模块的连接3.4.2 SRWF-1模块的特性 (1) 微发射功率:最大10dbm(10mW)的发射功率。 (2) ISM频段工作频率,无需申请频点。 载频频率429-438MHz,也可提供315/868/915MHz等载频 。(3) 高抗干扰能力和低误码率。基于FSK的调制方式,采用高效无线通信协议,在信道误码率为10-2时,可得到实际误码率10-510-6。(4) 完善的通讯协议。(5) 传输距离远。在视距情况下,天线高度>3米,可靠传输距离>300m。(6) 透明的数据传输。 提供透明的数据接口,能适应任何标准或非标准的用户协议。自动过滤掉空中产生的噪音信号及假数据(所发即所收)。(7) 多信道,多速率。 SRWF-1型模块标准配置提供8个信道,根据用户需要,可扩展到16/32信道,满足用户多种通信组合方式的需求。SRWF-1型模块可提供1200bps、2400bps、4800bps、9600bps、19200bps等多种通信波特率,并且无线传输速率与接口波特率成正比,以满足客户设备对多种波特率的需要。 (8) 双串口,3种接口方式。 SRWF-1型模块提供2个串口3种接口方式,COM1为TTL电平UART接口。COM2由用户自定义为标准的RS-232/RS-485接口(用户只需要拔/插短路器再上电即可改变接口类型)。(9) 高速无线通讯和大的数据缓冲区。 可1次传输无限长度的数据,用户编程更加灵活。 (10) 智能数据控制,用户无需编制多余的程序 。即使是半双工通信,用户也无需编制多余的程序,只要从接口收/发数据即可,其它如空中收/发转换,网络连接,控制等操作,SRWF-1型模块能够自动完成。(11) 低功耗及休眠功能。 接收电流<20mA,发射电流<40mA,休眠时电流仅为<20uA。(12) 高可靠性,体积小、重量轻。 采用高性能单片处理器ATMega8L,外围电路少,可靠性高,故障率低。 (13) 两种接口收发等待时间。 可设置的接口等待时间使模块既能用于高速用户设备(如DSP系统)也可适用低速系统(如51系统)。 (14) 看门狗实时监控。ATMega8L的看门狗监控内部功能,改变了传统产品的组织结构,提高了产品的可靠性。 4 基于单片机的照明控制系统的软件设计 软件是计算机系统的灵魂,没有软件计算机不能充分发挥其功能,这是软件在计算机中的地位,而在计算机控制系统中,软件也是非常重要的。在照明控制系统中,硬件设备的功能是由软件来定义的,如系统要控制分布的照明灯具,通过有线与无线串行通信程序来完成控制功能,通过软件定义键盘功能,通过编程完成LED数码显示等等,由此可见,软件是控制系统中的一个重要组成部分。 该照明控制系统的软件程序包括:照明启停控制程序、照明亮度控制程序、照明定时控制程序、人机交互程序以及RS485串行通信与无线数传通信程序等。本着软件设计的基本方法,照明控制程序的软件设计方法是利用传统的结构化分析与设计方法来完成的。结构化程序设计方法虽然是早期的程序设计方法,但该方法还一直被广泛地使用。结构化系统分析与设计贯穿整个软件设计过程,遵循“自顶向下,逐步求精”的基本原则。本照明控制系统软件程序总体结构如图4-1所示。图4-1 照明控制系统软件程序总体结构图4.1 人机交互程序设计 系统的人机交互程序设计,主要是解决按键的扫描与信息的显示,让操作者能够灵活地控制系统工作。键盘用来输入指令,发光数码管用来显示单片机的状态,这是一个比较简单的人机交互形式。4.1.1键盘扫描程序设计本系统的键盘采用的是4×4矩阵式键盘,矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。一个4×4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。矩阵式键盘中,行、列线分别连接到按键开关的两端,在进行键盘扫描时,首先把矩阵键盘列线的第一根线置高,然后分别再检测矩阵键盘行线是否有高电平的信号,如果有信号,那么就证明这根行线与第一根列线相交处的按键被按下了,单片机就读入这个键值。如果所有的四根行线都没有信号,那么就把第一根列线置低,把第二根列线置高,再一次检测行线有没有信号,然后依次类推。由于键盘扫描的速度很快,而人按键总会持续一定的时间,因此只要单片机处在等待输入的状态,这个键盘扫描程序基本上不会错过任何一个按键信号。由于一般人按键会有抖动,抖动信号造成键盘扫描时会出现一些错误的信号,要不就是扫描不进数据,要不就是重复输入很多次数据,因此需要有一个消除抖动的程序。让单片机不响应一些相关的抖动信号,而只响应一次确实存在的按键信号。消抖动程序是这样实现的,当检测到一个脉冲信号时,并不立即认为是一次按键,而是延时一段时间以后再进行检测,如果三次检测都有信号,那么就认为有一次按键动作发生了。延时的选择非常重要,太快了,起不到消除抖动的效果,太慢了又让键盘太不灵活,错过较多的按键信号。键盘扫描程序的流程图如图4-2所示。系统的按键定义除了基本的数字键(09)外,将其它的键依次定义为开、关、增值、减值、定时、确认六个命令键,其控制的基本功能是:(1) 通过数字键、确认键输入分控制器的地址以及定时功能的时间设置。(2) 利用开、关键控制照明灯具的启停。(3) 利用增值、减值键控制照明灯具的亮度。(4) 通过定时键来对照明灯具进行定时控制的设置。系统通过软件方法实现该功能,即定义开、关、增值、减值、定时、确认等命令键,利用键盘扫描程序获取对应命令键的键值,然后执行相应的子程序,实现所要求的控制功能。图4-2 键盘扫描程序流程图4.1.2 LED数码显示程序设计本系统采用了四位共阳极七段数码管,共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻,这里的限流电阻选为100。这里选用的7447芯片是从BCD码到SEG7段码的转换器,而74LS138是一个地址译码器,通过74LS138选通某个数码管,然后根据7447传送过来的SEG7段码的数据进行显示,而在非选通的时候,数码管能够保持原有的显示数据。LED数码显示程序的流程图如图4-3所示。图4-3 LED数码显示程序流程图4.2 照明启停控制程序设计照明的启停控制主要是由主控制器发出指令,通过RS485通信方式或无线数传方式控制全部或部分分控制器所控制照明灯具的启停,因此照明启停控制程序由两部分组成,即全部启停控制与单独启停控制两部分。4.2.1全部启停控制程序设计 全部照明启停控制系统是利用主控制器上的开、关按键来控制全部照明灯的启停,控制命令是通过串口通信方式传达到分控制器,分控制器再依据命令向P3.7口输出高低电平,来达到控制灯泡亮和灭的目的。在这个多机系统中采用的是主从式通信方式,主机即主控制器处于主导和支配地位,从机即分控制器一般以中断方式来接收和发送数据。在主从式多机系统中主机发送的信息可以传送到所有的从机或指定的从机,在这里是要发送给所有的从机,来控制照明灯的启停。在本系统中采用广播式命令,不需要从机返回信息,从机之间也不能直接通信。主机由AT89C51单片机充当,从机为AT89C2051单片机。主机与从机的数据通信波特率定为9600波特,每个从机都有唯一的地址号,用来区分各从机。单片机的数据通信由串口完成,定时器T1为波特发生器,数据传送格式为1位起始位,8位数据位,1位停止位,1位可编程位(TB8)。工作方式:定时器T1设置为方式2,串口设置为工作方式3。本系统的通信原理为:从机在建立与主机通信之前所有分机的SM2都置1,即随时处于对通信线路监听的状态,只能收到主机发送来的机号信息。主机向从机发送广播地址信息时,广播地址为00H,所有分机都接收到广播地址信息,然后进入正常通信状态,清除SM2位,开始接收主机发送来的命令。从机收到的命令是开灯时,向P3.7口输出高电平,打开MOC3021驱动双向可控硅,从而就点亮了灯泡;同理,如果收到的命令是关灯时,向P3.7口输出低电平,封闭MOC3021使双向可控硅截止,也就达到了关闭灯泡的目的。该系统的主机和从机的控制程序流程图如图4-4和图4-5所示。图4-4 全部启停控制主机程序流程图图4-5 全部启停控制从机程序流程图4.2.2单独启停控制程序设计 单独照明启停控制系统是通过主机发送给指定的从机命令信息,来实现照明灯的启停控制。主机首先发送从机地址,被叫到的从机向主机发送本机地址,然后主机向从机传送数据,从机根据接收的数据信息执行相应的命令。单片机的工作方式同全部照明启停控制系统。其具体的工作过程是:所有的从机在通信之前都把SM2位置1,随时处于侦听状态。当主机发送从机的地址信息时,每帧数据的第9位都为1,所有从机都接收到地址信息,然后判断主机是否呼叫本机。如果呼叫本机则进入正式通信状态,清除SM2,并把本机地址号发送给主机作为应答,然后才开始接收主机发送来的信息。而其它从机由于地址号不符,他们的SM2位仍然为1,仍处于侦听状态,无法接收主机发送来的数据信息。主机收到从机发送来的回应信息后,比较主机已发送的地址号与刚接收的地址号是否相符,如果不符,则发出错误信息;如果相符,则正式发送数据信息,这时发送的每帧的第9位都为0。只有SM2=0的从机才能接收到主机发送的信息。从机根据命令执行相应的动作,如果为打开命令,则输出高电平驱动可控硅动作,开启照明灯;如果为关闭命令,则输出低电平使可控硅截止,停掉照明灯。该系统的主机和从机控制程序流程图分别如图4-6与4-7所示。图4-6 单独启停控制主机程序流程图图4-7 单独启停控制从机程序流程图4.3照明亮度控制程序设计照明亮度控制系统是利用主控制器键盘上的增值与减值键,通过串口通信方式来控制分控制器所控制的照明灯的亮度。在这里对于灯泡亮度的调节是通过PWM方式来进行的,分控制器选用的是AT89C2051单片机,这种单片机本身没有PWM输出,只能通过软件方法实现。在一定频率的方波中,调整高电平和低电平的占空比,即可实现。假设把一个周期分为10个时间等份,如果方波中的高低电平占空比是1:9,这时就是一个比较暗的亮度,如果占空比是5:5,就是一个中间亮度,如果高低电平占空比是9:1,这时就是一个比较亮的亮度,高低电平占空比为0:10时,灯泡是灭的,高低电平占空比为10:0时,灯泡最亮。在进行实验中,将定时器1的溢出定为1/20000秒,每10次脉冲输出一个2KHz频率。这每10次脉冲再用来控制高低电平的10个比值。这样,在每个1/2000秒的方波周期中,都可以改变方波的输出占空比,从而控制灯泡的10个亮度级别。在主控制器键盘上每次按增值与减值键改变占空比的值就可以控制灯泡的亮度。4.3.1全部亮度控制程序设计全部照明亮度控制系统就是主机向从机发送广播地址,所有从机都接收主机发送来的数据信息,然后根据命令是调亮还是调暗来进行相应的灯泡亮度控制。该系统的主机控制程序流程图同图4-4所示,从机控制程序流程图如图4-8所示。 图4-8 全部亮度控制从机程序流程图4.3.2单独亮度控制程序设计单独照明亮度控制系统通信原理基本上与单独照明启停控制系统相同,也是开始时所有从机处于监听状态,等待主机的呼叫,当主机发出某一从机的地址时,所有从机将接收到的地址与本机地址相比较,如果相符,说明主机在呼叫自己,然后发回应答信号,表示准备好开始接收后面的命令,否则不予理睬,继续监听呼叫地址。主机收到从机的应答后,则开始一次通信,通信完毕,从机继续处于监听状态,等待呼叫。从机在收到调亮或调暗的命令后,利用零点检测电路检测电源过零点,一旦单片机的P1.3口检测到过零点脉冲,就会向P1.3口输出PWM信号以调高或调低灯泡的亮度。该系统的主机控制程序流程图同图4-6所示,从机控制程序流程图如图4-9所示。图4-9 单独亮度控制从机程序流程图4.4照明定时控制程序设计照明定时控制系统是利用从机即单片机AT89C2051和时钟芯片DS1302进行数据通信,读取和写入实时数据,主机采用串口通信方式对从机进行定时时间的设置,从机然后根据设定的时间进行照明灯的启停控制。DS1302的控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中;位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5位1指示操作单元的地址;最低有