基于51单片机的万年历的设计
学生姓名 学 号 所在专业 所在班级 小组成员 指导教师 完成日期
电子信息工程 电子1111
基于51单片机的万年历的设计
1 需求分析
1.1 “需“的分析
万年历是一个可以显示当前时间、日历、温度信息以及设置闹钟报警的应用系统,其具有以下功能:
(1)可以显示当前的时间信息; (2)可以显示当前的温度; (3)可以手动修改时间;
(4)可以设置闹钟,并且达到设置的时间点发出音响信号。
1.2 “求“的分析
设计万年历,需要考虑以下几方面的内容:
(1)如何获取当前的时间信息,这些时间信息包括时、分、秒、年、月、日、和星期;
(2)如何获得当前的温度信息,精确到1°C即可; (3)提供必要的用户输入设置通道; (4)提供相应的显示和报警部件; (5)需要写出合适的软件应用代码。
2 方案设计与论证
2.1 时间获取方法的方案设计与论证
方案一:
使用单片机的内部定时器进行定时,使用软件算法来计算当前的时间信息。此种方案虽然可以不使用时钟芯片,节约成本,但是时间的精准度一般,软件代码复杂。
方案二:
采用外部扩展实时时钟芯片DS12C887的方式来获取相应的时间信息。
DS12C887是一种高性能的芯片,能自动产生年、月、日、时、分、秒等信息,并有闰年修正功能。采用双电源供电方式,可设置备用电源充电方式,提供了对后备电源进行涓细电流的充电的能力,在能满足精度要求的同时价格也比较便宜,性价比较高。
所以采用方案二。
2.2 显示模块的方案设计与论证
方案一:采用LED数码管动态扫描。LED数码管价格适中,但只能显示数字和简单的字符,且其的接口线少。
方案二:
采用点阵式数码管显示。点阵式数码管是由八行八列的发光二极管组成,并不太适合于对数字跟字母进行显示,其主要用于汉字的显示。
方案三:
采用LED液晶显示屏。液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,虽然价格稍微贵了点,但其接口线多。
所以采用方案三。
2.3 温度采集的方案设计与论证
方案一:
使用PT铂电阻采集。PT铂电阻根据温度变化的只是其电阻值,在实际使用过程,需要额外的辅助器件将其转化为电压信号,并且通过调整后送到模/数字转换器件才能让51单片机进行处理。
方案二:使用数字温度传感器采集。温度传感器虽然、精度采样速度等性能比不上PT铂电阻,但是其没有额外的附加器件,且能满足系统对采集精度的要求。
所以采用数字温度传感器。
3 硬件设计
3.1 万年历的硬件模块
声音报警模块 显示模块 51 单 片 机
温度传感器模块 用户输入模块 图3-1 万年历的硬件模块
时钟日历模块
3.2 万年历的电路
图3-2 万年历的电路
3.3硬件基础
DS1302的硬件基础:
(1) 时钟芯片DS1302的工作原理:
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲。图5为DS1302的控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。
(2) DS1302的控制字节
DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 表3-1 DS1302的控制字格式
1 RAM /CK A4 A3 A2 A1 A0 RD /WR (3) 数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图3-3所示:
图3-3 DS1302读/写时序图
(4) DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3-2。
表3-2 DS1302的日历、时间寄存器
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 1602液晶的硬件基础 :
1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15