电子台历设计单片机编程与实现电子台历的设计与制作电子台历设计单片机编程与实现第一部分实际应用电子台历广泛用于单位、会议、电子精品(礼品)屋、赠送朋友、赠送亲人的物品。摆放于办公桌、书桌、或者车上,给人们的生活带来极大的便捷。电子台历设计单片机编程与实现第二部分项目成果展示电子台历设计单片机编程与实现电子台历的设计与制作1.任务设计并制作一个电子台历。2.要求(1)使用LCD1602显示。(2)使用DS1302实现获取时间。(3)支持定时闹铃。电子台历设计单片机编程与实现第三部分基本功能设计系统具体功能如下。时间、日期显示:系统时间采用24小时制。正常情况下,系统显示当前的时间、日期、星期,显示格式为:第一行显示“年-月-日星期”,第二行是“时:分:秒”。闹铃功能:当系统时间与用户设定闹铃时间一致时,闹铃报警。报警时有声、光提示,时间为1分钟。报警过程中,可按任意键取消报警。设置功能:用户可对系统的时间、日期及闹铃时间进行设置。设计时为使用方便,可考虑单独设计设置时间、日期、星期、闹钟设置、数据增、减、信息设置确认、退出等键。电子台历设计单片机编程与实现第三部分基本功能设计根据以上功能分析,电子台历结构如图所示,由单片机最小系统、按键模块、显示模块、闹铃模块、时钟模块等组成。电子台历设计单片机编程与实现知识要点:(1)单片机最小系统;(已学)(2)按键扩展与使用;(已学)(3)蜂鸣器扩展;(已学)★(4)DS1302的使用介绍;★(5)液晶显示器使用介绍;电子台历设计单片机编程与实现第四部分知识补充一、DS1302的使用介绍DS1302是DALLAS(达拉斯)公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,还包括每月的天数和闰年自动校正功能。时钟运行可以采用24小时制或带AM/PM12制。DS1302采用三线接口与单片机进行同步串行的方式通信。电子台历设计单片机编程与实现1.DS1302的性能特性实时时钟(RTC)计秒、分、时、日期、月、星期和年,并且带闰年,有效补偿到2100年。31字节、电池备份的、非易失性(NV)RAM来存储数据。串行I/O使得引脚数量最少。宽范围工作电压,2.0~5.5V。在2.0V时,功耗小于300nA。在时钟/RAM中读/写连续地址的方式为脉冲串式。8引脚DIP或可选的8引脚SOIC用于表面安装。简单的3线接口。TTL兼容(Vcc=5V)。图7-3DS1302的引脚图可选工业级温度范围:40℃~+85℃。电子台历设计单片机编程与实现2.DS1302的引脚介绍X1、X2是32.768KHz晶振的引脚;VCC2是电源供电引脚,VCC1是3V纽扣电池的供电引脚;SCLK为与单片机串行通信的时钟引脚;I/O为与单片机传送数据的引脚;RST是DS1302的复位引脚,低电平有效。电子台历设计单片机编程与实现3.典型用法uP为单片机,晶振为32.768KHz电子台历设计单片机编程与实现4.DS1302的内部日历/时钟寄存器DS1302内部日历/时钟寄存器,如图所示。图中左侧为命令寄存器,依次为秒、分、时、日、月、星期、年、控制、涓流充电控制、时钟多字节十个读写命令,右侧为相应的日历/时钟数据寄存器,以BCD码形式存储。电子台历设计单片机编程与实现4.DS1302的内部日历/时钟寄存器电子台历设计单片机编程与实现4.DS1302的内部日历/时钟寄存器秒命令寄存器:当对秒寄存器进行写操作时,其值为80h;当对秒寄存器进行读操作时,其值为81h。右上角的秒寄存器的秒值是用BCD码表示的,其中“CH”表示时钟停止位,为0振荡器工作允许,为1振荡器停止;“10秒”表示秒十位的BCD码;“秒”代表个位的BCD码。时钟/日历多字节读写命令:在读取或修改时钟/日历信息时,只需一次选通,就可以连续操作,读命令为BFh,写命令为BEh。其余命令均为单字节操作,每个时间或日历信息修改时需要单独选通。电子台历设计单片机编程与实现4.DS1302的内部日历/时钟寄存器小时数据寄存器的第7位为12/24小时标志,值为1时是12小时模式,值为0时是24小时模式,第5位表示AM/PM定义,A/P=1下午模式,A/P=0上午模式。控制寄存器中WP为写保护位,为0时,寄存器数据写入使能;为l时,寄存器数据写入禁止。涓流寄存器中TCS表示涓流充电选择,DS表示二极管选择位,RS表示电阻选择位。TCS=1010能使涓流充电,TCS等于其他禁止涓流充电;DS=01选择一个二极管,DS=10选择两个二极管,DS=00或11,充电功能也被禁止;RS=00,未接电阻,RS=01,接2k电阻,RS=10,接4k电阻,RS=11,接8k电阻。电子台历设计单片机编程与实现5.DS1302的操作时序对DS1302进行读/写操作时,必须遵循先写命令再读(写)数据的基本原则。要对DS1302进行读/写命令/数据操作,必须遵循其操作时序。电子台历设计单片机编程与实现5.DS1302的操作时序图中I/O的阴影部分信号不稳定。无阴影部分信号稳定,数据有效。写操作时,在SCLK的上升沿必须保证数据有效。在写命令时序中(WRITECOMMANDBYTE),tCC表示从完成复位到写第一位数据建立的时间,要求大于1S;tDC表示建立有效数据位的时间,要求大于50nS(其实由于时间非常短,可以不考虑,只需在编写程序时先送数据再拉高SCLK即可);tCDH表示有效数据保持的时间;tCL表示低电平保持的时间,必须在这段时间建立好下一位要发送的数据,要求大于250nS;WRITEDATA为写数据,与写命令方法一致,但要注意:RST为低电平时,所有传送数据被终止,I/O引脚为高阻;上电后,RST变为高电平时,SCLK必须保持逻辑低电平。电子台历设计单片机编程与实现5.DS1302的操作时序函数名:RTInputByte()功能:实时时钟写入一字节说明:往DS1302写入1Byte数据(内部函数)入口参数:d写入的数据返回值:无voidRTInputByte(unsignedchard){unsignedchari;for(i=8;i0;i--){T_IO=d&0x01;T_CLK=1;T_CLK=0;d=d1;}}电子台历设计单片机编程与实现5.DS1302的操作时序电子台历设计单片机编程与实现5.DS1302的操作时序DS1302的数据读取是先写后读,即先写命令,后读数据。当第8位读命令的SCLK下降沿后延时tCDD(最多200nS)后,第一位数据被DS1302输出,单片机可在此时读取,随后SCLK变为高电平,保持时间为tCCZ,必须大于70nS,以保证DS1302将下一位数据准备好。由于是单字节命令,所以每一字节数据读完后,应拉低70nS(tCDZ)以上时间。电子台历设计单片机编程与实现5.DS1302的操作时序函数名:RTOutputByte()功能:实时时钟读取一字节说明:从DS1302读取1Byte数据(内部函数)入口参数:无返回值:ACCunsignedcharRTOutputByte(void){unsignedchari,data;for(i=8;i0;i--){data=data1;if(T_IO)data=|0x80;T_CLK=1;T_CLK=0;}return(data);}电子台历设计单片机编程与实现5.DS1302的操作时序为了使用更加灵活,通常调用以上的写程序和读时程序,组合成一个带写地址和读/写数据的程序,具体如下。voidWrite1302(unsignedcharucAddr,unsignedcharucDa){T_RST=0;T_CLK=0;T_RST=1;RTInputByte(ucAddr);//地址,命令clk1-0RTInputByte(ucDa);//写1Byte数据T_CLK=1;T_RST=0;}电子台历设计单片机编程与实现5.DS1302的操作时序unsignedcharRead1302(unsignedcharucAddr){unsignedcharucData;T_RST=0;T_CLK=0;T_RST=1;RTInputByte(ucAddr);//地址,命令ucData=RTOutputByte();//读1Byte数据T_CLK=1;T_RST=0;return(ucData);}电子台历设计单片机编程与实现5.DS1302的操作时序DS1302时钟/日历芯片在使用的过程中,往往需要初始化时钟/日历信息,结合上两段程序,具体程序编写如下。/********************************************************************函数名:Set1302()功能:设置初始时间说明:先写地址,后读命令/数据(寄存器多字节方式)调用:Write1302()入口参数:pClock:设置时钟数据地址格式为:秒分时日月星期年7Byte(BCD码)1B1B1B1B1B1B1B返回值:无********************************************************************/电子台历设计单片机编程与实现5.DS1302的操作时序voidSet1302(unsignedchar*pClock){unsignedchari;unsignedcharucAddr=0x80;//初始化首地址Write1302(0x8e,0x00);//控制命令,WP=0,写操作for(i=7;i0;i--){Write1302(ucAddr,*pClock);//秒分时日月星期年pClock++;ucAddr+=2;}Write1302(0x8e,0x80);//控制命令,WP=1,写保护}电子台历设计单片机编程与实现二、液晶显示器的使用液晶显示器的显像原理,是将液晶置于两片导电玻璃之间,靠两个电极间电场的驱动,引起液晶分子扭曲向列的电场效应,以控制光源透射或遮蔽功能,在电源关开之间产生明暗而将影像显示出来。液晶显示器件中的每个显示像素都可以被电场控制,不同的显示像素按照驱动信号的“指挥”在显示屏上合成出各种字符、数字及图形。液晶显示驱动器的功能就是建立这样的电场。电子台历设计单片机编程与实现1.液晶显示器的说明液晶显示器件是一种高新技术的基础元器件,虽然其应用已经很广泛了,但对很多人来说,使用、装配时仍感到困难。特别是点阵型液晶显示器件,使用者感到更是无从下手,特殊的连接方式和所需的专用设备也非人人了解和具备,所以一般液晶显示器件是将液晶显示器件与控制、驱动集成电路装在一起,形成一个功能部件。市场上供应的液晶显示模块主要有以下几种。电子台历设计单片机编程与实现2.液晶显示器分类(1)数显液晶模块数显液晶是一种由段型液晶显示器件与专用的集成电路组装成一体的功能部件,只能显示数字和一些标识符号。(2)液晶点阵字符模块液晶点阵字符是由点阵字符液晶显示器件和专用的行、列驱动器、控制器,以及必要的连接件、结构件装配而成的,可以显示数字和西文字符。(3)液晶点阵图形模块液晶点阵图形模块也是点阵模块的一种,其特点是点阵像素连续排列,行和列在排布中均没有空格。因此可以显示连续、完整的图形。由于它也是有X-Y矩阵像素构成的,所以除显示图形外,也可以显示字符。下面以字符型液晶显示模块为例介绍其原理与应用。电子台历设计单片机编程与实现3.字符型液晶显示模块字符型液晶显示模块是一类专用于显示字母、数字和符号等的点阵型液晶显示模块,接口格式统一、比较通用,无论显示屏的尺寸如何,它的操作指令及其形成的模块接口信号定义都是兼容的。这类液晶显示器的型号通常为XXX1602、XXX1604、XXX2002和XXX2004等。对于XXX1602,其中XXX为商标名称;16代表液晶每行可显示16个字符;02表示共有两行,即