




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能定时电源开关设计方案第1章 绪论1.1 智能定时电源开关研究的目的和意义随着社会电子科学技术正在飞速地发展,电子系统的应用领域越来越广泛,电子设备的种类也越来越多,电子设备与人们的工作、生活的关系日益紧密,人们极大地享受着电子设备带来的便利,但是任何电子设备都有一个共同的电路电源电路,大到超级计算机,小到袖珍计算器,所有的电子设备都必须在电源电路的支持下才能正常工作,因此电源也就理所当然地成了各种电子设备不可或缺的组成部分,其性能优劣直接关系到电子设备的技术指标及能否安全可靠的工作。但人们常用的电源并不具备定时开启和关闭的功能,或许就由于这个原因给人们带来了很多没必要的损失和不便,譬如:家里空调如果可以自己设置开启和关闭的时间,就可以大大减少用电量;初高中上完晚自习后,空空的教室里还是灯火通明。家中的热水器不能自由设置开启关断时间而给人们带来一时不便;学校的起床广播因值班人员睡过头而推迟广播;家中的鱼缸因太久没有供氧造成鱼儿缺氧死亡;许多球迷或新闻爱好者因错过了开机时间而与精彩球赛或新闻擦肩而过;夏天里风扇的定时时间过短(一般为一小时),不便于晚上分段定时使用等等。智能电源定时开关就是要实现人为的设置电源接通关断的时间,可以任意的设置24小时之内的任意一段或多段时间作为电源的开启或管段时间,这样就可以实现用电设备的通电开启与关闭的人为控制,节省大量电能,而且可以自动循环定时,只要开始工作,不需要每天设置时间,在节约用电的同时也给人们的生活带来很大的方便。所以,研究智能电源定时开关,有着非常现实的意义。当今社会,智能电源定时开关可以广泛应用于工业自动化控制、军工设备、科研设备、LED照明、通讯设备、电力设备、仪器仪表等领域。它不仅体积小重量轻,并且电源效率非常高,效率甚至能达到90%以上。迅速发展的社会,对能源的要求越来越高,智能电源定时开关的高效率不仅节省了大量电能,而且节省了大量材料,高效率的定时开关电源成为各种设备可靠工作的重要保证。调查发现,大多数的设备损坏都是电源造成的,因而研究高可靠行的智能电源定时开关,对生产生活是至关重要的。1.2 智能定时电源开关目前国内外研究现状随着科学技术的进步,我国的电力电子技术和电子器件都有了很大的发展。智能定时电源开关技术的发展,可以从根本上解决由于电器的长时间待机能耗产生大量的用电的问题,也可以给人们的生活带来很大的方便。智能定时电源开关在国内的发展还不够成熟,生活中我们还是会面临很多的不便,比如:家中的热水器不能自由设置开通关断时间而导致待机能耗的增加以及给人自身带来的不便;饮水机不能设置加热时间而造成长时间的滚水进而饮水不健康;教师的灯在没有人上自习的时候还是亮着而造成电能的浪费等等。国外的智能电源定时开关技术也只是在某些特定地点特定场合应用的比较成熟,他们可以帮助人们实现定时智能控制家电功能,轻松实现家庭智能,质量可靠,性能稳定,无需再担心用电过多,以及由于长时间待机可能引起的财产安全,生命安全。人们可以放心的工作,安心的生活,开心的游玩。智能定式电源开关以服务人们生活为本,影响生活,改变生活,创造新的生活方式。只有更加贴近实用、易用和人性化的智能家居理念,才能真正体现智能家居的价值,这也是现代科技价值的核心理念。通过智能家居我们能更方便的生活。冬天时,在回家之前打开家中的电暖器或者空调、电饭煲,等回到家中,能感到久违的温暖。夏天时,回家之前打开空调,回到家中体验凉爽。睡觉时,按下睡眠模式,监控设备打开,灯光控制系统关闭光源,窗帘自动拉上,再体验轻松睡眠的同时也保证了家中的安全。周末了,在家中也可以体验一把电影院的乐趣,按下影院模式,窗帘拉上,家庭影院打开,投影仪开启,投影幕落下。科技改变生活,随着科技的发展,智能家居智能生活已不是个梦想。为此,我们应该充分利用现有的技术、人才和资源优势,加强国际合作和技术交流,争取国内外各方面的有利因素,发展智能定时电源开关技术,提高家庭的生活质量,减少不必要的用电浪费,增强人类的节能意识,为我们子孙后代保留一点资源。智能定时开关电源就是为了实现节能与给人方便而诞生的技术,所以它的发展一定会给我们的生活带来不可抹灭的作用。1.3 本论文研究的主要内容本设计研究的主要内容是智能定时电源开关,本设计首先进行了硬件电路的设计,设计的主要内容是利用STC89C52RC单片机通过锁存器74HC573由数码管显示时间,另一路通过8550三极管驱动继电器吸合电路,定时时间到后,继电器能够吸合动作从而驱动电源开关,切断或通电电源。并且可以实现无限制循环倒计时。本设计以60秒为倒计时时间,倒计时到十秒时电源接通,零秒时关闭,继续下一轮倒计时。然后设计了软件部分,并对程序进行仿真,最后进行了制作和调试,而且作出了实物,效果符合预期效果,这就是本次设计的主要内容。第2章 系统控制方案及硬件电路设计2.1 采用STC89C52RC为核心的单片机控制方案本设计采用的是STC89C52RC单片机芯片,通过+5V电源送给单片机供电,利用单片机的外围电路进行扩展,单片机芯片的引脚端口一端接锁存器74HC573到数码管上并起到显示时间的作用,单片机的另一个端口接8550三极管与继电器相接,倒计时一定的时间继电器吸合去驱动开关电源,及时通断达到节能的目的,为了可以快速演示本次设计的效果,本设计采用60秒倒计时为准。同时通过PROTEUS画出硬件电路图,并进行了电路仿真,最会一步就是根据设计做出相应的实物。这就是开关插座基本的控制方案。采用STC89C52RCRC为核心的单片机控制方案系统结构图如图2.1所示:STC89C52RC晶振电路数码管显示电路继电器控制电源电路图2.1 系统结构图2.2 智能定时电源开关硬件电路2.2.1智能定时电源开关总体硬件电路 智能定时电源开关设计的硬件电路图如图2.2所示。具体说明为:核心芯片为一个STC89C52RC单片机;数码管为60秒循环倒计时显示;继电器所控制的电路为一含电源的灯泡显示电路;使用PNP型三极管驱动继电器;数码管为两位一体共阴极数码管;数码管由两个一样的锁存器74HC573驱动。图2.2 智能定时电源开关硬件电路2.2.2 数码管显示电路本设计采用两位一体共阴极数码管显示,电路图如图2.3所示。具体说明为:两个573锁存器的IO口接P0.0P0.7对应锁存器D0D7;数码管的段ABCDEFGH对应74HC573-1芯片;数码管的两个位选端对应74HC573-2芯片; P2.6接74HC573-1控制段选信号; P2.7接74HC573-2控制位选信号。关于用锁存器74HC573来驱动数码管的说明:在LED和数码管显示方面,要维持一个数据的显示,往往要持续的快速的刷新。尤其是在四段八位数码管等这些要选通的显示设备上。在人类能够接受的刷新频率之内,大概每三十毫秒就要刷新一次。这就大大占用了处理器的处理时间,消耗了处理器的处理能力,还浪费了处理器的功耗。锁存器的使用可以大大的缓解处理器在这方面的压力。当处理器把数据传输到锁存器并将其锁存后,锁存器的输出引脚便会一直保持数据状态直到下一次锁存新的数据为止。这样在数码管的显示内容不变之前,处理器的处理时间和IO引脚便可以释放。可以看出,处理器处理的时间仅限于显示内容发生变化的时候,这在整个显示时间上只是非常少的一个部分。而处理器在处理完后可以有更多的时间来执行其他的任务。这就是锁存器在LED和数码管显示方面的作用:节省了宝贵的MCU(微控制单元)时间。图2.3 数码管显示电路2.2.3继电器控制电路本设计采用PNP数码管驱动继电器控制外接含电源电路,这是典型的继电器驱动电路。单片机是一个弱电器件,一般情况下它们大多工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如继电器驱动,显然是不行的。所以就要有一个环节来衔接,这个环节就是所谓的“功率驱动”。继电器驱动就是一个典型的、简单的功率驱动环节。图中三极管8550有两个作用:一个是起放大作用,一个是起开关作用(严格来讲开关作用是放大作用的极限情况)。基极处连接的是单片机的P3.2口。P3.2口给出高电平时,三极管处于导通状态,并起放大作用,这样,继电器就能得到足够的驱动电流来正常工作。当P3.2口给出低电平时,三极管不工作,继电器因没电流通过而不工作。灯泡用于指示继电器是处于导通状态(灯亮)还是处于断开状态(灯灭)。电路图如图2.4所示:图2.4 继电器控制电源电路具体说明:继电器通过PNP三极管驱动; 三极管的基极接STC89C52RC单片机的P3.2口来控制;继电器控制的电路须有电源,接一个灯泡来显示控制结果。继电器采用松乐SRD-05VDC-SL-A,具体参数如下:触点形式:1C(SPDT) 触点负载: 3A 220V AC/30V DC 阻 抗: 100m 额定电流: 3A 电气寿命:10万次 机械寿命:1000万次 阻值(士10%): 120 线圈功耗:0.2W 额定电压:DC 5V 吸合电压:DC 3.75V 释放电压:DC 0.5V 工作温度:-25+70 绝缘电阻:100M 线圈与触点间耐压:4000VAC/1分钟 触点与触点间耐压:750VAC/1分钟 从上面的继电器线圈参数得知,继电器工作吸合电流为0.2W/5V=40mA或5V/12040mA。 三极管的选择:功率PCM:大于5V*继电器电流 (5*40 mA = 0.2W)的两倍; 最大集电极电流(ICM):大于继电器吸合电流的两倍以上; 耐压BV(CEO):大于继电器工作电压5V,可选10V以上; 直流放大倍数:取300。 故本次设计所选8550PNP型三极管,放大倍数约为350.它是一种低电压、大电流、小信号的PNP型三极管,具体参数如下:集电极-基极电压:-40V耗散功率0.625W(贴片:0.3W)集电极电流0.5A集电极-基极电压40V集电极-发射极击穿电压25V特征频率fT 最小150MHZ2.2.4晶振电路本设计的晶振电路如图2.5所示。在单片机系统里,晶振作用非常大,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快。单片机一切指令的执行都是建立在晶振所提供的晶振频率之上。单片机晶振是为系统提供基本的时钟信号,相当于一个系统的心脏,通常一个系统共用一个晶振,便于各部分保持同步。 2.5 单片机晶振电路2.3 本章小结本章介绍了智能定时电源开关的定时控制的设计过程,主要讲述硬件电路设计。首先,介绍了系统总体方案的设计方案图,智能定时电源开关的定时控制系统的设计主要会用到单片机STC89C52RC、数码管显示倒计时模块、继电器控制电源模块和晶振等硬件模块,然后硬件电路设计部分对每一模块的功能和使用进行了详细的介绍,弄清楚各部分的工作方式及联系,设计出系统的总体电路图。第3章 STC89C52RC单片机的介绍3.1STC89C52RC单片机的组成原理STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。(1)主要特性如下2:l 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.l 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)l 工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHzl 用户应用程序空间为8K字节l 片上集成512字节RAMl 通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。l ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片l 具有EEPROM功能l 具有看门狗功能l 共3个16位定时器/计数器。即定时器T0、T1、T2l 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒l 通用异步串行口(UART),还可用定时器软件实现多个UARTl 工作温度范围:-40+85(工业级)/075(商业级)l PDIP封装(2)STC89C52RC单片机的工作模式3l 掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序l 空闲模式:典型功耗2mAl 正常工作模式:典型功耗4Ma7mAl 掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备(3)STC89C52RC的引脚介绍4 STC89C5RC2的引脚图如图3.1所示:图3.1 STC89C52RC引脚图l STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流()。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见表3.1:在对Flash ROM编程和程序校验时,P1接收低8位地址。表3.1 P1.0和P1.1引脚复用功能引脚号功能特性P1.0T2(定时器/计数器2外部计数输入),时钟输出P1.1T2EX(定时器/计数器2捕获/重装触发和方向控制) P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流()。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流()。在对Flash ROM编程或程序校验时,P3还接收一些控制信号。P3口除作为一般I/O口外,还有其他一些复用功能,如表3.2所示:表3.2 P3口引脚复用功能引脚号复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。3.2 单片机定时/计数器的原理与应用方法3.2.1定时计数器的基本结构定时计数器的基本结构如图3.2所示5。包括两个定时器计数器T0和T1、工作方式寄存器TMOD和控制寄存器TCON。其中每个定时计数器是由两个8位寄存器TH0、TL0和TH1、TH1构成,用于存放定时计数器的计数初值和经过值;工作方式寄存器TMOD用于定时计数器的工作方式设置;控制寄存器TCON用来对定时计数器进行启动、停止运行控制管理。图3.2 定时计数器的基本结构3.2.2定时计数器的工作原理定时器T0和T1分别是由TH0、TL0和TH1、TL1,这两个8位计数器构成的16位计数器。两个16位计数器都可以理解为16位的加1计数器7。T0和T1定时/计数器都可由软件设置为定时或计数的工作方式,其中T1还可作为串行口的波特率发生器。T0和T1这些功能的实现都由特殊功能寄存器中的TMOD和TCON进行控制当T0或T1用作对外部事件计数的计数器时,通过89C51外部引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数。当加在T0或T1引脚上的外部脉冲信号出现一个由1到0的负跳变时,计数器加1,如此直至计数器产生溢出。当T0或T1用作定时器时,对外接晶振产生的振荡信号进行12分频后,提供给计数器,作为计数的脉冲输入,计数器对输入的脉冲进行计数,直至产生溢出。不论T0或T1是工作于定时方式还是计数方式,它们在对内部时钟或外部事件进行计数时,都不占用CPU时间,直到定时/计数器产生溢出。如果满足条件,CPU才会停下当前的操作,去处理“时间到”或者“计数满”这样的事件。因此,定时/计数器是与CPU并行工作的,除非溢出不会影响CPU的其它工作。3.2.3定时计数器的方式寄存器与控制寄存器67 T0和T1由两个8位寄存器TMOD和TCON来控制,分别用来设置各个定时计数器的工作方式、选择定时或计数功能、控制启动运行以及作为运行状态的标志等。当89C52系统复位时,TMOD和TCON所有位都清0。(1)定时器/计数器的方式寄存器TMOD图3.3 定时计数器的方式寄存器TMOD在特殊功能寄存器中,字节地址为89H。由于TMOD只能进行字节寻址,所以对T0或T1工作方式的控制只能整字节(8位)写入。在TMOD中,高4位用于对定时器T1的方式控制,而低4位用于对定时器T0的方式控制。图3.3中给出了各位的定义,各位功能简述如下:1) 工作方式选择位M1M0:定时器工作方式选择位。通过对M1M0的设置,可使定时器工作于4种工作方式之一。参考表3.3 表3.3定时器工作方式M1 M0方式说 明0 0013 位定时器(TH的 8 位和TL的低 5 位)0 1116 位定时器/计数器1 02自动重装入初值的 8 位计数器1 13T0 分成两个独立的8位计数器,T1在方式3时停止工作2) CT定时计数器选择位 CT=1,工作于计数方式; CT=0,工作于定时方式。3) GATE门控位 由GATE、软件控制位TR1TR0和INT1INT0共同决定定时计数器的打开或关闭。 GATE=0,只要用指令置TR1TR0为1即可启动定时计数器工作,而不管INT的 状态如何; GATE=1,只有INT1INT0为高电平且用指令置TR1TR0为1时,才能启动定时计数器工作。(2)定时/计数器控制寄存器(TCON)TCON是一个特殊功能寄存器,TCON的字节地址为88H,其各位地址从88位开始分别为88H8FH。高4位为定时计数器的运行控制和溢出标志位,低4位与外部中断有关。其格式如下表列:TF1TR1TF0TR0IE1IT1IE0IT0TCON的高4位的功能描述如下: TF1TF0 溢出标志位当T1或T0产生溢出时,由硬件自动置位中断触发器TF1或TF0,并向CPU申请中断。如果用中断方式,则CPU在响应中断进入中断服务程序后,TF1或TF0被硬件自动清0。如果是用软件查询方式对TF1或TF0进行查询,则在定时计数器回0后,应当用指令将TF1或TF0清0。 TR1TR0 运行控制位用指令(“SETB TR1”)对TR1或TR0进行置位或清零,也可以启动或关闭T1或T0的运行。3.2.4定时/计数器的MODE08MODE0为13位定时/计数器工作方式,其内部结构如图3.4所示。由图3.4可知,MODE0实际上是由TL0(5位)和TH0(8位)构成的13位脉冲计数器,并由TCON和TMOD控制和管理。u 设定MODE0的步骤:(1)设定MODE0的步骤(四选1)MOV TMOD,#00H TIMER0设定计时工作方式(内部输入) MOV TMOD,#00H TIMER1设定计时工作方式(内部输入) MOV TMOD,#04H TIMER0设定计数工作方式(T0输入) MOV TMOD,#40H TIMER1设定计数工作方式(T1输入)(2)预置计数初值MOV TLX,#(8192COUNT) MOD/32; TLX的值为计数值除以32的余数 MOV THX,#(8192COUNT)/32 ;THX为计数值除以32的商(3)启动定时器 SETB TRX (4)检查TFX是否溢出JBC TFX ;查询方式检查TFX是否溢出,溢出转移,否则等待图3.4 方式0内部结构3.2.5定时/计数器的MODE18方式1和方式0的工作原理基本相同,唯一不同是T0和T1工作在方式1时,计数长度M是2的16次方,内部结构参考图3.5。16位的初值直接拆成高低字节,分别送入TH和TL即可,对于实际应用比MODE0更有实际意义。u 设定MODE1的步骤:(1)设定MODE1的步骤(四选1)MOV TMOD,#01H TIMER0设定计时工作方式(内部输入) MOV TMOD,#10H TIMER1设定计时工作方式(内部输入) MOV TMOD,#05H TIMER0设定计数工作方式(T0输入) MOV TMOD,#50H TIMER1设定计数工作方式(T1输入)(2)启动定时器 SETB TRX (3)预置计数初值 MOV TLX,#(65536COUNT) MOD 256 MOV THX,#(65536COUNT)256(4)检查TFX是否溢出 JBC TFX 图3.5 方式1内部结构3.2.6定时/计数器的MODE28方式1和方式0的工作原理基本相同,计数溢出后计数器清0。在循环计数或循环定时应用时就存在反复设置计数初值的问题。不仅会给程序设计带来不便,同时影响定时的精度。针对以上问题,最好的解决办法就是使用方式2,它具有自动加载功能,即自动加载计数初值。在这种方式下,把16位计数器分为两部分,即TL作为计数器,以TH作初值预置寄存器,初始化时将计数初值分别装入TL和TH中。计数溢出后由预置寄存器TH以硬件方法自动给TL重新加载,由硬件重新赋值,所以也称为硬件自动重加载工作方式。其内部结构参考图3.6。定时器 T1 工作在方式2 时, 可直接用作串行口波特率发生器的控制。图3.6 方式2内部结构u 设定MODE2的步骤(1)设定MODE2的步骤(四选1)MOV TMOD,#02H TIMER0设定计时工作方式(内部输入) MOV TMOD,#20H TIMER1设定计时工作方式(内部输入) MOV TMOD,#06H TIMER0设定计数工作方式(T0输入) MOV TMOD,#60H TIMER1设定计数工作方式(T1输入)(2)启动定时器 SETB TRX (3)预置计数初值 MOV TLX,#(256COUNT) MOV THX,#(256COUNT)(4)检查TFX是否溢出 JBC TFX 3.2.7定时/计数器的MODE38在工作方式3模式下,定时/计数器T0被拆成两个独立的8位计数器TL0和TH0。其结构如图3.7所示。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器T0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TH0就没有那么多“资源”可利用了,只能作为简单的定时器使用,而且由于定时/计数器T0的控制位已被TL0占用,因此只能借用定时/计数器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个定时器或者一个定时器和一个计数器。如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就不可避免受到一定的限制,因为自己的一些控制位已被定时/计数器借用,只能工作在方式0、方式1或方式2下,如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR10。图3.7 方式3内部结构u 设定MODE3的步骤(1)设定MODE3的步骤(三选1)MOV TMOD,#03H TL0设定计时工作方式(内部输入) MOV TMOD,#03H TH0设定计时工作方式(内部输入) MOV TMOD,#07H TL0设定计数工作方式(T0输入)(2)启动定时器 SETB TRX (3)预置计数初值 MOV TL0,#(256COUNT) 或 MOV TH0,#(256COUNT)(4)检查TFX是否溢出 JBC TFX 小结:通过定时器/计时器的结构、工作原理和应用的介绍,知道T0和T1的设置步骤几乎是相同的,分别要定义TMOD、TCON、TH0、TL0、TH1和TL1等寄存器后,定时计数器方能正确操作。在程序刚规划的阶段时,每个定时器的操作和控制模式都必须考虑清楚后才可以开始写程序,具体的操作分解为以下几步。设置步骤1:确定是定时还是计数操作,定时TMOD中的C/T位为0,计数时C/T=1。设置步骤2:确定定时/计数时是否受外部的硬件信号控制,若不受外部INT0或INT1引脚控制时,TMOD中的GATE位为0,否则需设成1。有关GATE的使用将在中断章节讨论。设置步骤3:决定计数器的模式,模式0时最大计数值为8192,模式1时最大计数值为65536,两个计数器均没有自动载入的功能;模式2时最大计数值为256,且可自动载入计数值;模式3时有两个计数器,其最大计数值都是256,各种模式的选择应仔细考虑。将前3个步骤的结果组合起来,成为一个给TMOD寄存器的设置值。设置步骤4::决定计数器(TH0、TL0、TH1和TL1)的预置初值,由于MCS-51的计数器都属于可载入式的加1计数器,所以正确的预置初值应该是该计数器的最大可计数值减去欲计数值,然后将该结果分成两部分后,再送到THX和TLX两个计数器。设置步骤5:开始启动定时器/计数器,将TCON中的TR1和TR0位设成1。设置步骤6:查询计数是否溢出,即TFX=1,停止计数,程序转移执行主程序或分支程序。若要正常操作所必须设置的寄存器和位,要注意的是TMOD寄存器无法进行位寻址,所以必须两个定时器模式同时设置。3.3单片机中断系统的介绍1011126(1)单片机中断级别中断源默认中断级别中断序号(C语言用)INIT0-外部中断0最高0T0-定时器/计数器0中断第21INIT1-外部中断1第32T1-定时器/计数器1中断第43TI/RI-串行口中断第54T2-定时器/计数器2中断最低5(2)中断允许寄存器IE位序号DB7DB6DB5DB4DB3DB2DB1DB0符号位EA-ET2ESET1EX1ET0EX0EA-全局中允许位。EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。-,无效位。ET2-定时器/计数器2中断允许位。ET2=1,打开T2中断。ET2=0,关闭T2中断。ES-串行口中断允许位。ES=1,打开串行口中断。ES=0,关闭串行口中断。ET1-定时器/计数器1中断允许位。ET1=1,打开T1中断。ET1=0,关闭T1中断。EX1-外部中断1中断允许位。EX1=1,打开外部中断1中断。EX1=0,关闭外部中断1中断。ET0-定时器/计数器0中断允许位。ET0=1,打开T0中断。ET0=0,关闭T0中断。EX0-外部中断0中断允许位。EX0=1,打开外部中断0中断。EX0=0,关闭外部中断0中断。(3)中断优先级寄存器IP位序号DB7DB6DB5DB4DB3DB2DB1DB0位地址-PSPT1PX1PT0PX0-,无效位。PS-串行口中断优先级控制位。PS=1,串行口中断定义为高优先级中断。PS=0,串行口中断定义为低优先级中断。PT1-定时器/计数器1中断优先级控制位。PT1=1,定时器/计数器1中断定义为高优先级中断。PT1=0,定时器/计数器1中断定义为低优先级中断。PX1-外部中断1中断优先级控制位。PX1=1,外部中断1中断定义为高优先级中断。PX1=0,外部中断1中断定义为低优先级中断。PT0-定时器/计数器0中断优先级控制位。PT0=1,定时器/计数器0中断定义为高优先级中断。PT0=0,定时器/计数器0中断定义为低优先级中断。PX0-外部中断0中断优先级控制位。PX0=1,外部中断0中断定义为高优先级中断。PX0=0,外部中断0中断定义为低优先级中断。(4)定时器/计数器工作模式寄存器TMOD位序号DB7DB6DB5DB4DB3DB2DB1DB0位符号GATEC/TM1M0GATEC/TM1M0GATE-门控制位。GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制。GATE=1,定时器计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制。C/T-定时器和计数器模式选择位。C/T=1,为计数器模式;C/T=0,为定时器模式。M1M0-工作模式选择位。M1M0工作模式00方式0,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,8位初值自动重装的8位定时器/计数器11方式3,仅适用于T0,分成两个8位计数器,T1停止工作(5)定时器/控制器控制寄存器TCON位序号DB7DB6DB5DB4DB3DB2DB1DB0符号位TF1TR1TF0TR0IE1IT1IE0IT0TF1-定时器1溢出标志位。当定时器1记满溢出时,由硬件使TF1置1,并且申请中断。进入中断服务程序后,由硬件自动清0。需要注意的是,如果使用定时器中断,那么该位完全不用人为去操作,但是如果使用软件查询方式的话,当查询到该位置1后,就需要用软件清0。TR1-定时器1运行控制位。由软件清0关闭定时器1。当GATE=1,且INIT为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1。TF0-定时器0溢出标志,其功能及其操作方法同TF1。TR0-定时器0运行控制位,其功能及操作方法同TR1。IE1-外部中断1请求标志。当IT1=0时,位电平触发方式,每个机器周期的S5P2采样INT1引脚,若NIT1脚为定电平,则置1,否则IE1清0。当IT1=1时,INT1为跳变沿触发方式,当第一个及其机器周期采样到INIT1为低电平时,则IE1置1。IE1=1,表示外部中断1正向CPU中断申请。当CPU响应中断,转向中断服务程序时,该位由硬件清0。IT1外部中断1触发方式选择位。IT1=0,为电平触发方式,引脚INT1上低电平有效。IT1=1,为跳变沿触发方式,引脚INT1上的电平从高到低的负跳变有效。IE0-外部中断0请求标志,其功能及操作方法同IE1。IT0-外部中断0触发方式选择位,其功能及操作方法同IT1。 从上面的知识点可知,每个定时器都有4种工作模式,可通过设置TMOD寄存器中的M1M0位来进行工作方式选择。方式1的计数位数是16位,对T0来说,由TL0寄存器作为低8、TH0寄存器作为高8位,组成了16位加1计数器。关于如何确定定时器T0的初值问题。定时器一但启动,它便在原来的数值上开始加1计数,若在程序开始时,我们没有设置TH0和TL0,它们的默认值都是0,假设时钟频率为12MHz,12个时钟周期为一个机器周期,那么此时机器周期为1us,记满TH0和TL0就需要216 -1个数,再来一个脉冲计数器溢出,随即向CPU申请中断。因此溢出一次共需65536us,约等于65.6ms,如果我们要定时50ms的话,那么就需要先给TH0和TL0装一个初值,在这个初值的基础上记50000个数后,定时器溢出,此时刚好就是50ms中断一次,当需要定时1s时,写程序时当产生20次50ms的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为TCY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/TCY ,装入THX和TLX中的数分别为:THX=(65536-N)/256 , TLX=(65536-N)%256u 中断服务程序的写法void 函数名()interrupt 中断号 using 工作组 中断服务程序内容在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下:(1)对TMOD赋值,以确定T0和T1的工作方式。(2)计算初值,并将初值写入TH0、TL0或TH1、TL1。(3)中断方式时,则对IE赋值,开放中断。(4)使TR0和TR1置位,启动定时器/计数器定时或计数。3.4 本章小结本章主要介绍了本次设计需要用到的单片机的部分原理。第一,介绍了单片机芯片STC89C52RC的基本组成原理以及40个引脚功能;第二,介绍了单片机定时/计数器的结构及工作原理和方式;第三,介绍了单片机中断系统的原理以及工作方式。在对系统所用核心芯片STC89C52RC单片机基本原理以及定时中断工作方式介绍的基础上,接下来就是系统的软件程序设计部分,以完成本次的设计。第4章 软件设计4.1 软件开发环境STC89C52RC单片机软件开发平台为Keil uvision4 C51,仿真环境为Protues,下载软件为STC_ISP。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。16Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译。16STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。4.2 智能定时电源开关主程序图在本次设计中,主程序是在单片机的控制下进行60秒循环倒计时,当时间倒计时到10秒时,继电器有电流通过进而接通被控电源电路,灯泡发光,当倒计时到0秒时,继电器没有电流通过进而断开被控电源电路,灯泡熄灭,与此同时,时间又从60秒开始倒计时,进行如上的动作,如此无限循环往复的进行下去。具体流程图如图4.1所示:开始系统初始化60秒倒计时开始倒计时过程N倒计时到10秒?Y继电器通,灯泡亮N倒计时到0秒?Y 继电器断,灯泡灭 图4.1 系统主程序图4.3 智能定时电源开关实现程序 由于学过C语言的编程方法,而且C语言编程既简洁又方便,所以本次设计选择利用C语言编写程序来实现智能定时电源开关的功能,具体程序如下: #includesbit dula=P26;/位选十位sbit wela=P27;/位选个位sbit JDQ=P32;unsigned char j,k,a1,a0,s=60;unsigned int m;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(unsigned char i) for(j=i;j0;j-) for(k=125;k0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论