基于AT89C51设计的倒计时器.docx
- 文档编号:26672996
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:25
- 大小:286.84KB
基于AT89C51设计的倒计时器.docx
《基于AT89C51设计的倒计时器.docx》由会员分享,可在线阅读,更多相关《基于AT89C51设计的倒计时器.docx(25页珍藏版)》请在冰豆网上搜索。
基于AT89C51设计的倒计时器
河南工程学院毕业设计(论文)
基于AT89C51设计的倒计时器
学生姓名:
孙会朝
系(部):
电气信息工程系
专业:
电子信息工程技术
指导教师:
马宗锋
2010年5月26日
摘要
在很多场合我们经常需要计时,计时器也成为许多智能化电子产品的不可缺少的功能。
本文介绍一种用AT89C51单片机制作的倒数计时器,最大计时99s,由按键输入所需要的计时时间(1~99s);由LED数码显示器显示输入和计时过程剩余时间;可以在计时期间实现暂停功能,计时结束报警,并且计时时间与报警时间可调。
关键字:
AT89C51 计时器 报警
Abstract
Weneedtotimefrequentlyinmanysituations,thetimeralsobecomesmanyintellectualizationelectronicproductstheessentialfunction.Thisarticleintroducedthatonekindthetimerwhichfromthebottommanufactureswithat89C51monolithicintegratedcircuit,whenmostimportantmatter99s,needstotimethetimebythepressedkeyinput(1~99s);BytheLEDnumericalcodemonitordemonstratedthatinputsandtimestheprocesssurplustime;Mayintimeperiodrealizedthesuspensionfunction,thetimeconclusionwarning,andtimetimeandwarningtimeadjustable.
Keywords:
AT89C51 timer alarm
前言
随着单片机在现代社会各个等领域应用的不断扩大,数字倒数计时器广泛应用于竞赛类时间控制、烹饪定时等,也可用作实验计时器。
本文提出的设计中研究了数字倒数计时器的控制系统,进行AT89C51单片机为核心的数字倒数计时器的设计。
论文首先介绍了基于AT89C51单片机的倒数计时器系统硬件设计。
硬件电路部分由校正电路、复位电路、单片机及其周边电路、显示电路、声音报警电路等组成。
文中给出了电路图,并介绍了系统的工作原理。
单片机及其周边电路模块采用了AT89C51作为微处理器;显示部分采用了LED数码显示器。
软件部分由主程序和中断服务程序组成。
论文给出了各程序模块的部分原程序代码。
介绍了利用中小规模集成电路和半导体器件进行数字倒计时秒表的设计与实现,阐述了数字计时装置的工作原理与设计方法,若对此电路进行增加或改动,可以实现功能多样的数字计时器。
第一章绪论
1.1现状研究
随着人们对倒计时器原理认识的不断深入,倒计时器也由先前笨重的发展到现在的便携式的倒计时器,但其基本原理是没有改变的。
由于国内外电子技术的飞速发展,特别是在EDA技术的发展使倒计时器的基本实现机理有了质的改变,这就是当前应用较为广泛的高精度的液晶显示倒计时器。
1.2本课题研究的意义
本课题介绍了一种利用单片机AT89C51设计的秒倒计时器,针对其设计的的各个功能部件及其关键部分做了详细的研究。
该设计系统是一个典型的单片机系统,了解其工作原理及其信号处理流程有利于研究更加复杂的嵌入式系统,以便将其更加广泛的应用。
第二章设计方案
2.1设计要求
(1)倒数计时,最大99s
(2)计时时间与报警时间可调
(3)可以在计时期间实现暂停功能
(4)计时结束报警
2.2设计思路
该倒数计时器有四个校正开关,分别为S1、S2、ST、SR,其中S1为个位数输入按钮,S2为十位数输入按钮,ST为启动按钮,SR为复位按钮,电路采用AT89C51的计数器功能实现倒数计时的,通过两个7段数码管显示数字,电源为+5V直流电。
本设计思路清晰,电路简单,易于实现。
2.3设计方框图
基于设计思路,总体方框图如图1所示
初始化后首先通过按键电路预置计数器要所要计时的秒数,然后启动按钮开始计时,计数结束后通过可按下复位键进行下一轮工作,按键所输入的信息通过单片机进行处理后,输出到显示电路,用于显示计数器预置的时间和剩余时间,时间到音源电路会得到工作电压发出报警声音,直至按键电路的复位键按下后,结束报警声音,计数器开始进行下一轮工作。
图1:
设计总体方框图
第三章硬件设计
3.1总体电路
数字倒数计时器的硬件电路如图2所示.由按键S1、S2输入所需计时时间,S1输入个位数,S2输入十位数。
ST为启动按钮,按下ST后开始倒计时。
输入或剩余时间有2位LED数码管显示,在这里采用了接口静态显示方式,缺点是占用单片机I/O端口线较多。
计时时间到,P0.3为低电平,音源片(根据个人爱好选择音源)得到3V电压工作,晶体管驱动扬声器发出声音,按下复位按钮SR停止发声。
图2:
数字倒数计时器电路
3.2计数功能
计数就是对外部时间进行计数。
外部事件的发生以单片机外部引脚T0(P3.4)和T1(P3.5)端的输入脉冲表示,外部输入脉冲的负跳变计数器加1。
最高计数频率为单片机时钟频率的1/24,这一点在实际应用中要注意,如时钟频率为12MHz,则最高计数频率为500KHz。
计数值可通过工作方式的设定以及预置不同的初值来编程。
最大计数值由工作方式决定。
无论是作为定时器还是计数器使用,每输入1个(内部或外部)脉冲,计数器的值加1,当TH和TL全为1时,再输入1个脉冲,计数器将复0,同时从16位二进制加1计数器的最高位输出一个脉冲,使定时器/计数器控制寄存器(TCON)的TF0或TF1置1,生成中断溢出请求标志。
若定时器/计数器工作在定时功能下则表示定时时间到;若定时器/计数器工作在计数功能下,则表示达到预定计数值。
图3所示是定时器/计数器最大定时时间或最大计数值、定时时间或计数值以及预置初值的编程示意图。
定时时间或计数值=最大定时时间或最大计数值–预置初值
图3:
定时时间(计数值)编程示意图
3.3复位电路
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
如图4所示,复位键SR接于AT89C51芯片的RST接口,用与控制倒数计时器的复位操作。
计时器运行时按下SR键,计时器停止计数,或计数完成后按SR键进入下一轮计数工作。
图4:
复位电路
3.4校正电路
如图5所示,S1为个位数输入键,接于AT89C51芯片的P0.0接口,计时器运行后,按S1键预置个位数,每按一次S1键,数码管个位数加1,加到10时变0;S2为十位数输入键,接于AT89C51芯片的P0.1接口,计时器运行后,按S2键预置个位数,每按一次S2键,数码管十位数加1,加到10时变0;ST为启动按钮,接于AT89C51芯片的P0.2接口,按ST键计时器开始倒数计时。
图5:
校正电路
3.5实时显示电路
如图6所示,显示电路由两个7段数码管组成,采用了原理简单的静态显示方式,其缺点是占用单片机I/O端口较多。
个位数码显示管的a、b、c、d、e、f脚分别接于AT89C51芯片的P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6接口,用于计时器的个位数显示;十位数码显示管的a、b、c、d、e、f脚分别接于AT89C51芯片的P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6接口,用于计时器的十位数显示。
图6:
显示电路
3.6系统控制器
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图7所示。
图7:
AT89C51管脚排列
主要特性:
•与MCS-51兼容
•4K字节可编程闪烁存储器
•寿命:
1000写/擦循环
•数据保留时间:
10年
•全静态工作:
0Hz-24Hz
•三级程序存储器锁定
•128×8位内部RAM
•32可编程I/O线
•两个16位定时器/计时器
•5个中断源
•可编程串行通道
•低功耗的闲置和掉电模式
•片内振荡器和时钟电路
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
第四章软件设计
4.1主监控程序
主程序流程图如图8所示,在主程序中,设置T0产生50ms时间基准,R5为软件计时器,初值为20,用来产生秒信号。
R3为个位计时器,R4为十位计时器,,初值均设为0。
预置个位时,每按一次S1,R3内容加1,加到10时变0;预置十位时,每按一次S2,R4内容加1,加到10时变0。
预置计数值后并不开始倒计时,只有按下ST才启动T0开始工作,调用显示子程序,等待中断。
当检测到P0.3为低电平时(时间到),停止工作,并保持P0.3为低电平。
只有按下复位键SR时,才可进行下轮工作。
当然,也可以在计时中途按下复位键SR,让计时器停止工作。
图8:
主程序流程图
4.2中断服务子程序
中断服务子程序流程图如图9所示,在中断服务子程序中,T0每50ms中断一次,R5内容减1,减为0时,1s到。
(a)若R3内容不为0,再判断R3内容减1后是否为0?
若不为0中断返回。
(b)若R3内容减1后为0(或减1前已经是0),再判断R4内容是否为0?
若R4内容不为0,则R4内容减1,并将R3内容赋值9后中断返回;R4内容为0,则计时结束,关闭T0,P3.0输出0,重装T0初值,中断返回。
(c)在显示子程序中,采用查表的方法,将R3或R4中的数(BCD码),译成七段数码显示需要的段码,送显示器显示出数字。
图9:
中断服务子程序流程图
4.3程序清单
本设计程序清单如下:
;==================================
;主程序
;==================================
ORG0000H;复位开始
LJMPMAIN;转主程序
ORG000BH;T0中断服务子程序入口地址
LJMPZHD;转中断服务程序
ORG0100H;主程序从0100H开始
MAIN:
MOVR3,#00H;个位计时器清0
MOVR4,#00H;十位计时器清0
MOVR5,#14H;置软件计时器初值为20
MOVTMOD,#01H;置TMOD控制字
MOVTH0,#3CH;装入TH0初值
MOVTL0,#0B0H;装入TL0初值
SETBEA;开总中断
SETBET0;开T0中断
LOOP:
ACALLXSH;调用显示子程序
JNBP0.3,LOOP ;P0.3=0,转LOOP;P0.3=1,顺序执行
MOVP0,#0FFH;置P3口为输入状态
JNBP0.0,S1 ;P0.0=0,S1按下,转S1;P0.0=1,顺序执行
JNBP0.1S2 ;P0.1=0,S2按下,转S2;P0.1=1,顺序执行
JBP0.2,ST ;P0.2=1,转ST;P0.2=0,S2按下,顺序执行
SETBTR0;启动T0
ST:
LJMPLOOP;等待中断
S1:
INCR3;(R3)←(R3)+1
CJNER3,#0AH,Y1;(R3)≠10,转Y1
MOVR3,#00H;(R3)=10,R3清0
Y1:
LJMPLOOP;转LOOP
S2:
INCR4;(R4)←(R4)+1
CJNER4,#0AH,Y2;(R4)≠10,转Y2
MOVR4,#00H;(R4)=10,R4清0
Y2:
LJMPLOOP;转LOOP
;==================================
;中断服务程序
;==================================
ZHD:
DJNZR5,LOOP1 ;(R5)—1不为0,转LOOP1(1s不到)
MOVR5,#14H ;重置软件计时器初值为20(1s到)
MOVA,R3;取个位数
JZY3;个位数为0,转Y3
DJNZR3,LOOP1;个位数减1不为0,转LOOP1
Y3:
MOVA,R4;取十位数
JNZY4;十位数不为0,转Y4
CLRTR0;关闭T0
CPLP0.3;时间到,P0.3输出低电平
LJMPLOOP1;转LOOP1
Y4:
DECR4;(R4)←(R4)—1
MOVR3,#09H;(R3)←9
LOOP1:
MOVTH0,#3CH;重装TH0初值
MOVTL1,#0B0H;重装TL0初值
RETI;中断返回
;显示子程序
XSH:
MOVDPTR,#TAB;显示段码首地址
MOVA,R3;取个位数到A
MOVA,@A+DPTR;查个位数显示段码
MOVP1,A;个位数显示段码输出到P1口
MOVDPTR,#TAB;显示段码首地址
MOVA,R4;取十位数到A
MOVA,@A+DPTR;查十位数显示段码
MOVP2,A;十位数显示段码输出到P2口
RET;子程序返回
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;共阳段码
END;程序结束
第五章结语
所设计的系统中包含了微控制器、显示部件、输入部件等部分,实现了通过微控制
一定的运算后直观显示出来。
在整个设计系统中充分掌握各模块电路的工作原理,对硬件电路进行设计,并使用汇
编语言编写全部的驱动程序。
本系统用于秒倒计时、功耗小、显示直观。
因为个人在知识面和能力方面还有限,再加上条件的限制,该系统的精度和抗干扰能力等各项技术指标的提高、诸多功能的完善还需要进一步的研究和开发,此外在完成基本功能的基础上,还需要努力提高软件的效率、硬件系统的稳定性、进一步降低系统功耗等。
参考文献
[1]耿长清.单片机原理及应用技术[M].化学工业出版社,2002
[2]杨光友.单片微型计算机原理及接口技术[M].中国水利水电出版社
[3]胡键.单片机原理及接口技术[M].机械工业出版社,2005
[4]王治刚.单片机应用技术实训[M].清华大学出版社
[5]徐仁贵.单片机微型计算机应用技术[M].机械工业出版社
[6]付家才.单片机控制工程实践技术[M].北京:
化学工业出版社,2004.05
[7]潘新民.微型计算机控制技术[M].北京:
人民邮电出版社,1999.09
[8]蒋万君.在论循环时序电路的简便设计[M].机电一体化,2005第5期
[9]胡健.单片机实验与实践教程[M].北京航空航天大学出版社,2001
致谢
三年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。
从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。
回首三年,取得了些许成绩,生活中有快乐也有艰辛。
感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。
学友情深,情同兄妹。
三年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。
在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。
毕业设计,也许是我大学生涯交上的最后一个作业了。
想籍次机会感谢三年以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺的一部分。
最后,我要特别感谢马老师。
是他在我毕业的最后关头给了我们巨大的帮助与鼓励,使我能够顺利完成毕业设计,在此表示衷心的感激马老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。
他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。
大学生活即将匆匆忙忙地过去,但我却能无悔地说:
“我曾经来过。
”大学三年,但它给我的影响却不能用时间来衡量,这三年以来,经历过的所有事,所有人,都将是我以后生活回味的一部分,是我为人处事的指南针。
就要离开学校,走上工作的岗位了,这是我人生历程的又一个起点,在这里祝福大学里跟我风雨同舟的朋友们,一路走好,未来总会是绚烂缤纷表示真诚的感谢。
毕业设计(论文)任务书
题目名称基于AT89C51设计的倒计时器
学生姓名
孙会朝
所学专业
电子信息工程技术
班级
07对口电信
指导教师姓名
马宗锋
所学专业
电子信息工程技术
职称
教授
一、设计(论文)主要内容及进度
在很多场合我们经常需要计时,计时器也成为许多智能化电子产品的不可缺少的功能。
本文介绍一种用AT89C51单片机制作的倒数计时器,最大计时99s,由按键输入所需要的计时时间(1~99s);由LED数码显示器显示输入和计时过程剩余时间;可以在计时期间实现暂停功能,计时结束报警,并且计时时间与报警时间可调。
二、主要技术指标(或研究目标)
随着单片机在现代社会各个等领域应用的不断扩大,数字倒数计时器广泛应用于竞赛类时间控制、烹饪定时等,也可用作实验计时器。
本文提出的设计中研究了数字倒数计时器的控制系统,进行AT89C51单片机为核心的数字倒数计时器的设计。
论文首先介绍了基于AT89C51单片机的倒数计时器系统硬件设计。
硬件电路部分由校正电路、复位电路、单片机及其周边电路、显示电路、声音报警电路等组成。
文中给出了电路图,并介绍了系统的工作原理。
单片机及其周边电路模块采用了AT89C51作为微处理器;显示部分采用了LED数码显示器。
软件部分由主程序和中断服务程序组成。
论文给出了各程序模块的部分原程序代码。
介绍了利用中小规模集成电路和半导体器件进行数字倒计时秒表的设计与实现,阐述了数字计时装置的工作原理与设计方法,若对此电路进行增加或改动,可以实现功能多样的数字计时器。
三、进度计划
周次
设计(论文)各阶段内容
日期
1
查阅文献
3月10日—3月15日
2
译文
3月16日—3月18日
3
前言
3月20日—3月22日
4
绪论
3月24日—3月27日
5
设计方案
3月28日—3月31日
6
硬件设计
4月2日—4月20日
7
软件设计
4月22日—5月10日
8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 设计 计时器