1、图书分类号:密 级:毕 业 设 计 (论 文 )基于 AT89C51 单片机的多功能电子万年历的设计AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR学 生 姓 名 段 峰学 院 名 称 信 电 工 程 学 院专 业 名 称 电 子 信 息 工 程 技 术指 导 教 师 高 玉 芹2010 年 5 月 20 日徐 州 工 程 学 院 毕 业 设 计 (论 文 )I摘要本文介绍了基于 AT89C51 单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以 AT89C51 单片机为控制器,以串行时钟日历芯片 DS1302 记录日历和时间,它可以对年、月、日、
2、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在 LED 上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。关键字 AT89C51;电子万年历; DS1302徐 州 工 程 学 院 毕 业 设 计 (论 文 )I目 录1 绪论 .11.1 课题研究的背景 .11.2 课题的研究目的与意义 .11.3 课题解决的主要内容 .12 系统的总体设计 .22.1 系统方案的构想与确定 .22.2 器件的选用 22.2.1 单片机的选择 23 系统硬件的设计 .43.1
3、系统硬件电路设计 .43.1.1 系统硬件框图 43.1.2 AT89C51 单片机 43.1.3 8 位移位寄存器 74LS164(串行输入,并行输出) .83.1.4 ds1302.114 系统的软件设计 .144.1 主程序 144.2 从 1302 读取日期和时间程序 155 PROTEUS 使用 165.1 编程环境 PROTEUS165.2 用 PROTEUS ISIS 对电子万年历的硬件电路设计 .165.3 用 PROTEUS ISIS 进行电子万年历的仿真测试 .20结论 .23致谢 .24参考文献 .25附录 .26附录 1.26徐 州 工 程 学 院 毕 业 设 计 (论
4、 文 )11 绪论1.1 课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且 DS1302 的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用 AT89C51 单片机作为核心,功耗小,能在 3V 的低压工作,电压可选用 35V 电压供电。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2 课题的研究目的与意义二
5、十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。1.3 课题解决的主要内容本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、
6、抗断电的器件。(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。(4)根据硬件电路图,在开发板上完成器件的焊接。(5)根据设计的硬件电路,编写控制 AT89C51 芯片的单片机程序。(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。(8)软件设计时必须要有完善的思路,要做到程序简单,调试方便。徐 州 工 程 学 院 毕 业 设 计 (论 文 )22 系统的总体设计单片机电子万年历的制作有多种方法,可供选择的
7、器件和运用的技术也有很多种。所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。2.1 系统方案的构想与确定系统的功能往往决定了系统采用的结构,经过成本,性能,功耗等多方面的考虑决定用三个 8 位 74LS164 串行接口外接 LED 显示器,RESPACK-8 对单片机 AT89C51 进行供电,时间芯片 DS1302 连接单片机 AT89C51。从而实现电子万年历的功能。2.2 器件的选用单片机 AT89C51电容 RESPACK-8三个 74LS164 串行接口传感器
8、DS13022.2.1 单片机的选择单片机自 70 年代问世以来以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,用广泛的应用领域拉动得到蓬勃发展,单片机功能正日渐完善。单片机的应用,使许多领域的技术水平和自动化程度大大提高,可以说当今世界正在经受一场以单片机技术为标志的新技术革命浪潮的冲击。主要单片机类型如下:(1)MCS-51 系列单片机MCS-51 系列单片机主要是指 Intel 公司生产的以 51 位内核的单片机芯片,具有 8位 CPU、4K 字节 ROM、128 字节 RAM、可扩展外部 64K 字节 RAM 和 ROM、2 个 16 位的定时器/计数器、4 个 8 位并行
9、 I/O 口、1 个全双工串行 I/O 口、21 字节的专用寄存器、5 个中断源、片内自带振荡器、片内单总线等功能部件。(2)AT89C51 单片机AT89C51 单片机的主要特性如下: 与 MCS-51 产品指令系统完全兼容 4K 字节的在线编程 Flash 存储器,1000 次擦写周期 4.05.5V 的工作电压范围 全静态工作模式:033MHz 三级程序存储器锁徐 州 工 程 学 院 毕 业 设 计 (论 文 )3 1288 字节内部 RAM 32 个可编程 I/O 口线 2 个 16 位定时/计数器 6 个中断源 全双工串行 UART 通道 低功耗空闲和掉电模式 中断可从空闲模式唤醒系
10、统 看门狗(WDT)及双数据指针 掉电标识和快速编程特性 具有掉电状态下的中断恢复功能 灵活的在系统编程(ISP 字节或页写模式)由于 AT89C51 单片机片内有 4K 字节的在线编程 Flash 存储器,可以擦写 1000 次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。所以选用AT89C51 单片机作为电子万年历芯片的控制单片机。徐 州 工 程 学 院 毕 业 设 计 (论 文 )43 系统硬件的设计根据上述所确定的系统方案构想,下面进行系统硬件电路的具体设计,系统的总体结构框图如图所示。3.1 系统硬件电路设计3.1.1 系统硬件框图系统硬件框图如图 3-1时钟
11、芯片 DS1302串口AT89C51P2口LED 显示器驱动电路图 3-1 系统硬件框图3.1.2 AT89S51 单片机本系统采用的是美国 ATMEL 公司生产的 AT89C51 单片机,首先我们来熟悉一下AT89C51 单片机的外部引脚和内部结构。1.单片机的引脚功能AT89C51 单片机有 40 个引脚。 Vcc:电源电压+5V GND:接地 P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能驱动 8 个 TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)
12、和数据总线服用,在访问期间激活内部上拉电阻。徐 州 工 程 学 院 毕 业 设 计 (论 文 )5在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。 P1 口:P1 口是一个带内部上拉电阻的 8 位双向 I/O,P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash 编程和程序校验期间,P1 接收低 8 位地址。 P2 口:P2 口是一个带内部上拉电阻的 8 位双向 I/O
13、,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(MOVX Ri 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中 P2 寄存器的内容) ,在整个访问期间不改变。Flash 编程和程序校验期间,P2 亦接收低高位地址和其他控制信号。 P3 口:P3 口是一
14、组带内部上拉电阻的 8 位双向 I/O,P3 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的 P3 口将用上拉电阻输出电流。P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,见表 3-1 所示:P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。表 3-1 P3 口的第二功能图端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外中断 0)P3.3 INT1(外中断 1)P3.4 T0(定时/计时器 0
15、 外部输入)P3.5 T1(定时/计时器 1 外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通) RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使引脚输出高电平,设置 SFR AUXR 的 DISRT0(地址 8EH)可打开或关闭该功能。DISRT0 位缺省为 RESET 输出高电平打开状态。徐 州 工 程 学 院 毕 业 设 计 (论 文 )6 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低 8 位字节。即使不访问外部存储器,ALE 仍以时钟振荡
16、频率的1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG) 。如有必要,可通过多特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置,可禁止 ALE操作。该位置后,只有一条 MOVX 和 MOVC 指令 ALE 才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。 PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效
17、,即输出两个脉冲。当访问外部数据存储器,没有两次有效的 PSEN 信号。 EA/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接地) 。需要注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的变成电压 Vpp. XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。AT89C51 单片机内部结构2.AT89C51 单片机与 MCS-51 完全
18、兼容 看门狗(WDT):WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活WDT,用户必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚输出一个高电平。 可编程串口(UART)在AT89C51中,UART 的操作与AT89C51 和AT89C52 一样。AT89C51系列单片机的
19、串行通信口可以工作于同步和异步通信方式。当工作于异步方式时,它具有全双工的操作功能,也就是说,它可以同时进行数据的发送和接收。串行口内的接收器采用的是双缓冲结构,能够在接收到的第一个字节从接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完毕,而第一个字节仍然没有被读走,那将会丢掉一个字节)。串行口的发送和接收操作都是通过特殊功能寄存器中的数据缓冲寄存器SBUF进行的,但在SBUF的内部,接收寄存器和发送寄存器在物理结构上是完全独立的。如果将数据写入SBUF,数据会被送入发送寄存器准备发送。如果执行SBUF指令,则读出的数据一定来自接收缓存器。因此,CPU对SBUF的读写,实际上
20、是分别访问2个不徐 州 工 程 学 院 毕 业 设 计 (论 文 )7同的寄存器。这2个寄存器的功能决不能混淆。 振荡电路:AT89C51系列单片机的内部振荡器,由一个单极反相器组成。XTAL1反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。在电路中,对电容C1和C2的值要求不是很严格,如果使用
21、高质的晶振,则不管频率为多少,C1、C2通常都选择30pF。 定时/计数器:AT89C51单片机内含有2个16位的定时器/计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。 RA
22、M:高于7FH内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节。的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,虽然高128字节区分与专用寄器 ,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。究竟访问哪一区,存是通过不同的寻址方式加以区分的。 SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80HFFH中。虽然如此,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的。如对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不
23、应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、捕捉寄存器、控制寄存器。 中断系统:AT89C51 单片机有 6 个中断源,中断系统主要由中断允许寄存器 IE、中断优先级寄存器 IP、优先级结构和一些逻辑门组成。IE 寄存器用于允许或禁止中断;IP 寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中 CPU 所执行的操作步骤如下:(1)完成当前指令的操作(2)将 PC 内容压入堆栈(3
24、)保存当前的中断状态(4)阻止同级的中断请求(5)将中断程序入口地址送 PC 寄存器徐 州 工 程 学 院 毕 业 设 计 (论 文 )8(6)执行中断服务程序(7)返回3.1.3 8 位移位寄存器 74LS164(串行输入,并行输出)74LS164 为 8 位移位寄存器,其主要电特性的典型值如表 3-2:表 3-2 74LS164 主要电特性典型值型号 fm Pn54/74164 36MHz 185mW54/74LS164 36 MHz 80mW当清除端(CLEAR)为低电平时,输出端(QAQH)均为低电平。串行数据输入端(A,B)可控制数据。当 A、B 任意一个为低电平时停止新数据输入,在
25、时钟端(CLOCK)脉冲上升沿作用下 Q0 为低电平。当有一个为高电平,则另一个就允许输入数据,并在 CLOCK 上升沿作用 Q0 的状态。引出端符号CLOCK 时钟输入端CLEAR 同步清除输入端(低电平有效)A,B 串行数据输入端QAQH 输出端逻辑及封装图,如 3-2,3-3图 3-2 逻辑图徐 州 工 程 学 院 毕 业 设 计 (论 文 )9图 3-3 封装图极限值电源电压7V输入电压5.5V工作环境温度54164-5512574164-070储存温度-65150表 3-3 真值表H高电平 L低电平 X任意电平低到高电平跳变QA0,QB0,QH0规定的稳态条件建立前的电平QAn,QG
26、n时钟最近的前的电平时序图如下 3-4徐 州 工 程 学 院 毕 业 设 计 (论 文 )10图 3-4 时序图推荐工作条件如表 3-4:表 3-4 推荐工作条件 静态特性(TA 为工作环境温度范围)如表 3-5徐 州 工 程 学 院 毕 业 设 计 (论 文 )11表 3-5 工作环境温度范围1:测试条件中的“最小”和“最大”用推荐工作条件中的相应值。动态特性(TA=25)如表 3-6表 3-6 动态特性2:fmax 最大时钟频率。tPLH 输出由低电平到高电平传输延迟时间 tPHL 输出由高电平到低电平传输延迟时间3.1.4 ds1302 现在流行的串行时钟电路很多,如 DS1302、 D
27、S1307、PCF8485 等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路 DS1302 是 DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通 32.768kHz 晶振。 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302
28、 内部有一个 318 的用于临时性存放数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 徐 州 工 程 学 院 毕 业 设 计 (论 文 )12DS1302 的引脚排列,其中 Vcc1 为后备电源,Vcc2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于Vcc10.2V 时,Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1 时,DS1302 由 Vcc1 供电。X1和
29、X2 是振荡源,外接 32.768kHz 晶振。RST 是复位/片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当 RST为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc2.5V 之前,RST 必须保持低电平。只有在 SCLK 为低电平时,才能将 RST 置为高电平。I/O 为串行数据输入输出端(双向),后面有详细说明。SC
30、LK 始终是输入端。 DS1302 的控制字节的最高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1902,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位 0 位到高位 7。DS130
31、2 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD码形式,其日历、时间寄存器及其控制字见表 1。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,命令控制字为 FEH(写)
32、、FFH(读)。 DS1302 与 CPU 的连接需要三条线,即 SCLK(7)、I/O(6)、RST(5)。DS1902 与89C2051 的连接图,其中,时钟的显示用 LED。 DS1302 与 CPU 的连接,实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入 DS18B20,同时显示实时温度。只要占用 CPU 一个口线即可。 LED 还可以换成 LCD,还可以使用北京卫信杰科技发展有限公司生产的 10 位多功能 8 段液晶显示模块 LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂
33、鸣器驱动电路,并有内置显示 RAM,可显示任意字段笔划,具有 34 线串行接口,可与任何单片机、IC 接口。功耗低,显示状态时电流为 2A (典型值 ),省电模式时小于 1A,工作电压为2.4V3.3V,显示清晰。徐 州 工 程 学 院 毕 业 设 计 (论 文 )13DS1302 的实时时间流程。根据流程框图,不难采集实时时间。下面对 DS1302 的基本操作进行编程: 根据本人在调试中遇到的问题,特作如下说明: DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位 MSB(D7)必须为逻辑 1,如果 D7=0,则禁止写 DS1302,即写保护;D6=0,
34、指定时钟数据,D6=1,指定 RAM 数据;D5D1 指定输入或输出的特定寄存器;最低位 LSB(D0)为逻辑 0,指定写操作(输入), D0=1,指定读操作(输出)。 在 DS1302 的时钟日历或 RAM 进行数据传送时,DS1302 必须首先发送命令字节。若进行单字节传送,8 位命令字节传送结束之后,在下 2 个 SCLK 周期的上升沿输入数据字节,或在下 8 个 SCLK 周期的下降沿输出数据字节。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH,其中奇数为读操作,偶数为写操作;再一
35、类为突发方式下的 RAM 寄存器,在此方式下可一次性读、写所有的 RAM 的 31 个字节。要特别说明的是备用电源 B1,可以用电池或者超级电容器(0.1F 以上)。虽然 DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的 3.6V 充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 F 就可以保证 1 小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302 可以用于数
36、据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片 DS1302,则能很好地解决这个问题。徐 州 工 程 学 院 毕 业 设 计 (论 文 )144 系统的软件设计电子万年历的功能是在程序控制下实现的。该系统的
37、软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。4.1 主程序主程序如图 4-1 所示:开始读年、月、日送第一块 LED 显示读星期、闰、年、日送第二块 LED 显示读时、分、秒送第三块 LED 显示返回图 4-1 主程序图徐 州 工 程 学 院 毕 业 设 计 (论 文 )154.2 从 1302 读取日期和时间程序读 1302 日期和时间调整时间和日期YN图 4-2 从 1302 读取程序系统初始化开 始需要调整时间吗?徐 州 工 程 学 院 毕 业 设 计 (论
38、文 )165 PROTEUS 使用5.1 编程环境 PROTEUSPROTEUS 软件是由英国 LabCenter Electronics 公司开发的 EDA 工具软件,由 ISIS和 ARES 两个软件构成,其中 ISIS 是一款便捷的电子系统仿真平台软件,ARES 是一款高级的布线编辑软件,它集成了高级原理布线图、混合模式 SPICE 电路仿真、PCB 设计以及自动布线来实现一个完整的电子设计。5.2 用 PROTEUS ISIS 对电子万年历的硬件电路设计通过 PROTEUS ISIS 软件的 VSM(虚拟仿真技术) ,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连
39、同所有外围接口电子元器件一起仿真。用 PROTEUS ISIS 设计硬件电路的过程 选择设计图纸的到小根据设计所使用到元器件的多少,选择合适大小的设计图纸,操作是单击菜单栏上的 SystemSet Sheet Size ,然后弹出如图 5-1 所示的对话框,从中选择合适大小的图纸,也可以选择 User 进行图纸的自定义设置。在设计过程中也可以通过此方法调整图纸的大小。图 5-1 选取仿真所需的元器件 选取元器件的方式是,单击如图 5-2 所示的按钮“P” 。会弹出如图 5-3 所示的窗口。徐 州 工 程 学 院 毕 业 设 计 (论 文 )17图 5-2图 5-3从此窗口的左上角的“Keywo
40、rds”中输入电子万年历设计用到的器件,如输入“AT89C51”,在中间会列出带有输入关键字的元器件,选择合适的元器件并双击它,则已经选择好了该元器件。然后再在“Keywords”中输入其他所需的元器件,用同样的方法进行操作。最后选择好所有的元器件如图 5-4 所示。徐 州 工 程 学 院 毕 业 设 计 (论 文 )18图 5-4 所用器件其中 74LS174 表示三个串行接口,AT89C51 代表单片机会,DS1302 代表时钟芯片,RESPACK-8 代表八排电阻。 把元器件放到图纸的合适位置,进行布线单击如图 5-4 所示的元器件 AT89C51,再在右边图纸上单击,就把元器件放入到了
41、图纸上。再用同样的方法把 ds1302 放入到图纸的合适位置。如果元器件放置错误,这可通过两次右击删除所放置的元器件,如果位置放得不理想,可以先右击该器件,然后按住左键进行移动。在布线之前,如果觉得元器件的引脚的方向不好布线,则可以通过单击这四个按钮进行调整,这四按钮的意思分别是:顺时针旋转 90,逆时针旋转 90,沿 Y 轴对称,沿 X 轴对称。通过这样的调整,可以使整个布局合理一些。接着进行布线,由于 PROTEUS ISIS 有自动布线的功能,比如要把 AT89C51 的 P2 口连到74LS164 的 OUT8 口,只要先在 P2 引脚上单击一下,再在 OUT8 引脚上单击,则 ISI
42、S 自动将两个引脚连上线。徐 州 工 程 学 院 毕 业 设 计 (论 文 )19图 5-5 at89c51 与 ds1302 的连接ISIS 还提供了网络布线,即不使用线连接也可以把两个引脚虚拟的连接了起来。具体操作是:单击要连线的一个引脚,连出适当的距离后双击,另一个引脚也同样操作,在单击如图 6-5 所示的“LBL”按钮,再在图中 P0.1 引脚的 A 处单击,在弹出的窗口中的“String”中填入名称,如“A” ,对 OUT7 引脚进行同样的操作,在“String”中也填入名称“A” ,这样就完成了 P3.4 引脚与 RES 引脚的网络连接,这个好处避免两个距离比较远的器件进行真实线的
43、连接,使布线美观。 编辑窗口连接端子要让最后的设计成功仿真时,必须放置并连接端子。选择 ,从中可以选择电路原理中的两个通用的端子,一个是接地,一个是电源。如图 5-6 所示。图 5-6 连接端子徐 州 工 程 学 院 毕 业 设 计 (论 文 )20在 PROTEUS ISIS 中的最终设计图如图 5-7 所示图 5-7 仿真图最后分别对各元器件的属性值进行设置,单击 按钮,进行电气检测,查看接线是否合理,说明硬件电路已经顺利的完成。5.3 用 PROTEUS ISIS 进行电子万年历的仿真测试 添加 Keil 中编写的代码文件单击工具栏中的 SourceAdd/Remove Source f
44、iles.,弹出一个对话框,分别单击“New” ,然后选择在 Keil 中编写的数字电压表.ASM 汇编语言程序,单击“OK” ,完成添加代码文件。 编译源程序,生成.HEX 目标代码文件单击 SourceBuild All。如果编译结果没有错误,会出现如图 5-8 所示的结果。徐 州 工 程 学 院 毕 业 设 计 (论 文 )21图 5-8 加载.HEX 目标代码文件通过如图 5-9 所示的对话框,选择刚才编译生成的.HEX 文件。设置使单片机的运行频率为 6MHz 。图 5-9 单击 按钮,进行对电子万年历的仿真测试,运行结果如图 5-10 所示。徐 州 工 程 学 院 毕 业 设 计
45、(论 文 )22图 5-10 仿真测试 PROTEUS 的调试功能由于使用的是汇编语言编写的程序,如果在测量的时候测量值显示错误,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用 PROTEUS 对程序进行调试。单击 按钮,再单击菜单栏中的 Debug,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。在汇编语言源代码窗口中,也可以在所需要设置断点的语句前双击设置断点,当设置断点的时候,程序运行到所设断点处停止,从而可以在内存、寄存器等的值的变化,从而找出程序出错的地方。徐 州 工 程 学 院 毕 业 设 计 (论 文 )23结论本课题从理论到
46、实际应用,用 AT89C51 单片机与 8 位模数转换芯片 74LS164 等一些电路的组合,成功的设计出了一个电子万年历。而且所设计的电子万年历设计也按当初要求的能够在 PROTEUS 中进行仿真,并且能够很精确的显示年历。可以说该电子万年历具有很高的实用价值。在软件设计的过程中,利用了 Keil 这个软件在程序录入和调试的时候的优越性,让我能够在编写软件的时候很方便的发现软件中的错误,现在已经能够使用 Keil 对所设计的程序进行调试。对于 PROTEUS 这款软件,也能熟练掌握电路设计仿真。由于平时没有接触过这两个软件,加上毕业设计的时间有限,对于他们的连接调试程序,未能熟练掌握,但以后
47、有机会的话会再好好学习的。本次设计的电子万年历也存在的不足的地方,有待于以后的改进。徐 州 工 程 学 院 毕 业 设 计 (论 文 )24致谢经过三个多月的时间,毕业设计按照预期完成了,由于本人的知识水平有限,论文和设计中有遗漏和缺陷的地方恳请指正。感谢我的导师高玉芹老师给了我莫大的帮助,在她悉心的指导和严格的要求下,作品和论文顺利完成了。论文从选题和最终完成,凝结着导师的辛勤的汗水,她不辞劳苦的教导、严谨的作风使我终生受益。在此毕业设计完成之际,谨向导师和所有帮助过我的老师致以崇高的敬意和衷心的感谢。还有感谢家人、朋友还有宿舍里所有的室友,是他们给我创造了良好的学习氛围,在学习和生活中给了
48、我支持和帮助。在以后的学习生活中我会时时敦促自己更加努力,不辜负师长、亲人、朋友对我的期望。徐 州 工 程 学 院 毕 业 设 计 (论 文 )25参考文献1 赵长德.微型计算机原理与接口技术M.北京:机械工业出版社,1999:98-350.2 苏平.单片机的原理与接口技术M.北京:电子工业出版社,2006:1-113.3 王忠民.微型计算机原理M.西安:西安科技大学出版社,2003:15-55.4 胡戴明.计算机组成原理M.北京:经济科学出版社,2005:43-56.5 纪宗南.单片机外围器件使用手册M.北京:北京航空航天大学出版社,622-655.6 周雪.模拟电子技术M西安: 西安电子科
49、技大学出版社,2005:81-95.7 左金生.电子与模拟电子技术M.北京:电子工业出版社,2004:105-131.8 尹勇.单片机开发环境 Vision2 的开发指南M. 北京:北京航空航天大学出版社,2004:173-199.9 张斌武.单片机系统 Proteus 设计与仿真M. 北京:电子工业出版社,2005:52-89.徐 州 工 程 学 院 毕 业 设 计 (论 文 )26附录附录 1源代码DELAYC#define DELAY_C#include”includesh”#define XTAL 12void delay_lus(void)asm(”nop”):void delay_nus(unsigned int n) unsigned int i=0;for(i=0;i=1;R_Byte I=TmpByte;Prt_set_clk();delay_