基于AT89C51的日历时钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于AT89C51的日历时钟
摘要:本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。
关键词AT89C51 LCD1602 闹铃
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED 显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C51是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。
本系统以单片机的汇编语言进行软件设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。系统通过点阵式液晶为载体显示数据,所以具有人性化的操作和美观的页面效果。可以显示时间、公农历日期、星期,并有闹铃功能。
1. 设计功能要求
普通万年历设计的功能要求是用51单片机(AT89C51)和液晶显示LCD1602通过程序控制来实现显示公历年月日期、星期、时间、,并有闹铃功能。
2. 设计思路
设计思路是根据万年历的功能要求,把万年历分为两个部分考虑:年月日期、星期、时间的显示和闹铃部分。
3. 系统的硬件构成
系统以AT89C51单片机作为核心控制器件,外围主要有液晶显示LCD1602和喇叭,均为串行通信器件,使得系统线路简单可靠性高。系统结构框图1所示。
图1 系统结构框图
3.1 单片机主控模块
AT89C51单片机与MCS_51系列单片机产品兼容,美国ATMEL公司生产的一种低功耗,高性能的片内含有4K的Flash存储器结构,可编程/擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。AT89C51将具有多种功能的8位CPU与FPEROM结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而又便宜的方案。这种工艺的存储器用户可以用电的方式瞬间擦除和改写,可以在线下载程序,易于日后的升级。它主要负责各个模块的初始化工作;设置定时器、寄存器的初值;读取并处理时间、闹铃中断等信息;处理按键响应;控制液晶实时显示等。
AT89C51的管脚排布如图2所示:
图2 AT89C51管脚图
(1)VCC:电源电压
(2)GND:接地
(3)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(4)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
(5)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
(6)XTAL2:来自反向振荡器的输出。
(7)P0口:P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。作为输出口用时,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
(8)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能吸收或输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。
(9)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可吸收或输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(10)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可吸收或输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表1所示:
表1 P3特殊功能口
P3口同时为闪烁编程和编程校验接收一些控制信号。
(11)ALE//PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
(12)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。
在本设计中所用到的引脚有VCC,GND,RST,/EA/VPP,XTAL1,XTAL2,P0口,P2口。
硬件电路连接如图3所示。系统采用12M晶振;P0口为单片机与液晶显示器通信的数据端口,其中P0口有8个1K的上拉电阻;AT89C51单片机的复位靠外部电路来实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RESET(RST)引脚高电平两个机器周期,单片机即可以复位,系统既有上电复位电路又可以手动复位K3;P2.0~P2.2为液晶显示器的控制信号端口:P3.7为闹铃的控制端口;P1.4~P1.5为按键模块的接口。