1、 电子万年历 摘 要: 随着科 技的快速发展,时间的流逝 ,至从观太阳、摆钟到现在电子钟, 人类不断研究,不断创新纪录。 美国 DALLAS 公司推出的具有涓细电流充电能的低功耗实时时钟电路DS130 。它可以对年、月、日、周日、时、分、秒进行计时, 还 具有闰年补偿等多种功能 ,而且 DS1302 的 使用寿命长,误差小。 对于数字电子万年历采用直观的数字显示,可以同时显示 年、月、日、周日、时、分、秒 和温度等信息 ,还具有时间 校准 等 功能 。该电路采用AT89S52 单片机作为核心,功耗小,能在 3V 的低压工作,电压可选用 35V 电压供 电。 综上所述此万年历具有读取方便、显示直
2、观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景 。 关键词: 时钟电 钟; DS1302; DS18B20;动态扫描; 单片机 2 目录 一、设计要求与方案论证 4 1.1 设计要求 4 1.2 系统基本方案选择和论证 4 1.2.1 单片机芯片的选择方案和论证 4 1.2.2 显示模块选择方案和论证 4 1.2.3 时钟芯片的选择方案和论证 4 1.2.4 温度传感器的选择方案与论证 5 二 .系统的硬件设计与实现 5 2.1 电路设计框图 5 2.2 系统硬件概述 5 2.3 主要单元电路的设计 6 2.3.1 单片机主控制模块的设计 6 2.3
3、.2 时钟电路模块的设计 6 2.3.3 温度采集模块设计 7 2.3.4 电路原理及说明 7 2.3.5 显示模块的设计 8 三、系统的软件设计 9 3.1 程序流程框图 9 3.2 子程序的设计 9 3.2.1 DS18B20 温度子程序 9 3.2.2 读、写 DS1302 子程序 10 四 . 指标测 11 4.1 测试仪器 11 4.2 硬 件测试 11 4.3 软件测试 11 4.测试结果分析与结论 12 4.4.1 测试结果分析 12 4.4.2 测试结论 12 五、作品总结 12 六、致谢词 12 参考文献 13 附录一: 系统电路图 14 附录二: 系统程序清单 15 附录三
4、 : 系统使用说明书 40 3 一、 设计要求与方案论证 1.1 设计要求 : () 基本要求 具有年、月、日、星期、时、分、秒等功能; 时间与阴、阳历能够自动关联; 具有 温度计功能 ; 具备年、月、日、星期、时、分、秒校准功能; ( 2 ) 创 新要求 具有上、下课响铃功能; 具有防御报警功能; 1.2 系统基本方案选择和论证 1.2.1 单片机芯片的选择 方案和论证: 方案一 : 采用 89C51 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间 ,能于 3V 的超低压工作 ,而且与 MCS-51 系列单片机完全兼容 ,但是运用于电路设计中时由于不具备 IS
5、P 在线编程技术 , 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插 会对芯片造成一定的损坏。 方案二 : 采用 AT89S52,片内 ROM 全都采用 Flash ROM;能以 3V 的超底压工作;同时也与 MCS-51系列单片机完全该芯片内部存储器为 8KB ROM 存储空间,同样具有 89C51 的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。 所以选择采用 AT89S52 作为主控制系统 . 1.2.2 显示模块选择方案和论证: 方案一:
6、 采用 LED 液晶显示屏 ,液晶显示屏的显 示功能强大 ,可显示大量文字 ,图形 ,显示多样 ,清晰可见 ,但是价格昂贵 ,需要的接口线多 ,所以在此设计中不采用 LED 液晶显示屏 . 方案二: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合 ,如采用在显示数字显得太浪费 ,且价格也相对较高 ,所以也不用此种作为显示 . 方案三: 采用 LED 数码管动态扫描 ,LED 数码管价格适中 ,对于显示数字最合适 ,而且采用动态扫描法与单片机连接时 ,占用的单片机口线少。 所以采用了 LED 数码管作为显示。 1.2.3 时钟芯片的 选择方案和论证: 方 案
7、一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现 的时间误差较大。所以不采用此方案。 4 方案二: 采用 DS1302 时钟芯片实现时钟, DS1302 芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高 ,位的 RAM 做为数据暂存区,工作电压 2.5V 5.5V 范围内, 2.5V 时耗电小于 300nA. .2.4 温度传感器的选择 方案与论证 : 方案一: 使用热敏电阻作为传 感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化
8、而变化的特性,采集这两个电阻变化的分压值,并进行 A/D 转换 。此设计方案需用 A/D 转换电路 ,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的 测量误差。 方案二: 采用数字式温度传感器 DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除 A/D 模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。 1.3 电路设计最终方案决定 综上各方案 所述 ,对此次作品的方案选定 : 采用 AT89S52作为主控制系统 ; DS1302提供时钟 ;数字式温度传感器 ;LED 数码管动态扫
9、描作为显示。 二 .系统的硬件设计与实现 2.1 电路设计框图 2.2 系统硬件概述 本电路是 由 AT89S52 单片机为控制核心 ,具有在线编程功能,低功耗,能在 3V 超低压工作;时钟电路由 DS1302 提供, 它是一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V 5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM数据。 DS1302 内部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。 可产生 年、月、日、周日、时、分、秒,具有使用寿命长,精
10、度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由 DS18B20 构成 ; 显示部份由个数码管, 74ls138、 74ls47 译码器构成。使用动态扫描显示方式对数字的显示。 AT89S52 主控制模 块 DS1302 时钟模块 LED 数码管动态扫描显示模块 温度采集模块 键盘模块 5 2.3 主要单元电路的设计 2.3.1 单片机主控制模块的设计 AT89S52 单片机为 40 引脚双列直插芯片 ,有四个 I/O口 P0,P1,P2,P3, MCS-51 单片机共有 4 个 8 位的 I/O 口( P0、 P1、 P2、 P3),每一条 I/O线都能独立地作输出或输入。 单片机
11、的最小系统如下图所示 ,18 引脚和 19 引脚接时钟电路 ,XTAL1 接外部晶振和微调电容的一端 ,在片内它是振荡器倒相放大器的输入 ,XTAL2 接外部晶振和微调电容的另一端 ,在片内它是振荡器倒相放大器的输出 .第 9 引脚为复位输入端 ,接上电容 ,电阻及开关后够上电复位电路 ,20 引脚为接地端 ,40 引脚为电源端 . 如图 -1 所示 图 -1 主 控制系统 2.3.2 时钟电路模块的设计 图 -2 示出 DS1302 的引脚排列,其中 Vcc1 为后备电源, Vcc2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的
12、较大者供电。当Vcc2 大于 Vcc1+0.2V 时, Vcc2给 DS1302 供电。当 Vcc2 小于 Vcc1 时, DS1302由 Vcc1 供电。X1 和 X2 是振荡源,外接 32. KHz 晶振。 RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先, RST 接通控制逻辑 ,允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中 RSTS置为低电平,则会终止此次数据传送, I/O 引脚变为高
13、阻态。上电动行时,在 Vcc 大于等于2.5V 之前, RST 必须保持低电平。中有在 SCLK 为低电平时,才能将 RST 置为高电平, I/O为串行数据输入端(双向)。 SCLK 始终是输入端。 6 图 -2 DS1302 的引脚图 2.3.3 温度采集模块设计 如图 -3 所示 。 采用数字式温度传感器 DS18B20, 它是 数字式温度传感器 , 具有测量精度高 ,电路连接简单特点, 此类传感器仅需要一条数据线进行数据传输, 使用 0.7 与 DS18B20的 I/O 口连接加一个上拉电阻 ,Vcc 接电源 ,Vss 接地。 图 -3 DS18B20 温度采集 2.3.4 电路原理及说
14、明 (1) 时钟芯片 DS1302 的工作原理: DS1302 在每次进行读、写程序前都必须初始化,先把 SCLK 端置 “ 0”,接着把 RST 端置“ 1”,最后才给予 SCLK 脉冲;读 /写时序如下图 4 所示。图 5为 DS1302 的控制字,此控制字的位 7 必须置 1,若为 0 则不能把对 DS1302 进行读写数据。对于位 6,若对程序进行读/写时 RAM=1,对时间进行读 /写时, CK=0。位 1 至位 5 指操作单元的地址。位 0 是读 /写操作位,进行读操作时,该位为 1;该位为 0 则表示进行的是写操作。控制字节总是从最低位开始输入 /输出的。表 6 为 DS1302
15、 的日历、时间寄存器内容:“ CH”是时钟暂停标志位,当该位为 1 时,时钟振荡器停止, DS1302 处于低功耗状态;当该位为 0 时,时钟开始运行。“ WP” 是写 保护位,在任何的对时钟和 RAM 的写操作之前, WP 必须为 0。当“ WP”为 1 时,写保护位防止对任一寄存器的写操作。 7 (2) DS1302 的控制字节 DS1302 的控制字如 表 -1 所示。控制字节的高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果 0,则表示存取日历时钟数据,为 1 表示存取 RAM数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0
16、)如为 0 表示要进行写操作,为1 表示进行读操作,控制字节总是从最低位开始输出 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR 表 -1 DS1302 的控制字格式 (3) 数据输入输出( I/O) 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数 据被写入 DS1302,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位 0 位到高位 7。 如下图 -4 所示 图 -4 DS1302 读 /写时序图 (4) DS1302 的寄存器 DS1302 有 12 个寄存器,其中有 7
17、个寄存器与日历、时钟相关,存放的数据位为 BCD码形式 ,其日历、时间寄存器及其控制字见表 -2。 表 -2 DS1302 的日历、时间寄 存器 8 此外, DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0H FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,命令
18、控制字为 FEH(写 )、 FFH(读 )。 2.3.5 显示模块的设计 如图 5 所示 , 采用动态扫描显示,由个数码管, 3-8 译码器 74LS138 接 1K 限流电阻 ,再接 8550 三极管接到共阳数码管的 CoM 端作为选通位码 ,每位选择相应的列 。 74ls47 接 240限流电阻 ,再接共行的 LED 数码管的断码。 图 -5 LED 动态扫描显示 9 三、 系统的软件设计 3.1 程序流程框图 图 -A 主程序流程图 图 -B计算阳历程序流程图 开始 初始化 读 、写 日期 、 时间 和 温度 分离日期 时间 温度显示值 显示子程序 农历自动更新子程序 日期、时间 修改子程序 闰月子程 返回 定时闹铃子程序 10 图 -C 时间调整程序 流程图