1、 基于 51 单片机的电子万年历的设计 1 设计说明书 基于 51 单片机的电子万年历的设计 系 部 电子信息与控制工程系 专 业 名 称 电子信息工程技术 班 级 电子 11201 班 姓 名 学 号 指 导 教 师 2014 年 06 月 23 日 基于 51 单片机的电子万年历的设计 2 基于 51 单片机的电子万年历的设计 摘要 电子万年历 是单片机系统的 一个 应用 , 由硬件和软件相配合使用 。硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口 5 个模块组成。 主控模块用 AT89C52、时钟电路用 时钟芯片 DS1302、显示模块用 LED 数码管、 温度检测采用 DS1
2、8B20 温度传感器 、键盘接口电路用普通按键接上拉电阻完成;软件 利用 C语言编程实现 单片机程序控制 。 单片机通过时钟芯片 DS1302 获取时间数据 , DS18B20 采集温度信号送该给单片机处理,单片机再把时间数据和温度数据送 给 74LS154 译码,然后通过三极管 C9015 放大驱动 LED 数码管显示阳历年、月、日、时、秒、闹钟、星期、温度。 关键词 : 电子万年历;单片机;温度传感器;时钟;数码显示。 基于 51 单片机的电子万年历的设计 3 目 录 1 引言 . 4 2 功能要求 . 5 3 方案论证与设计 . 6 3.1 控制部分的方案选择 . 6 3.2 测温部分的
3、方案选择 . 6 3.3 显示部分的方案选择 . 7 4 系统硬件电路设计 . 8 4.1 主控器 AT89S52 . 8 4.2 时钟电路 DS1302 . 8 4.2.1. DS1302 的性能特性 . 8 4.2.2 DS1302 数据操作原理 . 9 4.3 测温电路的设计 . 11 4.3.1 温度传感器工作原理 . 11 4.3.2 DS18B20 与单片机的接口电路 . 15 4.4 键盘接口的设计 . 15 5 系统程序的设计 . 16 5.1 阳历程序设计 . 16 5.2 时间调整程序设计 . 16 5.3 温度程序设计 . 16 5.3.1 主程序 . 17 5.3.2
4、读出温度子程序 . 17 5.3.3 温度转换命令子程序 . 17 5.3.4 计算温度子程序 . 18 5.3.5 显示数据刷新子程序 . 18 调试及性能分析 . 19 6.1 调试步骤 . 19 6.2 性能分析 . 19 总结 . 20 致 谢 . 21 参考文献 . 22 附 1 实物图 . 23 宜宾职业技术学院电子信息工程系 基于 51 单片机实现万年历的设计 4 1 引言 随着微电子技术和超大规模集成电路技术的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,单片微型计算机体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域得到了广泛的应用。电子万年历是一种应
5、用非常广泛的日常计时工具,数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用。 LED 数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。功能也越来越齐全,除了公历年月日、时 分秒、星期显示及闹铃。但通过我们对各种电子钟表、历的不断观察总结发现目前市场的钟、历都存在一些不足之处,比如:时钟不精确、产品成本太高、无环境温度显示等,这都给人们的使用带来了某些不便。为此设计了一种功能全面、计时准确、成本低廉的基于 51 单片机的万年历。 宜宾职业技术学院电子信息工程系 基于 51 单片机实现万年历的设计 5 2 功能要求 2.1
6、 万年历能用数码管显示阳历年、月、日、星期、 小 时、分、秒并设置指定时间的闹铃。 2.2 数字式温度计要求测温范围 -50100 C, LED 数码管直读显示。 宜宾职业技术学院电子信息工程系 基于 51 单片机实现万年历的设计 6 3 方案论证 与设计 3.1 控制部分的方案选择 3.1.1 用可编程逻辑器件设计。可采用 ALTERA 公司的 FLEX10K 系列 PLD 器件。设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。但是考虑到本设计的特点, EDA 在功能扩展上比较受局限,而且 EDA 占用的资源也相对多一些。从成本上来讲,用可编程逻辑
7、器件来设计也没有什么优势。 3.1.2 用凌阳 16位单片机设计。凌阳 16 位单片机有丰富的中断源和时基,方便本实验的设计。它的准确度相当高,并且 C语言和汇编兼 容的编程环境也很方便来实现一些递归调用。 I/O 口功能也比较强大,方便使用。用凌阳 16 位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善。成本也相对低一些。但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高。 3.1.3 主控芯片使用 51 系列 AT89C52 单片机,时钟芯片用美国 DALLAS 公司推出的一种高性能、低
8、功耗、带 RAM 的时钟 DS1302。采用 DS1302 作为主要计时芯片,可以做到计时准确。更重要的是, DS1302 可以在很小电流的后备电源( 2.5 5V 电源,在 2.5V 时耗电小于 300nA)下继续计时,停电后时钟无需重新调整,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电,还可自设闹铃,阳历、星期与年月日自动对应。本系统采用了此方案。 3.2 测温 部分的方案选择 3.2.1 在日常生活及工农业生产中经常要乃至温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路
9、复杂,软件调试复杂,制作成本高。 3.2.2 与前面相比,采用美国 DALLAS 半导体公司继 DS1820 之后推出的一种改进型智能温度传感器 DS18B20 作为检测元件,测温范围为 -55 125,最大分辨率可达 0.0625。 DS18B20 可以直接读出被测温度值,而且采用 3线制与宜宾职业技术学院电子信息工程系 基于 51 单片机实现万年历的设计 7 单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 3.3 显示部分的方案选择 3.3.1 液晶显示方式。液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。而且
10、由于 61 板的存储空间有限,液晶显示就 不能与语音播抱程序同时实现。这些大大影响了电子万年历的性能。 3.3.2 相比液晶显示, 8段数码管 虽然 操作比液晶显示略显繁琐, 但可视范围十分宽 , 而且 经济实惠, 也不需要复杂的驱动程序 。所以最后选择 LED 数码管显示方案。 综上所述,按照系统设计功能的要求,确定硬件系统由主控制器、时钟模块、测温电路、显示模块、键盘接口共 5 个模块组成,总体系统构成框图如图 3.1所示。 图 3.1 电子万年历系统构成框图 DS1302 时钟模块 AT89S52 主控 制器 DS18B2 温度探测 键盘扫描电路 数码显示电路 宜宾职业技术学院电子信息工
11、程系 基于 51 单片机实现万年历的设计 8 4 系统硬件电路 设计 电子万年历电路原理图见附件 一,系统由主控制器 AT89C52、时钟芯片DS1302、温度传感器 DS18B20 传感器、显示电路及键盘扫描电路组成。 4.1 主控器 AT89S52 ATMEL 公司生产的 AT89S52 单片机采用高性能的静态 80C51 设计,由先进工艺制造,并带有非易失性 Flsah 程序存储器。它是一种高性能、低功耗的 8 位CMOS 微处理芯片,市场应用最多。主要性能特点有: 8KB Flash ROM,可以檫写 1000 次以上,数据保存 10 年。 256 字节内部 RAM。 电源控制模式:时
12、钟可停止和恢复;空闲模式;掉电模式。 6个中断 源。 4个中断优先级。 4个 8 位 I/O 口。 全双工增强型 UART。 3个 16 位定时 /计数器, T0、 T1(标准 80C51)和增加的 T2(捕获和比较)。 全静态工作方式: 0 24MHz。 4.2 时钟电路 DS1302 4.2.1 DS1302 的性能特性 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; 用于高速数据暂存的 31 8位 RAM; 最少引脚的串行 I/O; 2.5 5.5V 电压工作范围; 2.5V 时耗电小于 300nA; 用于时钟或 RAM 数据读 /写的单字节或多字节(脉冲方式)数据传送
13、方式 ; 简单的 3线接口; 可选的慢速充电(至 Vcc1)的能力。 DS1302 时钟芯片包括实时时钟 /日历和 31 字节的静态 RAM。它经过一个简单的串行接口与微处理器通信。实时时钟 /日历提供秒、分、时、日、周、月和年宜宾职业技术学院电子信息工程系 基于 51 单片机实现万年历的设计 9 等信息。对于小于 31 天的月和月末的日期自动调整,还包括闰年校正的功能。时钟的运行可以采用 24h 或带 AM(上午 )/PM(下午)的 12h 格式。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM数据。 DS1302 有主电源 /后备电源双电源引脚:
14、Vcc1 在单电源与电池供电的系统中提 供低电源,并提供低功率的电池备份; Vcc2 在双电源系统中提供主电源,在这种运用方式中, Vcc1 连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。 DS1302 由 Vcc1 或 Vcc2 中较大者供电。当 Vcc2 大于 Vcc1+0.2V时, Vcc2 给 DS1302 供电;当 Vcc2 小于 Vcc 时, DS13026 由 Vcc1 供电。 4.2.2 DS1302 数据操作原理 DS1302 在任何数据传送时必须先初始化,把 RST 脚置为高电平,然后把 8位地址和命令字装入移位寄存器,数据在 SCLK 的上升沿被输入。无论
15、是读周期还是写 周期,开始 8位指定 40 个寄存器中哪个将被访问到。在开始 8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作是写入时写入数据。时钟脉冲的个数在单字节方式下为 8 加 8,在多字节方式下为 8 加字节数,最大可达 248 字节数。 如果在传送过程中置 RST 脚为低电平,则会终止本次数据传送,并且 I/O引脚变为高阻态。上电运行时,在 Vcc 大于等于 2.5V 之前 ,RST 脚必须保持低电平。只有在 SCLK 为低电平时,才能将 RST 置为高电平。 DS1302 的引脚及内部结构图如图 4.1 所示,表 4.1 为各引脚的 功能。 D
16、S1302 的控制字如图 4.2 所示。控制字节的最高位(位 7)必须是逻辑 1;如果它为 0,则不能把数据写入到 DS1302 中。位 6如果为 0,则表示存取日历时钟数据;为 1 表示存取 RAM 数据。位 5 1( A4 A0)指示操作单元的地址。最低有效位(位 0)如为 0,表示要进行写操作;为 1表示进行读操作。控制字节总是从最低位开始输入 /输出。 为了提高对 32 个地址的寻址能力(地址 /命令位 1 5=逻辑 1),可以把时钟/日历或 RAM 寄存器规定为多字节( burst)方式。位 6规定时钟或 RAM,而位 0规定读或写。在时钟 /日历寄 存器中的地址 9 31 或 RA
17、M 寄存器中的地址 31 不能寄存数据。在多字节方式中,读或写从地址 0 的位 0 开始。必须按数据传送的次序写最先的 8个寄存器。但是,当以多字节方式写 RAM 时,为了传送数据不必写宜宾职业技术学院电子信息工程系 基于 51 单片机实现万年历的设计 10 所有 31 字节。不管是否写了全部 31字节,所写的每一字节都将传送至 RAM。 表 4.1 DS1302 引脚功能 引脚号 引脚名称 功 能 1 Vcc2 主电源 2,3 X1, X2 振荡源,外界 32.768kHz 晶振 4 GND 地线 5 RST 复位 /片选线 6 I/O 串行数据输入 /输出端 (双向 ) 7 SCLK 串行
18、数据输入端 8 Vcc1 后备电池 7 6 5 4 3 2 1 0 1 RAM CKA4 A3 A2 A1 A0 RAM K 图 4.2 DS1302 的控制字 DS1302 共有 12 个寄存器,其中有 7个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式 。其日历、时间寄存器及其控制字见表 3.2,其中奇数为读操1 2 3 4 5 6 7 8 Vcc1 SCLK I/O RST Vcc2 X1 X2 GND 电源 控制 Vcc1 Vcc2 GND 输入移位寄存器 I/O SCLK 实时时钟 命令与 控制逻辑 振荡器与分频器 31 8RAM RST X2 X1 32.768kHz DATA BUS 图 4.1 DS1302 引脚及内部结构