基于AT89C52倒计时定时器设计.docx
- 文档编号:10750982
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:32
- 大小:181.13KB
基于AT89C52倒计时定时器设计.docx
《基于AT89C52倒计时定时器设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C52倒计时定时器设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于AT89C52倒计时定时器设计
摘要
在日常的生活和工作中,倒计时定时器已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
倒计时定时器具有实用性高、成本低、功耗低、易操作等优点。
本文主要介绍了基于AT89C52单片机控制的倒计时定时器的设计。
文中阐述了设计该系统的一些基本背景、原理及系统的各部分组成等。
本次设计实现了在4位八段LED显示分秒、时间的设定、倒计时、复位、报警等功能。
关键字:
倒计时定时器AT89C52报警
TheDesignofCountdownTimerBasedonAT89C52
Abstract:
Inourdailylifeandwork,countdowntimerhasbecomeessentialtodailylife.Itiswidelyusedinourfamily,stations,terminals,theaters,officesandotherpublicplaces,alsotakeagreatconveniencetopeople'slives,study,workandentertainment.Countdowntimerhasacharacterofpracticalandlow-cost,lowpowerconsumption,easyoperationandsoon.
ThispaperintroducedthedesignofcountdowntimerbasedonAT89C52,anddescribedthebackground,principlesandthevariouspartsofthesystem.Thedesignhasachievedthemainfunctionsuchas:
timesetting,timecount-down,resettingandalarm.
Keywords:
CountdownTimerAT89C52Alarm
第1章引言
1.1选题背景
倒计时定时器已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹、跑表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的倒计时定时器为基础的。
因此,研究实用倒计时定时器及其扩展应用,有着非常现实的意义,具有很大的实用价值。
由于数字集成电路技术的发展和采用了先进的石英技术,使倒计时定时器具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
虽然现在市场上已有现成的倒计时定时器集成电路芯片出售,价格便宜,使用也灵活,如可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是MOS集成电路技术的发展,使倒计时定时器具有体积小、携带方便,但是这里介绍的实用倒计时定时器可以满足使用者的一些特殊要求,输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。
[2]
实用倒计时定时器是一个时间控制系统,既能作为一般的时间显示器,也可作为一个定时控制器,驱动负载或显示信息,同时可以根据需要扩展其功能。
在此设计研究过程中需综合运用所学的模拟电子技术、数字电子技术、单片机原理与应用、电子系统设计等课程的知识,掌握实用倒计时定时器的设计、组装与调试方法,利用现代的电子系统设计、单片机等新电子技术以及现代的设计手段,系统地培养了综合设计、操作调试、故障处理的能力,达到综合素质以及创新能力的提高。
本次毕业设计中采用单片机作为主要芯片设计倒计时控制系统。
本系统的设计实用性强、设计灵活方便并且适合在任何条件下进行定时,所以设计意义较为深远。
1.2指导思想
通过对倒计时时钟软、硬部分的设计及调试,进一步掌握单片机的性能特点及工作原理。
在设计过程中熟悉AT89C52系列单片机各个管脚的功能,学习单片机控制八段数码管显示的工作原理。
提高单片机软件部分的编程能力,特别是利用单片机C语言对单片机的编程能力。
通过本次毕业设计总结在四年大学学习中学到的知识,并且提高实际操作能力,为以后进一步学习和工作打好基础。
1.3方案论证与选择
1.总体方案论证与选择
方案一:
纯硬件电路系统。
各功能采用分离的硬件电路模块实现。
用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。
但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。
方案二:
采用AT89C52单片机作为系统的控制核心。
倒计时功能采用C语言编程利用单片机内部定时器来实现,可以使用LED八段数码管显示时间等信息。
由于使用了单片机,整个系统可编程,系统的灵活性大大增加了。
另外,本方案可以方便的实现其他功能的扩展。
经过以上的比较论证,选用方案二来完成项目设计的要求。
2.模块方案论证与选择
(1)时钟模块
方案一:
基本门电路搭建
用基本门电路来实现时钟发生器,电路结构复杂,故障系数大,不易调试。
方案二:
专用时钟芯片
目前市场上已有很多实时时钟芯片。
如DS12887、DS1302、PCF8563、X1227等,芯片内都集成了时钟/日历功能,给时钟系统设计带来很多方便。
方案三:
由单片机实现倒计时功能
单片机内部具有定时器,可方便实现定时功能。
通过计算可知,使定时器每25ms产生一次中断,当产生40次中断后秒单元将加一,以此类推,从而实现时、分、秒的走时,并加以显示。
经过考虑,本着实用可行的原则,由于AT89C52有内部定时器,完全可以通过C语言变程来实现倒计时功能因此计时功能,定时模块采用方案三来实现。
(2)键盘模块
方案一:
采用独立式按键电路
每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
[8]
方案二:
采用阵列式键盘
此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。
由于本系统使用用的键盘按键较少,I/O接口线不多,所以采用方案二。
(3)显示模块
方案一:
采用液晶显示。
液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。
而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。
方案二:
使用多个数码管显示。
LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。
由于本设计不需要显示大的信息量,系统采用方案二。
(4)止闹功能
方案一:
采用声音控制实现非接触止闹功能。
此方案的优点是操作方便,但由于声控存在灵敏度的问题,在现场条件差的环境中,外界噪声对正常声音信号带来的干扰,也比较容易引起误动作。
方案二:
采用光电开关实现非接触止闹功能,因为光电开关利用物体对红外线的反射,可检测到物体的有无,方便有效,人体只需要靠近传感器20CM以内就可产生信号,完成止闹功能。
[3]
方案三:
采用按下止闹按钮实现接触式止闹。
一般钟表都具有闹钟功能,定时时间到,便自动启动闹钟,发出铃声、音乐声以提醒人们,再由人按下止闹按钮停止闹钟工作,此方案优点是操作起来很方便。
系统的止闹模块设计采本着实用,成本低的原则,采用用方案三实现止闹功能。
1.4系统概述
利用单片机定时器及计数器产生定时效果通过编程形成倒计时效果,再利用数码管动态扫描显示单片机内部处理的数据。
同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
系统上电自检后,实时实现分钟、秒信息的显示,通过按键可实现校对时间、倒计时的设定和显示。
当设置的定时时间到时,单片机通过蜂鸣器来实现声报警,利用开关实现止闹的功能。
第2章系统总体设计
本设计主要功能是实现时间的设定、倒计时、报警功能,采用分秒显示,在4位八段LED上显示分和秒。
若想设置时间,需复位;用定时器1进行按键扫描,判断是否有键按下,若有键按下,是那个键按下;定时时间到则蜂鸣器发出警报;复位后停止发出警报声音,时间显示为系统初始时间(系统软件设定),按下确认键,系统开始重新倒计时。
结构框图如图2-1所示:
2.1模块功能实现与原理
(1)主控单元
主控单元主要有AT89C2单片机构成,主要利用片内定时器0进行定时,定时器1进行键盘扫描,控制各个模块完成倒计时定时功能。
(2)键盘模块
键盘模块一共有5个按键,其中按键1和按键5分别设置时间的增减,按键2和按键4分别控制光标的左移和右移,按键3为确认键,按下此键开始倒计时。
5个按键分别与p1.0~p1.4口连接,当没有按键按下时这几个口为高电平,当这几个口为低电平时,表示有按键按下。
(3)复位电路
复位操作是使单片机进入某种确定的初始状态。
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
(4)显示模块
显示模块主要分为分显示和秒显示两个部分,由四个共阳极八段数码管;四个共阳极八段数码管与P0口连接,公共端分别与四个PNP三极管连接,四个PNP三极管再与P2.0~P2.3连接,当这几个口给低电平时三极管导通数码管点亮。
(5)蜂鸣器报警
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻后由单片机的引脚控制,当引脚输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当引脚输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制引脚的电平来使蜂鸣器发出声音和关闭。
还可以在程序中改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变引脚输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。
[1]
2.2计时精度
本设计利用MCU的定时器软件计时,计时误差首先取决于MCU的时钟。
(1)MCU时钟引起的计时误差
MCU的fosc=12MHz,是由石英晶体振荡器产生的,其频率稳定度优于10-6,有时可达10-11。
按10-6计算,每秒变化6微秒,100分钟的变化仅为0.036S,故此变化可以忽略。
(2)中断响应时间造成的误差
计时定时器的初值,是按以下式计算出来的初填值=2n–TINT/Tc式中,2n为计时器的容量,这里是65536;TINT中断(计时溢出)的时间;Tc为机器周期,这里Tc=2us。
0.1S中断的初值为15536.由于Tc为整数,此初值是无误差的。
但是,由于中断请求到执行中断服务程序的第一条指令是需要几个Tc的时间,即中间响应时间。
何况执行第一条指令填入TL1还需要3个Tc,若中断响应时间为3Tc,0.1s内的计时误差6T=12us,100min计时误差为-0.72s,完全满足计时精度要求。
[5]
第3章硬件及软件设计
3.1主控模块
本设计的主控模块由AT89C52单片机构成,利用片内定时器通过软件实现控制数码管显示、倒计时等功能。
时间设定主要是靠键盘对时间进行设定,键盘主要有四个功能键和一个确定键。
分别用于设定时间和确定开始倒计时。
定时器的时间主要是依托单片机内部TIME0可编程定时计数器实现时间的准确获取。
TIME0是一个通用的单通道8位定时器/计数器模块。
其主要特点如下:
单通道计数器,比较匹配发生时清除定时器(自动加载),10位的时钟预分频器溢出和比较匹配中断源(TOV0和OCF0)T/C(TCNT0)和输出比较寄存器(OCR0)为8位寄存器。
[4]中断请求信号在定时器中断标志寄存器TIFR都有反映。
所有中断都可以通过定时器中断屏蔽寄存器TIMSK单独进行屏蔽。
T/C可以通过预分频器由内部时钟源驱动,或者是通过T0引脚的外部时钟源来驱动。
时钟选择逻辑模块控制使用哪一个时钟源与什么边沿来增加(或降低)T/C的数值,如果没有选择时钟源T/C就不工作。
时钟选择模块的输出定义为定时器时钟clkT。
双缓冲的输出比较寄存器OCR0一直与T/C的数值进行比较,比较匹配事件还将置位比较标志OCF0。
设计中将TIME0作为整个系统的定时器时钟来源,通过TIME0的定时功能实现对定时操作,由于TIME0是八位的定时计数器无法在一次操作中完成1秒的定时。
在单片机内部资源的操作中采取重复操作的方式实现一秒的准确定时操作。
在系统的测量过程中通过TIME0的操作在过一秒之后初始设定的时间值将自动递减到0,并且通过数码管实现动态显示。
3.1.1AT89C52的基本知识
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,如图所示(本设计采用第二种封装形式),以适应不同产品的需求。
其主要功能特性:
·兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM
·32个双向I/O口·256x8bit内部RAM
·3个16位可编程定时/计数器中断·时钟频率0-24MHz
·2个串行中断·可编程UART串行通道
·2个外部中断源·共6个中断源
·2个读写中断口线·3级加密位
·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能
AT89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
3.1.2AT89C52的内部结构
AT8C52功能框架图如图3-1所示:
图3-1AT8C52功能框架图
AT8C52功能框封装图如图3-2所示:
图3-2AT8C52功能框封装图
3.1.3AT89C52的引脚功能描述
AT89C52引脚名称如表3-1所示:
表3-1AT89C52引脚名称
引脚标记
引脚编号
端口类别
DIP
LCC
QEF
Vss
20
22
16
I
Vcc
40
44
38
I
P0.0~P0.7
39~32
43~36
37~30
I/O
P1.0~P1.7
1~8
2~9
4~44
I/O
P2.0~2.7
21~28
24~31
1~3,
24~31
I/O
P3.0~P3.7
10~17
11,13~19
5,7~13
I/O
RST
9
10
4
I
ALE/PROG
30
33
27
I/O
PSEN
29
32
36
O
EA/Vpp
31
35
29
I
XTAL2
18
20
14
O
XTAL1
19
21
15
I
·P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
·P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表3-2。
Flash编程和程序校验期间,P1接收低8位地址。
表3-2P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2(定时计数器2外部计数脉冲输入),时钟输出
P1.1
T2EX(定时计数2捕获重装载触发和方向控制)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
表3-3P3口第二功能表
此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
·ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
·PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
·XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
·XTAL2:
振荡器反相放大器的输出端。
时钟振荡器:
AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图如下。
图3-3振荡电路图
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。
3.1.4AT89C52的工作模式
AT89C52有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。
这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位来实现的。
PD是掉电模式,当PD=1时,激活掉电工作
模式,单片机进入掉电工作状态。
IDL是空闲等待方式,当IDL=1,激活空闲工作模式,单片机进入睡眠状态。
如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。
在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。
此时,片内RAM和所有特殊功能寄存器的内容保持不变。
空闲模式可由任何允许的中断请求或硬件复位终止。
终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件被激活,IDL(PCON.0)被硬件清除,即刻终止空闲工作模式。
程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式那条指令后面的一条指令。
其二是通过硬件复位也可将空闲工作模式终止。
需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。
为了避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。
退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
[3]
3.1.5AT89C51的内部存储器
Flash闪速存储器的编程:
AT89C52单片机内部有4k字节的FlashPEROM,这个Flash存储阵列出厂时已处于擦除状态(即所有存储单元的内容均为FFH),用户随时可对其进行编程。
编程接口可接收高电压(+12V)或低电压(Vcc)的允许编程信号。
低电压编程模式适合于用户在线编程系统,而高电压编程模式可与通用EPROM编程器兼容。
AT89C52单片机中,有些属于低电压编程方式,而有些则是高电
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C52 倒计时 定时器 设计