欢迎访问华乐美文网

毕业设计电子日历 (2000字)

毕业设计2019-03-26 08:59书业网

设计任务书

设计题目:

电子日历

设计要求:

1.主芯片用单片机、走时用时钟芯片实现;

2.显示年、月、日和时间;

3.用按键实现省电和正常显示之间切换;

设计进度要求

第一周:自选设计题目,查资料,收集信息;

第二周:写出初步设计方案;

第三周:各部分硬件框图的设计;

第四周:软件部分的设计;

第五周:接试验箱实验,并进行调试;

第六周:写设计论文;

第七周:指导老师对设计报告进行检查、修改,并定稿设计论文。

指导教师(签名):

摘 要

本次设计的题目是电子日历,可以正常的显示年、月、日、时、分、秒。电子日历具有性能稳定、精确度高、成本低、易于产品化,以及方便、实用等特点。适用于家庭、公司、机关等众多场所。为人们的日常生活、出行安排提供了方便,成为人们日常生活中不可缺少的一部分。

本次设计可分为两部分:硬件系统、软件系统。

硬件部分包括:AT89C51单片机、DS12C887时钟芯片、74LS154译码器、ULN2003A驱动芯片。

利用单片机将RC复位电路、动态显示电路、电源电路、去抖电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。

关键词:单片机,日历,位码,段码,显示

目 录

摘 要 ............................................................. II 目 录 .............................................................. I

1 概 述 ............................................................ 1

1.1 单片机的组成及特点 ........................................... 1

1.2 单片机的应用 ................................................. 2

2 设计方案 .......................................................... 4

2.1 设计思路 ..................................................... 4

2.2 系统总体框图 ................................................. 4

3 硬件设计 .......................................................... 6

3.1 单片机的选择 ................................................. 6

3.2 复位电路 ..................................................... 9

3.3 晶振电路 .................................................... 10

3.4 时钟芯片DS12C887介绍 ....................................... 11

3.5 74LS154芯片介绍及ULN2003A的简介 ........................... 15

4 软件设计 ......................................................... 18

5 单片机应用系统的测试 ............................................ 26

5.1 在伟福中的调试 .............................................. 26

5.2 在Keil中的调试并连接实验箱 ................................. 27

致 谢 ............................................................. 31

总 结 ............................................................. 32

参考文献 ........................................................... 33

1 概 述

1.1 单片机的组成及特点

单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。

单片机通过内部总线把计算机的各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;/数据总线的作用是在CPU与存储器或I/O接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等。单片机中的CPU、存储器等部件将在后面章节陆续介绍。

由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。单片机主要发如下特点:

(1)有优异的性能价格比。

(2)高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。

(3)为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。

(4)低电压,便于生产便携式产品。

(5) 部总线增加了I C(Inter-Integrated Circuit)及SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。

(6)单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。

单片机作为计算机发展的一个重要领域,应用一个较科学的分类方法。根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。

1. 通用型/专用型

这是按单片机适用范围来区分的。例如,89C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

2. 总线型/非总线型

这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线。

数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

3. 控制型/家电型

这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算。

能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。

显然,上述分类并不是惟一的和严格的。例如,89C51类单片机既是通用型又是总线型,还可以作工控用。

1.2 单片机的应用

由于单片机具有显著的优点,它已成为科技领域的有力工具,人类生活的得力助手。它的应用遍及各个领域,主要表现在以下几个方面:

1.单片机在智能仪表中的应用

单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。

2.单片机在机电一体化中的应用

机电一体化是械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可

大大提高机器的自动化、智能化程度。

3.单片机在实时控制中的应用

单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。

4. 单片机在分布式多机系统中的应用

在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。单片机在这种系统中往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。

5.单片机在人类生活中的应用

自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机。

等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。

综合所述,从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

本设计主要以单片机为主,单片机已成为计算机发展和应用的一个重要方面。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。

2 设计方案

2.1 设计思路

设计的题目是电子日历的控制。根据设计要求日历显示正常的年、月、日、时、分、秒。要想实现上述功能,就必须将硬件系统和软件系统有机的结合在一起,方可实现我们设计任务中的各项要求。

硬件系统主要有单片机AT89C51、DS12C887、74LS154 等。

AT89C51 主要功能是存储程序、根据程序的内容对各个端口进行判断并做出相应的处理。DS12C887主要的功能是控制年、月、日、时、分、秒的显示效果。

根据设计要求,电子日历要显示年、月、日、时、分、秒就需要16个显示数码管,由于数码管的数量较多,必须采用动态显示扫描的方法。例如07-12-01,首先日分为个位和十位,个位显示到09时,应向日的十位自动进位,即个位清0,十位置1,显示为10,继续累计;当显示为31时,日的十位就应自动向月的个位进位,显示为01,当月显示到09时,月的个位自动向月的十位进位,个位清0,十位置1,即为10,当月至12时,月向年的个位进位,即显示08,同时月、日开始从01月01日继续显示,依次周而复始的循环运行。

根据按键电路可实现年、月、日、时、分、秒的调整,当K1键按下时,可以调整时间,K2、K3键分别对时间进行加或减,K4键可以切换正常模式与省电模式。

利用单片机将RC复位电路、动态显示电路、电源电路、去抖电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。

2.2 系统总体框图

设计电路采用ATMEL的AT89C51芯片来做CPU,用AT89C51的内部EPROM作为程序存储器。显示部分位码的扩展采用74LS154,七段数码管的驱动采用ULN2003A控制部分采用普通独立按键。

在确定系统的大体形式之后,画出系统的总框图如图2.1所示。

系统总体框图包括:单片机、控制电路、复位电路、显示电路、电源部分。 单片机AT89C51芯片的主要功能是:存储程序,对存储程序进行相应的处理从I/O口输出。

复位电路:在单片机上有一个复位引脚RST,在单片机外部用电容和电阻控制RST。

控制电路:是用一个按键控制日历的省电和正常显示。 显示电路:主要用于显示日历的结果。 电源电路:采用+5V的直流电源供电。

图2.1 系统总框图

3 硬件设计

硬件电路主要包括:时钟芯片、单片机、显示电路、译码器以及电源等几部分。 时钟芯片选择:选用DS12C887实时芯片。

单片机的选择:选用AT89C8051单片机,配备11.0592MHz晶振。P1.0—P1.4作数码管的位选口,P0.0—P0.6作数码管的段选口。

显示电路的选择:采用软件译码器动态显示,共阴极LED数码管。 复位电路的选择:RC复位电路。

译码器的选择:采用4线—16线译码器74LS154。 电源电路的选择:采用直流+5V电源供电。

3.1 单片机的选择

单片机实质上是一个芯片,在实际应用中,必须外加各种扩展接口电路、外部设备等相关硬件和软件,才能构成一个单片机系统。尽管各类单片机很多,但无论是从世界范围或是从全国范围来看,使用最为广泛的应属MCS-51单片机。

单片微型计算机市指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU、随机存储器RAM、只读存储器ROM、基本输入/输出接口电路、定时器/计数器等部件都制作在一块集成芯片上,构成一个完整的微型计算机,从而实现微型计算机的基本功能。

89C51单片机是在一块芯片中集成了CPU、存储器、定时器/计数器和多种功能的I/O现等一台计算机所需的基本功能部件。主要包括1个8位CPU、1个片内振荡器及时钟电路、128B RAM、4KB ROM、2个16位定时器计数器、32条可编程的I/O线和一个可编程的全双工串行接口、5个中断源、2个中断优先级套中断结构。其内部结构示意图如图3.1:

图3.1 单片机内部结构示意图

1、中央处理器 CPU是单片机的内部核心部件,是一个8位二进制数的中央处理单元,主要由运算器,控制器和寄存器阵列构成。

2、控制器 控制器是单片机内部各部件按一定时序协调工作的控制核心,是分析和执行指令的部件。控制器主要由程序计数器、指令寄存器、指令译码器、振荡和定时控制逻辑电路等构成。

3、寄存器阵列 寄存器阵列式单片机内部的临时存储单元或固定用途单元,包括通用寄存器组和专用寄存器组。

4、存储器 程序存储器是可读不可写的,用于存放编号的程序和表格常数。 5、数据存储器是即可读也可写的,用于存放运算的中间结果,进行数据暂存及数据缓冲等。

6、定时器计数器 89C51内部有2个16位可编程定时器计数器,简称为定时器0(T0)和定时器1(T1),T0和T1在定时器控制寄存器TCON和定时器方式选择寄存器TMOD的控制下,可工作在定时器模式或计数器模式下,每种模式又有不同的工作方式。89C51有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

7、并行输入输出(I/O)口 89C51共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。

89C51单片机内部总线是单总线结构,即数据总线和地址总线是公用的。 89C51有40条引脚, 与其他51系列单片机引脚是兼容的。 这40条引脚可分为I/O接口线、电源线、控制线、外接晶体线4部分。 89C51单片机为双列直插式封装结构, 如

89C51

图3.2所示。

图3.2 89C51引脚分配图

Pin40:电源脚。工作电压为+5V Pin20:接地端

P0口:P0口为一个8位漏极开路的双向I/O口,每脚可以吸收8TTL门电流。当P0口的管脚第一次写“1”时,被定义为高阻输入,P0口能够用于外部数据存储器,它可以被定义为数据/地址的第八位,在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,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.0: RXD (串行输入口) P3.1: TXD (串行输出口) P3.2:

(外部中断0) (外部中断1)

P3.3:

P3.4:T0 (定时/计数器0) P3.5: T1 (定时/计数器1)

P3.6: (外部数据存储器写选通线) P3.7:

(外部数据存储器读选通线)

P3口同时为闪烁编程和编程校验接收一些控制信号

RST复位输出:当振荡器复位时,要保持RST脚两个机器周期的高电平时间。 XTAL1:反向振荡器的输入及内部时钟工作电路的输入; XTAL2:来自反向振荡器的输出。

振荡器特性 XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器,石英振荡器和陶瓷振荡器均可采用,如果采用外部时钟源驱动器件,XTAL2应不连接,有余的输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉冲没有任何严格的要求,但必须保证脉冲的高低电平要求的宽度。

3.2 复位电路

单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态,在这种情况下都需要复位. 复位的作用是使中央处理器CPU以及其他功能部件都恢复到一个确定的初始状态,并从这个状态重新开始工作.

89S51单片机的复位靠外部电路实现,信号由RESET(RST)引脚输入,高电平有效,

在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位. 复位后,PC程序计数器的内容为0000H,片内RAM中内容不变. 复位电路一般有上电复位、手动开关复位和自动复位电路3种,如图3.3所示.

C10μ R8.2K

a.上电复位电路 b. 手动复位电路 c. 自动复位电路

图3.3 单片机复位电路

3.3 晶振电路

1.晶体振荡器的作用:石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。

2.本次设计所用的晶体振荡电路如图3.4所示:

图3.4 晶体振荡电路

此晶振电路所选用的石英晶振频率为12MHZ。

时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。

在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的51系列单片机的时钟范围是1.2MHz-12MHz。

3.4 时钟芯片DS12C887介绍

本次设计采用实时时钟芯片是DS12C887,这种实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。此外,事实上时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也变更的数据。LED数码管电子时钟电路采用24小时记时方式,日期和时间用16位数码管显示,采用AT89C51单片机,5V电池供电,只要使用一个按键开关即可进入省电(显示LED数码管)和正常显示两种状态。

显示范围:年份可走99年,如2001—2099;日、月正常显示,能识别闰年闰月;时间采用24小时制。

显示格式:日期按照年、月、日排列,如2005年12月20日显示为:05-12-20;时间按时、分、秒排列,如12点30分55秒显示为12-30-55。

显示位数:6位七段LED数码管工作正常和节电显示。 时钟误差:24小时误差3-5秒。

DS12C887时钟芯片采用CMOS技术制成,该芯片带有内部晶体振荡器并内置有锂电池,因此断电后仍可运行十年以上不丢失数据。时间、日历和定闹具有二进制码和BCD码两种形式,并可设定12小时或24小时制式以及Motorola和Intel总线时序。DS12C887内含128字节RAM,其中有10个时钟寄存器、4个控制寄存器和114字节

通用RAM,所有RAM单元都具有掉电保护功能,因此可被用作非易失性RAM。DS12C887内部具有定闹中断、周期中断、时钟更新周期、结束中断等,且三个中断源可分别由软件屏蔽。

3.4.1 DS12C887主要功能简介

(1) 内含一个锂电池,断电后运行十年以上不丢失数据。

(2) 计秒、分、时、天、星期、日、月、年、并有闰年补偿功能。 (3) 二进制数码或BCD码表示时间,日历和定闹。

(4) 12小时或24小时制,12小时时钟模式带有PM和AM指示,有夏令时功能。 (5) Motorola和Intel总线时序选择。

(6) 有128个字节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。

(7) 可编程方波信号输出。

(8) 中断信号输出(IRQ)和总线兼容、定闹中断、周期性中断、时钟更新周期、结束中断可分别由软件屏蔽,也可分别进行测试。 3.4.2 DS12C887引脚说明及原理

DS12C887管脚图如图3.5所示:

DS12C887

图3.5 DS12C887管脚排列图

VCC:直流电源+5V电压。当5V电压在正常范围内时数据可读写;当VCC低于4.25V,读写被禁止,计时功能仍继续;当VCC下降到3V以下时,RAM和计数器被切换到内部锂电池。

MOT(模式选择):MOT管脚接到VCC时,选择MOTORLA时序;当接到GFND时。选

择INTEL时序。

SQW(方波信号同):SQW管脚能从实时时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。

AD0~AD7(双向地址数据复用线):总线接口即MOROROLA微机系列和INTEL微机系列接口。

AS(地址选通输入):用于实现信号分离,在ADALE的下降沿把地址锁入DS12C887。 DS(数据选通或读输入):DSRD客脚有两种操作模式,取决于MOT管脚放的电平,当使用MOTOROLA时序时,DS时一正脉冲,出现在总线周期的后段称为数据选通;在读周期DS指示DS12C887驱动双向总的时刻,在写周期DS的后沿使DS12C887锁存写数据。选择INTEL时序时DS称作(RD),RD与典型存储器的允许信号(OE)的定义相同。

R/W(读/写输入):R/W管脚也有两种操作模式。选MOTOROLA时序时,R/W是一电平信号,指示当前周期是读或写周期;DSO为高电平时,R/W高电平指示读周期,R/W低电平指示写周期;选INTEL时序,R/W信号是一低电平信号,称为WR。在此模式下,R/W管脚与通用RAM的写允许信号(WE)的含义相同。

CS(片选输入):在访问DS12887的总线周期内,片选信号必须保持为低。 IRQ(中断申请输入):低电平有效,可作微处理的中断输入。没有中断条件满足时,IRQ处于高阻态。IRQ线是漏极开路输入,要求外接上接电阻。

RESET(复位输出):当该脚保持低电平时间大于200ms,保证DS12C887有效复位。

DS12C887内部由振荡电路、分频电路、周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。Vcc:直流电源+5V电压。当5V电压在正常范围内时,数据可读写,当Vcc低于4。25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。

3.4.3 DS12C887的中寄存器的功能和作用

DS12887内部RAM和专用寄存器地址功能,地址00H~03H单元取值范围是00H~3BH(10进制0~59);04H~05H单元按12小时制取值范围是上午(AM)01H~0CH(1~

12),下午(PM)81H~8CH(81~92)按24小时制取值范围使00H~17H(1~23);06H

单元取值范围使00H~07H(0~7);07H单元取值范围01H~1FH(1~31);08H单元取值范围是01H~0CH(1~12);09H单元取值范围是00H~63H(0~99)。DS12C887的RAM和各专用寄存器的访问如下实现,若片选地址DS=#0DDXXH,则芯片内部RAM和寄存器和地址为#0DD00H~#ODD7FH。应指出的是,尽管DS12C887的专用时标年寄存器只有一个,但通过软件编程可利用其内部的不掉电的RAM区的一个字节实现年度的高两位显示。

寄存器A

寄存器A各位不受复位的影响,UIP位为只读位,其它各位可读写,寄存器的控制字的格式。

A、UIP位:更新周期标志位。该位为“1”时,表示芯片正处于或将开始更新周期,此时程序不准读写师表寄存器;该位为“0”时,表示至少在244us后开始更新周期,此时程序可读芯片内时标寄存器。该位是只读位。

B、DV0、DV1、DV2:芯片内部震荡器RTC控制位。当芯片接触复位状态,并将010写入DV0、DV1、DV2后,另一个更新周期将在500ms后开始。因此,在程序初始化时可用这三各精确地使芯片在设定的时间开始工作。这与MC146818不同的使DS12C887固定使用32768Hz的内部晶体,所以DV0=“0”、DV1=“1”、DV2=“0”,即可启动RTC。

C、RS3、RS2、RS1、RS0:周期中断可编程方波输出速率选择位。各种不同的组合可以产生不同的输出。程序可以通过设置寄存器B的SQWF和PIE位控制是否允许周期中断方波输出。其寄存器A输出速率选择位。

3.4.4 DS12C887的中断和更新周期

DSC12C887处于正常工作状态时,每秒钟将产生一个更新周期,芯片处于更新周期的标志是寄存器A中的CPU位为1。在更新周期内,芯片内部时标寄存器数据处于更新阶段,故在该周期内,微处理器不能读芯片时标寄存器中的内容,同时秒时标寄存器内容加1,并检查其他时标寄存器内容是否有溢出。如果有溢出则相应进位日、月、年。另外一个功能是检查三个时、分、秒报警时标寄存器的内容是否与对应时标寄存器的内容相符,如果相符则寄存器C中的AF位置1。如果报警时标寄存器的内容为COH到FFH之间的数据,则为不关闭状态。

为了采样时标寄存器中的数据,DS12C887提供了两种避开更新周期内访问时标寄存器的方案:第一种是利用更新周期结束发出的中断。它可以编程允许在每次更新周

期结束后发生中断申请,提醒CPU将有998ms左右的时间去获取有效的数据,在中断之后的998ms时间内,程序可先将时标数据读支芯片内部的不掉电静态RAM中。因为芯片内部的静态RAM和状态寄存器是可随时读写的,在离开中断服务子程序前应清除寄存器C中的IRQF位。另一种是:利用寄存器A中的UIP位来指示芯片是否处于更新周期。在UIP位从低变高244us后,芯片将进行更新周期,所以检测到UIP位为低电平时,则利用224us的间隔时间去读取时标信息。如检测到UIP位为1,则可暂缓读数据,等到UIP变成低电平再去读数据。

3.4.5 DS12C887初始化方法

DS12C887采用连续工作制,一般无须每次都初始化,即使是系统复位时也如此。但初始化时,首先应禁止芯片内部的更新周期操作,所以先将DS12C887状态寄存器B中的SET位置1,然后初始化00H~09H时标参数寄存器和状态寄存器A,此后再通过读状态寄存器C、清除寄存器C中的周期中断标志位PE、报警中断标志位AF、更新周期结束中断标志位UF。通过读寄存器D中的VRT位,读状态寄存器后VRT位将自动置1,最后将状态寄存器B中的SET位置0,芯片开始计时工作。

3.5 74LS154芯片介绍及ULN2003A的简介

本设计要用到16个七段数码管,单片机的P0端口只有8根线,根本不够用,所以用74LS154来扩展,74LS154使4——16译码器,只用单片机的四根线就可以接16个数码管的位码端,因为74LS154使一个4入16出的译码器,在本设计中共有16个显示数码管,所以一个74LS154译码器的输出端刚好够用。LED数码管采用共阴极。

在设计中74LS154的输入端有单片机的P1.0~P1.3口提供段码控制信号,输出端接数码管的段码管脚(既图中的0管脚)。

74LS154管脚图如图3.6所示,74LS154真值表如表3.7所示:

74LS154

图3.6 74LS154管脚

表3.7 74LS154真值表

ULN2003A有美国Texas Instruments公司、美国Sprague公司生产,由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双机型大功率高速集成电路。

ULN2003A是一个驱动器,它的输入端接单片机的P0.0~P0.7口,输出接数码管的位码端上,由于此设计中用到的数码管数量多,而单片机的输出不能一下驱动,所以通过ULN2003A进行驱动。

ULN2003A管脚如图3.8所示:

图3.8 ULN2003A管脚图

4 软件设计

软件设计分为:动态扫描、主程序、系统资源分配和软件模块几部分,在此设计中采用定时器来完成动态扫描显示。用定时器T0定20ms的时间间隔,每次定时时间到时就输出一个LED信号,即显示一位。主程序初始化后,就开始进行对DS12C887的读时间;读完后送显示缓冲区,同时并对定时时间进行判断比较。DS12C887的地址由114字节的用户RAM存放。10字节的存放实时时钟时间\日历和定闹RAM及用于控制和状态的4字节特殊寄存器组成,几乎所有的128个字节直接读写。

设计程序有:主程序、读取时间的子程序和显示刷新程序。 主程序框图如图4.1所示:

图4.1 主程序框图

主程序如下所示: ORG 000H LJMP START ORG 0030H

START: MOV 30H,#0

SETB P1.1

SECOND EQU 2000H

MINUNTE EQU 2001H ;时钟芯片寄存器 HOUR EQU 2004H

WEEK EQU 2006H ;它们代表秒、分钟、时、日期 DATE EQU 2007H ;年、月 MONTH EQU 2008H

YEAR EQU 2009H TREGA EQU 200AH TREGB EQU 200BH TREGC EQU 200CH TREGD EQU 200DH

TUPDATE EQU 80H TBHALT EQU 10000010B TBSALT EQU 0000000B F32K EQU 20H

MOV A,#TBHALT MOVX @DPTR,A MOV @DPTR,#TREGD

MOV A,#32H MOV @DPTR,A MOV DPTR,BHALT MOV A, @DPTR MOV @DPTR,A MOV A,@DPTR

MOV A,#TBHALT MOVX @DPTR,A SS1:LCALL TIMEREC

;可以改变实际连线,地址也相应改变 ;四个控制寄存器 ;如果TREGA.7=1,时钟芯片更新 ;24/12=1,采用24小时计时制 将TBHALT写入TREGB,停止计时 ;将TBSTART写入TREGB继续计时 ;SET=1,PIE,AIE,UIE,SQWE=0,DM=0 ;24/12=1,24HOURS,DSE=0 ;设置控制寄存器,开晶振。 ;开始计时

JNB P1.4 ,SS1 LCALL DSPLAY LJMP SS1

读取时间子程序框图如图4.2所示:

开始

时钟芯片初始化

开晶振并计时

读日期存

判断时间到没?

秒存首址

读月份存

读分存

读年号存

子程序返回

读时存

图4.2 读取时间的子程序框图

读取时间程序如下所示: TIMEREC:PUSH ACC MOV ACC,IE CLR ETO

MOVRO,DPL ;将指针存入RO、R1 MOVR1,DPH

MOV DPTR ,#TREGA ;如果DS12C887正在更新则等待 TIMEWALT:MOVX A,@A+DPTR

JB ACC.7,TIMEWALT ;否则,读取秒数、分钟等数值 MOV DPTR,#SECOND MOVX A,@A+DPTR MOV R6 ,A MOV DPL ,R3 MOV DPH ,R1

MOVX A,@DPTR SUB A, R6 JNZ GETTIME RET

GETTIME: INC RO

INC RO MOV A, @EO

CPL A MOV @EO , A MOV A, R6 MOVX @DPTR ,A INC DPTR MOV R3,DPL MOV R1,DPH

MOV DPTR ,#MINUTE MOVX A,@DPTR MOV DPL ,R3 MOV DPH,R1 MOVX A, @DPTR,A INC DPTR MOV R3,DPL

;取出原来的秒数 ;如果时间未改变则退出 ;指向:所指单元 ;将“:”取反,每秒变化一次 ;以控制亮和灭,形成闪烁效果 ;恢复时间值 ;读取并存储分钟

MOV R1,DPH

MOV DPTR,#HOUR ;读取并存储小时 MOVX A, @DPTR MOV DPL,R3 MOVDPH,R1 MOVX @DPTR,A INC DPTR MOV R3,#DPL MOV R1,#DPH

MOV DPTR ,#DATA MOVX A,@DPTR MOV DPL ,R3 MOV DPH ,R1 MOVX @DPTR ,A INC DPTR

MOV R3 ,#TONTH MOVX A, @DPTR MOV DPL ,R3 MOV DPH ,R1 MOVX @DPTR ,A INC DPTR MOV R3,DPL MOV R1,DPH

INC DPTR,#HOUR MOVC A,@DPTR MOV DPL ,R3 MOV DPH ,RR1

MOVX @DPTR ,A POP ACC

;读取并存储日期 ;读取并存储月份 ;读取并存储年号;寄存器恢复保护

MOV IE,ACC POP ACC RET

显示刷新子程序框图如图4.3所示:

开始

读日期高位送47

读秒低位送40

读月份低位送48

读秒高位送41

读月份高位送49

读分低位送42

读年号低位送50

读分高位送43

读年号高位送51

读时低位送44

调显示程序

读时高位送45

子程序返回

读日期低位送46

图4.3 显示刷新子程序框图

显示刷新子程序如下所示: MOV 40H ,R3 PUSH ACC

DISPLAY: MOV A, RO

MOV R6 ,A ;显示指针首址保护,存入R6 INC DPTR ;先将指针指向分钟单元 MOVX A,@DPTR

MOV R3,A ;保护寄存器A数据 ANL A, #OFOH

SWAP A MOV @R0 ,A

INC R0 MOV A, R3

ANL A, #OFOH MOV @R0,A INC R0 INC R0 DEC DPTR MOVX A, @DPTR

SWAP A MOV @R0,A

INC R0 MOV A,R3

ANL A, #OFOH MOV @R0 ,A MOVX @DPTR,A MOV R4,#1FH MOV A,R4

Copyright @ 2012-2024华乐美文网 All Rights Reserved. 版权所有