《80编号51单片机电子万年历设计电路图及程序》由会员分享,可在线阅读,更多相关《80编号51单片机电子万年历设计电路图及程序(35页珍藏版)》请在金锄头文库上搜索。
1、摘 要: 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、 周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且 DS1302 的使用寿命长,误 差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、 秒和温度等信息,还具有时间校准等功能。该电路采用 AT89S52 单片机作为核心,功耗小, 能在 3V 的低压工作,电压可选用 35V 电压供电。 本设计是基于 51 系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息, 具有可调整日期和时间功能。 在设计的同时对单片机的理论基础和外围扩展知识进行了比较 全面准备。在硬件
2、与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功 能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好 的实现。 在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重, 在老师和 同学的帮助下才完成了程序部分的编写。 万年历的设计过程在硬件与软件方面进行同步设计。 硬件部分主要由 AT89C52 单片机, LED 显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了 AT89C52 单片机,该 单片机适合于许多较为复杂控制应用场合。显示器使用 2 片 7SEG-MPX8-CA 和一片 7SEG- MPX4-CA。7SEG-MPX8-
3、CA 是一种八个共阳二极管显示器,7SEG-MPX4-CA 是一种四个 共阳二极管显示器。为了能更轻松的控制这三片显示器,本人使用了 3 片 74HC164 来驱动。 74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。软件方面主要包 括日历程序、时间调整程序,公历转阴历程序,显示程序等。程序采用汇编语言编写,以便 更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在 wave 软件中进行调试, 确定没有问题后,在 Proteus 软件中嵌入单片机内进行仿真。最后总在老师同学的帮助以及 自己的努力下完成了此次电子万年历的设计。 关键词: 目录 一、设计要求与方案论
4、证 4 1.1 设计要求 4 1.2 系统基本方案选择和论证 4 1.2.1 单片机芯片的选择方案和论证 4 1.2.2 显示模块选择方案和论证 4 1.2.3 时钟芯片的选择方案和论证 4 二.系统的硬件设计与实现5 2.1 电路设计框图 5 2.2 系统硬件概述 5 2.3 主要单元电路的设计 6 2.3.1 单片机主控制模块的设计 6 2.3.2 时钟电路模块的设计 6 2.3.3 电路原理及说明 7 2.3 4 显示模块的设计 8 三、系统的软件设计 9 3.1 程序流程框图 9 3.2 子程序的设计 9 3.2.1 读、写 DS1302 子程序 10 五、作品总结12 六、致谢词12
5、 参考文献13 附录一:系统电路图14 附录二:系统程序清单15 附录三:系统使用说明书40 一、设计要求与方案论证 1.1设计要求: ()基本要求 具有年、月、日、星期、时、分、秒等功能; 万年历具有闰月识别显示功能; 具备年、月、日、星期、时、分、秒校准功能; ( 2 ) 创新要求 万年历具有阴历显示功能; 具有测量室内温度功能; 1.2 系统基本方案选择和论证 1.2.1 单片机芯片的选择方案和论证: 方案一: 采用 89C51 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间,能于 3V 的超低压工作,而且与 MCS-51 系列单片机完全兼容,但是运用于电
6、路设计中时由于不具备 ISP 在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要 烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。 方案二: 采用AT89S52,片内ROM全都采用Flash ROM; 能以3V的超底压工作 ; 同时也与MCS-51 系列单片机完全该芯片内部存储器为 8KB ROM 存储空间,同样具有 89C51 的功能,且具 有在线编程可擦除技术, 当在对电路进行调试时, 由于程序的错误修改或对程序的新增功能 需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。 所以选择采用 AT89S52 作为主控制系统. 1.2.2 显示模块选择
7、方案和论证: 方案一: 采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰 可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用 LED 液晶显示屏. 方案二: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文 字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示. 方案三: 采用 LED 数码管动态扫描,LED 数码管价格适中,对于显示数字最合适,而且采用动态扫描法 与单片机连接时,占用的单片机口线少。 所以采用了 LED 数码管作为显示。 1.2.3 时钟芯片的选择方案和论证: 方案一: 直接采用单
8、片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒 计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不 采用此方案。 方案二: 采用 DS1302 时钟芯片实现时钟,DS1302 芯片是一种高性能的时钟芯片,可自动对秒、 分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的 RAM 做为数据暂存 区,工作电压 2.5V5.5V 范围内,2.5V 时耗电小于 300nA. 1.3 电路设计最终方案决定 综上各方案所述,对此次作品的方案选定: 采用 AT89S52 作为主控制系统; DS1302 提供时钟; 数字式温度传感器;LED 数码管
9、动态扫描作为显示。 二.系统的硬件设计与实现 2.1 电路设计框图 2.2 系统硬件概述 本电路是由 AT89S52 单片机为控制核心, 具有在线编程功能, 低功耗, 能在 3V 超低压工作 ; 时钟电路由 DS1302 提供,它是一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对 年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。 采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。 DS1302 内部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。 可产生年、 月、 日、周日、时、分、秒,具有
10、使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存 功能 ; 温度的采集由 DS18B20 构成 ; 显示部份由个数码管, 74ls138、 74ls47 译码器构成。 使用动态扫描显示方式对数字的显示。 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 线都能独立地作输出或输入。 单片机的最小系统如下图所示,18 引脚和 19 引脚接时钟电路,XTAL1 接外部晶振和微调电容 的
11、一端,在片内它是振荡器倒相放大器的输入,XTAL2 接外部晶振和微调电容的另一端,在片 内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位 电路,20 引脚为接地端,40 引脚为电源端. 如图-1 所示 图-1 主控制系统 2.3.2 时钟电路模块的设计 图-2 示出 DS1302 的引脚排列,其中 Vcc1 为后备电源,Vcc2 为主电源。在主电源关闭的情 况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc1+0.2V 时, Vcc2 给 DS1302 供电。 当 Vcc2 小于 Vcc1
12、时, DS1302 由 Vcc1 供电。 X1 和 X2 是振荡源,外接 32.KHz 晶振。RST 是复位/片选线,通过把 RST 输入驱动置 高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地 址/命令序列送入移位寄存器 ; 其次,RST 提供终止单字节或多字节数据的传送手段。当 RST 为高电平时, 所有的数据传送被初始化, 允许对 DS1302 进行操作。 如果在传送过程中 RSTS 置为低电平, 则会终止此次数据传送, I/O 引脚变为高阻态。 上电动行时, 在 Vcc 大于等于 2.5V 之前,RST 必须保持低电平。中有在 SCLK 为低电平时
13、,才能将 RST 置为高电平,I/O 为 串行数据输入端(双向) 。SCLK 始终是输入端。 图-2 DS1302 的引脚图 2.3.3 电路原理及说明 (1) 时钟芯片 DS1302 的工作原理: DS1302 在每次进行读、写程序前都必须初始化,先把 SCLK 端置 0,接着把 RST 端置1,最后才给予 SCLK 脉冲;读/写时序如下图 4 所示。图 5 为 DS1302 的控制字,此 控制字的位 7 必须置 1,若为 0 则不能把对 DS1302 进行读写数据。对于位 6,若对程序进 行读/写时 RAM=1,对时间进行读/写时,CK=0。位 1 至位 5 指操作单元的地址。位 0 是读
14、/ 写操作位,进行读操作时,该位为 1;该位为 0 则表示进行的是写操作。控制字节总是从最 低位开始输入/输出的。表 6 为 DS1302 的日历、时间寄存器内容:CH是时钟暂停标志位, 当该位为 1 时,时钟振荡器停止,DS1302 处于低功耗状态 ; 当该位为 0 时,时钟开始运行。 WP 是写保护位,在任何的对时钟和 RAM 的写操作之前,WP 必须为 0。当WP为 1 时,写保 护位防止对任一寄存器的写操作。 (2) DS1302 的控制字节 DS1302 的控制字如表-1 所示。控制字节的高有效位(位 7)必须是逻辑 1,如果它为 0,则 不能把数据写入 DS1302 中,位 6 如
15、果 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据 ; 位 5 至位 1 指示操作单元的地址 ; 最低有效位(位 0)如为 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。如下图-
16、4 所示 图-4 DS1302 读/写时序图 (4) DS1302 的寄存器 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形 式,其日历、时间寄存器及其控制字见表-2。 表-2 DS1302 的日历、时间寄存器 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相 关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态 为一个 8 位的字节,其命令控制字为 C0HFDH,其中奇数为读操作,偶数为写操作;另 一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的