节能照明自动控制系统的设计本科生毕业论文
节能照明自动控制系统设计
摘要:系统针对学校、图书馆等场所出现的照明浪费现象,分析了室内灯光智能控制的原理和实现方法,提出了基于单片机的室内灯光智能控制的设计思路。该系统以STC12C5A60S2单片机作为控制装置的智能部件,采用热释红外传感器检测人体的存在,采用红外对管检测进出室内的人数,采用光敏电阻构成的电路检测环境光的强度;根据合理开灯的条件,系统通过对人体的存在信号和环境光信号的识别和智能判断,完成对室内照明回路的智能控制,避免了用电的大量浪费
关键词:节能照明;热释电人体红外;自动控制
The Design of Energy Saving Lighting Control System
Abstract: The system is to a prodigal phenomenon of the illumination by which thelocation of the classroom and the school library appears. In order to improve the system.based on control and current methods of how to keep control, developing intelligentclassroom light control system and developed the hardware and software system. Thisclassroom light intelligent control system the theory of the light put forward methods ofon the basis of stcl25a60s2 is developed, which machine of AT89C52 is a major part,and the environment of development is better than before. This system can satisfy
thefollowing functions, such as controlling the circuit of illumination, testing andprocessing daylight signal, testing and processing the signal of human body thatilluminates the back track exists, reporting to the warning devices. The condition whichis the light rationally to complete an intelligent control to a circuit of room lighting anduse electricity came near, and judged a system as signaling of existence of a humanbody and signal distinction of ambient light to intelligence, and was saved from a greatdeal of waste.
Key words: Energy-saving lighting; Heat release infrared sensors; Automatic control
目录
第1章 绪论
1.1课题背景
1.2国内外研究现状
1.3 论文的主要工作
系统总体方案的论证与设计
第2章
2.1整体系统方案的设计
2.2 硬件方案的选择
2.2.1 MCU的选择
2.2.2 灯光控制方案分析
2.2.3显示模块的选择
2.3 软件设计方案选择
2.4 最终设计方案概述
第3章系统硬件设计
3.1 电源电路设计
3.2STC12C5A60S2最小系统电路设计
3.2.1 复位电路设计
晶振接口电路3.2.2
3.3人数统计模块
3.4热释电人体红外模块
3.4.1 热释电红外传感器介绍
3.4.2 BISS0001芯片介绍
3.4.3 BISS0001工作原理
3.4.4模块使用注意事项
3.5光强检测模块
3.5.1 光敏电阻的功能描述
3.5.2 光敏电阻检测原理
3.6其他电路设计
第4章 系统软件设计
4.1TFT 屏驱动显示
4.1.1TFT彩屏介绍
4.1.2 TFT的显示
4.2 采集信号的处理
4.2.1 存在传感器的优缺点
4.2.2数据采集软件设计的实现
4.3 灯控程序…
4.4 VB串口通信与测控通信设计
4.4.1 MSComm 控件概述…
4.4.2 串口通信设置
第5 章系统调试…
5.1 下位机硬件调试分析
5.2下位机软件调试分析
5.3上位机软件调试分析
结论
致 谢
参考文献
附录1 硬件原理图
第1章绪论
1.1 课题背景
随着时代的发展,人类社会发生了翻天覆地的变化。但是伴随着变化越来越多的问题接踵而来,而能源问题和环境问题是其中的两个比较重大问题,特别是在如今,解决能源问题和环境问题是国家长期发展的重中之重。而在众多的能源问题之中,电能的短缺是束缚经济的发展和人民生活的重要问题之一。
现今在许多公共场合,如学校、图书馆等场所,绝大数依赖人工管理,由于数量多,常常会出现只有少数在室内或光线充足的情况下,整个场所的照明灯全开的现象;更有甚者在无人的情况下仍然开启大量的照明灯的现象,这造成了不必要的电能浪费和经济损失。随着经济的发展和科技的进步,人们对照明灯具节能和科学的管理提出了更高的要求,使得照明控制在智能化的领域的地位越来越重要。选择合理的照明方案,配置先进的控制系统,不仅体现在节约能源,减低学校运行成本,提高学校的科学管理水准,而且具有极大地经济意义和社会效益因此,必须在保证照明质量的前提下,采取措施来遏制公共场所用电的浪费现象,这不仅是为了眼前的经济利益,而是为了建立环境友好型的社会,顺应社会经济发展的低碳革命,必须做出的节能减排的举措
1.2 国内外研究现状
目前国内几种常见的照明控制系统有以下几种:
(1)Dynalite智能照明控制系统
该系统主要由调光模块、开关模块、控制面板、液晶显示触摸屏、智能传感器、编程插日、时钟管理器、手持式编程器和PC监控机等部件组成。采用DyNet网络连接,DyNet是一个分布式智能化网络,使用RS-485通讯协议。
(2)C-Bus智能照明控制系统
C-Bus系统是1994年由澳大利亚奇胜电气公司开发的,现已广泛用于很多国家和地区。C-Bus系统是一个二线制的总线型式的智能控制系统,主要用于对照明系统的控制。也可用于消防等系统中的联动控制。
(3)ABBi-bus EIB智能安装系统
EIB智能系统由总线、总线电源、智能传感器(光线传感器、模糊开关、时间
控制器、移动传感器)、智能开关驱动器和其他智能元件(逻辑模块总线祸合器)构成。它是典型的现场总线系统,每个元件就是一个节点,这些节点连接在一根2芯双绞线介质的总线上,不分主从隶属关系实现相互之间的通讯从而实现控制和被控制。
1.3 论文的主要工作
本文分析了国内外智能照明控制系统的研究现状和产品现状,在查阅和消化大量资料的基础上,结合自身研究的实际情况实现了利用STC12C5A60S2单片机和热释电人体红外传感器模块搭建照明控制系统的方案,在充分理解热释电人体红外模块和MCU的基础上,对具体的硬件和软件设计原理进行具体而详细的分析,并使用上位机记录相关信息。
本文主要进行以下的研究:
(1)提出系统的总体设计方案并对其进行研究与论证。
系统的硬件电路设计与制作。(2)
(3)软件设计主要有MCU对采集信号的处理和判断、TFT彩屏的驱动、上位机程序的编写。
第2章系统总体方案的论证与设计
2.1整体系统方亲的设计
本设计主要研究的内容是设计一套节能照明控制系统,同时通过STC12C5A60S2单片机来管理整个系统的工作,单片机主要功能为人数的统计、控制电灯的开关,TFT彩屏的显示、上位机的通讯等,
热释电人体红外模块主要是由热释电人体红外传感器采集人体存在信号,在由BISS00001集成电路将采集到的信号转换为高低电平。系统由人数统计块、光照检测模块和灯控模块辅助构成。总体设计方案框图2-1如下:

图2-1系统整体设计图
2.2 硬件方案的选择
2.2.1 MCU 的选择
MCU 的选择有以下二种方案:
方案一:采用STC89C52。52单片机价格便宜,应用广泛,有很多的资料可以借鉴,适合初学者制作低成本的系统。
方案二:采用宏品STC12C5A60S2单片机作为控制器的方案。该系列单片机是款16位精简指令集、超低功耗的混合型单片机。它的I/0资源丰富,中断资源丰富,且内置了在线仿真编程接口和集成A/D电路
分析以上两种方案,由于52单片机设计较为繁琐,I/0口较少,而STC12C5A60S2有40个可用I/0,又考虑到STC12C5A60S2具有低功耗等优点,加上集成A/D电路,故选择第二种方案--STC12C5A60S2为下位机MCU。
2.2.2 灯光控制方案分析
本电路具有对教室内的人数进行统计和对光照情况进行鉴定的功能,并对灯光进行实时控制,达到方便和节约能源的目的。电路有两种控制方式:自动控制状态和强制执行状态。
自动控制状态:电路上点复位后自动处于自动控制状态,当环境光照充足时且教室光照强度大于设定值时,不管有没有人,灯都不亮。若教室光照强度小于设定值,控制会根据人数多少来确定灯的开关,如果有人进入教室,红外传感器感应到后把信号经过隔离缓冲送到CPU且数码显示电路显示人数为1,同样再有人进出则显示器上数字自动加减1。
强制执行状态:在电路正常工作的情况下,按下强制开关可以通过人对教室灯进行强行控制,再通过按下此按钮也可以恢复到自动控制状态。
2.2.3显示模块的选择
目前市面上的显示模块非常之多,如12864,1602等传统的显示模块,TFT类型的液晶显示屏在手机的广泛应用,TFT液晶显示屏的技术也很快应用到了普通的电子产品中,本设计主要有以下两种方案可供选择:
方案一:单色液晶显示,显示黑白图案,虽然控制简单但是画面单调。方案二:TFT-LCD真彩液晶显示,分辨率高、亮度好、对比度高、层次感强、颜色鲜艳、视觉效果好、符合主流电子产品设计。
结合本系统设计的实际应用,为使显示画面更加直观大方、生动形象,选择方案二,本设计最终选择的是品门科技的TFTLCD液晶显示屏,此外该液品屏还具有低功耗等特点。
2.3 软件设计方案选择
在本设计中,STC12C5A60S2单片机程序设计可以使用汇编语言和使用C语言,由于汇编语言有一定的局限性,因此本设计采用C语言作为程序设计语言,C语言是国内外广泛使用的一种计算机语言,C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。许多以前只能有汇编语言处理的问题目前也可以由C语言来处理,也能够充分发挥STC12C5A60S2单片机的功能,提高软件开发、执行效率增加程序可读性、可靠性和可以执行性。本设计所使用的程序编写软件为Kei1编
译软件。
下位机软件设计主要分三部分:对采集到的信号的处理、灯光的控制、液晶显示驱动程序和自动控制与手动控制之间的切换问题。液晶显示驱动程序的功能主要有:初始化LCD、接受显示汉字数据包。
本系统还涉及到对室内人数和开灯状况的储存问题,以方便对教室照明使用情况的统计。主要记录各个时间段内室内人数和使用照明的情况。上位机程序设计的软件主要有 VisualC++6.0、TurboC和Visual Basic 6.0 三种,其中 TurboC编程主要在 DOS 环境下完成,由于 DOS操作系统系,不能像 Windows 操作系统一样有AP,而是直接操作硬件端口来实现编程,因而使用TurboC来编写上位机应用程序将十分困难,故舍弃使用TurboC编写上位机的方案。VisualC++是一个功能非常强大的可视化软件开发工具,VisualC++不仅是一个C++编译器,而且是一个基于 Windows操作系统的可视化集成开发环境,由于 Visual C++含有许多程序开发工具,且 Visual C++的程序设计也十分复杂,不适合初学者进行复杂的程序设计,故舍弃使用 VisualC++编写上位机的方案。因此本设计的上位机程序设计部分使用 Visual Basic 来编写,Visual Basic(简称 VB)是 Microsof 公司推出的一种Windows 应用程序开发工具,它具有简单易学、操作方便、功能强大等特点。“Visual”指的是开发图形用户界面(GUI)的方法,即可视化,一般不需要编写大量代码,描述界面元素的外观和位置,只把需要的控件放到屏幕上相应的位置即可,很方便的设计图像用户界面。
2.4 最终设计方案概述
节能照明控制系统设计使用宏品公司的STC12C5A60S2单片机作为主要控芯片,热释电人体红外模块选择基于红外线技术的自动控制模块HC-SR501,液晶显示屏选用普中科技公司的TFT液晶显示屏。软件设计主要使用kei1软件编写程序整个下位机软件设计重点主要在TFT驱动程序,对采集信号的处理和对照明装置的控制。整个系统方案设计的主要工作流程是通过对光照强度的检测和室内人员情况(包括人数和人员分布位置)的检测,经STC12C5A60S2单片机的处理以达到合理的开灯条件,在将开灯状况和人数传到上位机进行数据记录。结构框图如图2-2 所示:

图2-2系统整体框图
第3章系统硬件设计
本系统选择宏晶公司的STC12C5A60S2单片机作为下位机的主控芯片,主要硬件设计包括STC12C5A60S2的系统板搭建、热释电人体红外模块电路、人数统计电路和光照检测电路等,下面将逐个介绍3.1 电源电路设计
本系统设计使用输出为DC5V/1A的直流电源适配器作为系统电源,而STC12C5A60S2单片机的工作电压范围为1.8V-3.6V,TFT液晶模块的工作电压范围为 1.4V-3.6V。
MAX232芯片一般情况下工作电压给定为5V,最高工作电压可达1V,而HC-SR501 人体感应模块的工作电压范围为4.5V-20V,为了保证HC-SR501正常工作将电源给定电压设置为5V,在充分考虑其它外围芯片的供电电压和功耗情况下,将STC12C5A60S单片机和TFT的工作电压设置为3.3V,使用3.3V稳压芯片AMS1117供电,MAX232和HC-SR501人体感应直接使用输出电压为5V的直电源适配器供电。电源电路部分原理图如图3-1所示:

图3-1系统电源电路
3.2STC12C5A60S2最小系统电路设计
该系统采用STC12C5A60S2单片机处理芯片,其是高速、低功耗、超强抗干扰的新一代8051单片机速度是普通51单片机的8-12倍,STC单片机还可以通过串口(P3.0和P3.1)直接下载用户程序。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,方便了设计的要求。单片机最小系统主要还有品振电路、复位电路。
3.2.1 复位电路设计
在含有控制器的电路系统中,都必须要有相应的复位电路,这样能够使系统在上电后,很好地复位系统并使系统处于稳定的运行状态。一般简单的复位电路可以采用RC复位,这种电路的稳定性一般、可靠性较高,但是在超高速和超大系统中最好不要采用RC复位电路,在这种情况下RC复位电路达不到系统复位的效果。对于STC12C5A60S2单片机而言,通过上电复位和上电清除信号均可以使系统复位,POR信号是器件的复位信号,此信号只有在器件上电时和RST引脚上产生低电平时才会产生,当POR信号产生时必然会产生PUC信号,而PUC信号产生时不会产生POR信号,还有当启动看门狗和看门狗定时器计数满、向看门狗写入错误的安全参数值、向片内Flash 写入错误的安全参数时会产生 PUC信号"。
本设计所使用的复位电路就是指产生POR信号的复位电路,在RST引脚上产生低电平复位系统,此复位电路可以采用RC复位电路,而且实践中C复位电路也用得最多,对于一般系统使用RC复位电路的复位效果很好,本设计C复位电路设计如图 3-2所示:

图3-2复位电路
3.2.2晶振接口电路
STC12C5A60S2单片机的时钟在常温下内部R/C震荡频率为8MHz-12MHz,如果外部时钟频率在33MHz以上时,建议直接使用外部有源晶振;如果使用内部R/C振荡器时钟(室温情况下5V单片机为:11MHz~15.5MHz,3V单片机为8MHz~12MHz),XTAL1和XTAL2脚浮空;如果外部时钟频率在27MHz以上时,使用标称频率就是基本频率的晶体,不要使用三泛音的晶体,否则如参数搭配不当,就有可能振在基频,此时实际频率就只有标称频率的1/3了,或直接使用外部有源晶振,时钟从XTAL1脚输入,XTAL2脚必须浮空。在综合分析设计需要后采用最采用的内部时钟方式,内部时钟方式是采用外接晶体和电容组成并联谐振回路。电容C1,C2的取值对振荡频率输入的稳定性、大小以及振荡电路起振速度有一定的影响,所以就取典型值30pf。晶振接口电路设计如图3-3所示:

图3-3 晶振电路
人数统计模块
人数统计模块是由两对红外对管所构成,分别平行安于门的内外两侧,根据触发的先后顺序来判断人的进出”。当外侧的红外对管先触发,然后里面的红外对管在触发,则是人员进入室内;反之,则为人员从室内出去。
红外对管电路主要由红外发射管、接收管和电压比较器构成。电路图如图所示,当没有人通过红外对管时接收管导通,比较器正极+输入端输入电压小于-输入端输入电压,则比较器输出低电平;当人经过,遮挡着接收管时,接收管处于截止状态,比较器的+输入端输入电压高于-输入端输入电压,则比较器输出高电平。电路图如下:

图3-4 红外对管人数采集
热释电人体红外模块3.4
热释电红外传感器介绍3.4.1
热释电红外传感器主要是由一种高热电系数的材料,如锆钛酸铅系陶瓷、钽酸锂、硫酸三甘钛等制成尺寸为2*1mm 的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,该透镜用透明塑料制成,将透镜的上、下两部分各分成若干等份,制成一种具有特殊光学系统的透镜,它和放大电路相配合,可将信号放大70分贝以上,这样就可以测出10-20米范围内人的行动。
菲涅尔透镜利用透镜的特殊光学原理,在探测器前方产生一个交替变化的“盲区”和“高灵敏区”,以提高它的探测接收灵敏度。当有人从透镜前走过时,人体发出的红外线就不断地交替从“盲区”进入“高灵敏区”,这样就使接收到的红外信号以忽强忽弱的脉冲形式输入,从而强其能量幅度。
人体辐射的红外线中心波长为9-10um,而探测元件的波长灵敏度在0.2-20um范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7-10um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。
热释红外线传感器内部结构与电路如下图4所示。热释电传感器利用的正是热释电效应,是一种温度敏感传感器。它由陶瓷氧化物或压电品体元件组成,元件两个表面做成电极,当传感器监测范围内温度有AT的变化时,热释电效应会在两个电极上会产生电荷AQ,即在两电极之间产生一微弱电压AV。由于它的输出阻抗极高,所以传感器中有一个场效应管进行阻抗变换。热释电效应所产生的电荷AQ会跟空气中的离子所结合而消失,当环境温度稳定不变时,AT-0,传感器无输出。当人体进入检测区时,因人体温度与环境温度有差别,产生AT,则有信号输出;若人体进入检测区后不动,则温度没有变化,传感器也没有输出,所以这种传感器能检测人体或者动物的活动。热释电红外传感器的结构及内部电路见下图所示。传感器主要有外壳、滤光片、热释电元件PZT、场效应管FET等组成其中,滤光片设置在窗口处,组成红外线通过的窗口。滤光片为6m多层膜干涉滤光片,对太阳光和荧光灯光的短波长(约5mm 以下)可很好滤除。热释电元件PZT将波长在8mm-12mm 之间的红外信号的微弱变化转变为电信号,为了只对人体的红外辐射敏感,在它的辐射照面通常覆盖有特殊的菲涅耳滤光片,使环境的于扰受到明显的抑制作用"。

图 3-5热释电红外线传感器的结构及内部电路
热释电红外探头的优缺点:
优点:本身不发任何类型的辐射,器件功耗很小,隐蔽性好。价格低廉缺点:容易受各种热源、光源干扰;被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收;环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵
3.4.2 BISS0001芯片介绍
BISS0001是一款具有较高性能的传感信号处理集成电路,它配以热释电红外传感器和少量外接元器件构成被动式的热释电红外开关。它能自动快速开启各类白炽灯、荧光灯、蜂鸣器、自动门、电风扇、烘干机和自动洗手池等装置,特别适用于企业、宾馆、商场、库房及家庭的过道、走廊等敏感区域,或用于安全区域的自动灯光、照明和报警系统。它不仅能和热释电红外传感器的输出良好地匹配,而且也能和其他多种传感器进行匹配。它的内部是由运算放大器、电压比较器、与门电路、状态控制器、定时控制器、锁定时间控制器和禁止电路等组成。BISS0001采用16脚标准型塑料封装结构,封装结构图如下图3-6所示。管脚说明如下表 3-1 所示。

图3-7 BISS001管脚图
表3-1 BISS0001管脚说明
名称
I/0
功能说明
可重复触发和不可重复触发选择端。当A为“1”时,允许重复触发;反之,不可重复触。
VO RR1 RCI RC2 RR2
控制信号输出端。由VS的上跳变沿触发,使Vo输出从低电平跳变到高电平时视为有效触发。在输出延迟时间Tx之外和无VS的上跳变时,Vo保持低电平状态。
输出延迟时间Tx的调节端输出延迟时间Tx的调节端触发封锁时间Ti的调节端触发封锁时间Ti的调节端
工作电源负端
VRF vC IB VDD 2OUT 2IN- 1IN+ 1IN- 1OUT
参考电压及复位输入端。通常接VDD,当接“0”时可使定时器复位
触发禁止端。当Vc<VR时禁止触发;当Vc>VR时允许触发
运算放大器偏置电流设置端
工作电源正端
第二级运算放大器的输出端
第二级运算放大器的反相输入端
第一级运算放大器的同相输入端
第一级运算放大器的反相输入端
第一级运算放大器的输出端
下图3-7中,运算放大器0P1将热释电红外传感器的输出信号作第一级放大,
然后由C3耦合给运算放大器01:2进行第二级放大,再经由电压比较器C0P1和ODP2构成的双向鉴幅器处理后,检出有效触发信号vs去启动延迟时间定时器,输出信号V0经晶体管T1放大驱动继电器去接通负载

图3-7热释红外传感器处理芯片
3.4.3 BISS0001 工作原理
BISS0001是由运算放大器、电压比较器、状态控制器、延迟时间定时器以及封锁时间定时器等构成的数模混合专用集成电路。当热释电红外传感器接收到人体红外辐射后输出检测信号,然后由14脚输入BISS0001,经地内部电路处理,由2脚输出探测信号(正向脉冲信号)。输出脉冲信号的宽度由外接电阻R9和电容C6来决定。当2脚输出控制脉冲后,电子开关被接通,数字编码电路和无线电发射电路由于得到电源而开始工作。电源变压器为5W/15V,E为12V免维护蓄电池,供停电使用。S1为锁控电源开关,可根据需要安装在适当处所,用来接通工作电源无必要时可取消设置。BISS0001应用线路图如7所示。

图3-8BISS0001的热释电红外开关应用电路图
上图3-8中,运算放大器0P1将热释电红外传感器的输出信号作第一级放大,
然后由C3耦合给运算放大器0P2进行第二级放大,再经由电压比较器C0P1和COP2构成的双向鉴幅器处理后,检出有效触发信号Vs去启动延迟时间定时器,输出信号Jo。
上图3-8中,R3为光敏电阻,用来检测环境照度。当作为照明控制时,若环境较明亮,R3的电阻值会降低,使9脚的输入保持为低电平,从而封锁触发信号Vs。SW1是工作方式选择开关,当SW1与1端连通时,芯片处于可重复触发工作方式;当SW1与2端连通时,芯片则处于不可重复触发工作方式。图中R6可以调节放大器增益的大小,原厂图纸选10K,实际使用时可以用3K,可以提高电路增益改善电路性能。输出延迟时间Tx由外部的R9和C7的大小调整,触发封锁时间Ti由外部的R10和C6的大小调整,R9/R10可以用470欧姆,C6/C7可以选0.1U。在BISS0001的内电路中,运放A是一个独立的放大器,由它放大后输出的信号电压通过.
3.4.4 模块使用注意事项
(1)直流工作电压必须符合要求的数值,过高和过低都会影响模块性能:而且要求电源必须经过良好的稳压滤波,例如电脑USB电源、手机充电器电源比较旧的9V的层叠电池都无法满足模块工作要求,建议用变压器的电源并经过三端稳压芯片稳压后再通过220UF和0.1UF的电容滤波后供电。
(2)调试时人体尽量远离感应区域,有时虽然人体不在模块的正前方,但是人体离模块太近时模块也能感应到造成一直有输出,还有调试时人体不要触摸电路部分也会影响模块工作,比较科学的办法是将输出端接一个LED或者是万用表,把模块用报纸盖住,人离开这个房间,等2分钟后看看模块是否还是一直有输出?
(3)模块不接负载时能正常工作,接上负载后工作紊乱,一种原因是因为电源容量很小负载比较耗电,负载工作时引起的电压波动导致模块误动作,另一种原因是负载得电工作时会产生干扰,例如继电器或者电磁铁等感性负载会产生反向电动势,315M发射板工作时会有电磁辐射等都会影响模块。解决办法如下:A、电源部分加电感滤波。B、采用负载和模块使用不同的电压的方法,例如:负载使用24V工作电压,块使用12V工作电压,其间用三端稳压器隔离。C:使用更(4)人体感应模块只能工作在室内并且工作环境应该避免阳光、强烈灯光直接照射,如果工作环境有强大的射频干扰,可以采用屏蔽措施。若遇有强烈气流干扰,关闭门窗或阻止对流。感应区尽量避免正对着发热电器和物体以及容易被风吹动的杂物和衣物。
(5)人体感应模块建议安装在密封的盒里,否则可能一直会有输出信号。(6)如果要求人体感应模块的探测角度小于90度时,可以用不透明胶纸遮挡镜片或裁剪缩小镜片来实现。
(7)人体感应模块采用双元探头,人体的手脚和头部运动方向与感应灵敏度有着密切的联系,而且红外模块的特性决定了无法精确控制感应距离。
(8)模块中的探头(PIR)可以装焊在电路板的另一面。也可将探头用双芯屏蔽线延长,长度应在20厘米以内为好。
3.5 光强检测模块
3.5.1光敏电阻的功能描述
3.5.1 光敏电阻的功能描述
光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)um的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。
光敏电阻是基于内光电效应。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。用于制造光敏电阻的材料主要是金属的硫化物、硒化物和碲化物等半导体。通常采用涂敷、喷涂、烧结等方法在绝缘衬底上制作很薄的光敏电阻体及梳状欧姆电极,接出引线,封装在具有透光镜的密封壳体内,以免受潮影响其灵敏度。在黑暗环境里,它的电阻值很高,当受到光照时,只要光子能量大于半导体材料的禁带宽度,则价带中的电子吸收一个光子的能量后可跃迁到导带,并在价带中产生一个带正电荷的空穴,这种由光照产生的电子一空穴对了半导体材料中载流子的数目,使其电阻率变小,从而造成光敏电阻阻值下降。光照愈强,阻值愈低。入射光消失后,由光子激发产生的电子一空穴对将复合,光敏电阻的阻值也就恢复原值。在光敏电阻两端的金属电极加上电压,其中便有电流通过,受到波长的光
线照射时,电流就会随光强的而变大,从而实现光电转换。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。半导体的导电能力取决于半导体导带内载流子数目的多少“
3.5.2 光敏电阻检测原理
光敏电阻由于随光照的变换而阻值改变,所以光强的检测可以转换为光敏电阻两端的电压的检测。将光敏电阻与一个阻值固定的精密电阻串联,在有A/D模块将模拟量转换为数字量即可。由于STC单片机上集成了AD模块,电路就可以直接与单片机相接,不必再另外使用A/D转换了。3.6 其他电路设计
上面介绍了整个硬件系统的主要硬件电路部分设计,但是一个完整系统还需要的一定的辅助硬件电路,主要包括自动/手动切换按键电路、灯控区电路,由于这两种电路比较常用和简单,此处不做详细介绍,电路设计图可参见附录1。
第4章系统软件设计
本设计的软件设计包括上位机和下位机两部分,上位机主要是VB串口通信与测控程序设计,下位机主要是TFT的驱动程序设计、采集信号的处理、灯控程序设计,本章将详细介绍这几个程序的设计4.1 TFT 屏驱动显示
4.1.1 TFT 彩屏介绍
TFT-Thin Film Transistor薄膜晶体管是有源矩阵类型液晶显示器AM-LCD中的一种,TFT在液晶的背部设置特殊光管,可以“主动的”对屏幕上的各个独立的像素进行控制,这也就是所谓的主动矩阵TFT(activematrixTFT)的来历,这样可以大大地提高反应时间,一般TFT的反应时间比较快,约80ms,而STN则为200ms,如果要提高就会有闪烁现象发生。而且由于TFT是主动式矩阵LCD可让液晶的排列方式具有记忆性,不会在电流消失后马上恢复原状。TFT还改善了STN闪烁(水波纹)-模糊的现象有效地提高了播放动态画面的能力。
4.1.2 TFT 的显示
(1)线段的显示
点阵图形式液晶由M行XN列个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16x8=128个点组成,屏上64x16个显示单元和显示RAM区1024个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H~00FH的16个字节的内容决定,当(000)=FFH时,则屏的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏的右下角显示一短亮线;当(000H)=FFH,(001H)=00H,(002H)=FFH,(003H)=00H,…(00EH)=FFH,(00FH)=00H时,则在屏的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本意思。(2)字符的显示
当用LCD显示一个字符时就较复杂了,因为一个字符由6x8或8x8点阵组成,即要找到和屏上某几个位置对应的显示RAM区的8个字节,并且要使每个字节的不同的位为'1’,其它的为'0’,为'1’的点亮,为'0’的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器(如T6963C)来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。(3)汉字的显示
汉字的显示一般采用图形方式,事先从微机中提取要显示的汉字的点阵码每个汉字占32字节,分左右两半部,各占16字节,左边为1、3、5…,右边为2、4、6…,根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加1,送第二字节,换行按列对齐,送第三字节…直到32字节显示完就可在LCD上得到一个完整的汉字。

图4-1 显示流程图
如上图4-1所示,液晶屏显示首先必须对液晶屏进行初始化,在对显示屏初始化后,在将显示的数据送入储存器以便显示时数据的调用。显示程序如下:/****写命今与数据子函数*******/
void LCD Write(uchar type, uint value)
{
LCD CS =0;
LCD RS = type; //0:command1: data
LCD WR=0;
DATA =(uchar)value;;
LCD WR=1;
LCD CS =1;
}
/********写8位数据子函数******/
void LCD Write Data8(uchar value) //color data
{
LCD CS =0;
LCD RS=1;
LCD WR =0;
DATA = value;
LCD WR =1;
LCD CS = 1;
}
/*****写16位数据子函数*****/
void LCD_ Write_ Data16(uint value) // color data
{
LCD _CS =0;
LCD _RS= 1;
LCD _WR =0;
DATA=(uchar)value ;
LCD _WR =1;
LCD _WR =0;
DATA=(uchar)(value>>8)
LCD _WR= 1;
LCD_ CS =1;
}
/***********写寄存器子函数*******/
void Reg _Write(uint reg,uint value)
{
LCD_ Write(TYPE_ LCD _COMMAND,reg);
LCD_ Write(TYPE _LCD _DATA, value);
}
/*****设置显示窗口子函数****/
void LCD Set_RamAddr(uint xStart, uint xEnd, uint yStart, uint yEnd)
{
uint VerPos, HorPos, StartAddr ;
HorPos=(uint)(xStart|xEnd<<8));
VerPos=(uint)(yStart|yEnd<<8));
StartAddr =(uint)(xStart|yStart<<8));
Reg _Write(0x09, xStart);
Reg _Write(0x10,yStart);
Reg _Write(0x11,xEnd);
Reg_ Write(0x12,yEnd);
Reg_ Write(0x18, xStart);
Reg _Write(0x19, yStart);
LCD_Write(TYPE LCD COMMAND,0x22);//0x22
}
void point(uint x,uint y,uint colour)
{
LCD_SetRamAddr(x,x,y,y);
LCD_ Wirte Data16(colour);
}
/*******清屏子函数*******/
void LCD_ clear(uchar n)
uint num;
LCD_SetRamAddr(0,127,0,159);
for (num=20480; num>0;num--) //160*128=20480
{
LCD_ Wirte Data16(colors[n]);
}
}
/***********字符显示子函数************/
void LCD ShowChar(uchar x,uchar y,uint For color,uint Bk color, char
ch)
{
uchar temp;
uchar pos,t;
unchar
CHAR W,CHAR H;uchar
CHAR W=8; //8*16
CHAR H=16;
if(x>(LCD SIZE_X-CHAR_W||y>(LCD_ SIZE Y-CHAR H))
return;
LCD_SetRamAddr(x,x+CHAR_ W-1,y,y+CHAR_ H-1);
ch = ch-32; //按照ASCII编码顺序的到相应字母的编码
for (pos=0;pos<CHAR_H;pos++)
{
temp= Font8x16[ch][pos];
for(t=0;t<CHAR_ W;t++)
if(temp&0x80)
LCD_ Wirte_ Data16(For _color); //textcolor
else
LCD_ Wirte_ Data16(Bk _color);//backcolor
temp<<=1;
}
}
}
/********图片显示子函数*********/
void pic_ play(uint Start_ X, uint End_ X,uint Start_ Y,uint End_ Y)
{
uint num, m;
uint dx, dy;
dx=(End_ X+1)-Start_ X; //计算写入数据的总数
dy=(End_Y +1)-Start_ Y;
num = dx*dy<<1 ;
LCD_ CS =0;
LCD_ SetRamAddr(Start_ X,End X-1,Start_ Y,End_ Y-1);
LCD_ RS= 1:
for(m=0;m<7128;m++)
{
LCD_ Write_ Data8(Image _pic[m]);
}
LCD_CS=1;
}
/********液晶初始化*******/
void LCD init (void)
{
uint num;
Reg_Write(0x0001,0x0002);//MODE SEL1
Reg_Write(0x0002,0x0012);//MODE SEL2
Reg Write(0x0003,0x0000);//MODE SEL3
Reg _Write(0x0004,0x0010);//MODE SEL3
LCD SetRamAddr(0,127,0,159);
for(num=20480;num>0; num--)
LCD_ Write_ Data16(0xffff);
Reg _Write(0x0005,0x0008); //VCO MODE
Reg_Write(0x0007,0x007f); //VCOMHT CTRL
Reg Write(0x0008,0x0017); //VCOMLTCTRL
Reg Write(0x0009,0x0000), //write SRAM window start X point
Reg_Write(0x0010,0x0000); //write SRAM window start y point
Reg Write(0x0011,0x0083); //write SRAM window end x point
Reg Write(0x0012,0x009f)//write SRAM window end y point
Reg Write(0x0017,0x0000)//SRAM contrl
Reg_Write(0x0018,0x0000)//SRAM x position
Reg_Write(0x0019,0x0000)//SRAM y position
Reg Write(0x0006,0x00c5);//DACOP CTRL2
delay(10);//延时
}
4.2 采集信号的处理
单片机采集到的信号分别有红外对管输出的信号、热释电人体红外模块的信号、光照强度等信号。而红外对管信号和热释电人体红外模块的信号都是高低电平,所以不用进行特别的处理。只对光照强度信号进行处理就行。
光照强度信号是光敏电阻随光照的改变而阻值改变所引起的光敏电阻两端电压的变化,经A/D转化成数字量。由于STC12C5A60S2单片机集成了10位A/D,所以只要对芯片的A/D程序进行设置就行了。
A/D设置首先要开启单片机的A/D,也就是减普通的I/0口转化为A/D来使用。A/D使用程序来开启。A/D开启代码如下:
P1ASF =ch; //开启8位ADC
ADC RES =0; //清零
ADCCONTR=ADCPOWERADCSPEEDLL://ADC上电等待
本控制系统中的数据采集对象为环境光信号及人体存在信号,在程序设计中对这两个数据的采集放置在多任务模块中实施定时采集。
4.2.1 存在传感器的优缺点
人体存在传感器有优点,也有缺点。优点便是本身不发任何类型的辐射,器件功耗很小,隐蔽性好,价格低廉。而缺点是容易受各种热源、光源干扰;由于红外穿透力差,因此人体的红外辐射容易被遮挡,不易被探头接收;易受射频辐射的干扰;环境温度和人体温度接近时,探测和灵敏度明显下降,有时还会造成短时失灵。试验检测也证明了这点,只要人体存在却有巧秒左右没有活动,人体传感器则认为没有人体存在中。为避免这种现象的出现,本系统软件程序中设计为有人体存在状态后间隔2分钟或更长的时间来对人体存在参数信号的采集。
4.2.2数据采集软件设计的实现
本系统考虑到环境光足够亮时,无论有否人体存在都不应开灯;而环境光不够亮时,有人体存在才开灯,无人存在不开灯。本系统逻辑定义为环境光亮时为二制的“0”(符合自然光采集电路输出信号状态),暗时为“1”,人体存在为“1”人体不存在为“0”,开灯为“1”,关灯为“0”,那么环境光与人体存在可以有以下的逻辑关系表表示,如表4-1所示:
表 4-1 采集参数与开灯情况

上表数据表明可将环境光参数与人体存在参数相与门操作,又由于是低平驱动,所以要将采集处理后的信号进行非操作,才可以驱使灯控区工作,即可得到教室灯的状态。
4.3 灯控程序
灯控即是根据光强模块采集到的光强信号、热释电人体红外模块采集到的人体存在信号和红外对管人数统计模块的人数统计对室内的开灯数量和位置进行控
制m当室内的光照强度小于设定值时不论室内是否有人,室内的灯都不开。当光照强度满足开灯条件时:当热释电检测到无人在室内活动时,室内的灯全部关闭,等待下次人员进入室内。当热释电红外人体模块检测到室内有人活动时打开相应位置的灯,在人数未达到改区域内人数设置的上限时,其他区域不管是否有人活动,灯不开,当达到已开灯区域人数上限时,其他区域检测到有人活动,对应区域的灯才开。
控制的流程如图4-2所示:

图4-2 灯控流程图
4.4 VB 串口通信与测控通信设计
利用 Visual Basic开发串口通信程序主要有两种方法:一是使用MSComm串口控件,二是调用 Windows API函数。使用 Visual Basic 串口控件实现通信的方法比调用API动态链接库的方法更方便、快捷,且使用较少的代码实现相同的功能,也能减少因编程不当而引起的系统不稳定,本设计中也是使用MSComm 控件来完成程序设计的,本程序所要实现的主要功能为:记录教室的人数和开灯情况。
4.4.1 MSComm 控件概述
MSComm 控件全称为 Microsoft Communication Control是Microsoft 公司提供的 ActiveX 控件,目的是为了简化 Windows 下串口通信编程,它既可以用来提供简单的串行通信功能,也可以用来创建功能完备的、事件驱动的高级通信工具。
MSComm 控件处理通信的方式有两种,一是事件驱动方式,事件驱动通信是处理串行端口交互作用非常好的方法。二是查询方式在程序的每个关键功能完成之后可以通过检查CommEvent属性的直来查询事件和错误。本设计中使用的方法是事件驱动方式。
MSComm 控件的属性很多,下面主要介绍本设计所用到的一些属性”
(1)CommPort属性:语法为MSComm1.CommPort=[Value],作用为设置或者返回通信端口号,Value 值可在1-16之间取值,如果用PortOpen 属性打开一个并不存在的端口,MSComm控件会产生错误68(设备无效)。
(2)Input 属性:语法为MSComml.Input,其作用为返回并删除缓冲区中的数据流,InputLen属性确定被Input属性读取的字节数。若InputLen设置为0,则Input属性读取缓冲区中全部内容
(3)InputLen属性:语法为MSComm1.InputLen=Value,其功能为设置并返回Input 属性从接收缓冲区读取的字符数。
(4)InputMode 属性:语法为 MSComm1.InputMode=Value,其功能为设置或返回接收的数据类型。
(5)0utput属性:语法为MSComm1.0utput=Value,其功能为向传输缓冲区写数据流。
(6)PortOpen属性:语法为MSComm1.PortOpen=Value,其功能为设置或返回通信端口的状态。
(7)Settings 属性:语法为MSComm1.Settings=Value,其功能为设置并返回通信参数,如本设计中MSComm1.Settings=“4800,N,8,1”
(8)Rthreshold属性:语法为MSComml.Rthreshold=Value,其功能为 0nComm
事件发生之前,设置并返回接收缓冲区可接收的字符数(9)InBufferSize属性:语法为MSComm1.InBufferSize=Value,其功能为设置或返回接收缓冲区大小。缓冲区不能设置得太小,如果缓冲区太小会出现缓冲区溢出的风险,可采用握手信号来克服,
4.4.2 串口通信设置
本程序设计所使用 MSComm 控件的基本配置如下:MSComm1.InputLen=5,从缓冲区读取5字符
MSComm1.0utBufferSize=5,设置发送缓冲区大小为5字节
MSComm1.InBufferSize=5,设置接受缓冲区大小为5字节
MSComm1.Settings="4800,N,8,1”,数据格式设置
MSComm1.InputMode=comInputModeBinary,字符串接受模式
MSComm1.RThreshold=5,1个字符引发事件
下位机上传到PC的数据格式为:0001020101,在本设计中上位机只取第5位数据来分析。
第5章系统调试
系统调试是任何一个课题设计必不可少的步骤,系统调试必须从最底层开始逐步通过后再进行下一步工作,对于本设计而言最基本的就是硬件平台的搭建,只有保证硬件平台完全搭建正确后,才能够进行下一步的软件综合编程设计,当然其中有些硬件的检测必须使用软件的方法来检测。在保证基本硬件无错误后,系统各模块的调试可以是非常灵活的,只要在系统总体调试处理好各模块之间的连接顺序即可。
5.1 下位机硬件调试分析
下位机的硬件调试是整个系统的基础,只有下位机的硬件调试通过了才能在此基础上进行后续的软件设计,下位机硬件测试不仅仅是指整个下位的总体功能测试,而是从每个元件何芯片的测试开始,只有在测试芯片都能正常后,才能进一步的硬件调试。下位机的测试主要包含以下几个方面。
根据PCB原理图焊接电路板,最基本的模块是电源部分电路的焊接,首先必须保证AMS1117是正常的,焊接完成后必须用万用表检查稳压管输出电压是否为3.3V,否则会有烧坏STC12C5A60S2和液晶屏的危险。在焊接STC12C5A60S2时定不能够在焊盘引脚上加焊锡,因为在生成PCB板时已经在STC12C5A60S2的焊盘引脚上加了足够的焊锡,一般情况下能够保证焊接成功,如果焊锡实在太少,只能够在焊盘上单独加焊锡,而不能一边加焊锡一边焊接。由于本人有一定的焊接
实践经验且仔细检查了电路图,焊接出来后检测完全正常。
对于其他的模块的焊接来说就十分简单了,一般直接焊接上去后不会出现问题,焊接完成后检测成功没有问题。如果出现问题的话就需要检查接口线路是否又焊短路的情况了,或者检查模块本身是否存在问题。
5.2下位机软件调试分析
下位机软件部分调试可以说是整个系统最核心的部分,只有在下位机正常工作前提下,上位机的记录数据才有意义。下位机程序的最好办法是将每个功能模块分开调试,最后综合起来。
在写TFT液晶显示程序时,液晶屏经常白屏(不能显示),分析其原因发现,在程序中出现了死循环,导致程序不能正常的运行。再有就是TFT液晶的初始化出现问题,对程序的运行造成了极大地影响。
在调试人数统计模块时,经常不能正常的采集到数据,经过长期的调试发现人数统计在调试时,出现程序的跑飞现象,程序有的步骤不能执行,经过对程序的改进,完全的解决了这个问题。
软件编写中的错误分为两种:一是语法上的错误,这种错误很好解决。二是程序逻辑上的错误,主要是由于编程时使用的语句有一定的规则却没有注意到,还有就是在程序的流程设计本身就存在问题,这种问题需要通过仔细的规划和反复推敲实践才能很好的解决。
5.3 上位机软件调试分析
由于上位机的软件编程使用的是 VB,只要在按照任意一本 VB串口编程参考书上所介绍的基本设置进行配置,都可以完成基本的通过设置,为了检查下位机上传到PC机的数据是否完整的接收且无误码产生,在调试过程中使用了5个文本窗口来显示接收到的数据,由于上传的数据每次都是5个字节,所以只设置了5个文本窗口,在检查发现数据无误后,进行数据处理并将数据处理的结果显示在文本框Text1中,然后将数据处理的结果存储到TXT文本中,这些语句都是比较固定的,因此在调试时没有什么大的问题。上位机处理功能完全达到要求。测试数据如下图5-1所示:

图 5-1 上位机测试数据

图 5-2 上位机测试数据
结论
为了解决有少数在室内,但是整个场所的照明灯全开的情况,更有些场所在无人的情况下仍然开启大量的照明灯,对电能的浪费非常严重的问题,本文以套节能照明系统,能够自动统计教室内的人数、自然光照强度和人员位置,根据人员情况开启适当数量和位置的照明灯为目标,通过广泛调查研究目前节能照明控制系统的研究现状及产品性能,提出了节能照明控制系统的总体设计要求和需要达到的性能指标,在参考大量文献资料和深入的理论论证分析基础上,提出了节能照明控制系统的具体设计方案。从上、下位机两方面展开研究工作,下位机部分的主要工作包括硬件平台的搭建和下位机软件的设计,硬件平台的搭建主要涉及主控芯片和热释电人体感应的选型,下位机软件设计主要涉及液晶屏显示程序、灯控程序和信号处理。上位机软件设计的主要工作是分析处理人数统计和开灯数量的结果数据,并将相应的处理结果进行存储。最后完成了系统的测试工作,先将本文的主要结论总结如下:
1、根据系统设计要求和性能指标,选用STC12C5A60S2单片机作为核心控制器,人体存在感应器选用HC-SR501人体感应模块,液晶显示屏选用普中科技的TFT屏,在此基础上搭建硬件平台并完成相应的测试工作。
2、在硬件平台完整的基础上,实现了对室内人数、光照信号的采集和根据采集信号对照明装置的自动控制,并将人数在TFT屏显示。
3、完成了上位机相关功能软件的设计,将下位机上传的人数和开灯情况结果数据进行分析处理,在上位机界面也可以清晰的看到结果,并将相应的结果存入TXT 文档中,以便有意外事故时进行处理取证。
由于时间的关系本设计还存在一定的待完善之处,以下的几个问题还需要进一步的研究处理及设想
1、对热释电感应模块进行处理,加上步进电机,使其可以感应到静止的人体信号。
2、可手动设置启动照明装置的光照条件,以便跟适合相应的环境
3、检测模块与单片机之间的通信,可以采用电力载波通讯,以避免在安装控制系统时在另外的布线。
致谢
值此论文完成之际,谨向***致以最崇高的敬意和最衷心的感谢!本论文是在***的精心指导和悉心关怀下完成的,从论文的选题、开题到论文的撰写、定稿,在论文撰写的每一步都无不倾注了两位老师巨大心血和辛勤劳动两位老师的知识渊博,对科学具有敏锐的洞察力和严谨求实的治学态度,以及忘我的工作精神都深深地影响着我,在毕业设计对芯片及模块选型的过程中,实验室***给予巨大的帮助,***那开阔的思维方式和电子设计方面的高深造诣给我留下了深刻的印象。
同时还要感谢一起生活和奋斗的同学们,感谢他们在我毕业设计阶段给予我的支持和帮助。
最后,要感谢我的父母,他们在物质和精神上给予了我极大的支持。没有他们,也就没有我们的今天,衷心祝愿我的家人永远身体健康。另外还要感谢同寝室的三位室友,感谢他们在毕业设计过程中给予我的极大的支持和帮助。

