基于单片机的定时器设计汇编Word格式文档下载.docx
《基于单片机的定时器设计汇编Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的定时器设计汇编Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
1.3电子定时器的发展前景1
1.4确定设计方案2
251单片机内部结构及计数原理2
2.151单片机内部机构2
2.2计数原理2
3系统硬件配件设计4
3.1芯片的选择4
3.2交流控制接口电路5
3.3显示电路5
3.4继电器5
3.5数码管6
4硬件电路设计7
4.1中继触发电路7
4.2继电器开关电路8
4.3时钟电路9
5软件设计10
5.1实现功能10
结论11
参考文献13
致谢14
附录1:
程序15
附录2:
系统仿真原理图21
1引言
我们在日常生活中,经常碰到一些需要定时的事情,例如:
印相或放大照片,需要定在零点几秒的时间,洗衣机洗涤衣物需要定在几分钟到几十分钟的时间,电风扇需要定在数十分钟的时间。
完成这种定时的定时器有多种多样,在家用电器中采用机械定时器就是根据一般上弦钟表原理设计的,这种定时器虽然结构简单,成本低,维修也比较方便,但是它的触头频繁接触和断开,大大的缩减了它的使用寿命,也不利于进一步全自动化。
在电子技术突飞猛进的今天,电子定时器一定会逐步取而代之,这是不言而喻的。
本文就是基于51系列单片机设计的定时器的设计方案。
1.1课题的来源和意义
本课题是通过导师筛选提出的,电子设计课题不一定很大,只要通过亲手做一遍全过程,完成一个产品制作,收获是很大的。
本课题的意义在于通过设计和制作本课题把在学校学习到的知识融会贯通并应用到实际当中。
做到学有所成,学有所用。
1.2定时器的应用
定时器在家用电器中经常用于延时自动关机、定时。
延时自动关机可用于:
收音机、电视机、录音机、催眠器、门灯、路灯、汽车头灯、转弯灯以及其他电器的延时断电及延时自停电源等。
定时可用于:
照相定时曝光、定时闪光、定时放大、定时调速、定时烘箱、冰箱门开定时报警、水位定时报警、延时催眠器、延时电铃、延时电子锁、触摸定时开关等。
例如:
空调中的定时器,在工作一段时间之后便能自动切断电源停止工作。
夏季夜间使用,入睡前先顶好时间,等睡熟后到了预定时间,空调自动关机。
方便节能。
定时器除了应用于家用电器外,还广泛地用于工业农业生产和服务设施,甚至军事等。
1.3电子定时器的发展前景
传统的定时器绝大多数都是发条驱动式、电机传动式或电钟式等机械定时器,部分电子器械中也有试用时间继电器的。
相对于传统的定时器,电子定时器的体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。
所以电子定时器的发展必定大有前途。
同时随着现代电子技术的发展,电子定时器也在不断的进步,朝向着更多用途、更高精度、更小体积发展着。
一个可编程电子定时器,它可以设置20组开、关电源设置,可以当时钟使用,
还也可以按星期组合让它在一周内的任意一天或几天按设置程序工作。
而且它只有长12.5cm×
宽5.5cm×
厚5cm大小。
且它的功耗特别小只有3W。
可以说是小巧玲珑,节能省电。
1.4确定设计方案
综上所述,此次的设计方案选定为:
以单片机STC89C51RC为主控制器,采用单片机内部定时、键盘和动态LED显示数码管设计定时器。
251单片机内部结构及计数原理
2.151单片机内部机构
51单片机内部有一个8位的CPU,同时CPU内部包含了运算器,控制器及若干寄存器如图(图1)所示。
图1CPU内部结构图
2.2计数原理
STC单片机内部设有两个16位的可编程定时器/计数器。
可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。
在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。
从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:
T0由TH0和TL0构成;
T1由TH1和TL1构成。
其访问地址依次为8AH-8DH。
每个寄存器均可单独访问。
这些寄存器是用于存放定时或计数初值的。
此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。
这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。
TMOD主要是用于选定定时器的工作方式;
TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。
当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
定时器/计数器方式寄存器TMOD:
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
TMOD的格式如下图(图2)所示。
图2TMOD格式图
由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:
GATE:
门控制位。
GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。
TCON的格式如下图(图3)所示。
其中,TFl,TRl,TF0和TR0位用于定时器/计数器;
IEl,ITl,IE0和IT0位用于中断系统。
图3TCON格式图
各位定义如下:
TF1:
定时器1溢出标志位。
当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。
进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
TR1:
定时器1运行控制位。
由软件清“0”关闭定时器1。
当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;
当GATE=0,TR1置“1”启动定时器1。
TF0:
定时器0溢出标志。
其功能及操作情况同TF1。
TR0:
定时器0运行控制位。
其功能及操作情况同TR1。
IE1:
外部中断1请求标志。
IT1:
外部中断1触发方式选择位。
IE0:
外部中断0请求标志。
IT0:
外部中断0触发方式选择位。
TCON中低4位与中断有关,我们将在下节课讲中断时再给予讲解。
由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。
执行“CLRTF0”后则清定时器0的溢出;
执行“SETBTR1”后可启动定时器1开始工作(当然前面还要设置方式定)。
3系统硬件配件设计
3.1芯片的选择
硬件电路要实现对交流大电流电源的控制、定时时间的设定显示和到点提醒等功能。
若采用40脚的单片机有利于设计,但会增大电路板的体积。
本设计采用的STC89C52RCC89系列单片机是深圳宏晶科技公司推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机。
STC89系列单片机具有ISP(在系统中可编程)动能和IAP(在应用可编程)功能,无需购买专用编辑器,可以通过串行口直接下载用户程序,性价比比较高如下图(图4)所示。
图4STC89C51RC单片机
STC89C51RC是一个有40个引脚的芯片,引脚如下图(图5)所示。
图5STC89C51RC引脚图
3.2交流控制接口电路
交流接口电路可以选择继电器控制,也可采用可控硅控制等。
本设计采用的是前一种——继电器控制。
3.3显示电路
显示电路采用4个共阳极LED数码管。
为了在定时达到分(钟)的时候能显示出时钟在计时,两个数码管之间增加一个发光二极管,以其闪烁来代表秒走动;
为了使硬件电路简单,采用单片机直接驱动LED数码管(AT89C2051输出口能吸收20mA电流),用动态扫描法实现LED显示。
3.4继电器
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一
种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用。
它的主要技术参数分为以下几点:
1、额定工作电压
额定工作电压是指继电器正常工作时线圈所需要的电压。
根据继电器的型号不同,可以是交流电压,也可以是直流电压。
2、直流电阻
直流电阻是指继电器中线圈的直流电阻,可以通过万能表测量。
3、吸合电流
吸合电流是指继电器能够产生吸合动作的最小电流。
在正常使用时,给定的电流必须略大于吸合电流,这样继电器才能稳定地工作。
而对于线圈所加的工作电压,一般不要超过额定工作电压的1.5倍,否则会产生较大的电流而把线圈烧毁。
4、释放电流
释放电流是指继电器产生释放动作的最大电流。
当继电器吸合状态的电流减小到一定程度时,继电器就会恢复到未通电的释放状态。
这时的电流远远小于吸合电流。
5、触点切换电压和电流
触点切换电压和电流是指继电器允许加载的电压和电流。
它决定了继电器能控制电压和电流的大小,使用时不能超过此值,否则很容易损坏继电器的触点。
3.5数码管
数码管是一种半导体发光器件,其基本单元是发光二极管如下图(图6)所示。
图6数码管
数码管分类:
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
按能显示多少个“8”可分为1位、2位、4位等等数码管。
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
驱动方式:
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
4硬件电路设计
4.1中断电路
中断电路主要用于当按键按下之后8输入与非门74HC30的输出端输出高电平,经非门电路74LS04倒相后,按键按下时输出为低电平,该低电平信号接单片机的外部中断信号输入端
(即P3.2引脚),74HC30引.脚1,2,3,4,5,6,11,12是与非门的输入脚,8脚是与非门的输出脚.7脚是GND,14脚是VCC.9,10,13未连为N/C如下图(图)所示:
图7中断电路图
4.2继电器开关电路
通过如下图(图8)的连接方式,可以提高驱动负载的能力,并且利用三极管截至和饱和导通的性质可以很方便的用于单片机控制。
图8继电器开关电路
4.3时钟电路
时钟电路用于产生单片机工作所需要的时钟信号。
芯片引脚XTAL1为输入端,引脚XTAL2为输出端,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,构成了一个稳定的自激振荡器。
电路中的电容C2和C3一般取30pF左右,而晶体的振荡频率范围通常是1.2MHz~12MHz,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。
但反过来运行速度快对存储器的速度要求就高,对印刷电路板的工艺要求也高(线间寄生电容要小)。
由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。
当振荡脉冲频率为12MHz时,一个机器周期为1us,当振荡脉冲频率为6MHz时,一个机器周期为2us。
时钟电路如下图(图9)所示:
图9时钟电路
4.4复位电路
复位电路的复位信号为高电平有效,其有效时间应持续24个振荡脉冲周期(即2个机器周期)以上。
电阻R1与电容C1构成RC电路,电容C1充放电。
当5V电压加上的瞬间,电容C1为正极朝上的电解电容。
此刻C短路,因为电容C1不能突变,所以点A此刻也为5V,而后电压送到RST上,随着时间推移,C1充电至5V,此刻电容C1相当于断路,点A电压为0V,RST端低电平无效。
复位电路如下图(图10)所示:
图10复位电路
5软件设计
5.1实现功能
程序开始首先对按键变量和小时、分钟变量进行定义,对共阴极数码管的段码(字型码)以一维数组方式定义。
另外对延时函数、定时器初始化子函数、求按键子函数、按键处理子函数、计时子函数、显示子函数进行声明(如图11所示)。
在定时器T0、T1初始化和外部中断0(
)子函数中,规定定时器T0、T1的工作模式为方式1,定时时间为50ms。
外部中断0采用下降沿触发方式。
定时器工作在中断方式,即定时时间到,立即停止执行主函数,转而去执行中断服务函数(如图12、13、14所示)。
在显示子函数中,上电复位后4位数码管显示“----”。
其中包括走时转换函数,负责将定时器走时数据转换为分钟的十位和个位,超过60分钟的数据再转换为小时的十位和个位。
在计时子函数中,设置每50ms中断1次,秒计数器中计数值为200时,时间为1分钟。
分钟计数器计数值为60时,时间为1小时预约时间到,单片机P3.6引脚输出低电平,驱动三极管饱和导通,继电器的线圈中有电流经过,从而产生吸合动作,接通电源,用电器开始工作。
图11主函数图图12定时器T0中断服务函数
图13外部中断T1中断服务函数图14外部中断0中断服务函数
结论
本文在回顾电子定时器发展历程的基础上,首先阐述了电子定时器的基本原理,进而详细介绍了和电子定时器相关的各种专业名词和术语。
硬件选型方面选用ATMEL公司的STC89C51RC单片机作为核心,用LED数码管显示和继电器作为电源输出控制。
论文的软件部分给出了系统运行的流程图和程序。
由于能力和知识水平的限制,设计中存在着不足。
如硬件选择和连接可能有不合理,定时器中未能有电子表功能等人性化部分,以后还需改进。
从这次毕业论文设计中,无论对于单片机还是定时器,都进一步清晰了设计概念、学习了专业理论、掌握了芯片知识,而且还增长了实践经验,提高了认知水平,促进了自学能力。
从诸多方面获得了很大的收益。
参考文献
[1]张志利.FPGA的单片机多机串行通信网络[J].单片机与嵌入式系统应用,2009
[2]姚晓光.基于GPRS的单片机固件升级系统设计[J].单片机与嵌入式系统应用,2010
[3]李辉,宁祎,邓遵义.SPCE061A单片机程序存储器的扩展技术[J].机电产品开发与创新,2008
[4]向鹏,李绣峰,杜遥雪.分布式全电动注塑机控制系统[J].机械与电子,2007
[5]李俊,王金海.基于TFTP协议的ARM软件远程更新系统[J].工矿自动化,2010
[6]朱飞龙,杨鸣.基于IAP功能单片机的远程更新系统设计[J].机电工程,2010
[7]李广弟等.单片机基础[M].北京航空航天出版社,2001
[8]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009
[9]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010
[10]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007
[11]钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007
致谢
大学生活一晃而过,回首走过的岁月,心中倍感充实,当我写完这篇毕业论文的时候,有一种如释重负的感觉,感慨良多。
首先诚挚的感谢我的论文指导老师李学明老师。
他在忙碌的教学工作中挤出时间来审查、修改我的论文。
还有教过我的所有老师们,你们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;
他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。
感谢三年中陪伴在我身边的同学、朋友,感谢他们为我提出的有益的建议和意见,有了他们的支持、鼓励和帮助,我才能充实的度过了三年的学习生活。
由于专业水平有限,论文难免有不足、错误之处,恳请广大老师。
同学批评指正!
程序
#include<
reg52.h>
#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=(6