1、摘要 万年历的功能可实现年、月、日、时、分、秒和星期的显示。随着社会的发 展日历的功能越来越强大,精确度越来越高。本次设计的日历采用 DS1302 时钟 芯片,该芯片精确度高,性能可靠。用 LCD12864 液晶屏,既可以显示数字又可 以显示汉字,方便了人们的生活。本设计总体分为硬件部分和软件部分。硬件部 分可分为:时钟芯片 DS1302、AT89C51 和 LCD12864 等。本设计非常适合家庭使 用。电源采用5V 电压供电。走时精确,是现代家庭必备的设备之一。 关键词关键词:单片机,万年历, DS1302,时钟芯片 1 1 1 引言引言 可调式电子日历与时钟小巧便于携带,界面清爽,一目了
2、然,方便的知晓 当前时间,并可对时间做出修改,实在是居家旅行日常生活之必备用品。在现今 的可调式电子日历与时钟具有性能稳定、精确度高、成本低、易于产 品化,以 及方便、实用等特点。 2.2.总体设计总体设计 2.1 基本原理 硬件主要涉及到:AT89C51、DS1302、LCD12864 等。软件通过框图编写出 程序。AT89C51 主要功能是存储程序、根据程序的内容对各个端口进行判断并做 出相应的处理。LCD12864 主要的功能是实现年、月、日、时、分、秒的显示效 果。实时时钟 DS1302 可提供秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。 2.
3、2 系统总体框图及设计思路 3.3.详细设计详细设计 3.1 硬件设计 3.1.1 DS1302 芯片及原理介绍 DS1302 是美国 DALLAS 公司推出的一种高性能、 低功耗的实时时钟芯片, 附加 31 字节静态 RAM,采用 SPI 三线接口与 CPU 进行同步通信,并可采用突 发方式一次传送多个字节的时钟信号和 RAM 数据。 实时时钟可提供秒、 分、 时、 主控芯片 (单片机) 时钟控制 显示电路 按键控制 2 日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。 工作电压宽达 2.55.5V。采用双电源供电(主电源和备用电源) ,可设置备用电 源充电方式,提
4、供了对后背电源进行涓细电流充电的能力。 DS1302 用于数据记 录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的 时间同时记录,因此广泛应用于测量系统中。 外部引脚分配 各引脚的功能为: Vcc1: 备用电源; Vcc2: 主电源。 当 Vcc2Vcc1+0.2V 时, 由 Vcc2 向 DS1302 供电,当 Vcc2=1; uchar Read_Byte_FROM_DS1302() /从 DS1302 中读取一个字节 uchar i,byte,t; for(i=0;i=1; t=SDA; byte|=tMonthsDaysDateTime4) DateTime3=M
5、onthsDaysDateTime4; Refresh_Week_Day(); /刷新星期 break; case 4: /月调整 01-12 if(X=1 MonthsDays2=Is_Leapyear(2000+DateTime6)?29:28; /获取 2 月天数 if(DateTime3MonthsDaysDateTime4) DateTime3=MonthsDaysDateTime4; Refresh_Week_Day(); /刷新星期 break; case 3: /日调整 00-28 或 00-29 或 00-30 或 00-31 13 MonthsDays2=Is_Leapye
6、ar(2000+DateTime6)?29:28; /调节之前首先根据当 /前年份得出该年中 2 月的天数 if(X=1 Refresh_Week_Day(); /刷新星期 break; case 2: / 时调整 if(X=1 break; case 1: / 分调整 if(X=1 break; case 0: / 秒调整 if(X=1 break; 14 3、 字符汉字显示程序 / 与本程序有关的数字和汉字的点阵编码 DotMatrix.c #include #include #include #define uchar unsigned char #define uint unsigned int /年、月、日、星期、时、分、秒等汉字点阵(16 16) uchar code DA TE_TIME_