基于STC89C51RC定时开关控制器设计.docx

上传人:b****3 文档编号:5334157 上传时间:2022-12-15 格式:DOCX 页数:21 大小:163.95KB
下载 相关 举报
基于STC89C51RC定时开关控制器设计.docx_第1页
第1页 / 共21页
基于STC89C51RC定时开关控制器设计.docx_第2页
第2页 / 共21页
基于STC89C51RC定时开关控制器设计.docx_第3页
第3页 / 共21页
基于STC89C51RC定时开关控制器设计.docx_第4页
第4页 / 共21页
基于STC89C51RC定时开关控制器设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于STC89C51RC定时开关控制器设计.docx

《基于STC89C51RC定时开关控制器设计.docx》由会员分享,可在线阅读,更多相关《基于STC89C51RC定时开关控制器设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于STC89C51RC定时开关控制器设计.docx

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

 

基于STC89C51RC定时开关控制器

摘要:

应用STC89C51RC单片机为核心,设计具备按键功能和数码显示功能的外围硬件电路,以便控制器能够在设定的开关时刻控制输出继电器的动作,进而控制负载电源的启闭,并完成最大预约时间为12小时。

关键词:

STC89C51RC,计时器,继电器

 

Computer-controlledtimer

 

Abstract:

ApplicationofSTC89C51RCmicrocontrollerasthecore,withkeydesignfeaturesanddigitaldisplayperipheralhardwarecircuitfunctions,sothatthecontrollercansettheoutputrelayswitchingtimecontrolactions,andthuscontrolthehoistloadpowerandmakeanappointmenttocompletethemaximumof12hours.

Keywords:

STC89C51RC,automaticcontrol,timersocket

 

目    录

第1章引言---------------------------------------------------------------------------------------------------------1

1.1方案设计-----------------------------------------------------------------------------------------------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集成电路技术的发展,使定时器具有体积小、携带方便,但是这里介绍的实用定时器可以满足使用者的一些特殊要求,输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。

实用倒计时定时器是一个时间控制系统,既能作为一般的时间显示器,也可作为一个定时控制器,驱动负载或显示信息,同时可以根据需要扩展其功能。

在此设计研究过程中需综合运用所学的模拟电子技术、数字电子技术、单片机原理与应用、电子系统设计等课程的知识,掌握实用倒计时定时器的设计、组装与调试方法,利用现代的电子系统设计、单片机等新电子技术以及现代的设计手段,系统地培养了综合设计、操作调试、故障处理的能力,达到综合素质以及创新能力的提高。

本次毕业设计中采用单片机作为主要芯片设计倒计时控制系统。

本系统的设计实用性强、设计灵活方便并且适合在任何条件下进行定时,所以设计意义较为深远。

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数码管动态显示。

本课题主要从以下三个方面入手:

一是实现按键功能,可以接通关闭电源并设定时间;

二是实现显示功能,显示设定时间;

三是实现定时功能,当时间到达设定值时,继电器动作,控制负载电源的启闭,并通过指示灯显示任务的完成;

设计的总体方案如图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区

图2STC89C51RC引脚

根据设计要求,选用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脚接地。

图3时钟电路

2.1.3复位电路

复位电路就是在RST端(9脚)外接的一个电路,如图4所示,目的是使单片机上电时,内部电路从初始状态开始工作,或者在工作中人为让单片机重新从初始状态开始工作。

在时钟工作的情况下,只要复位引脚高电平保持在两个机器周期以上的时间,STC89C51RC便能完成系统的复位,使得内部特殊功能寄存器的内容均被设置成已知状态,并且从地址0000H处读入程序代码而执行程序。

图4复位电路

2.1.4上拉电阻

图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”,表示无信号输入。

这六个按键只要有一个按键按下,8输出与非门74HC30的输出端必然输出高电平(它的逻辑功能为:

全1出0,有0出1)。

2.1.6继电器开关电路

图7继电器开关电路

如图7所示,由于单片机I/O口驱动能力有限,利用三极管截止和饱和的性质可以控制继电器动作,可以提高驱动负载的能力。

2.1.7中断触发电路

图8中断触发电路

如图8所示,中断触发电路主要由8输入与非门74HC30及非门74LS04构成,主要用于当按键按下之后8输入与非门74HC30的输出端输出高电平,经非门电路74LS04倒相后,按键按下时输出为负脉冲,该负脉冲信号接单片机的外部中断信号输入端

(即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。

程序开始首先对按键变量和小时、分钟变量进行定义,对共阴极数码管的段码(字型码)以一维数组方式定义。

另外对延时函数、定时器初始化子函数、求按键子函数、按键处理子函数、计时子函数、显示子函数进行声明。

图10主函数

在定时器T0、T1初始化和外部中断0(

)子函数中,规定定时器T0、T1的工作模式为方式1,定时时间为50ms。

定时器工作在中断方式,即定时时间到,立即停止执行主函数,转而去执行中断服务函数。

图11定时器T0中断服务函数

图12定时器T1中断服务函数

图13外部中断0中断服务函数

在显示子函数中,上电复位后4位数码管显示“----”。

其中包括走时转换函数,负责将定时器走时数据转换为分钟的十位和个位,超过60分钟的数据再转换为小时的十位和个位。

在计时子函数中,设置每50ms中断1次,软件计数器中计数值为1200时,时间为1分钟。

分钟计数器计数值为60时,时间为1小时.。

预约时间到,单片机P3.6引脚输出低电平,驱动三极管饱和导通,继电器的线圈中有电流经过,从而产生吸合动作,用电器接通电源,开始工作。

总结

整个设计所实现的功能非常简单,归结为四个字:

定时开关。

所谓定时就是实现AT89C52的定时器精确定时到1秒的功能,整个显示部分实现了分显示和秒显示两部分,同时实现了键盘的相关键值功能。

实现了负载电源定时启闭的功能,同时在设定定时时间值的时候,实现了当前设定位的闪烁效果,当启动预约以后,也实现了所设定时间值不闪烁的效果,同时也实现了对设定时间值的保存。

最后,当负载电源启动或关闭后,按下键盘当中的预约键,实现再次定时开关的功能。

随着人们生活水平的提高,人们对定时开关的要求越来越高,有单一的计时开关功能到发展到现在有多功能定时开关。

这些多功能定时开关广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所。

利用单片机作为定时开关的控制核心可以做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减少因元器件精度不够引起的误差。

设计中了解到定时开关的迅猛发展,它已经普遍应用到人们日常生产和生活之中了。

定时开关有很强的发展空间,因此我们有理由相信将来定时开关会与我们的生产和生活更加紧密相连。

在本次毕业设计当中,自己深深的明白了理论知识一定要和实践相结合的道理,只有把理论知识贯穿到实践当中,才能真正的学到有用的知识,自己在这次毕业设计中也学到了很多新的知识。

参考文献

 

[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

致谢

历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。

尤其要强烈感谢我的论文指导老师—李学明老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。

另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。

在此向帮助和指导过我的各位老师表示最中心的感谢!

感谢这篇论文所涉及到的各位学者。

本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。

感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。

由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!

附录1:

程序清单

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitKEYON=P2^0;//开始键

sbitKEYOFF=P2^1;//关闭键

sbitKEYSET=P2^2;//预约键

sbitKEYINC=P2^3;//加1键

sbitKEYDEC=P2^4;//减1键

sbitKEYFREE=P2^5;//预留键

sbitPOWER=P3^6;//电源开关指示灯

sbitLED=P3^3;//按键指示灯

ucharcodedispcode[]={0x3f,0x06,0x05b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9的字型码

uchardatadisbuf[]={0,0,0,0};//显示缓冲区

ucharhour,min;//小时、分变量

bitOnflag,flag;

ucharSetflag;

voiddelay(uchar);//延时子函数

voidinit(void);//定时器初始化子函数

ucharGetKeyNum();//求按键号

voidKeyprocess(uchar);//按键处理子函数

voidcalculate();//计时子函数

voiddisplay();//显示子函数

//--------------------主函数-------------------------

voidmain(void)

{

init();

P1=0x00;

while

(1)

display();

}

//-------------定时器TO、T1初始化,外部中断0初始化子函数-----

voidinit()

{

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;

}

//----------显示子函数--------------------------

voiddisplay()

{

uchari,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;//小时个位

d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1