基于单片机的电子日历.docx
《基于单片机的电子日历.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子日历.docx(39页珍藏版)》请在冰点文库上搜索。
基于单片机的电子日历
设计任务书
设计题目:
电子万年历
设计要求:
显示范围:
2001-2099;日月正常显示,并能识别闰年闰月;时间采用24小时制。
显示格式:
日期按照年月日排列,如2006年12月20日显示为:
20061220;时间按时分秒排列,如12点30分55秒显示为12:
30:
55。
显示位数:
16位7段LED数码管作正常显示和节电显示。
摘要1
前言2
1概论3
1.1概述3
1.2单片机的发展历程3
1.3时钟日历的特性3
2系统原理与硬件设计5
2.1硬件选择5
2.2AT89C51单片机简介6
2.3时钟芯片介绍12
2.4LED简介18
2.574LS154简介20
2.6ULN2003简介20
3软件设计22
3.1主程序22
3.2读取时间的子程序24
3.3显示刷新子程序27
4调试过程及数据分析30
4.1硬件调试30
4.2软件调试30
4.3KEIL调试31
4.4试验箱调试31
结论32
致谢33
参考文献34
附录A:
35
摘要
本次设计采用时钟日历芯片DS12887,这种时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新在计算机汇编语言的驱动下每秒自动进行一次,但不需程序干预其输出状态。
此外,这种时钟芯片带有锂电池做后备电源,具备永不停止的计时功能和可编程方波输出功能,可用作实时测控系统的采样信号等。
这种时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。
本次设计中的LED数码管电子时钟电路采用24小时制记时方式,日期和时间用16位数码管显示。
设计采用AT98C51单片机,使用5V电源供电,并且在按键的作用下可以进入省电(不显示LED数码管)和正常显示两种状态。
本次设计采用AT89C51单片机的扩展芯片和UNL2003芯片做驱动,由多块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。
关键词:
时钟芯片、AT89C51、时钟日历
前言
一块单片机芯片就是一台计算机,由于单片机以其集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点使它应用于智能仪器仪表、机电一体化、实时程控、人类生活中。
除此之外还广泛应用办公自动化领域、商业营销领域、汽车及通信系统、计算机外部设备等各领域中,并且单片机已成为计算机发展和应用的一个重要方面。
由此可见掌握单片机的使用方法和利用单片机解决实际问题具有重要的意义。
本次设计根据AT89C51单片机系统扩展的基本原理和方法、常用总线标准和典型接口电路的应用,结合本次设计的题目要求进行系统扩展,通过单片机驱动时钟芯片DS12887进行年、月、日、时、分、秒显示,最后通过74LS154译码和ULN2003驱动LED动态显示的方式完成设计任务,设计论文中附有电路图、程序清单、各数据存储单元的所在地址和输入输出口对应表。
因水平有限,难免有疏落不足之处,恳请老师和同学能给予批评指正。
1概论
1.1概述
随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了极大的方便。
走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。
如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:
“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。
目前,单片机以其可靠性高和智能性等特点被广泛应用到工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等领域中,并已经进入家庭,因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之一。
1.2单片机的发展历程
单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。
1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。
单片机的发展共分四个阶段:
第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段,以INTEL公司制造的MSC-48系列单片机为代表。
第三阶段为高性能单片机阶段,这个阶段推出的单片机普遍带有穿行接口,多级中断系统,16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。
第四阶段是8位单片机巩固发展以及16位单片机、32位单片机推出阶段,以满足不同的用户需要。
纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。
1.3时钟日历的特性
DS12887时钟芯片(RTC)可提供一个实时时钟、日历、三个可屏蔽中断(共用一个中断输出)、可编程方波输出和114字节的电池备份静态RAM。
DS12887在24引脚模块DIP封装内集成了晶体和锂电池。
DS12887在地址32h内增加了世纪字节。
对于少于31天的月份,所有器件的日期能够在月末自动调整,带有闰年补偿。
该器件可配置为24小时或12小时格式,带AM/PM指示。
精确的温度补偿电路用于监视的VCC状态。
一旦检测到主电源失效,器件可自动切换到备用电源,在主电源掉电时还可以保持有效的时间和日期。
该
器件通过一个复用的字节宽度接口访问,支持Intel和Motorola模式,具有以下特点:
(1)直接替代IBMAT计算机时钟/日历;
(2)RTC可显示秒、分、时、日、月、年信息,具有润年补偿,有效期至2099年;
(3)用二进制或BCD表示时间;
(4)具有AM、PM标示的12小时模式或24小时模式;
(5)夏时制选择;
(6)可选择Motorola或Intel总线时序;
(7)接口配合软件可寻址128RAM;
(8)14字节时钟与控制寄存器;
(9)114字节通用、电池备份RAM(DS12C887和DS12C887A为113字节);
(10)清除RAM功能;
(11)总线兼容的中断请求;
(12)三路中断可分别通过软件屏蔽与检测;
(13)周期可设置在122µs至500ms;
(14)时钟终止刷新周期标志;
(15)可选的工业级温度范围;
(16)可编程的方波输出信号;
(17)可选择28引脚PLCC表面贴装封装;
(18)自动电源失效检测和切换电路。
2系统原理与硬件设计
本次的设计题目是电子万年历设计,要求实现年、月、日、时、分、秒的正常显示,需要硬件和软件的结合来实现。
本次设计利用时钟日历芯片DS12887的特性和AT89C51单片机的功能利用实现的。
时钟芯片在电源的作用下向通过P2口向AT89C51单片机输入时间信号,AT89C51单片机在接受到时间信号后通过P0将信号送到单片机另一扩展芯片ULN2003,驱动LED数码管显示,同时将信号通过P1口送往单片机的扩展芯片74LS154,当送出第一个段码时,单片机输出的位码是0001,而经过4-16译码器74LS154后就是1111111111111110,这时就选中了第一个数码管显示;……当送出第十六个段码时,单片机输出的位码是1111,4-16译码器输出0111111111111111,这时就选中了第十六个数码管显示,从而74LS154将接收到的地址信号译码后动态驱动相应的LED,由于LED数码管的公共端由74LS154分时选通,这样,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。
根据设计的要求万年历要显示年、月、日、时、分、秒的显示就需要16个显示数码管。
根据设计要求,用按键来实现省电和正常显示的切换,当按键按下时进入省电模式,否则正常显示。
在明确本次设计思路之后,画出设计框图,总体框图如图2.1所示。
图2.1设计总体框图
2.1硬件选择
(1)时钟芯片选择选用DS12887时钟芯片。
(2)单片机的选择选用AT89C51单片机,并配备11.0592MHz晶振,复位电路采用上电复位。
(3)显示电路选择采用软件译码动态显示,P3.0-P3.3作数码管的位选口。
P1.0-P1.6作数码管的段选口。
考虑直接用单片机I/O口作位选时驱动功率不够,因此采用UNL2003作驱动,共阴极数码管显示。
(4)电源选择采用直流5V电源供电。
(5)选择器的选择采用4线——16线译码器74LS154。
2.2AT89C51单片机简介
AT89C51单片机是一种低功耗,高性能的片内含有4KB可编程/擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与AT89C51引脚和指令系统完全兼容。
芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对存储器重复编程。
AT89C51单片机带有2K字节闪烁可编程可擦除只读存储器的单片机,其内部的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51单片机是一种高效微控制器,也为嵌入式控制系统提供了一种灵活性高且价廉的方案,这就显示出了AT89C51单片机的优越性。
2.2.1单片机的构成
AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件,AT89C51单片机单片机内包含下列几个部件:
(1)一个8位CPU;
(2)一个片内振荡器及时钟电路;
(3)4K字节ROM程序存储器;
(4)128字节RAM数据存储器;
(5)两个16位定时器/计数器;
(6)可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;
(7)32条可编程的I/O线(四个8位并行I/O端口);
(8)一个可编程全双工串行口;
(9)具有五个中断源、两个优先级嵌套中断结构。
其内部机构框图如图2.2所示:
2.2.2AT89C51单片机性能及特点
(1)与MCS-51微控制器产品系列兼容。
(2)片内有4KB可在线重复编程的快闪擦写存储器(FlashMemory)。
(3)存储器可循环写入/擦除1000次。
(4)存储数据保存时间为10年。
(5)工作电压范围:
Vcc可为2.7V~6V。
(6)全静态工作:
可从0HZ到16MHZ。
(7)程序存储器具有3级加密保护。
(8)128﹡8位内部RAM。
(9)32条可编程I/O线。
(10)两个16位定时器/计数器。
(11)中断结构具有5个中断源和2个优先级。
(12)可编程全双工串行通道。
(13)空闲状态维持低功耗和掉电状态保存存储内容。
2.2.3振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用,如采用外部时钟源驱动器件,XTAL2应不接。
由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.2.4芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51单片机设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作,但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
为了满足一些应用系统的特殊要求,有时要进行一些系统的扩展设计以弥补单片机内部资源的不足。
单片机的扩展系统通过并行I/O接口或串行I/O接口做总线,在外部扩展程序存储器、数据存储器或输入/输出接口及其他功能部件以满足一些控制系统的特殊要求,AT89C51单片机的扩展系统结构如图2.3所示。
图2.3AT89C51单片机扩展系统结构
2.2.5AT89C51单片机的引脚说明
AT89C51单片机采用40条引脚双列直插式器件,引脚除5V(40脚)和电源地(
20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,逻辑框图及引脚图分别如图2.4(a)(b)所示
图2.4AT89C51单片机逻辑图与引脚图
AT89C51单片机的内部硬件结构中除了程序存储器由FPEROM取代了87C51单片机的
时钟电路
XTAL1(19脚)——芯片内部振荡电路(单级反相放大器)输入端。
XTAL2(18脚)——芯片内部振荡电路(单级反相放大器)输出端。
RST(9脚)复位信号:
时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口~P3口输出高电平,将初值07H写入堆栈指针。
ALE(30脚)地址锁存信号:
当访问外部存储器时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。
另外,ALE可驱动4个TTL门。
PSEN(29脚)片外程序存储器读选通:
PSEN低电平有效,PSEN作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,PSEN可驱动8个
TTL门。
EA/Vpp(30脚):
当EA为高电平且PC值小于0FFFH时,CPU执行内部程序存储器程序;当EA为低电平时,CPU仅执行外部程序存储器程序。
(5)I/O接口
P0口(P0.0~P0.7,39~32脚)三态双向口:
P0口结构包括一个输出锁存器、两个三态缓冲器、一个输出驱动电路和一个输出控制端。
P0口做地址/数据复用总线使用。
若从P0口输出地址数据信息,此时控制端为高电平,若从P0口输入数据指令信息时,引脚信号应从输入三态缓冲器进入地址总线,它可驱动8个TTL门。
P0~P3口上的“读-修改-写”功能,其操作是先将字节的全部8位数读入,再通过指令修改某些位,然后将新的数据写回到口锁存器中。
P1口(P1.0~P1.7,1~8脚)准双向口:
P1口做通用I/O接口使用,P1口的每一位口线能独立地作用于输入线,P1口可驱动4个TTL门。
P2口(P2.0~P2.7,21~28脚)通用I/O接口:
它做通用I/O接口使用时,是一个准双向口,此时转换开关MUX倒向左边,输出极与锁存器相连,引脚可作为用户I/O口线使用,输入/输出操作与P1口完全相同,P2口做地址总线使用。
当系统中接有外部存储器时,P2口用于输出高8位地址A8~A15,这时在CPU控制下,转换开关MUX倒向右边,接通内部地址总线。
P2口的口线状态取决于片内输出的地址信息,这些信息来源于PC、DPTR等。
在外接程序存储器中,由于访问外部存储器操作连续不断,P2口不断送出地址高8位。
AT89C51单片机的P2口一般只做地址总线使用,不做I/O接口直接连外部设备使用。
P3口(P3.0~P3.7,10~17脚)双功能口:
P3口做通用I/O接口使用,输出功能控制线为高电平,与非门的输出取决于锁存器的状态,此时锁存器Q端的状态与其引脚状态是一致的。
在这种情况下,P3口的结构和操作与P1口相同。
P3口第二功能是可作为系统具有控制功能的控制线,另外P3口可驱动4个LSTTL门电路。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
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(外部数据存储器读选通);
2.2.6存储器
单片机在存储器的设计上,其共同特点是将程序存储器与数据存储器分开,它们有各自的寻址方式。
AT89C51单片机片内具有数据存储器,同时还具有强大的外部存储器扩展能力,存储器是单片机系统中的重要组成部分。
在一片芯片内除了许多基本的记忆单元构成的存储矩阵外,还包括译码驱动电路,读写电路等。
图2.5为半导体存储器芯片的基本结构框图。
图2.5半导体存储器芯片的基本结构框图
(1)单片机存储器分类
MCS-51系列单片机的存储器可分五类:
程序存储器、内部数据存储器、特殊功能寄存器、位寻址区、外部数据存储器I/O接口。
程序存储器:
存放程序的存储器称为程序存储器。
程序存储器是以程序计数器PC做地址指针的,MCS-51单片机的程序计数器为16位,因此可寻址的空间为64KB。
AT89C51系统中没有片内程序存储器,0000H~0FFFH都是外部程序存储器空间。
内部数据存储器:
MCS-51单片机内部有128B的数据存储器RAM,内部数据存储器的编址为00H~7FH。
不同的地址区域内,功能不完全相同。
单片机结构的特点之一是工作寄存器与数据存储器统一编址。
MCS-51内部RAM的00H~1FH为工作寄存器区,共分4个区,每区有8个寄存器。
当前程序使用的工作寄存器区,是由状态字PSW的第3、4位指示的,PSW的状态和工作寄存器区的关系如表2.1所示:
表2.1PSW的状态和工作寄存器区的关系
PSW.4(RS1)
PSW.3(RS0)
当前使用的工作寄存器区(R0~R7)
0
0
0区(00H~07H)
0
1
1区(08H~0FH)
1
0
2区(10H~17H)
1
1
3区(18H~1FH)
(2)特殊功能寄存器区
AT89C51内的I/O锁存器、定时器、串行接口数据缓冲器以及各种控制状态寄存器和状态寄存器都是以特殊功能寄存器的形式出现的,它们零散地分布于80H~FFH的地址空间范围内,特殊功能寄存器具有各自的地址空间映像。
(3)位寻址空间
MCS-51的位寻址空间为00H~7FH,为内部RAM中20H~2FH的16个单元的128位,凡是字节地址能被8整除的特殊功能寄存器都具有位地址,它们零散地分布在80H~FFH的空间内。
(4)外部数据存储器I/O接口
AT89C51提供了扩展64KB的外部数据存储器和输入/输出口的能力,具有十分广泛的应用。
2.3时钟芯片介绍
DS12887芯片是时钟芯片中功能较强的一种,它将晶体振荡电路、充电电路和可充电锂电池等一起封装在芯片的上方,组成一个加厚的集成电路模块。
电路通电时其充电电路便自动对可充电电池充电,其内部包含非易失时钟、警报器、百年历、可编程中断、方波发生器和114个字的非易失静态RAM。
DS12887具有日历、时钟、低功耗静态RAM、输出方波信号等功能,石英晶振和写保护电路也封装在内,在断电情况下仍能保持时间和内存。
DS12887可以方便地与单片机接口,并由单片机系统对其进行操作得到日历、时钟信息,输出方波信号用于秒信号的显示。
其封装方式为24脚双排直列,如图2.6所示。
图2.6DS12887的封装形式
DS12887主要功能介绍
(1)内含一个锂电池,断电后运行十年以上不丢失数据。
(2)计秒,分,时,天,星期,日,月,年,并有闰年补尝功能。
(3)二进制数码或BCD码表示时间,日历和定闹。
(4)12小时或24小时制,12小时时钟模式带有PM和AM指示,有夏令时功能。
(5)Motorola和Intel总线时序选择,可编程方波信号输出。
(6)有128个字节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。
(7)中断信号输出(IRQ)和总线兼容,周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。
(8)工作电压:
+4.5~5.5V。
(9)工作温度范围:
0~70℃。
2.3.1DS12887引脚说明及使用方法
DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。
DS12887引脚分配如图2.6所示,各管脚说明如下:
VCC:
直流电源+5V电压。
当5V电压在正常范围内时,数据可读写;当Vcc低于4.25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。
MOT(模式选择):
MOT引脚接到Vcc时,选择MOTOROLA时序,当接到GND时,选择Intel时序。
SQW(方波信号输出):
SQW引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
AD0-AD7(双向地址/数据复用线):
总线接口,可与Motorola微机系列和Intel微机系列接口。
AS(地址选通输入):
用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
DS(数据选通或读输入):
DS/RD引脚有两种操作模式,取决于MOT引脚的电平,当使用Motorola时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总线的时刻;在写周期,DS的后沿使DS12887锁存写数据。
选择Intel时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。
R/W(读/写输入):
R/W引脚也有两种操作模式。
选Motorola时序时,R/W是低电平信号时,指示当前周期是读或写周期,DS为高电平时,R/W高电平指示读周期,R/W信号一低电平信号,称为WR。
在此模式下,R/W引脚与通用RAM的写允许信号(WE)的含义相同。
CS(片选输入):
在访问DS12887的总线周期内,片选信号必须保持为低。
IRQ(中断申请输入):
低电平有效,可作微处理的中断输入。
没有中断的条件满足时,IRQ处于高阻态。
IRQ线是漏极开路输