89C51 LED电子钟电路设计.docx
《89C51 LED电子钟电路设计.docx》由会员分享,可在线阅读,更多相关《89C51 LED电子钟电路设计.docx(60页珍藏版)》请在冰豆网上搜索。
89C51LED电子钟电路设计
摘要
近年来,随着电子产品的发展,随着社会竞争的激烈,人们对数字时钟的要求越来越高。
从人们的日常生活到工厂的自动控制,从民用时钟到科学发展所需的电子时钟,现代人对时间的精度和观察时间的方便度有了越来越多的需求。
本次设计通过对一个实现时钟显示和万年历等功能的数字钟的设计,详细讨论了它从软件上实现的过程,此系统采用单片机晶振系统电路提供的1HZ脉冲实现计时。
其中结合了数码管的显示、LED动态扫描、单片机定时中断等技术。
系统由AT89C52及最小系统、LED数码管、按键、等组成。
几本能实现时钟时、分、秒的显示和年月日的转换显示,还增加了闹钟功能。
在文章的最后,给出了实现数字钟和闹钟功能的源程序。
关键字:
AT89C52数字钟LED数码管中断
ABSTRACT
Inresentyears,withthedevelopmentofelectronicproductandintensesocialcompetition,peoplehavebecomeincreasinglydemandingfordigitalclock.Frompeople'sdailylivestotheautomaticcontroloffactory,fromcivilclocktotheclockthatscientificdevelopmentrequires,peoplehavemorerequeststotheaccuracyoftimeandconvenienceofobservationtime.
Wediscussedhowthedigitalclockworksinsoftwareindetailthistimebymeansofdesigningaclockwhichcontainsthefunctionofdisplayingtimeandperpetualcalendar,etc,andweuse1HZpulsethatthesingle-chipcrystaloscillatorcircuitofferstoachievetiming.Inthisdesign,wecombinedthetechnologiesofdigitaldisplay,LEDdynamicscanningandSCMtiminginterrupt.AT89C52minimumsystem,LEDdigitaltubeandbuttonsconsistofthesystem,whichcanachievedisplayinghour,minutesecondandtransitionofyear,monthandday,besides,itoffersAlarmclockfunction.Attheendofthearticle,weofferedthesourcecodethatrealizingdigitalclockandAlarmclockfunction.
Keywords:
AT89C52digitalclockLEDsegmentdisplaysinterrupt
第一章绪论
1.1数字钟的开发背景
数字钟是一种用数字电路技术实现时、分、秒计时的钟表。
与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。
数字钟的设计方法有许多种,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。
这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于其他功能的扩展。
1.2数字钟的发展状况
随着人们生活节奏的加快,数字钟已成为人们生活中不可缺少的物品。
现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,其电路可以由实时时钟模块、环境温度检测模块、人机接口模块、报警模块等部分组成。
利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。
但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命。
目前市场销售的数字钟品种较多,如用数字电路、单片机等技术实现。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
但是在单片机技术日趋成熟的今天,其灵活的硬件电路的设计和软件的设计,让单片机得到了广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。
单片机小的系统结构几乎是所有具有可编程硬件的一个缩影,单片机的学习和研究是对微机系统学习和研究的简捷途径。
用单片机技术实现具有基本数字钟功能,还能在各种恶劣环境下工作。
可充分挖掘了单片机的资源和运算控制能力,具有功能多、显示全、成本低的特点。
数字闹钟既可以通过纯硬件实现,也可以通过软硬件结合实现,根据数字闹钟的核心部件——秒信号的产生原理,通常采用NE555时基电路、石英钟专用芯片、基于微处理器的三种实现形式。
1.采用NE555时基电路的实现形式
图1.1基于555的秒脉冲发生器采用
NE555时基电路或其他振荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或微处理器的外部中断输入信号,可构成数字钟。
由555构成的秒脉冲发生器电路见图1-1所示。
输出的脉冲信号VO的频率F=1.443/(RA+2RB)×C,可通过调节这3个参数,使输出VO的频率为精确的1Hz。
2.采用石英钟专用芯片的实现形式
采用石英钟专用计时芯片实现的数字钟,具有实现简单、计时精度高的特点。
石英计时芯片(简称“机芯”)比较多,常见型号的有STP5512F、SM5546A和D60400等。
现结合康巴丝石英钟常用的5512F型为例作简单介绍。
利用5512F的秒输出信号作为秒加法电路的计数脉冲,可实现数字钟。
图1.2STP5512F的引脚图
其中,引脚7、8为外接晶振及振荡电路,引脚1接电源正极,电源为1.5V,引脚3、4原为指针用步进电机线圈的输出驱动,这里可用3脚作为脉冲输出,频率决定于外接晶振的频率。
其连接图如图1.3所示.
图1.3基于5512F的秒脉冲发生电路
3.采用基于微处理器的实现形式
利用微处理器的智能性,可方便实现具有智能的数字闹钟。
由于微处理器均具有时钟振荡系统,利用系统时钟借助微处理器的定时/计数器可实现数字钟功能。
也可以使用外部时钟芯片进行计时,再通过微处理器传送到显示器显示。
1.3课题主要内容及系统的选择
本次设计一种多功能数字钟,该数字钟具有基本功能和扩展功能两部分。
其中,基本功能部分的有准确计时,以数字形式显示时、分、秒的时间和校时功能。
扩展功能部分则具有:
闹钟、万年历的功能。
数字钟的电路是由单片机及最小系统构成,在电路中,功能的实现都要用到振荡电路提供的1Hz脉冲信号。
并且显示时、分、秒,各位均为两位显示。
综上本次设计选择最简单的微处理器即使用单片机为系统的数字钟电路设计。
单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。
由于单片机主要面向工业控制,工作环境比较恶劣,如高温、强电磁干扰,甚至腐蚀性气体,在太空中工作的单片机控制系统,还必须具有抗辐射能力,因而决定了单片机CPU与通用微机CPU具有不同的技术特征和发展方向:
1抗干扰性强,工作温度范围宽。
2可靠性高。
3控制功能往往很强,数值计算能力较差。
4指令系统比通用微机系统简单。
5更新换代速度比通用微处理器慢得多。
因此在本次设计中采用单片机技术来实现数字钟的功能。
方案的设计可以从以下几个方面来确定:
1.微处理器AT89C52是ATMEL公司的产品,除了完全兼容8051外,还增加了一个可编程定时/计数器。
而且AT89C52的存储器容量比AT89C51的大。
因此在本次设计中采用AT89C52单片机。
2.显示电路数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一。
采用数码管动态显示可以能够节省大量的I/O端口,而且功耗更低。
所以采用数码管显示。
3.校时和定时电路考虑到校时和设定闹铃时间这两种操作的使用频率不是很高,为了精简系统和节省成本,本时钟系统只设六个按键,用它们来校时和定时。
可以实现以下具体功能:
(1)K1:
时间日期切换按键,用来切换日期与时间的数码管显示。
(2)K2:
设置键,按键进入设置状态。
(3)K3:
移位键,用于选取需要修改的位置操作。
(4)K4:
上调加一键,用于对选中位进行加1操作。
(5)K5:
定时确认键,用来确定闹钟设定的时间。
(6)K6:
取消键,用于取消一切操作。
第二章系统的硬件设计与实现
2.1系统硬件的整体设计
根据实时时钟的功能要求,基于单片机的设计方案要运用集成时钟芯片,实现实时数据记录,实现数据与出现该数据的时间同时记录。
实时时钟的要求:
(1)基本要求
a)具有年、月、日、星期、时、分、秒等功能;
b)具备年、月、日、时、分、秒校准功能;
c)具有闹钟功能。
(2)创新要求
要求能够对时钟进行实时控制,并且可以对时间进行读取、校正,对时间进行设置,实现闹钟功能。
下图为系统的设计框图:
图2.1系统硬件设计框图
2.2主控模块的选择与设计
系统的设计可采用数字电路实现,也可以采用单片机来实现。
若采用数字电路完成,其电路相当复杂,所需数字集成块较多,其功能也主要依赖数字电路的各功能模块的组合来实现。
若用单片机来设计完成,由于其功能的实现主要通过软件编程来实现的,那么就降低了硬件电路的复杂性,所以在该设计中采用单片机作为主控模块。
由于初步的软件仿真生成的HEX文件大小为6KB,故采用AT89C52单片机。
2.2.1AT89C52单片机
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
2.2.2AT89C52功能部件
1.与MCS-51单片机产品兼容;
2.8K字节在系统可编程Flash存储器;
3.反复擦写;
4.全静态操作:
0Hz-33MHz;
5.三级加密程序存储器;
6.32个可编程I/O口线;
7.三个16位定时器/计数器;
8.两个中断源;
9.两个全双工UART串行通道;
2.2.3AT89C52片内结构图
图2.2AT89C52单片机片内结构
2.2.4引脚说明
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),参见表2.1
Flash编程和程序校验期间,P1接收低8位地址。
表2.1P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2,时钟输出
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口线外,更重要的用途是它的第二功能RST复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使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,当然这必XTAL1振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2振荡器反相放大器的输出端。
2.2.5主控模块电路
单片机控制系统是整个控制系统的核心,它完成整个系统的信息处理及协调功能。
本次我们选用AT89C52芯片;其功能强大,兼容性好。
89C52是与8051兼容的CHMOS微控制器。
与CHMOS工艺的8051一样,支持软件选择的空闲和掉电两种节电方式。
在89C52的P0.0—P0.7是数码管的段选;P2.0—P2.7是数码管的位选。
P1P3外接按键来设置时间。
另外单片机的复位系统与晶振系统构成了单片机的最小系统。
图2.3控制模块
2.3复位电路模块
复位电路简介:
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。
图2.4复位电路模块
2.4晶振电路模块
1、晶振介绍
尽管石英晶体振荡器的应用已有几十年的历史,但因其具有频率稳定度高这一特点,故在电子技术领域中一直占有重要的地位。
尤其是信息技术(IT)产业的高速发展,更使这种晶体振荡器焕发出勃勃生机。
石英晶体振荡器在远程通信、卫星通信、移动电话系统、全球定位系统(GPS)、导航、遥控、航空航天、高速计算机、精密计测仪器及消费类民用电子产品中,作为标准频率源或脉冲信号源,提供频率基准。
2、石英晶体振荡器基本结构及工作原理
石英晶体振荡器分非温度补偿式晶体振荡器、温度补偿晶体振荡器(TCXO)、电压控制晶体振荡器(VCXO)、恒温控制式晶体振荡器(OCXO)和数字化/μp补偿式晶体振荡器(DCXO/MCXO)等几种类型。
其中,无温度补偿式晶体振荡器是最简单的一种,在日本工业标准(JIS)中,称其为标准封装晶体振荡器(SPXO)。
现以SPXO为例,简要介绍一下石英晶体振荡器的结构与工作原理。
石英晶体,有天然的也有人造的,是一种重要的压电晶体材料。
石英晶体本身并非振荡器,它只有借助于有源激励和无源电抗网络方可产生振荡。
SPXO主要是由品质因数(Q)很高的晶体谐振器(即晶体振子)与反馈式振荡电路组成的。
石英晶体振子是振荡器中的重要元件,晶体的频率(基频或n次谐波频率)及其
温度特性在很大程度上取决于其切割取向。
只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。
当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。
3、单片机系统里晶振的作用
在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
图2.5晶振模块
2.5显示模块
本设计采用四位一体共阳数码管
2.5.1数码管的作用
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
2.5.2共阳数码管引脚
图2.6数码管图2.7共阳数码管接点图
比较常用的是四位数码管,内部的4个数码管共用A-DP这8根数据线,为人们的使用提供了方便,因为里面有4个数码管,所以它有4个公共端,加上A-DP,共有12个引脚,下图2.8便是一个共阳的四位数码管的内部结构。
图2.8四位共阳数码管内部结构
2.5.3数码管实物图
图2.9四位共阳数码管实
2.5.4显示驱动
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的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端口,而且功耗更低。
其中RN为上拉电阻,为了加大输出引脚的驱动能力。
本设计采用动态显示。
图2.10数码管显示模块
2.6报警蜂鸣模块
2.6.1驱动模式
单片机驱动他激蜂鸣器的方式有两种:
一种是PWM输出口直接驱动,另一种是利用I/O定时翻转电平产生驱动波形对蜂鸣器进行驱动。
PWM输出口直接驱动是利用PWM输出口本身可以输出一定的方波来直接驱动蜂鸣器。
在单片机的软件设置中有几个系统寄存器是用来设置PWM口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM输出,PWM输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。
比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。
而利用I/O定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。
比如为2500Hz的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O口每200μs翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
2.6.2蜂鸣驱动电路
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。
图2.11报警蜂鸣模块电路
2.7系统电路设计
2.7.1PROTEL简介
Protel99SE是Protel公司2000年推出的基于Windows平台的第六代产品,集强大的设计能力、复杂工艺的可生产性和设计过程管理(PDM)于一体,可完整实现电子产品从电子学概念设计到生成物理生产数据的全过程,包括其中的分析、仿真和验证过程。
现今的PROTEL已发展到PROTEL99,是个