首页 基于stc89c51rc定时开关控制器设计

基于stc89c51rc定时开关控制器设计

举报
开通vip

基于stc89c51rc定时开关控制器设计基于stc89c51rc定时开关控制器设计 基于STC89C51RC定时开关控制器 摘要:应用STC89C51RC单片机为核心,设计具备按键功能和数码显示功能的外围硬 件电路,以便控制器能够在设定的开关时刻控制输出继电器的动作,进而控制负载电源的 启闭,并完成最大预约时间为12小时。 关键词:STC89C51RC,计时器,继电器 Computer-controlled timer Abstract:Application of STC89C51RC microcontroller as the core,...

基于stc89c51rc定时开关控制器设计
基于stc89c51rc定时开关控制器 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 基于STC89C51RC定时开关控制器 摘要:应用STC89C51RC单片机为核心,设计具备按键功能和数码显示功能的外围硬 件电路,以便控制器能够在设定的开关时刻控制输出继电器的动作,进而控制负载电源的 启闭,并完成最大预约时间为12小时。 关键词:STC89C51RC,计时器,继电器 Computer-controlled timer Abstract:Application of STC89C51RC microcontroller as the core, with key design features and digital display peripheral hardware circuit functions, so that the controller can set the output relay switching time control actions, and thus control the hoist load power and make an appointment to complete the maximum of 12 hours. Keywords: STC89C51RC,automatic control, timer socket 目 录 第1章 引言 ---------------------------------------------------------------------------------------------------------1 1.1 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 设计-----------------------------------------------------------------------------------------------2 1.1.1功能要求-------------------------------------------------------------------------------------2 1.1.2电路设计方案的确定--------------------------------------------------------------------2 第2章 硬件设计----------------------------------------------------------------------------------------------------3 2.1.硬件设计功能---------------------------------------------------------------------------------------3 2.1.1关于STC89C51RC------------------------------------------------------------------------3 2.1.2时钟电路--------------------------------------------------------------------------------------4 2.1.3复位电路--------------------------------------------------------------------------------------4 2.1.4上拉电阻--------------------------------------------------------------------------------------5 2.1.5按键电路--------------------------------------------------------------------------------------6 2.1.6继电开关电路-------------------------------------------------------------------------------6 2.1.7中断触发电路-------------------------------------------------------------------------------6 2.1.8 显示数码管----------------------------------------------------------------------------------7 第3章 软件设计-----------------------------------------------------------------------------------------------------8 3.1主函数---------------------------------------------------------------------------------------------------8 3.2计时器T0----------------------------------------------------------------------------------------------8 3.3外部中断T1-------------------------------------------------------------------------------------------9 3.4外部中断T0-------------------------------------------------------------------------------------------9 第4章 总结-----------------------------------------------------------------------------------------------------------10 参考文献------------------------------------------------------------------------------------------------------------------11 致谢-------------------------------------------------------------------------------------------------------------------------12 附录1系统程序--------------------------------------------------------------------------------------------------------13 附录2模拟系统电路-------------------------------------------------------------------------------------------------18 第1章 引 言 定时器已成为人们日常生活中必不可少的物品,广泛用与个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹、跑表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化定时器为基础的。因此,研究实用定时器及其扩展应用,有着非常现实的意义,具有很大的实用价值。 由于数字集成电路技术的发展和采用了先进的石英技术,定时器具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。虽然现在市场上已有现场的倒计时定时器集成电路芯片出售,价格便宜,使用灵活,如果可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是CMOS集成电路技术的发展,使定时器具有体积小、携带方便,但是这里介绍的实用定时器可以满足使用者的一些特殊要求,输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。 实用倒计时定时器是一个时间控制系统,既能作为一般的时间显示器,也可作为一个定时控制器,驱动负载或显示信息,同时可以根据需要扩展其功能。在此设计研究过程中需综合运用所学的模拟电子技术、数字电子技术、单片机原理与应用、电子系统设计等课程的知识,掌握实用倒计时定时器的设计、组装与调试 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,利用现代的电子系统设计、单片机等新电子技术以及现代的设计手段,系统地培养了综合设计、操作调试、故障处理的能力,达到综合素质以及创新能力的提高。 本次毕业设计中采用单片机作为主要芯片设计倒计时控制系统。本系统的设计实用性强、设计灵活方便并且适合在任何条件下进行定时,所以设计意义较为深远。 1 1.1方案设计 1.1.1功能要求 本设计应用STC89C51RC为核心,设计具备按键功能和数码显示功能的外围硬件电路,以便控制器能够在设定的开关时刻控制输出继电器的动作,进而控制负载电源的启闭,可以实现电源的直接启动/关闭;也可以通过按键设置负载电源的启动时间,最大预约时间为12h。 按键操作功能: 1.开始键:用途一:按下该键,电源和负载接通。用途二:当预约调时结束后按下该键,用电器将在设定时间到达后接通电源。 2.关闭键:按下该键,电源断。 3.预约键(调时):第一次按下该键,可以对接通时间进行“小时”调整;第二次按下该键,可以对接通时间进行“分钟”调整。 4.加一键:如果调小时,每按下一次,“小时”加1,最大值到11;如果调分钟,每按下一次,“分钟”加1,最大值到59。 5.减一键:如果调小时,每按下一次,“小时”减1,最小值到0;如果调分钟,每按下一次,“分钟”减1,最小值到0。 6.预留键:本任务中,该键预留,用户可以自定义。 显示功能: 7.按键指示灯:只要有按键按下,该指示灯均会点亮。 8.电源接通指示灯:当负载和电源接通时,该灯熄灭;没有接通时,该灯闪烁(1S闪烁一次)。 9.四位共阴极数码管:前两位表示“小时”,后两位为“分”。单片机接通电源时,数码管显示“----”;调“小时”时前两位数码管闪烁,调“分”时,后两位数码管闪烁。预约时间内,数码管以倒计时方式显示剩余时间。电源接通后,数码管显示“----”。 1.1.2 电路设计方案确定 综上要求所述,对此次作品的方案选定: 以单片机STC89C51RC为主控制器,采用单片机内部定时器定时、独立按键电路和LED数码管动态显示。 2 本课题主要从以下三个方面入手: 一是实现按键功能,可以接通关闭电源并设定时间; 二是实现显示功能,显示设定时间; 三是实现定时功能,当时间到达设定值时,继电器动作,控制负载电源的启闭, 并通过指示灯显示任务的完成; 设计的总体方案如图1所示,由单片机最小系统、LED数码管显示、继电器、按键电路组成。 图1 整体设计方案 第2章 硬件电路设计 2.1 硬件设计功能 2.1.1关于STC89C51RC的相关信息,图2所示 CPU(微处理器)数据存储器(RAM) 片内为128个字节(52子系列的为256个字节)程序存储器(ROM/EPROM) 89C51/89C52/89C55:4K/8K/20K 字节闪存。4个并行可编程的8位I/O口 P1口、P2口、P3口、P0口串行口1个全双工的异步串行口,具有四种工作方式定时器/计数器中断系统特殊功能寄存器,共有21个,是一个具有特殊功能的RAM区 3 图2 STC89C51RC引脚 根据设计要求,选用STC89C51RC作为电路的控制核心,电路中包含了时钟电路,复位电路作为单片机的最小系统。 STC89C51RC系列单片机是深圳宏晶科技公司推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机。STC89系列单片机具有ISP(在系统中可编程)功能和IAP(在应用可编程)功能,无需购买专用编程器,可以通过串行口直接下载用户程序。 晶体振荡器频率为12MHz,这样单片机的机器周期恰好为1us。P0.0~P0.7作为四位七段数码管的段码输出端,P1.0~P1.3作为四位数码管(共阴极)的位码输出端。P2.0~P2.5作为键盘信号的输出端。P3.6作为控制端信号的输出,控制继电器吸合与释放。 2.1.2 时钟电路 STC89C51RC是内部具有振荡电路的单片机,如图3所示,只需在18脚和19脚之间接上石英晶体,只要给单片机接通+5V直流电源,振荡器就开始振荡起来。振荡电路就为单片机工作提供了所需要的时钟脉冲信号,单片机开始工作。振荡电路不工作,整个单片机电路都不能正常工作。18脚和19脚分别对地接了一个30pF的电容,目的是防止单片机自激。若从18脚 输入外部时钟脉冲,则19脚接地。 4 图3 时钟电路 2.1.3复位电路 复位电路就是在RST端(9脚)外接的一个电路,如图4所示,目的是使单片机上电时,内部电路从初始状态开始工作,或者在工作中人为让单片机重新从初始状态开始工作。在时钟工作的情况下,只要复位引脚高电平保持在两个机器周期以上的时间,STC89C51RC便能完成系统的复位,使得内部特殊功能寄存器的内容均被设置成已知状态,并且从地址0000H处读入程序代码而执行程序。 图4 复位电路 2.1.4上拉电阻 5 图5 驱动电路 如图5所示,由于P0口输出端为漏极开路门,它要输出高电平,必须外接上拉电阻和电源连接,本设计中上拉电阻的值为10kΩ。由于P0口输出电流有限 为减轻单片机的负担,在P0口外接了一个8路同相三态双向驱动器74LS245(起电流放大作用)。19脚是它的片选端,低电平有效,1脚是输入/输出端口转换用,当该引脚接高电平时,信号由“A”端传向“B”端;该引脚接低电平时,信号由“B”端传向“A”端。P1口通过一个六反相器74LS04和数码管的位码输入端相连,故P1.0~P1.3输出高电平时,相应的数码管点亮。 2.1.5按键电路 图6 按键电路 如图6所示,图中6个独立按键分别和P2.0~P2.5相连接,通过上拉电阻和电源相连接,当按键没有按下时,P2.0~P2.5端口输出为“1”,表示无信号输入。这六个按键只要6 有一个按键按下,8输出与非门74HC30的输出端必然输出高电平(它的逻辑功能为:全1出0,有0出1)。 2.1.6 继电器开关电路 图7 继电器开关电路 如图7所示,由于单片机I/O口驱动能力有限,利用三极管截止和饱和的性质可以控制继电器动作,可以提高驱动负载的能力。 2.1.7 中断触发电路 图8 中断触发电路 如图8所示,中断触发电路主要由8输入与非门74HC30及非门74LS04构成,主要用于当按键按下之后8输入与非门74HC30的输出端输出高电平,经非门电路74LS04倒 INTO相后,按键按下时输出为负脉冲,该负脉冲信号接单片机的外部中断信号输入端(即 7 P3.2引脚),74HC30引.脚1,2,3,4,5,6,11,12是与非门的输入脚, 8脚是与非门的输出脚。 2.1.8 数码管显示电路 图9 数码管显示电路 如图9所示,4位LED数码管作为显示器件,有共阳极和共阴极两种,在单片机应用系统中使用多位LED显示器时,为节省单片机的I/O口线,多采用动态扫描。由于本设计中采用的是4位LED共阴极数码管,动态扫描显示。 第3章 软件设计 整套系统的运行都是基于8051内核指令控制运行的。由任务目标分析,采用中断处理方式设计程序流程图,如图10所示,主要程序见附录1。 程序开始首先对按键变量和小时、分钟变量进行定义,对共阴极数码管的段码(字型码)以一维数组方式定义。另外对延时函数、定时器初始化子函数、求按键子函数、按键处理子函数、计时子函数、显示子函数进行声明。 8 图10 主函数 INTO在定时器T0、T1初始化和外部中断0()子函数中,规定定时器T0、T1的工作模式为方式1,定时时间为50ms。定时器工作在中断方式,即定时时间到,立即停止执行主函数,转而去执行中断服务函数。 图11 定时器T0中断服务函数 图12 定时器T1中断服务函数 9 图13 外部中断0中断服务函数 在显示子函数中,上电复位后4位数码管显示“- - - -”。其中包括走时转换函数,负责将定时器走时数据转换为分钟的十位和个位,超过60分钟的数据再转换为小时的十位和个位。 在计时子函数中,设置每50ms中断1次,软件计数器中计数值为1200时,时间为1分钟。分钟计数器计数值为60时,时间为1小时.。预约时间到,单片机P3.6引脚输出低电平,驱动三极管饱和导通,继电器的线圈中有电流经过,从而产生吸合动作,用电器接通电源,开始工作。 总 结 整个设计所实现的功能非常简单,归结为四个字:定时开关。所谓定时就是实现AT89C52的定时器精确定时到1秒的功能,整个显示部分实现了分显示和秒显示两部分,同时实现了键盘的相关键值功能。实现了负载电源定时启闭的功能,同时在设定定时时间值的时候,实现了当前设定位的闪烁效果,当启动预约以后,也实现了所设定时间值不闪烁的效果,同时也实现了对设定时间值的保存。最后,当负载电源启动或关闭后,按下键盘当中的预约键,实现再次定时开关的功能。 随着人们生活水平的提高,人们对定时开关的要求越来越高,有单一的计时开关功能到发展到现在有多功能定时开关。这些多功能定时开关广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所。利用单片机作为定时开关的控制核心可以做到硬件电路简单稳10 定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减少因元器件精度不够引起的误差。设计中了解到定时开关的迅猛发展,它已经普遍应用到人们日常生产和生活之中了。定时开关有很强的发展空间,因此我们有理由相信将来定时开关会与我们的生产和生活更加紧密相连。 在本次毕业设计当中,自己深深的明白了理论知识一定要和实践相结合的道理,只有把理论知识贯穿到实践当中,才能真正的学到有用的知识,自己在这次毕业设计中也学到了很多新的知识。 11 参考文献 [1] 谭浩强 著.《C语言设计(第三版)》清华大学出版社 [2] 王洪庆 主编.《微型计算机控制技术》 机械工业出版社 .2012.9 [3] 王静霞 主编. 杨宏丽 刘俐 副主编.《单片机应用技术 C语言版》电子工业出版社.2012 [4]朱定华.单片机原理及接口技术实验[M].北京:北方交通大学出版社,2002 [5]何立民.MCS—51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出 .版社,1999. [6]李光.单片机基础.北京:北京航空航天大学出版社,1994 [7]倪晓军.单片机原理与接口技术教程.北京:清华大学出版社,2009 [8]姚年春.向华Protel99SE基础教程.北京:人民名邮电出版社,2009 [9]韩 颖.Proteus在单片机技术实训中的应用[J];中国科教创新导刊,2008,31期 [10]李贵庭.单片机应用技术及项目化训练.西南交通大学出版社,2009 12 致 谢 历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师—李学明老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找 资料 新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单 的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢~ 感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。 感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。 由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正~ 13 附录1:程序清单 #include #define uchar unsigned char #define uint unsigned int sbit KEYON =P2^0; // 开始键 sbit KEYOFF=P2^1; // 关闭键 sbit KEYSET=P2^2; // 预约键 sbit KEYINC=P2^3; //加1键 sbit KEYDEC=P2^4; // 减1键 sbit KEYFREE=P2^5; //预留键 sbit POWER=P3^6; //电源开关指示灯 sbit LED=P3^3 ; //按键指示灯 uchar code dispcode[]={0x3f,0x06,0x05b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //0-9的字型码 uchar data disbuf[]={0,0,0,0}; //显示缓冲区 uchar hour,min ; //小时、分变量 bit Onflag,flag; uchar Setflag; void delay(uchar); //延时子函数 void init(void); //定时器初始化子函数 uchar GetKeyNum(); //求按键号 void Keyprocess(uchar); //按键处理子函数 void calculate(); //计时子函数 void display(); //显示子函数 //--------------------主函数------------------------- void main(void) { init(); P1=0x00; while(1) display(); } //-------------定时器TO、T1初始化,外部中断0初始化子函数----- void init() { TMOD=0x11; //TO、T1作定时器、工作方式1 TH0=(65536-50000)/256 ; //定时50ms TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; IT0=1; //选择外部中断0为下降沿触发方式 EX0=1; //开外部中断0 ET1=1; //开定时器1 ET0=1; //开定时器0 EA =1; //开总中断 TR0=1; 14 } //----------显示子函数-------------------------- void display() { uchar i,j=0x08; if((Setflag==0)&&!(min|hour)) //数码管显示“- - - -” { for(i=0;i<4;i++) disbuf[i]=dispcode[10]; } else // 正常显示时间 { disbuf[0] = dispcode[min%10]; //分个位 disbuf[1] = dispcode[min/10]; //分十位 disbuf[2] = dispcode[hour%10]+0x80; //小时个位 disbuf[3] = dispcode[hour/10]; //小时十位 } if((Setflag!=0)&flag) //如果调时,数码管闪烁显示 { for(i=0;i<4;i++) { if((disbuf[i]==0x3f)&&(i>2)) //不显示前面的0 P0=0; else P0=disbuf[i]; if(Setflag==1) P1=j&0xfc; //调时,关断前两位位码 else P1=j & 0xf3; //调分,关断后两位位码 delay(5); //延时2.5ms P1=0x00; j=j>>1; } } else //数码管正常显示 { for(i=0;i<4;i++) { if((disbuf[i]==0x3f)&&(i>2)) P0=0; //不显示前面的0 else P0=disbuf[i]; P1=j; //位选通 delay(5); //延时2.5ms P1=0X00; j=j>>1; } } } //--------------外部中断0中断函数--------------------------------- void int0()interrupt 0 using 0 { uchar keynum; 15 display(); //动态显示程序作为去抖动 if(INT0==0) //判断是否有按键按下 { keynum=GetKeyNum(); //有效键,获取键值 while(INT0==0); //等待按键释放 Keyprocess(keynum); //按键处理 } } //-----------------定时器0中断子函数---------------------------- void time0() interrupt 1 //处理调时、显示器闪烁 { static uchar ledcnt,num; //设置静态变量 TH0=(65536-50000)/256; //定时50ms TL0=(65536-50000)%256; if((Onflag && ((hour | min)!=0)) |! Onflag) //指示灯每隔0.5s闪烁 { ledcnt++; if(ledcnt==10) // 10 X 50mS=0.5S { ledcnt=0; LED=~LED; } } if(Setflag!=0) //调时闪烁 { num++; if(num==5) { num=0; flag=~flag; } } } //-------------定时器1中断子函数------------------- void time1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; calculate(); //计时 } //-----------------求按键号------------------------------- uchar GetKeyNum() { uchar temp; if(KEYON==0) temp=1; if(KEYOFF==0) temp=2; if(KEYSET==0) temp=3; if(KEYINC==0) temp=4; if(KEYDEC==0) temp=5; 16 if(KEYFREE==0) temp=6; return(temp); } //--------------------按键处理函数---------------------------- void Keyprocess (uchar x) { switch(x) { case 1: //KEYON处理函数 Onflag=1; //开Onflag 标志 禁止坐卧标志下载饮用水保护区标志下载桥隧标志图下载上坡路安全标志下载地理标志专用标志下载 Setflag=0; //关(Setflag)调时标志 if((!Setflag)&&!(hour | min)) //没有调时且未处于预约,继电器通 { POWER=0; LED=0; } else TR1=1; //定时器1运行、执行计时程序 break; case 2 : //KEYOFF,关处理,标志清0 Onflag=0; Setflag=0; hour=0; min=0; POWER=1; LED=1; break; case 3: //预约调时/调分键,处理调时标志 if(Onflag==0) { Setflag++; if(Setflag==3) Setflag=1; } break; case 4: //加1键 if(Setflag==1) //调时键,最大只能调到11 { hour++; if(hour==12) hour=0; } if(Setflag==2) //调分键,最大只能调到59 { min++; if(min==60) min=0; } break; case 5: //减1键 17 if(Setflag==1) //调时键,减小时处理,最小0 { hour-- ; if(hour==-1) hour=12; } if(Setflag==2) //调分键,减分处理,最小0 { min--; if(min==-1) ; min=59 } break; } } //---------------------计算时间--------------------------------- void caculate() { static uint tcount; //tcount为定时次数 if((hour | min)!=0) { tcount++; //1次50ms到,改变定时次数 if(tcount==1200) //1200*50ms=1分钟 { tcount=0; //初始化定时次数 if(min==0) { min=60; hour--; } min--; } if((min==0)&(hour==0)) //预约时间到 { POWER=0; //继电器接通 LED=0; TR1=0; } } } //-----------------------定时0.5ms------------------------ void delay(uchar x) { uchar j,k; for(j=x;j>0;j--) for(k=249;k>0;k--); } 18 附录2:定时器原理图 19
本文档为【基于stc89c51rc定时开关控制器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_496339
暂无简介~
格式:doc
大小:236KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-10-21
浏览量:9