(整理)单片机加热定时器.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

精品文档精品文档1.1设计题目:加热定时器设计1.2.1设计目的(1)掌握可任意预置的定时构成、原理与设计方法;(2)熟悉集成电路的使用方法。(3)通过应用单片机系统,培养创新意识,提高动手能力。1.2.2基本要求(1)设计要求:为系热水器定时加热(2)每天早7:00起加热,晚10:00起加热,保证热水;周末全天供水。(3)控制面板设计。1.2.3基本优点传统的大容量电热水器的加热时间一般都比较长,如果热水器一直开着,则会一直耗能耗电,而定时开关控制器则可有效解决这些问题,使电热水器使用起来更加舒适省电。这样,电热水器不仅可以充分利用闲置的时间,避免用户使用时长时间的等待,减少不必要的保温,也可以更加节约电能,特别对低谷及高峰用电有差价的地区.利用晚间低谷用电开机加热,白天用电高峰关机保温,便能大量节约电费开支。本文中的定时控制器主要是以单片机AT89C51作为核心控制元件,通过外围电路来控制热水器的电源,以达到定时开关机的目的。2设计思路1硬件组成本电热水器控制系统在加电后即可进入正常计时状态,用户可以随时校准时间并设定热水器的开关时间,以便控制器能够在设定的开关时刻通过单片机的输出端口控制输出继电器的动作,进而控制热水器的启闭。该系统的硬件原理图见图1所示。精品文档精品文档本系统的核心单片机AT89C2051为20脚300MIL封装,是一种带有2KBFLASHE2PROM的单片机。该单片机除了少了两个并口外,能兼容MCS-51系列单片机的所有功能,且具备体积小、功能强、运行速度快等特点。该电路可通过单片机的P3.7口连接一个键盘电路来实现对参数的人工自由设定,同时可通过串口连接8位LED数码管,以分别显示小时、分钟和秒。系统定时启动是通过P3.0口完成的。程序开始时这三个口的输出状态都是低电平,AT89C51通过程序查询P3.0口输出ON或OFF的状态预置时间是否已到,如果已到时间,则改变相应的输出状态,从而完成对外部电路的控制。精品文档精品文档本设计采用时钟芯片DS1302来控制时间。美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。1.1引脚功能及结构DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。1.2数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。2.4DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,精品文档精品文档下面重点介绍键盘、显示以及输出控制这三种电路。1.1显示电路本系统中的显示电路主要由七段共阳显示译码器74LS47、3线-8线译码器74tHC138、7个PNP型三极管和六个数码管组成。通过AT89C2051的P1.4~P1.7口将要显示字符的BCD码输出到74LS47的四个输人端,然后译码并输出相应的笔段来驱动LED数码管(共阳)。LED数码管显示采用动态扫描方式,即在某一时刻,只有一个数码管被点亮。数码管的位选信号由AT89C2051的P3.3~P3.5输出,并经74HCl38译码后通过三极管放大,以驱动相应的数码管。1.2键盘电路键盘电路跟显示电路一样采用扫描方式,并利用动态显示时的数码管驱动位置信号来判断相应按键的状态。单片机的P3.3~P3.5口输出的BCD码经译码器译码后,相应的Y口呈低电平,而AT89C2051的P3.7口平时为高电平(由于有上拉电阻),只有当某一按键按下时,P3.7才被下拉为低,这时,单片机将利用程序查询P3.7是否为低,如果P3.7为低电平,则读回单片机P3.3~.P3.5口的值(从缓冲区读取),并判断是那个按键按下.然后调用相应的处理程序进行处理。1.3输出控制电路单片机的控制输出是通过P3.0~P3.2口完成的。当程序开始时,这三个口的输出状态都是低电平,AT89C2051通过程序查询三路输出的ON或OFF状态预置时间是否已到,若时间到,则改变相应的输出状态,以完成对外部电路的控制。中断功能申请寄存器IE介绍中断允许寄存器IE(可以打开和屏蔽相应的中断)EX0/EX1ET1/ET0ES位:分别是外部中断、定时中断、串口中断允许控制位。=0:禁止中断;=1:允许中断。EA:总的中断允许控制位(总开关):=0:禁止全部中断;=1:允许中断。模式设置(杯子的大小)工作方式寄存器TMOD精品文档精品文档高四位对于定时器1,低四位对应定时器0M1,M0:工作方式选择位。工作方式0=00:13位定时器/计数器;工作方式1=01:16位定时器/计数器(常用);工作方式2=10:可自动重装的8位定时器/计数器(常用);工作方式3=11:T0分为2个8位定时器/计数器;仅适用于T0。C/T:定时方式/计数方式选择位。=0:内部提供信号脉冲。=1:外部提供信号脉冲。GATE:定时器启动控制位=0:程序控制。=1:硬件控制。例如:TMOD=00000001=0x01;//设定时器0为16位模式1例如:TMOD=00010000=0x10;//设定时器1为16位模式1如何选择16位内部脉冲计数寄存器,并选择定时器0作为为定时器,且用软件方式实现定时器启动控制。TMOD的值为多少?定时0,选择低四位(高四位全为0)16位计数寄存器选工作方式1即M1M0值为01内部脉冲C/T值为0软件启动定时器GATE值为0TMOD=00000001=0x01定时器控制寄存器TCON(高四位与定时器中断有关,低四位与外部中断有关)TR0/TR1:定时器运行启停控制位(可由用户通过软件设置)。=0:定时器停止运行;=1:定时器启动运行。TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位)。=0:定时器未溢出;=1:定时器溢出(由全“1”变成全“0”)时由硬件自动置位,申请中断,中断被CPU响应后由硬件自动清零。7、如何启动定时器和判断是否溢出TRx赋值为1,即可启动相应的定时器如果TFx的值为1,即可以判断计数寄存器的值已经溢出。可以用位赋值。TCON=00010000=0x10代表什么?精品文档精品文档即TR0的值为1,TF0的值为0。定时器已经启动,并且计数寄存器的计数值还没有溢出。(不能产生有效的内容中断信号)程序1:仿真实现定时器1SLED闪烁一次#includereg51.hsbitLED=P2^0;intcount=0;//50ms次数记录timer_csh()//定时中断初始化函数{IE=0x82;//允许CPU中断和定时计数器0中断开关10000010TMOD=0x01;//设定时器0和1为16位模式1TH0=0x3C;//12M晶振定时50msTL0=0xB0;}voidmain(){timer_csh();//定时中断初始化TR0=1;//开始计数while(1){;}//主程处于无限循环这里可以处理其他的事情}//定时器0中断处理voidtimeint(void)interrupt1{count++;if(count==20)//1s到{count=0;LED=~LED;}精品文档精品文档TH0=0x3C;//定时初始值TL0=0xB0;}2软件设计2.1主程序流程本系统的主程序工作过程是首先循环进行8个数码管的扫描显示(DISPLY段),然后比较所有预置时间(COMP段)是否与当前时间相等,如相等则转向相应处理程序。比较完成(或处理完成)后,再判断有无按键(PP2段)按下,没有则返回继续显示、比较、判断;有按键按下则转向相应的处理程序。按键转移采用偏移量加表格跳转转移法(KEY段)。预置时间比较则采用逐一比较法,即对每一个预设的值都进行比较,如果相等,则进行相应的处理。在具体比较时(COMP1段),首先比较TH值,如不相等,则直接转出并置时间到标志CCB为0,而如果TH、TM、TS全部对应相等,则置该标志为1,其软件流程见图2所示。精品文档精品文档此次设计的可预置热水器控制电路,实现对时间和分钟的现实,可以设置热水器的使用时间,使热水器自动加热和停止,并且设置了水位比较电路可以进行报警。由石英晶体振荡器产生频率为1000Hz的信号,经过三片74LS160进行分频后,得到1Hz的秒脉冲信号,再经过2片74LS90连接成的60进制计数器后得到1/60秒的分脉冲信号。将分信号传输给两片74LS290连成的六十进制计数器进行分的计数,再由分计数的进位驱动二十四进制的时计数器。时间计数器连接七段译码显示器进行时间的现实。预置时间的电路与此相同。预置时间计数器产生的输出进入减法器进行自动减一的设置,减法器的输出信号进入比较器,与正常时间计数器产生的信号进行比较。当两者相等时,自动开始加。由时计数器和分计数器产生的输出接入比较器,与设定时间电路的时计数器和分计数器相比较,当时间相等时热水器停止加热。由传感器感知水位,经由模数转换器转换成八位二进制数,再由二进制→BCD码转换器将其转换成8421BCD码,输出的数据经计数器传入七段译码显示器进行水位的显示。从水位计数器引出的信号进入比较器,与比较器中设置的水位进行比较,当其水位低于设定值时,自动停止工作并进行水位报警。其中水位报警电路由555定时器构成的单稳态单路和多谐振荡电路组成。2.2秒脉冲发生器的软件设计系统中的秒脉冲发生器是由定时器T0和内存空间TT0配合完成的。其中T0工作于l6位计数器模式,当T0向上计数并由全1变为全0时产生中断。本程序中,T0的初值为0DC00H,大约0.01秒中断一次。这里使用的晶振频率为11.0592MHz,由此可计算出日误差约为0.78s。其操作流程如图3所示,系统产生中断后,首先保存ACC和PSW的值,然后为T0重装初值,并判断中断次数是否小于100,若是,则转出中断服务,反之则将秒计数器加1。秒计数器大于59时,则为分计数器加1,同时秒计数器清0。同样,分计数器如大于59,则为时计数器加1,同时分计数器清0。时计数器如大于23时则清0并转出中断服务。TD中断100次的时间刚好为1秒钟。精品文档精品文档附图程序#includeREG52.H#includeDS1302.h/************端口定义**************

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功