基于单片机的智能声光控开关毕业设计_说明.doc
学 院 专科毕业论文(设计)基于单片机的智能声光控开关专 业 名 称 机电一体化 申请学士学位所属学科 工科 指导教师、职称 高功臣 2011 年 6 月 8 日摘 要声光控开关的原理是只有在天黑以后,当有人走过楼梯通道,发出脚步声或其它声音时,楼道灯会自动点亮,提供照明,当人们进入家门或走出公寓,楼道灯延时几分钟后会自动熄灭。在白天,即使有声音,楼道灯也不会亮,可以达到节能的目的。 本文以LGS公司生产的GMS97C2051单片机为核心,研究声光控开关的设计,采用串行A/D对声音信号的采集,可以通过软件来调节对声音的灵敏度。单片机软件实施对光度的判断,使开关在白天时即使有声音也不工作。文章应用了过零启动技术,开关工作在频繁的开关状态时不易损坏可控硅,延长了声控开关的使用寿命。文章中还加入了看门狗电路,在工作中可以起到抗干扰的作用,大大加强了开关的可靠性。关键词:声光控,智能,节能,可靠性。ABSTRACTThe principle of acoustic optical switch is only after dark, when someone pass stair channel, issued, or other sounds of footsteps will provide automatic lit corridor, lighting, when people enter the house or apartment corridor lights out several minutes automatically delay extinguished. During the day, even a voice, corridor lights also will not light, can achieve the purpose of saving energy. In this paper GMS97C2051 LGS company production, the single-chip microcomputer is thedesign of acoustic light-activated switch, the serial A/D for sound signal collection, by software to adjust the sensitivity to sound. Single-chip microcomputer software implementation on photometric judgment to make the switch in the daytime, even though there is voice doesn't work. Article applied zero start up technology, switch work in frequent switch to thyyistoy andextendedofsound-controlled. Article also joined watch-dog circuit, in the work plays a role of anti-interference, the reliability of switches is greatly enhanced. Keywords: sound, the intelligent controller,energy-saving, reliability.目 录1. 绪论11.1 课题背景11.2 课题现状11.3 课题意义12.系统设计方案22.1 课题的研究容22.2技术方案的选择23.系统结构与工作原理33.1 系统结构33.2 系统的工作原理54.硬件系统的设计54.1 声音信号采集电路的设计54.2 光信号判断电路的设计74.3 过零启动保护电路的设计74.4定时电路的设计94.5驱动输出电路的设计104.6电源设计104.7 看门狗电路的设计114.7.1 简介看门狗电路与其作用114.7.2 X5045特性介绍124.8. PCB板的制作的设计134.8.1 PROTEL DXP 2004的概述134.8.2 Protel原理图界面144.8.3 电路原理图的设计流程144.8.4 PCB板的绘制原则154.8.5 Protel PCB设计流程164.8.6 印制电路板(PCB)的绘制过程如下所示:174.8.7 焊制电路板如下所示195. 软件设计205.1 软件设计语言的选择205.2 程序流程图215.3 主程序设计225.4 延时程序设计225.5 TLC2543读写程序设计225.6 DS1302驱动程序设计225.7 X5045驱动程序设计226系统的调试2361 调试过程236.2 调试结果与经验总结257总结258附录26参考文献33致341. 绪论1.1 课题背景当今社会的主潮流是:降低能耗,节约能源,注重环保。声光控开关体积小,外形美观,反应灵敏,制作容易,是公共场合照明开关的理想选择,被誉为:“长明灯的克星”。公共场所和居民居住区的公共楼道普遍使用机械手动开关,由于各种原因往往出现许多灯泡点亮长明的现象,故使灯泡寿命短,浪费电量,为国家、单位、个人造成经济损失。另外,由于频繁开关或其他人为因素,墙壁开关的损坏率很高,既增大了维修量、浪费了资金,又容易造成事故隐患。因此,设计研制一种电路新颖、安全节电、结构简单、安装方便的声光双控白炽灯节能自动开关显得相当有必要。1.2 课题现状公共场所和居民居住区的公共楼道普遍使用机械手动开关,由于各种原因往往出现许多灯泡点亮长明的现象,故使灯泡寿命短,浪费电量,为国家、单位、个人造成经济损失。因此,设计一个基于单片机的声光控开关系统,使公共场所和居民居住区的公共楼道灯在白天时不亮,晚上闻声自亮,待人走后,几十秒后自动关闭,既方便,又省电。1.3 课题意义(1)利用单片机作为中央处理器;(2)具有光控功能,白天不亮灯,晚上有声音时亮灯;(3)延时时间可调节;(4)具有过零检测功能;(5)所设计的开关系统应做到节能、智能、耐用、可靠性高以与维护方便。2.系统设计方案2.1 课题的研究容运用单片机可以设计出智能型的声控开关,电路设计好后,运用软件编程来实现其功能,灵活方便,修改简单,在使用过程中更加的安全节电,智能环保。2.2 技术方案的选择目前的声控开关大多都是应用模拟电子技术进行设计,分立元件多,不可靠,而且许多声控开关的平均使用寿命不长,主要是因为电路作频繁的开关,启动电流非常大,导致功率元件可控硅由于过载而损坏。如果在设计中采用开关电压过零保护技术,可消除白炽灯开启瞬间的大电流冲击,有效地防止可控硅元件启动时的电流过载,大延长了开关的使用寿命,并且可以起到保护灯泡的作用。如今单片机技术已经相当成熟,未来的发展方向趋向于运用单片机可以设计出智能型的声控开关,电路设计好后,运用软件编程来实现其功能,灵活方便,修改简单。在使用过程中更加的安全节电,智能环保。首先单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机的特点:(1) 种类多,型号全;(2) 提高性能,扩大容量,性能价格比高;(3) 增加控制功能,向真正意义上的“单片”机发展;(4) 低消耗;(5) C语言开发环境,友好的人机互交环境。单片机的优点:(1) 使用寿命长;(2) 运行速度越来越快;(3) 低噪声和高可靠性技术;(4) OTP与掩膜。综上所述,单片机的特点和优点符合制作智能声光控开关的条件,并且具有准确性和节能性。3.系统结构与工作原理3.1 系统结构 设计声光控开关,最起码要考虑三个问题,其一是灯泡的开关控制,这是由220V市供电。其二是光控制,使其在有光时,即使有声音也不能亮。其三就是声音控制,在晚上或光线不足时,只要有人经过,发出声音,灯泡就会点亮。设计的整体方案图如图1所示。CPU以GMS97C2051单片机为核心,GMS97C2051是LG公司生产,引脚功能和指令系统与MCS-51兼容的20引脚封装单片机,片含2K字节的EPROM,与MCS-51的主要不同之处是少了P0和P1口,能方便地用于不需外扩程序存储器的应用场合,达到简化电路、缩小体积、减小损耗和降低成本的目的。整个设计包括以下几个模块:声信号采集模块,该模块主要是负责声音信号的采集并放大,再经过A/D转换器输入到单片机。1. 声信号采集模块,该模块主要是负责声音信号的采集并放大,再经过A/D转换器输入到单片机。2. 过零保护模块,该模块主要是负责声音信号的采集并放大,再经过A/D转换输入到单片机。3. 光信号采集模块,对光信号进行处理,电路当中有光信号时,输出一电平信号给单片机,当晚上或光线较暗时输出一反向信号给单片机,由单片机作出判断。4. 时钟定时模块,运用一时钟芯片,起到定时功能,当灯亮后,一定定时时间到,即自动熄灭。5. 看门狗模块,对现场干扰起保护作用,防止单片机的程序跑飞,使使使之输出一电压值,到可控使可控硅打开。6. 输出驱动模块,由单片机控制,使之输出一电压值,到可控硅,使可控硅打开。图1整体方案图3.2 系统的工作原理采用串行A/D对声音信号的采集,可以通过软件来调节对声音的灵敏度。单片机软件实施对光度的判断,使开关在白天时即使有声音也不工作,在晚上闻声自亮。4.硬件系统的设计4.1 声音信号采集电路的设计图2声信号采集电路如图2所示为声音信号采集电路。R6为声传感器,当没有声音时,其输出为低电压信号,若有声音时,输出一电压值,该电压值经过运算放大器OP07放大,放大倍数为R2/R4,R2为可变电阻,可以调节其阻值,使其放大倍数改变,起到调节声音灵敏度的作用。下图TLC2543为A/D转换器,TLC2543采用串行接口,与外围电路的连线简单,三个控制输入端为CS(片选)、输入/输出时钟(I/O CLOCK)以与串行数据输出端(DATA INPUT)。片的14通道多路器可以选择11个输入中的任何一个或3个部自测试电压中的一个,采用一保持是自动的,转换结束,EOC输出变高。图3 TCL2543A/D转换器TLC2543的引脚排列如图1所示。引脚功能说明如下:AIN0AIN10:模拟输入端,由部多路器选择。对4.1MHz的I/O CLOCK,驱动源阻抗必须小于或等于50;CS:片选端,CS由高到低变化将复位部计数器,并控制和使能DATA OUT、DATA INPUT和I/O CLOCK。CS由低到高的变化将在一个设置时间禁止DATA INPUT和I/O CLOCK;DATA INPUT:串行数据输入端,串行数据以MSB为前导并在I/O CLOCK的前4个上升沿移入4位地址,用来选择下一个要转换的模拟输入信号或测试电压,之后I/O CLOCK将余下的几位依次输入;DATA OUT:A/D转换结果三态输出端,在CS为高时,该引脚处于高阻状态;当CS为低时,该引脚由前一次转换结果的MSB值置成相应的逻辑电平;EOC:转换结束端。在最后的I/O CLOCK下降沿之后,EOC由高电平变为低电平并保持到转换完成与数据准备传输; VCC、GND:电源正端、地;REF、REF:正、负基准电压端。通常REF接VCC,REF接GND。最大输入电压围取决于两端电压差;I/O CLOCK:时钟输入/输出端。TLC2543的主要特性如下: (1)11个模拟输入通道; (2)66ksps的采样速率; (3)最大转换时间为10s; (4)SPI串行接口; (5)线性度误差最大为±1LSB; (6)低供电电流(1mA典型值); (7)掉点模式电流为4A。 由于TLC2543具有以上特点,其转换速度快,与单片机接口简单,占用的I/O口少,因此在本设计中选择进行A/D转换,用于采集声音信号。4.2 光信号判断电路的设计楼道上的声控开关出了声音控制外,还必须有光控功能,即在白天时无论有无声音,都不会点亮灯泡,只有在夜晚或是光线较暗时,发出声音后,才会开灯。这就必须设计一个光控电路,原理图如图4所示。图4 光信号判断电 图中D1为光敏电阻器,光敏电阻器的主要功能是,当没有光照或光线不足时,其阻值较大,达到兆欧级以上,相当于处于短路状态,此时R1电位器中间抽头输出为低电平。而当有光照时,光敏电阻阻值下降,阻值相当小,此时电位器R1的中间抽头输出为高电位。LM393和电位器R8组成一电压比较器,当同相输入端电位高于反相输入端时,LM393输出一高电平,反之,当反相输入端电位高于同相输入端时,LM393输出一低电平,输出信号经过具有施密特功能的反相器74LS14,送到单片机,由单片机进行检测,判断是否有光照。4.3 过零启动保护电路的设计普通的白炽灯正常发光时的灯丝与不发光时灯丝电阻值相差甚远,从而使得其在启动瞬间的冲击电流非常大,例如一只60W的灯泡,在正常发光时,电阻约为800欧,工作在标准市电220V时,工作电流不到0.3A。然而在不放光时,灯丝的电阻阻值约为6欧,当启动时,电流会很大,约有3.5A左右。这种大电流的冲击,很容易损坏可控硅。如图5为白炽灯启动时的电流波形图。图5 白炽灯启动电流波形图市电电压是交流220V,交流电始终是从零值到峰值的变化,只要使白炽灯在零值或零值附近启动,就可以避免大电流的冲击。如图6为过零启动保护电路。D2为整流桥,SCR为可控硅,过零启动主要是由电阻Rx1Rx5,二极管D3和二极管O6组成。Rx2Rx3是采样电阻,当整流桥2号端子的电压处于低电压时,Rx2和Rx3之间的电压也很低,Q6处于截止工作状态,protect端输出高电平。当整流桥的2号端口为高电压时,Rx2和Rx3之间的电压亦很高,使Q6工作在导通状态,protect端输出低电平。把protect的低电平信号送到单片机的I/O上进行检测,由单片机作出判断,再决定SCR端得电压值,当protect为高,此时的电压为低,可以驱动SCR导通,点亮白炽灯,当protect为低,此时的电压为高,使SCR关闭,暂时不点亮白炽灯,等到过零点电位时才运作。因此,无论什么时候有声音信号来,只有在低电位时,才驱动SCR可控硅打开,声控信号才起作用,实现零压启动。图6 过零启动保护电路白炽灯点亮以后,可控硅SCR导通,二极管D3的阳极电位就会下降,此时二极管D3就起到了过零电压启动取消的作用。当有高电压来时,Rx1与Rx2之间的电位就会高于D3的阳极电位,二极管导通,从而使Q6的基极输入电位下降,有效地避免了灯泡的闪烁现象。4.4 定时电路的设计声控开关在打开后,需要定时一定的时间,一般为几十秒,设计时可以借助时钟芯片,这里选用一款美国DALLAS公司生产的高性能、低功耗、带RAM的实时时钟芯片DS1302.DS1302与CPU通过三线接口同步通信,其接口电路如图7所求。图7 定时电路4.5 驱动输出电路的设计前面提到,当单片机检测到声光信号后,要控制图6中的SCR可控硅导通,才能点亮灯泡,因此要设计一个驱动输出电路。图8 驱动输出电路如图8所示,用一个反向器与一个NPN型的三极管,一般的8050或9013都可以,再加一个上位电阻,此处用一个10K的电位器,方便可调。单片机的一个I/O端口控制74LS14,使三极管关断截止或导通闭合。当单片机检测到有声光信号时需要驱动可控硅导通,则单片机给一个高电平信号,经反向器反为低电平,三极管截止,SCR输出端为高,打开可控硅,点亮灯泡。反之,单片机给一个低电平,使三极管导通,SCR端输出为低,可控硅截止,灯泡不亮。4.6 电源设计灯泡的工作电压为220V,但控制器的工作电压为5V,所以必须设计一个电源电路,取得5V的低电压。如图9所示,ZI为9V稳压管,C7C10为滤波电容,D4、.D5为保护二极管,7805为三端稳压管。220V经过整流后,经过Z1稳压输出9V,再经C9和C7滤波输出直流电压,从7805的1脚输出+5V.。图9 电源设计4.7 看门狗电路的设计4.7.1 简介看门狗电路与其作用在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片俗称“看门狗”(Watchdog)。声控开关控制器长时间工作,电路中即有220V的强电,又有+5V的低工作电压,现场的抗干扰在所难免,为避免单片机的程序跑飞,这里加入了看门狗电路,起到抗干扰的作用。X5045将EEPROM、看门狗定时器、电压监控三种功能组合在单个芯片之,大大简化了硬件设计,提高了系统的可靠性,减少了对印制电路板的空间要求,降低了成本和系统功耗,是一种理想的单片机外围芯片。X5045引脚如图10所示。图10 X5045引脚图其引脚功能如下:CS: 芯片选择输入:当CS是高电平时,芯片未选中,并将SO置为高阻态。器件处于标准的功耗模式,除非一个向非易失单元写的周期开始。在CS是高电平时,将CS拉低将使器件处于选择状态,器件将工作于工作功耗状态。在上电后任何操作之前,CS必须要有一个高变低的过程;SO: 串行输出:SO是一个推/拉串行数据输出引脚,在读数据时,数据在SCK脉冲的下降沿由这个引脚送出;SI: 串行输入:SI是串行数据输入器,指令码、地址、数据都通过这个引脚进行输入。在SCK的上升沿进行数据的输入,并且高位(MSB)在前;SCK : 串行时钟输入,其上升沿将数据或命令写入,下降沿将数据输出;WP: 写保护输入:当WP引脚是低电平时,向X5045中写的操作被禁止,但是其他的功能正常。当引脚是高电平时,所有操作正常,包括写操作。如果在CS是低的时候,WP变为低电平,则会中断向X5045中写的操作,但是,如果此时部的非易失性写周期已经初始化了,WP变为低电平不起作用;Vss: 地;Vcc: 电源电压;RESET: 复位输出:PESET是一个开漏型输出引脚。只要Vcc下降到最小允许Vcc值,这个引脚就会输出高电平,一直到Vcc上升超过最小允许值之后200ms。同时它也受看门狗定时器控制,只要看门狗处于激活状态,并且WDI引脚上电平保持为高或者为低超过了定时的时间,就会产生复位信号。CS引脚上的一个下降沿将会复位看门狗定时器。由于这是一个开漏型的输出引脚。所以在使用时必须接上拉电阻。X5045硬件连接图如图11所示。X5045芯片包含有一个看门狗定时器,通过软件预置系统的监控时间后,若在预置的时间看门狗芯片的CS端电平没有发生变化,则X5045将从RESET输出一个高电平信号,使CPU复位图11 看门狗电路4.7.2 X5045特性介绍 (1)可选时间的看门狗定时器。 (2)Vcc的降压检测和复位控制。 (3)5种标准的开始复位电压,使用特定的编程顺序即可对电压检测和复位开始电压进行编程,复位电压可低至Vcc=1V。(4)省电特性:在看门狗打开时,电流小于50uA,在看门狗关闭时,电流小于10uA,在读操作时,电流小于2mA。不同的型号的器件,其供电电压可以是1.8-3.6V、2.7-5.5V、4.5-5.5V。4K位EEPROM,1,000,000次的擦写周期。(5)具有数据的块保护功能可以保护1/4、1/2、全部的EEPROM,当然也可以置于不保护状态。(6)建的防误写措施:用指令允许写操作,写保护引脚。(7)时钟可达3.3M。(8)短的编程时间:16字节的页写模式;写时由器件部自动完成;典型的器件写周期为5ms。4.8. PCB板的制作的设计4.8.1 PROTEL DXP 2004的概述Altium公司2004年最新产品,Protel DXP 2004是一款能极提高PCB设计的完整的板卡级设计软件。它可运行于Windows2000和Windows XP操作系统之上,可实现从概念设计到输出外协加工文件等一系列操作,并对设计过程、设计结果进行分析、验证。Protel DXP 2004不仅能方便经验丰富的PCB工程师,也降低了制作PCB的门槛,人们只需通过段时间培训,便可以很快制作出一块合格的PCB.Protel DXP 2004已经不再是单纯的SCH、PCB设计工具,而是主要由以下几个功能模块组成的系统工具:(1) 分级线路图输入。(2) 自动布局布线。(3) 设计前、后的信号传输效应分析。(4) 规则驱动下的板卡色设计和编辑。(5) Spice 3f5混合电路仿真模拟。(6) 完全支持线路图基础上的FPGA设计。(7) 完整的CAM输出。4.8.2 Protel原理图界面在Protel主界面中单击File>Open命令,在文件路径中选择原理图文件。Protel DXP 2004原理图界面主要包括以下几部分:菜单栏、工具栏、工作窗口等。原理图如下图所示菜单栏DXP(系统)、File(文件)、View(视图)、Project(工程)、Place(放置)、Design(设计)、Tools(工具)、 Peports(报告)等。4.8.3 电路原理图的设计流程在原理图设计时可能会涉与到众多元件的放置,繁多的电气连接。为了保证不出错,需要遵循一定的设计流程。在绘制简单的原理图时按照以下流程绘制即可。(1) 新建项目文件。在项目文件中新建原理图文件。(2) 设置原理图图纸与相关信息,图纸是原理图绘制的工作平台。几乎所有的工作都建立在其上,为原理图设置合适的图纸参数将有利于原理图设计。(3) 添加/删除元件库。在原理图设计中使用的元件符号,需要在绘制之前导入。(4) 放置元件符号,元件符号的放置要遵循电路设计要求,同时要修改元件的属性(当然也可以在后续操作中再进行属性修改)。(5) 电气连接。在原理图中进行电气连接时可以使用导线连接,也可以采用总线连接,还可以使用网络标记进行连接,电气可为PCB设计生成网络报表。(6) 调整原理图并检查错误、修改。在电气连接完成后要根据电路设计进行仔细的检查,确保电路连接的正确性。Protel DXP 2004引入了自动ERC检测功能,能简化设计人员的检查工作。(7) 原理图注释。这是原理图设计不可缺少的部分。注释时要注明原理图的名称、关键点的说明和波形描述等。(8) 原理图保存打印。单击工具栏的保存按钮即可进行保存。值得一提的是,在设计过程中要经常保存以防意外丢失。单击工具栏上的打印预览按钮可以进行打印预览,查看打印效果。若确定无误后即可单击打印按钮进行打印输出。(9) 输出文件。可根据需要选择原理图元件清单输出或网络报表输出等。4.8.4 PCB板的绘制原则(1)电路要有合理的走向对于输出/输入、交流/直流、强/弱信号、高频/低频、高压/低压等,它们的走向应该是分离布线的,不得相互交融,其目的在于防止相互干扰。(2)选择好电路信号的接地点接地点的设置是较复杂而又灵活的,一般情况下要求公共地,现实中,因受各种限制很难完全办到,但应尽力遵循,这个问题在实际中是相当灵活的,每个人都有自己的一套解决方案。(3)合理安排电源滤波/各种退耦滤波电容电源线上的小电容是为开关器件或其他需要滤波/退耦的器件而设置的,布置这些电容就应该尽量靠近这些元器件,离得太远就没有作用了。(4)PCB布线有一定的规则 在PCB板上,有条件加宽的线尽量不做细。高压与高频线应圆滑,不得有尖锐的倒角,拐弯也不得采用直角。地线应尽量宽,最好使用大面积敷铜。(5)谨慎处理来自PCB设计中的问题设计中尽量减少过线孔,由于过线孔太多,在生产中工艺稍有不慎就会埋下隐患。同向并行的线条如果密度过大,则焊接时很容易连成一片,线密度应视焊接工艺水平来确定。焊点的距离太小,将不利于人工焊接,只能以降低工效来解决焊接质量,因此焊点最小距离的确定应综合考虑焊接人员的素质和工效。4.8.5 Protel PCB设计流程通常,PCB的设计是要遵循一定的流程,保证PCB和原理图设计同步,不要有遗漏,这样会使检查更加容易。当然,对于不同的设计人员会有一些差别,概括有以下几个步骤。(1) PCB板的设计准备:由原理图生成网络表,装载PCB元件所在的封装库,如果没有封装的元件,则要绘制出该器件的封装。(2) 根据应用电路的要求,确定PCB板的几何尺寸、形状和层数等参数。(3) 导入网络文件,引入原理图中的信息,采用元件自动布线操作,完成pcb的初步设计。(4) 根据电路的功能分布、布线的要求对Protel DXPde 自动元件布局进行调整,这是PCB设计的重要部分。(5) 对PCB进行自动布线,通常是自动布线和手工布线交替进行,手工布线主要是弥补自动布线的缺陷。(6) PCB的电路检查,填充非元件区、添加安装尺寸和丝印信息根据PCB文件生成BOM报表、导出文件和打印外协加工图纸等。4.8.6 印制电路板(PCB)的绘制过程如下所示:4.8.7 焊制电路板如下所示5. 软件设计5.1 软件设计语言的选择单片机语言的编程一般使用两种语言:C语言和汇编语言。汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器语言的一种语言。其主要的优点是占用资源少,程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占资源较多,执行效率没有汇编高。C语言是一种编译型程序设计语言,它兼顾了许多种高级语言的特点,其具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛用的有顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此使用C语言进行程序的设计已经为软件开发的一个主流。综上所述,用C语言进行单片机程序设计是单片机开发和应用的必然趋势。本设计就采用C语言进行编程,明显的增加了软件的可读性。5.2 程序流程图5.3 主程序设计根据程序流程图,编写主控程序如附录(附录)5.4 延时程序设计 编写程序当中要用到适当的延时,所以先编写一个大概1ms的延时子程序,方便在后面的程序中调用,程序代码见(附录):5.5 TLC2543读写程序设计TLC2543为A/D转换器,编写其读写子程序,到后面主程序中调用。程序代码如下:/TLC2543与单片机的接口定义如下:sib tlc2543-clk = P32;sib tlc2543-din = P 33;sib tl-2543-dout = P34;sib tlc2543-cs = P35;/写命令子程序,返回转换后的电压数字值见(附录)5.6 DS1302驱动程序设计实时时钟芯片DS1302与单片机的接口定义为:Sbit DS1302_sclk =PI7; /*实时时钟时钟线引脚*/ Sbit DS1302_IO =PI6; /*实时时钟数据线引脚*/Sbit DS1302_RST =PI5; /*实时时钟复位线引脚*/ 其读写驱动程序代码见(附录)5.7 X5045驱动程序设计 看门狗X5045与单片机的接口定义为: sbit x5045_cs = P11; sbit x5045_so = P12; sbit x5045_si = P13; sbit x5045_sck= P1*4; 读写驱动程序见(附录):6系统的调试61 调试过程利用KEIL与PROTEUS进行调试,使用步骤如下:(1) 打开KEIL,建立工程,输入程序,编译和生成hex文件,如图所示(2)打开PROTEUES,设计硬件电路图,如图所示(3)导入hex文件,见上图将鼠标置于电路图中GMS97C2051器件上,右击后再左击,弹出对话框,在红框中导入dzp.hex文件。(4) 点击面板左下角的,开始调试。6.2 调试结果与经验总结将程序导入GMS97C2051芯片,调试成功后可以达到设计的要求。通过设计智能声光控开关,加深了对单片机系列的认识。让我更好的运用了本科两年所学的知识,运用于实践,加深了对知识的理解。在设计过程中学习了很多软件的使用,包括硬件部分运用protues进行设计,用keil进行程序编译,用protel进行制板。7总结声光控开关,省事省电,应用广泛,本文应用单片机微控制器,通过软件来实现,采用了过零启动技术,并且加入了看门狗监视器,安全可靠。相信以后在这方面会不断完善,使日常生活更加方便,更加智能化。在设计中初步了解了声光控制电路的工作原理,学会了分析电路、设计电路的方法和步骤。通过本次设计提高了自己对资料的查阅、信息处理的能力,训练了自己的科学研究基本功,培养了知识综合运用能力,增加了对社会普通科学知识的了解,为以后写作专业学术论文打下基础。8附录附录1 延时程序设计设计/延时程序Void delay(unsigned int j) unsigned char i ; while(j-) for (i=125; i> i-) ; 附录2 TLC2543读写程序设计sib tlc2543-clk = P32;sib tlc2543-din = P 33;sib tl-2543-dout = P34;sib tlc2543-cs = P35;/写命令子程序,返回转换后的电压数字值unsigned int tlc2543-write(unsigned char CHN ) unsigned char i ;unsigned int backcode=0;CHN<<=4; 左移4位tlc2543-cs = 1;tlc2543-clk=0;tlc2543-cs = 0;for(i=0; i<12; i+) /写入一12位的数据 if (i<8) if(CHN & 0x80) tlc2543-din = 1; else tlc2543-din = 0; CHN <<=1; backcode <<=1;backcode=tlc2543_dout;tlc2543_clk=1;_nop_();_nop_();Tlc2543_clk=0;Tlc2543_cs = 1;Return(backcode);附录3 DS1302驱动程序设计 实时时钟芯片DS1302与单片机的接口定义为:Sbit DS1302_sclk =PI7; /*实时时钟时钟线引脚*/Sbit DS1302_IO =PI6; /*实时时钟数据线引脚*/Sbit DS1302_RST =PI5; /*实时时钟复位线引脚*/ 其读写驱动程序代码如下: /功能:实时时钟写入一字节Void DS1302WriteByte(unsigned char d) unsigned char i; unsigned char temp; temp = d; for(i=8; i>0; i-) If(temp& 0x01) DS1302_IO = 1; else DS1302_IO = 0; DS1302_SCLK = 1;Temp = temp >> 1; _nop_(); DS1302_SCLK = 0; /功能:实时时钟读取一字节Unsigned char DS1302ReadByte(void) Unsigned char DS1302ReadByte(void0 Unsigned char i; Unsigned char dat; For(I = 8; i>0; i-) dat = da