1、毕业设计说明书电子万年历 1 目 录 摘 要 . 3 一设计要求与方案论证 . 4 1.1 设计要求 . 4 1.1.1 基本要求 . 4 1.1.2 创新要求 . 4 1.2 系统基本方案选择和论证 . 4 1.2.1 单片机芯片 . 4 1.2.2 显示模块 . 5 1.2.3 时钟芯片 . 5 1.2.4 温度传感器 . 6 1.3 电路设计最终方案决定 . 6 二电子万年历硬件设计与实现 . 7 2.1 电子万年历系统设计 . 7 2.1.1 系统设计框图 . 7 2.1.2 系统硬件概述 . 7 2.2 系统 硬件 各模块作用 . 7 2.2.1 单片机主控制模块 . 7 2.2.2
2、 时钟电路模块 . 10 2.2.3 温度采集模块 . 14 2.2.4 显示模块 . 15 2.3 电子万年历电路设计 . 18 2.3.1 系统电路图 . 18 2.3.2 电路图分析 . 19 三电子万年历软件设计 . 20 3.1 程序流程框图 . 20 3.1.1 总流程图 . 20 3.1.2 阳历程序流程图 . 21 3.1.3 阴历程序流程图 . 21 3.1.4 时间调整程序流程图 . 22 3.2 部分程序的设计 . 23 3.2.1 DS18B20 温度子程序 . 23 3.2.2 读、写 DS1302 子程序 . 24 四 . 指标测 . 25 4.1 测试仪器 . 2
3、5 毕业设计说明书电子万年历 2 4.硬件测试 . 25 4.软 件测试 . 25 4.测试结果分析与结论 . 26 4.4.1 测试结果分析 . 26 4.4.2 测试结论 . 26 五设计总结 . 27 致 谢 . 28 参考文献 . 29 附录一:系统程序清单 . 30 附录二:系统使用说明书 . 46 毕业设计说明书电子万年历 3 摘 要 电子万年历是一种非常 广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。 电子万年历 设计是基于单片机进行的,可以 显示年 、 月 、 日 、 时 、 分 、 秒 、周 及温度 信息,具有
4、可调整日期和时间功能。 设计包含 AT89S52 单片机 模块、 LED 数码管模块、键盘模块、 DS1302模块、 数字式 温度传感器 DS18B20 模块。 AT89S52 单片机作为核心,功耗小,能在 3V 的低压工作,电压可选用 35V 电压供电。 LED 数码管动态扫描,对于显示数字最合适,价格适中,而且采用动态扫描法与单片机连接时,占用的单片机口线少。 DS1302 的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间 校准 等 功能 。 数字式 温度传感器 DS18B20 仅需 要一条数据线进行数据传输,易与
5、单片机连接简化系统电路 .数字式温度 传感器还具有测量精度高、测量范围广等优点。 关键词: AT89S52; DS1302; DS18B20; LED 数码管 ;单片机 毕业设计说明书电子万年历 4 一 设计要求与方案论证 1.1 设计要求 1.1.1基本要求 具有年、月、日、星期、时、分、秒等功能; 时间与阴、阳历能够自动关联; 具备年、月、日、星期、时、分、秒校准功能; 1.1.2创新要求 具有温度计功能; 1.2 系统基本方案选择和论证 1.2.1单片机芯片 PIC 单片机 是 MICROCHIP 公司的产品 ,其突出的特点是体积小 ,功耗低 ,精简指令集 ,抗干扰性好 ,可靠性高 ,有
6、较强的模拟接口 ,代码保密性好 ,大部分芯片有其兼容的 FLASH 程序存储器的芯片 。 EMC 单片机 是台湾义隆公司的产品 ,有很大一部分与 PIC 8 位单片机兼容 ,且相兼容产品的资源相对比PIC 的多 ,价格便宜 ,有很多系列可选 ,但抗干扰较差 。 ATMEL 单片机 ATMEl 公司的 8 位单片机有 AT89、 AT90 两个系列 ,AT89 系列是 8位 Flash 单片机 ,与 8051 系列单片机相兼容 ,静态时钟模式 ;AT90 系列 单片机是增强 RISC 结构、全静态工作方式、内载在线可编程 Flash 的单片机 ,也叫 AVR 单片机 。 PHLIPIS 51PL
7、C 系列单片机 PHILIPS 公司的单片机是基于 80C51 内核的单片机 ,嵌入了掉电检测、模拟以及片内 RC 振荡器等功能 ,这使 51LPC 在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求 。 HOLTEK 单片机 台湾盛扬半导体的单片机 ,价格便宜 ,种类较多 ,但抗干扰较差 ,适用于消费类产品 。 毕业设计说明书电子万年历 5 TI 公司单片机 德州仪器提供了 TMS370和 MSP430两大系列通用单片机 .TMS370系列单 片机是 8位 CMOS单片机 ,具有多种存储模式、多种外围接口模式 ,适用于复杂的实时控制场合 ;MSP430 系列单片机是一种超低功耗、
8、功能集成度较高的 16 位低功耗单片机 ,特别适用于要求功耗低的场合 。 方案一 采用 89C51 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间 ,能于 3V 的超低压工作 ,而且与 MCS-51 系列单片机完全兼容 ,但是运用于电路设计中时由于不具备 ISP 在线编程技术 , 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定 的损坏。 方案二 采用 AT89S52,片内 ROM 全都采用 Flash ROM;能以 3V 的超底压工作;同时也与 MCS-51 系列单片机完全该芯片内部存储器为 8KB R
9、OM 存储空间,同样具有 89C51 的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。 所以选择采用 AT89S52 作为主控制系统 。 1.2.2 显示模块 方案一 采用 LED 液晶显示屏 ,液晶显示屏的显示功能强大 ,可显示大量文字 ,图形 ,显示多样 ,清晰可见 ,但是价格昂贵 ,需要的接口线多 ,所以在此设计中不采用 LED 液晶显示屏 。 方案二 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合 ,如采用在显示数字显得太浪费 ,且价格也相对较
10、高 ,所以也不用此种作为显示 。 方案三 采用 LED 数码管动态扫描 ,LED 数码管价格适中 ,对于显示数字最合适 ,而且采用动态扫描法与单片机连接时 ,占用的单片机口线少。 所以采用了 LED 数码管作为显示。 1.2.3时钟芯片 方 案一 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数 。毕业设计说明书电子万年历 6 采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。 方案二 采用 DS1302 时钟芯片实现时钟, DS1302 芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,
11、而且精度高 ,位的 RAM 做为数据暂存区,工作电压 2.5V 5.5V 范围内, 2.5V 时耗电小于 300nA。 所以采用 DS1302 时钟芯片实现时钟。 1.2.4温度传感器 方案一 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采 集这两个电阻变化的分压值,并进行 A/D 转换。此设计方案需用A/D 转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。 方案二 采用数字式温度传感器 DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除 A/D
12、 模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。 所以采用 数字式温度传感器 DS18B20。 1.3 电路设计最终方案决定 综上各方案所述 ,对此次作品的方案选定 : 采用 AT89S52作为主控制系统 ; DS1302提供时钟 ; 数字式温度传感器 DS18B20;LED 数码管动态扫描作为显示 。 毕业设计说明书电子万年历 7 二 电子万年历 硬件设计与实现 2.1 电子万年历系统设计 2.1.1系统设计框图 2.1.2 系统硬件概述 本电路是由 AT89S52 单片机为控制核心,具有在线编程功能,低功耗,能在 3V 超低压工作;时钟电路由
13、DS1302 提供,它是一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V 5.5V。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。 DS1302 内部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由 DS18B20 构成;显示部份由个数码管, 74ls138、 74ls47 译码器构成。使用动态扫描显示方式对数字的显示。 2.2 系统 硬件
14、各模块作用 2.2.1单片机主控制模块 主要性能 与 MCS-51 单片机产品兼容 、 8K 字节在系统可编程 Flash 存储器、 1000 次擦写周期、 全静态操作: 0Hz 33Hz 、 三级加密程序存储器 、 32个可编程 I/O 口线 、三个 16 位定时器 /计数器 八个中断源 、全双工 UART 串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。 功能特性描述 At89s52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非 易失性存储器技术制造,与工业 8
15、0C51 产品指令和引脚AT89S52 主控制模 块 DS1302 时钟模块 LED 数码管动态扫描显示模块 温度采集模块 键盘模块 毕业设计说明书电子万年历 8 完 全兼容。片上 Flash 允许程序 存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统 可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节 Flash, 256 字节 RAM, 32 位 I/O 口线,看门狗定时器, 2 个数据指针,三个 16 位 定时器 /计数器,一个 6 向量 2 级中断结构
16、,全双工串行口, 片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下, CPU 停止工作,允许 RAM、定时器 /计数器、串口、中断继续工 作。掉电保护方式下, RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。 8 位微控制器 8K 字节在系统可编程 Flash AT89S52 P0 口: P0口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL逻辑电平。对 P0端口写 “1” 时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时, P0口也被作为低 8 位
17、地址 /数据复用。在这种模式下, P0 具有内部上拉电阻。 在 flash 编程时, P0 口也用来接收指令字节;在程序校 验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口: P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口, p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1 端口写 “1” 时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流( IIL)。 此外, P1.0 和 P1.2 分别作定时器 /计数器 2 的外部计数输入( P1.0/T2)和时器 /计数器 2 的触发输入( P1.1/T2E
18、X),具体如下表所示。 在 flash编程和校验时, P1 口接收低 8 位地 址字节。 引脚号第二功能 P1.0 T2(定时器 /计数器 T2 的外部计数输入),时钟输出 P1.1 T2EX(定时器 /计数器 T2 的捕捉 /重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口: P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写 “1” 时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部
19、电阻的 原因,将输出电流( IIL)。 在访问外部程序存储器或用 16位地址读取外部数据存储器(例如执行 MOVX DPTR)时, P2 口送出高八位地址。在这种应用中, P2 口使用很强的内部上拉发送 1。在使用 8位地址(如 MOVX RI)访问外部数据存储器时, P2口输出 P2锁存器的内容。 在 flash编程和校验时, P2 口也接收高 8 位地址字节和一些控制信号。 P3 口: P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口, p2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P3 端口写 “1” 时,内部上拉电阻把端口拉高 ,此时可以作为输入口使用。作为输入使用时,
20、被外部拉低的引脚由于内部电阻的原因,将输出电流( IIL)。 毕业设计说明书电子万年历 9 P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。 在 flash编程和校验时, P3 口也接收一些控制信号。 端口引脚 第二功能 P3.0 RXD(串行输入口 ) P3.1 TXD(串行输出口 ) P3.2 INTO(外中断 0) P3.3 INT1(外中断 1) P3.4 TO(定时 /计数器 0) P3.5 T1(定时 /计数器 1) P3.6 WR(外部数据存储器写选通 ) P3.7 RD(外部数据存储 器读选通 ) 此外, P3口还接收一些用于 FLASH 闪存编程和程序校
21、验的控制信号。 RST 复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG 当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下, ALE 仍以时钟振荡频率的 1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 FLASH存储器编程期间,该引脚还用于输入编程脉冲( PROG)。 如有 必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE操作。该位置位后,只有一条 MOVX
22、和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。 PSEN 程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当 AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP 外部访问允许,欲使 CPU 仅访问外部程序存储器(地址 为 0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存EA 端状态。 如 EA 端为高电平(接 Vcc 端),
23、CPU 则执行内部程序存储器的指令。 FLASH 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V编程电压 Vpp。 AT89S52 单片机为 40 引脚双列直插芯片 ,有四个 I/O 口 P0,P1,P2,P3, MCS-51 单片机共有 4个 8 位的 I/O 口( P0、 P1、 P2、 P3),每一条 I/O 线都能独立地作输出或输入。 单片机的最小系统 如下图所示 ,18 引脚和 19 引脚接时钟电路 ,XTAL1 接外部晶振和微调电容的一端 ,在片内它是振荡器倒相放大器的输入 ,XTAL2 接外部晶振和微调电容的另一端 ,在片内它是振荡器
24、倒相放大器的输出 .第 9引脚为复位输入端 ,接上电容 ,电阻及开关后够上电复位电路 ,20引脚为接地端 ,40 引脚为电源端, 如图 2-1 所示 。 毕业设计说明书电子万年历 10 图 2-1 主 控制系统 2.2.2时钟电路模块 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分 、秒进行计时,具有闰年补偿功能,工作电压为 2.5V 5.5V。采用三线接口与 CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM数据。 DS1302内部有一个 318 的用于临时性存放数据的 RAM寄存器。 DS
25、1302 是 DS1202的升级产品,与 DS1202兼容,但增加了主电源 /后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 ( 1) DS1302 的结构及工作原理 1.引脚功能及结构 DS1302 的引脚排列 ,其中 Vcc1 为后备电源, VCC2 为主电源。在主电源关闭的情况下,也能保 持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc1 0.2V时, Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1 时, DS1302由 Vcc1 供电。 X1 和 X2 是振荡源,外接32.768kHz 晶振。
26、 RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST输入有两种功能:首先, RST 接通控制逻辑,允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。当 RST 为高电平时,所有的数据传送被初始化,允许对DS1302 进行操作。 如果在传送过程中 RST 置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。上电运行时,在 Vcc2.5V 之前, RST 必须保持低电平。只有在 SCLK 为低电平时,才能将RST 置为高电平。 I/O 为串行数据输入输出端 (双向 ),后面有详细说明。 SCLK 始终是输入端。 2. DS1302 的控制字节 控制字节的最高有效位 (位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据 ;位 5 至位 1 指示操作单元的地址 ;