LED灯智能控制系统的设计和实现_第1页
LED灯智能控制系统的设计和实现_第2页
LED灯智能控制系统的设计和实现_第3页
LED灯智能控制系统的设计和实现_第4页
LED灯智能控制系统的设计和实现_第5页
已阅读5页,还剩46页未读, 继续免费阅读

下载本文档

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

文档简介

LELEwasfinallyrevisedonthemorningofDecember16,2020LELEwasfinallyrevisedonthemorningofDecember16,2020LED灯智能控制系统的设计和实现LED灯智能控制系统的设计和实现摘要该LED灯智能控制系统采用STC89C52RC单片机为核心,利用单片机的端口分别控制数码管和DS1302实时时钟系统、ADC0832,DAC0832智能操控照明系统。我们常见的路灯、过道灯、草坪灯、广告箱灯、霓虹灯和厕所等公共场所用的一些照明灯往往彻夜通明,这不仅浪费能源,在某种程度上也造成了光污染。在今天电力能源供应比较紧张的情况下,在没有人员活动的深夜让这些灯自动关掉,不仅可以节约能源,也能够节约一些开支。本文主要介绍系统的开发背景,意义,并重点介绍了硬件设计和软件设计的过程。在硬件方面,从元件,模块,系统逐级阐述,特别是系统的核心部分STC89C52RC,并用ALTIUMDESIGNER软件对原理图和电路板的制作。软件方面,用现阶段比较流行的单片机C语言编程,利用定时器中断控制标准时钟。其中介绍了单片机仿真软件KEILC51的使用。关键词:STC89C52RC光敏电阻pwmAbstractThisnightflaresystemisansystembasedontheSTC89C52RCmonolithicintegratedcircuit,itmakesuseoftheportofmonolithicintegratedtocontroltheLEDstandardclocksystem,thesilicon-controlledrectifierandtheelectricbellseparatelyandthenthelightingsystemwascontrolledbyintelligence.Somecommonstreetswhichareinpublicplaces,suchas:theaislewaylight,thelawnlamp,theadvertisementboxlamp,theneonlightandtherestroomandsoonthepublicplaceusessomeflaresoftenallnightarebrightlylit,thisisnotonlywastingofenergy,butalsomaketheraypollutioninsomekindofprocedure.Nowaday,theelectricpowerenergyisinshortsupply,soifweturnoffsomewhenthereisnopeople,itisnotexpenses.Inthisarticle,itintroducesthesystematicdevelopmentbackground,thesignificanceandespeciallytheprocessofthehardwaredesignandthesoftwaredesign.Inthehardwareaspect,thisarticleelaboratesthepart,themodule,thesystemonebyone,especiallythecoreofthesystemSTC89C52RC,andusestheALTIUMDESIGNER.Softwaretotheschematicdiagramandtheelectriccircuitboardmanufacture.InthesoftwareaspectwiththepresentstagequitepopularmonolithicintegratedcircuitClanguageprogramming,usesthetimerinterruptcontrolstandardclock.Finallyitwasthesoftwareandhardwaredebugging,inwhichintroducedtheinstatonsofthestationsofmonolithicintegratedcircuitsimulationsoftwareKEILC51use.Keyword:silicon-controlledrectifierSTC89C52RCpwm目录摘要 IAbstract II第一章绪论 1课题研究的背景 1开发的意义 1课题研究的方案 1第二章芯片选用说明 2STC89C52RC 2相关芯片及其引脚分析 2ADC0832 6 7LED数码管 10LED数码管编码方式 11LED数码管显示方式和典型应用电路 12DS1302数字时钟芯片 13DS1302的控制字节 14数据输入输出(I/O) 14DS1302与CPU的连接 14光敏电阻 15第三章方案论证及部分电路分析 16方案论证和比较 16单片机的最小应用系统 17单片机的时钟电路 17复位电路和复位状态 18总线结构 21标准时钟显示部分设计: 22光敏接收电路 22接键可调部分 26系统照明 27第四章系统的软件设计 28总结 33致谢 34参考文献: 35附录一:原理图 36附录三:程序清单 39第一章绪论课题研究的背景随着现代科技的飞速发展,单片机已经在各个领域得到越来越广泛的应用。单片机由于体积小,功耗低两个基本特征,在通讯,家电,工业控制,仪器仪表,汽车等产品中都可以看到单片机的身影。单片机技术也随着集成电路技术的进步在近几年飞速的发展,这种发展可以分为两方面:一方面在硬件上单片机内部集成了越来越多的功能部件,如A/D,D/A,PWM,WATCHDOG,LCD驱动,串行口,大容量FLASH存储器等;另一方面在开发手段上从汇编语言向高级C语言过度,计算机仿真调试,IAP,ISP技术的应用使单片机开发周期大大的缩短,为各类产品更新,软件的升级提供了可靠的技术保障。在设计单片机应用系统时,由于历史的原因,目前在国内仍然以8051系列单片机为主。作为电子专业的学生,非常有必要通过实际产品的设计和制作,了解现代IT产品的开发全流程。全面提高机,电,光,算知识的综合应用能力,掌握从系统级,电路级,到芯片级各个层次的设计和实现手段。基于上述原因,选择此设计课题,在此设计过程中,我们将会用到多门学科的理论知识,将对以前所学的知识做一个全面的复习和巩固,更重要的是培养了发现问题,分析问题,解决问题的能力,还有动手能力,也是一次很好的实践,对以后的学习和工作也会有所帮助。开发的意义科技的进步带动了产品的智能化,单片机的应用更是加快了发展的步伐,它的应用范围日益广泛,已远远超出了计算机科学的领域。小到玩具、信用卡,大到航天器、机器人,从实现数据采集、过程控制、模糊控制等智能系统到人类的日常生活,到处都离不开单片机,此设计正是单片机的一个典型应用。而此设计可以通过实现智能照明控制,通过对环境有无需要光照的检测,由单片机来控制其反应情况,使其变得智能化,使人的手解放出来,此系统还可以应用到道路检测,安全巡逻中,能满足社会的需要。课题研究的方案本选题是用单片机介绍一种使用STC89C52RC单片机制作的夜用照明灯智能控制器,采用智能节电工作模式,即在天黑后自动开灯,到晚上0点后到第二天6点根据热释红外探测的周围环境有没有人来控制灯亮并延时关闭,由于本系统采用单片机对环境照度进行测试判断并进行计算,因此电路能随着季节的变化自动调节每天的开关灯的时间,从而达到自动节约电能的目的。第二章芯片选用及功能阐述STC89C52RC2.1.1相关芯片及其引脚分析由于Intel公司的单片机问世早、产品系列齐全、兼容性强,得到了广泛的应用,目前我国主要使用MCS-51系列的产品,尤以8031为多。这是因为8031无片内ROM、应用灵活、价格便宜。MCS-51是Intel公司的8位系列单片机,包括51和

52两个子系列。51子系列有8031、8051、8751;52子系列有8032、8052。52子系列的不同在于它多具有定时/计数器2及具有256B的内部数据存储器。MCS-51结构框图1)主要性能[2] 内部程序存储器:4KB 内部数据存储器:128B 外部程序存储器:可扩展到64KB。 外部数据存储器:可扩展到64KB。 输入/输出口线:32根(4个端口, 每个端口8根)。 定时/计数器:2个16位可编程的定时计数器。 串行口:全双工,二根。 寄存器区:在内部数据存储器的128B中划出一部分作为寄存器区, 分为四个区, 每个区8个通用寄存器。 中断源:5个中断源,2个优先级别。 堆栈:最深128B。 布尔处理机:即位处理机, 对某些单元的某位做单独处理。 指 令系统(系统时钟为12MHZ时):大部分指令执行时间为1us;少部分指 令,执行时间为2us;只有乘、除指令的执行时间为4us。2)引脚功能说明图2-2是MCS-51的引脚结构图,有双列直插封装(DIP)方式和方形封装方式。下面分别叙述这些引脚的功能。(1)主电源引脚1 VCC:电源端。2 GND:接地端。(2)外接晶体引脚XTAL1和XTAL2①XTAL1:晶体振荡器接入的一个引脚。当采用外部振荡器时,此引脚接地。②XTAL2:晶体振荡器接入的另一个引脚。采用外部振荡器时,此引脚作为外部振荡信号的输入端。(3)控制或与其他电源复用引脚RST,ALE/,/Vpp1 RST:复2 位输H入端。当振荡器运行时,3 在该引脚上出现两个机器周期的高电平将使单片机复4 位。5 ALE/:当访问外部存储器时,6 ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不7 访问外部存储器,8 ALE端仍以不9 变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,10 它可用作对外输出的时钟,11 或用于定时目的。然而12 注意的是:每当访问外部数据存储器时,13 将跳过一个ALE脉冲。在对Flash存储器编程期间,14 该引脚还用于输入编程脉冲()。如果需要的话,通过对专用寄存器(SFR)区中8EH单元的D0位置数,可禁止ALE操作。该位置数后,只有在执行一条MOVX或MOVC指令期间,ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,该设定禁止ALE位无效。③:程序存储允许()输出是外部程序存储器的读选通信号。当80C51由外部程序存储器取指令(或常数)时,每个机器周期两次有效(即输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的信号将不出现。④/Vpp:外部访问允许端。要使CPU只访问外部程序存储器(地址为0000H~FFFFH),则端必须保持低电平(接到GND端)。然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存端的状态。当端保持高电平(接Vcc端)时,CPU则执行内部程序存储器中的程序。在Flash存储器编程期间,该引脚也用于施加12V的编程允许电源Vpp(如果选用12V编程)。(4)输入/输出引脚~,~,~和~。①P0端口(~):P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。在Flash编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻②P1端口(~):P1是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在对Flash编程和程序校验时,P1接收低8位地址。③P2端口(~):P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX@DPTR指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。在对Flash编程和程序校难期间,P2也接收高位地址和一些控制信号。④P3端口(~):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在STC89C52RC中,P3端口还用于一些复用功能。复用功能如表2-1所列。在对Flash编程或程序校验地,P3还接收一些控制信号。表2-1P3各端口引脚与复用功能表端口引脚复用功能RXD(串行输入口)TXD(串行输出口)P(外部中断0)P(外部中断1)T0(定时器0的外部输入)PT1(定时器1的外部输入)P(外部数据存储器写选通)P(外部数据存储器读选通)MCS-51的引脚结构ADC0832的功能及设置说明ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。ADC0808管脚图·8位分辨率;·双通道A/D转换;·输入输出电平与TTL/CMOS相兼容;·5V电源供电时输入电压在0~5V之间;·工作频率为250KHZ,转换时间为32μS;·一般功耗仅为15mW;·8P、14P—DIP(双列直插)、PICC多种封装;·商用级芯片温宽为0°Cto+70°C,工业级芯片温宽为−40°Cto+85°C;芯片接口说明:·CS_片选使能,低电平芯片使能。·CH0模拟输入通道0,或作为IN+/-使用。·CH1模拟输入通道1,或作为IN+/-使用。·GND芯片参考0电位(地)。·DI数据信号输入,选择通道控制。·DO数据信号输出,转换数据输出。·CLK芯片时钟输入。·Vcc/REF电源输入及参考电压输入(复用)。ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。2.3.3ADC0832的内部结构和时序图:工作时序图:由时序图知ADC0832的工作过程如下:正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,其功能项见官方资料。程序如下:

;ADC0832简单测试(改)A_0832_CSEQU;CSA_0832_CLKEQU;CLKA_0832_DIEQU;DIA_0832_DEQU;DOA_0832_TEQU40H;读取时的脉冲计数A_0832_DAEQU41H;数据所存位置ORG0LJMPMAINORG30HMAIN:LCALLADC_RDMOVA,A_0832_DAAJMP$ADC_RD:MOVA_0832_T,#8CLRA_0832_CLKCLRA_0832_CSSETBA_0832_DI;STARTSETBA_0832_CLK;第一个上升沿NOPNOPNOPCLRA_0832_CLKNOPNOPSETBA_0832_DI;选择CH1,通过组合选取通道(SGL/DIF)NOPSETBA_0832_CLK;第二个上升沿NOPNOPNOPCLRA_0832_CLKNOPNOPSETBA_0832_DI;选择CH1,通过组合选取通道(ODD/SIGN)NOPSETBA_0832_CLK;第三个上升沿NOPNOPNOPCLRA_0832_CLK;首个下降沿NOPNOPNOPSETBA_0832_CLKNOPNOPA_0832_RD:;读取前,8位CLRA_0832_CLKNOPNOPNOPSETBA_0832_CLKMOVC,A_0832_DRLCADJNZA_0832_T,A_0832_RDMOVA_0832_DA,ARRAMOVA_0832_T,#7A_0832_RD1:;读后7位,+前1位CLRA_0832_CLKNOPNOPNOPSETBA_0832_CLKMOVC,A_0832_DRRCADJNZA_0832_T,A_0832_RD1CJNEA,A_0832_DA,ADC_RDSETBA_0832_CSRETENDLED数码管LED数码管是由发光二极管作为显示字段的数码型显示器件。图4-3a为数码管的外形和引脚图,其中七只发光二极管分别对应a~g笔段构成“”字形另一只发光二极管Dp作为小数点。因此这种LED显示器称为七段数码管或八段数码管。图4-3LED数码管LED数码管按电路中的连接方式可以分为共阴型和共阳型两大类,如图4-3示b、c所示。共阳型是将各段发光二极管的正极连在一起,作为公共端COM,公共端COM接高电平,a~g、Dp各笔段通过限流电阻接控制端。某笔段控制端低电平时,该笔段发光,高电平时不发光。控制这几段笔段发光,就能显示出某个数码或字符。共阴型是将各数码发光二极管的负极连在一起,作为公共端COM接地,某笔段通过限流电阻接高电平时发光。LED数码管按其外形尺寸有多种形式,使用较多的是0.5in和0.8in;按显示颜色也有多种形式,主要有红色和绿色;按亮度强弱可分为高亮和普亮,指通过同样的电流显示亮度不一样,这是因发光二极管的材料不一样而引起的。LED数码管的使用与发光二极管相同,根据其材料不同正向压降一般为~2V额定电流为10mA,最大电流为40mA。静态显示时取10mA为宜,动态扫描显示可加大,加大脉冲电流,但一般不超过40mA。2.4.2LED数码管编码方式当LED数码管与单片机相连时,一般将LED数码管的各笔段引脚a、b、…、g、Dp按某一顺序接到MCS-51型单片机某一个并行I/O口D0、D1、…、D7,当该I/O口输出某一特定数据时,就能使LED数码管显示出某个字符。例如要使共阳极LED数码管显示“0”,则a、b、c、d、e、f各笔段引脚为低电平,g和Dp为高电平,。表4-2共阳极LED数码管显示数字“0”时各管段编码D7D6D5D4D3D2D1D0字段码显示数Dpgfedcba11000000C0H0C0H称为共阳极LED数码管显示“0”的字段码,不计小数点的字段码称为七段码,包括小数点的字段称为八段码。LED数码管编码方式有多种,按小数点计否可分为七段码和八段码;按共阴共阳可分为共阴字段码和共阳字段码,不计小数点的共阴字段码与共阳字段码互为反码;按a、b、…、g、Dp编码顺序是高位在前,还是低位在前,又可分为顺序字段码和逆序字段码。甚至在某些特殊情况下将a、b、…、g、Dp顺序打乱编码。表4-2为共阴和共阳LED数码管几种八段编码表。[15]表4-3共阴和共阳LED数码管几种八段编码共阴顺序小数点暗共阴逆序小数点暗共阳顺序小数点亮共阳顺序小数点暗Dpgfedcba16进制abcdefgdp16进制0001111113FH11111100FCH40HC0H10000011006H0110000060H79HF9H2010110115BH11011010DAH24HA4H3010011114FH11110010F2H30HB0H40110011066H0110011066H19H99H5011011016DH10110110B6H12H92H6011111017DH10111110BEH02H82H70000011107H11100000E0H78HF8H8011111117FH11111110FEH00H80H9011011116FH11110110F6H10H90H2.4.3LED数码管显示方式和典型应用电路LED数码管显示电路在单片机应用系统中可分为静态显示方式和动态显示方式。①静态显示方式在静态显示方式下,每一位显示器的字段需要一个8位I/O口控制,而且该I/O口须有锁存功能,N位显示器就需要N个8位I/O口,公共端可直接接+5V(共阳)或接地(共阴)。显示时,每一位字段码分别从I/O控制口输出,保持不变直至CPU刷新显示为止。也就是各字段的亮灭状态不变。静态显示方式编程较简单,但占用I/O口线多,即软件简单、硬件成本高,一般适用显示位数较少的场合。②动态扫描显示方式当要求显示位数较多时,为简化电路、降低硬件成本,常采用动态扫描显示电路。所谓动态扫描显示电路是将显示各位的所有相同字段线连在一起,每一位的a段连在一起,b段连在一起…g段连在一起,共8段,由一个8位I/O口控制,而每一位的公共端(共阳或共阴COM)由另一个I/O口控制,如图4-4所示。这种连接方式由于将多位字段线连在一起,当输出字段码时,由于多门同时选通,每一位将显示相同的内容。因此要显示不同的内容,必须采取轮流显示的方式。即在某一瞬间时,只让某一位的字位线处于选通状态(共阴极LED数码管为低电平,共阳极为高电平),其他各位的字位线处于开断状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位暗。同样在下一瞬时,单独显示下一位,这样依次轮流显示,循环扫描。由于人的视觉滞留效应,人们看到的是多位同时稳定显示。、图4-4动态显示LED数码管连接方式DS1302数字时钟芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为~。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。下图为DS1302的引脚功能图:2.5.1DS1302的控制字节DS1302的控制字最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。2.5.2数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD。2.5.3DS1302与CPU的连接实际上,在调试程序时可以不加电容器,只加一个的晶振即可。只是选择晶振时,不同的晶振,误差也较大。光敏电阻光敏电阻器(photovaristor)又叫电阻,是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。通常,光敏电阻器都制成薄片结构,以便吸收更多的光能。当它受到光的照射时,半导体片(光敏层)内就激发出电子—空穴对,参与导电,使电路中电流增强。一般光敏电阻器结构如图所示。本电路采用3K—5M的光敏电阻。74HC13874HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC138译码器可接受3位二进制加权地址输入(A0,A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。功能CD74HC138,CD74HC238和CD74HCT138,CD74HCT238是高速硅栅CMOS解码器,适合内存地址解码或数据路由应用。74HC138作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。HC138按照三位二进制输入码和赋能输入条件,从8个输出端中译出一个低电平输出。两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器,扩展成24线译码器不需外接门;扩展成32线译码器,只需要接一个外接倒相器。在解调器应用中,赋能输入端可用作数据输入端。译码/真值表第三章方案论证及部分电路分析3.1.1方案论证和比较采用STC89C52RC微处理芯片,来控制智能照明系统,具体方框图如图5所示:本设计采用光敏电阻测试环境亮度经放大后通过ADC0808转换成数字信息传送到STC89C52RC单片机,经处理后送给DAC0808通过功放和电压比较控制LED灯的亮度。同时电路从实时时钟获得精确时间,配合红外电路的是否有人来控制下半夜的灯亮灭,达到节电的目的。数码管显示按键设置部分数码管显示按键设置部分光敏电阻接收电路光敏电阻接收电路AT89AT89c微处理器基本外围基本外围(晶振和复位)电路图5由于本系统处理任务不复杂,所以在标准时钟电路采用模拟口线方式。电源采用7805稳压集成芯片来提供稳定单片机夜用照明系统的电源,从而能够稳定的工作。综合以上三种设计方案,第一种精度较低,而且各部分全部采用模拟器件来组成部分,制作复杂;第二种采用CPLD元件来组成,要求对硬件描述语言(VHDL)要求较高,且控制时间准确,电路工作稳定;第三种方案采用单片机(AT89C/S52或者AT89C2051单片机的最小应用系统单片计算机是一个最小的应用系统,但由于应用系统中有一些功能器件无法集成到芯片内部,如晶振、复位电路等,需要在片外加接相应的电路。对于片内无程序存储器的单片机,还应该配置片外程序存储器。3.2.1单片机的时钟电路MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。MCS-51单片机的时钟产生方式有两种。(1)内部时钟方式利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出的时钟信号。最常用的是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激震荡器,如图3-1所示。晶体可在~12MHz之间选择。MCS-51单片机在通常应用情况下,使用振荡频率为6MHz的石英晶体,而12Hz频率的晶体主要是在高速串行通信情况下才使用。C1和C2可在20~100pF之间取值,一般取30pF左右。(2)外部时钟方式在由单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入惟一的合用外部振荡脉冲作为各单自片机的时钟。外部时钟方式中是把外部振荡信号源直接接入XTAL1或XTAL2。由于HMOS和CHMOS单片机外部时钟进入的引线不同,其外部振荡信号源接入的方式也不同。HMOS型单片机由XTAL2进入,外部振荡信号接至XTAL2,而内部反相放大器的输入端XTAL1应接地,如图3-2所示。由于XTAL2端的逻辑电平不是TTL的,故还要接一上接电阻。CHMOS型单片机由XTAL1进入,外部振荡信号接至XTAL1,而XTAL2可不接地,如图3-3所示。图3-1内部时钟电路图3-2HMOS型外部时钟电路图3-3外部时钟电路3.2.2复位电路和复位状态MCS-51单片机的复位是靠外部电路实现的。MCS-51单片机工作后,只要在它的RST引线上加载10ms以上的高电平,单片机就能够有效地复位。(1)复位电路MCS-51单片机通常采用上电自动复位和按键复位两种方式。最简单的复位电路如图3-4所示。上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。图3-4简单的复位电路(2)复位状态复位电路的作用是使单片机执行复位操作。复位操作主要是把PC初始化为0000H,使单片机从程序存储器的0000H单元开始执行程序。程序存储器的0003H单元即MCS-51单片机的外部中断0的中断处理程序的入口地址。留出的0000H~0002H3个单元地址,仅能够放置一条转移指令,因此,MCS-51单片机的主程序的第一条指令通常情况下是一条转移指令。除PC之外,复位还对其他一些特殊功能的寄存器有影响,它们的复位状态如表3-6所示。由表3-6可知,除SP=07H,P0~P34个锁存器均为FFH外,其他所有的寄存器均为0。此外,单片机的复位不影响片内RAM的状态(包括通用寄存器Rn)。表3-6寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTMOD00HACC00HTCONOOHPSW00HTL000HSP07HTH000HDPTR0000HTL100HP0~P3FFHTH100HIPXxx00000BSCON00HIE0xx00000BPCON0xx00000BP0、P1、P2、P3共有4个8位并行I/O口,它们引线为:~、~、~、~,共32条引线。这32条引线可以全部用做I/O线,也可将其中部分用做单片机的片外总线。①控制线A、ALE地址锁存允许当单片机访问外部存储器时,输出信号ALE用于锁存P0口输出的低8位地址A7~A0。ALE的输出频率为时钟振荡频率的1/6。B、程序存储器选择=0,单片机只访问外部程序存储器。对内部无程序存储器的单片机8031,必须接地。=1,单片机访问内部程序存储器,若地址超过内部程序存储器的范围,单片机将自动访问外部程序存储器。对内部有程序存储器的单片机,应接高电平。C、片外程序存储器的选通信号。此信号为读外部程序存储器的选通信号。D、RST复位信号输入②电源及时钟VSS地端接地线,VCC电源端接+5V,XTAL1和XTAL2接晶振或外部振荡信号源。图3-7片外3总线结构标准时钟显示部分设计:设计采用DS1302作为实时时钟芯片,配用备用电源保证时间准确。DS1302采用的IIC总线,在本系统中属于核心部分,在设计中,我把他放在了单片机的旁边,这样的设计有助于提高系统的可靠性。光敏接收电路光敏接收电路是有分压电阻和放大电路和ADC0832组成。光敏电阻的阻值随光照强度的变化而变化结合分压电阻完成对环境光强度的探测,经过AR2放大后送ADC032转换成八位二进制的数字量送单片机处理。照度检测电路在硬件设计过程中要调节好它和led的位置,这样有助于调光的准确性。系统照明照明部分有DAC0808和LM324组成。单片机送来的数据经过DA转换后通过74LS373锁存然后经LM324放大,经电阻R43分压后驱动高亮度LED形成照明电路。照明电路pwm控制方式脉冲宽度调制(PWM),是英文“PulseWidthModulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。与此类似,从电池吸收的电流也不限定在一组可能的取值范围之内。模拟信号与数字信号的区别在于后者的取值通常只能属于预先确定的可能取值集合之内,例如在{0V,5V}这一集合中取值。通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。脉冲宽度调制优点PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术第四章系统的软件设计主程序主要完成系统初始化(包括I/O口初始化、DS11302芯片读写)、按键检测和处理、时钟数据的读取和显示、环境数据的读取和显示,以完成人机交互的功能。系统主程序的流程图如图5-1所示。PWM生成法—光照调节由于微机技术的发展使得用软件生成PWM波形变得比较容易,因此,软件生成法也就应运而生.软件生成法其实就是用软件来实现调制的方法。本系统采用STC89C52RC单片机的定时器1来实现PWM的调光,通过给予TH1,TL1不同的数值来改变时间,从而达到控制LED亮度的目的。DS1302数据处理由于单片机从DS1302中读取的数据位十六进制数据,所以我们要把这些数据变位十进制数据来显示,转换程序如下。ucharhexTodec(unsignedcharhex){if(hex<0x0a)returnhex;else{hex=hex/10+6;returnhex}到凌晨了吗?启动时钟并显示开始到凌晨了吗?启动时钟并显示开始读ADC0832初始化读ADC0832初始化没有,延时灯灭输出DAC0832有灯亮没有,延时灯灭输出DAC0832有灯亮读1302读1302调节亮度调节亮度总结通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。通过本次的毕业设计,从中我更加深刻的理解了书本上的知识。对于51单片机的使用更加熟练,一些基本的内部模块使用也趋于熟练,如I/O口操作,定时器,中断。掌握了PWM调节照度的基本原理和实现方法,能够较为熟练地使用。对于编程软件KEIL的使用也得心应手,此次软件编写过程中,部分程序使用了KEIL的模拟仿真器调试,节省了很多时间,也提高了软件的可靠性。这次设计因为个人能力有限,作品也存在着很多问题,如没有做好人体检测部分,这说明了在模拟电路方面我还有一些欠缺。PWM调光的调试时间过长,对于PWM的原理还不是完全通透,有待于提高。致谢在毕业设计期间,我得到了许多热心的教师、同学的帮助,在此表示深深的谢意。首先,我衷心地感谢我的导师。他耐心的教诲和严谨的态度使我受益匪浅,正是他在各方面的精心指导才使我最终完成了课题。最后,我不能不对在百忙之中抽出宝贵时间来参加参加论文评阅的各位教师表示由衷的谢意,他的的指导不但能修正论文中的错误,而且也使我得以真知。由于本人学识有限,文中必有不妥之处,敬请各位教师批评指正。参考文献:[1]刘文涛单片机语言C51典型应用设计[M]人民邮电出版社2005,1(1):5-8[2]求是科技单片机典型模块设计实例导航[M]人民邮电出版社1995,1(4):32-34[3]赵亮侯国锐单片机C语言编程与实例[M]人民邮电出版社1995,1(6):37-38[4]稻叶保[日]振荡电路的设计与应用[M]科学出版社1997,19(3):71-72[5]猪饲国夫本多中二[日]数字系统设计[M]科学出版社1998,1(2):122-124[6]铃木雅臣[日]晶体管电路设计(上)(下)[M]科学出版社2003,1(6):92-93[7]冈村迪夫[日]OP放大电路设计[M]科学出版社2003,1(6):92-93[8]杨帮文应用电路百例丛书新型集成器件实用电路[M]电子工业出版社,2004,1(34):13-14[9]求是科技李现通串口通信技术与工程实践[M]人民邮电出版社2001,3(2):56-58[10]杨金岩8051单片机数据传输接口扩展技术与应用实例[M]人民邮电出版社1996,1(2):1-5[11]keilc51的使用[M]人民邮电出版社1998,1(2):122-124[12]STC公司STC89C52RC的技术手册[J].[13]深圳市中源单片机发展有限公司[J]AT89C52Datasheets.[14][15]2004/06/08[16][17],Editor.ThePoint-to-PointProtocol,RFC1661[EB/OL].July1994[18]WAVECOM.ATCommandsInterfaceGuide,Revision002[EB/OL].6thNovember200附录一:原理图附录3:程序清单/******************************************************************//*LED控制器程序*//******************************************************************/#include<>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<>#include""voidmain(void){InitTIMER0();//初始化定时器0 Write_Ds1302(0x8E,0X00);//写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽 Write_Ds1302(0x8E,0x80); //虚拟一次写1302 Set_RTC(); while(1) { if(ReadRTC_Flag)//是否读1302 { ReadRTC_Flag=0;//清0 Read_RTC(); //读时钟函数 l_tmpdisplay[0]=l_tmpdate[2]/16; //数据的转换,因我们采用数码管0~9的显示,将数据分开 l_tmpdisplay[1]=l_tmpdate[2]&0x0f;//读取小时 l_tmpdisplay[2]=10; //加入"-" l_tmpdisplay[3]=l_tmpdate[1]/16; l_tmpdisplay[4]=l_tmpdate[1]&0x0f;//读取分钟 l_tmpdisplay[5]=10; l_tmpdisplay[6]=l_tmpdate[0]/16;//读取秒 l_tmpdisplay[7]=l_tmpdate[0]&0x0f; } Set_Time();//是否需要调解时间? light_control();//照度检测及亮度控制 }}/******************************************************************//*定时器中断函数*//******************************************************************/voidtim(void)interrupt1using1//中断,用于数码管扫描{staticunsignedchari,num;TH0=0xf5;TL0=0xe0; P0=table[l_tmpdisplay[i]]; //查表法得到要显示数字的数码段switch(i) { case7:LS138A=0;LS138B=0;LS138C=0;break; case6:LS138A=1;LS138B=0;LS138C=0;break; case5:LS138A=0;LS138B=1;LS138C=0;break; case4:LS138A=1;LS138B=1;LS138C=0;break; case3:LS138A=0;LS138B=0;LS138C=1;break; case2:LS138A=1;LS138B=0;LS138C=1;break; case1:LS138A=0;LS138B=1;LS138C=1;break; case0:LS138A=1;LS138B=1;LS138C=1;break; } i++; if(i==8) { i=0; num++; if(10==num)//隔段时间读取1302的数据。时间间隔可以调整 { ReadRTC_Flag=1;//使用标志位判断 num=0; } }}sbitSCK=P2^0; //时钟 sbitSDA=P2^1; //数据 sbitRST=P2^2;//DS1302复位sbitLS138A=P1^3;sbitLS138B=P1^4;sbitLS138C=P1^5;//74hc138端口定义sbitKey1=P3^7;sbitKey2=P3^6;sbitKey3=P3^5; //时间调节按键定义bitReadRTC_Flag;//定义读DS1302标志unsignedcharl_tmpdate[7]={0,53,7,15,5,3,8};//秒分时日月周年08-05-1512:00:00unsignedcharl_tmpdisplay[8];codeunsignedcharwrite_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//秒分时日月周年最低位读写位codeunsignedcharread_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};codeunsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //共阴数码管0-9'-''熄灭‘表/******************************************************************//*函数声明*//******************************************************************/ voidWrite_Ds1302_byte(unsignedchartemp);voidWrite_Ds1302(unsignedcharaddress,unsignedchardat);unsignedcharRead_Ds1302(unsignedcharaddress);voidRead_RTC(void);//readRTCvoidSet_RTC(void);//setRTCvoidInitTIMER0(void);//initaltimer0voidSet_Time(void);voiddelay(unsignedintz);/******************************************************************//*延时函数*//******************************************************************/voiddelay(unsignedintz){unsignedintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}/******************************************************************//*定时器0初始化*//******************************************************************/voidInitTIMER0(void){TMOD|=0x01;//定时器设置16位TH0=0xef;//初始化值TL0=0xf0;ET0=1;TR0=1;EA=1;}/******************************************************************//*写一个字节*//******************************************************************/voidWrite_Ds1302_Byte(unsignedchartemp){unsignedchari;for(i=0;i<8;i++) //循环8次写入数据{SCK=0;SDA=temp&0x01;//每次传输低字节temp>>=1; //右移一位SCK=1;}}/******************************************************************//*写入DS1302*//******************************************************************/voidWrite_Ds1302(unsignedcharaddress,unsignedchardat){ RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_();//启动 Write_Ds1302_Byte(address); //发送地址 Write_Ds1302_Byte(dat); //发送数据 RST=0; //恢复}/******************************************************************//*读出DS1302数据*//******************************************************************/unsignedcharRead_Ds1302(unsignedcharaddress){ unsignedchari,temp=0x00; RST=0; _nop_(); _nop_(); SCK=0; _nop_(); _nop_(); RST=1; _nop_(); _nop_(); Write_Ds1302_Byte(address); for(i=0;i<8;i++) //循环8次读取数据 { if(SDA) temp|=0x80; //每次传输低字节 SCK=0; temp>>=1; //右移一位 _nop_(); _nop_(); _nop_(); SCK=1; } RST=0; _nop_(); //以下为DS1302复位的稳定时间 _nop_(); RST=0; SCK=0; _nop_(); _nop_(); _nop_(); _nop_(); SCK=1; _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); SDA=1; _nop_(); _nop_(); return(temp); //返回}/******************************************************************//*读时钟数据*//******************************************************************/voidRead_RTC(void) //读取日历{unsignedchari,*p;p=read_rtc_address; //地址传递for(i=0;i<7;i++) //分7次读取秒分时日月周年{l_tmpdate[i]=Read_Ds1302(*p);p++;}}/******************************************************************//*设定时钟数据*//******************************************************************/voidSet_RTC(void) //设定日历{ unsignedchari,*p,tmp; for(i=0;i<7;i++){//BCD处理 tmp=l_tmpdate[i]/10; l_tmpdate[i]=l_tmpdate[i]%10; l_tmpdate[i]=l_tmpdate[i]+tmp*16; } Write_Ds1302(0x8E,0X00); p=write_rtc_address; //传地址 for(i=0;i<7;i++) //7次写入秒分时日月周年 { Write_Ds1302(*p,l_tmpdate[i]); p++; } Write_Ds1302(0x8E,0x80);}/******************************************************************//*调节时钟数据*//******************************************************************/voidSet_Time(void){unsignedcharnumber=0; if(Key1==0) {delay(300); if(Key1==0) { while(!Key1);//按键检测 number++; while(number==1) { if(Key1==0) { delay(300);

温馨提示

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

评论

0/150

提交评论