- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
时钟演示
课程设计 指导老师:王宪菊 设计要求 1。设计一时钟,能够显示“年、月、日、时分、秒”. 2.时钟以24小时为一计数周期 3.具有调时功能 4.用DS1302芯片作为主要译码芯片 DS1302芯片 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 2.1 引脚功能及结构 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向) ,SCLK为时钟输入端。 ?? DS1302封装图 1602显示屏 中断 时间调节 void settime(void) { delay1ms(100); //防抖动 if(key_flagset==0) //有模式设置与有按键调节,有设置命令 { switch(press_flag) //在相应的模式下计数 { case 1:sec_add++;break; case 2:min_add++;break; case 3:hou_add++;break; case 4:day_add++;break; case 5:mon_add++;break; case 6:yea_add++;break; 复位函数 void reset(void) { delay1ms(100); if(res==0) { press_flag=0;//设置模式恢复 sec_add=0; //设置时间恢复 min_add=0; hou_add=0; day_add=0; mon_add=0; yea_add=0; } } 修改时间具体操作 1、按下时间设置即可对时间进行调节状态,按下时间设置键即可调节时间 2、根据按下“调节”键的次数选取要调节的项。 3 、按下“调节”键的次数:1次可进行调秒;2次可进行调分;3次可进行调时;4次可进行调日;5次可进行调月;六次可进行调年;再次则进入循环。 4、按下“复位”键则回归原始状态 。 实物图 总结 本实验设计: 1、具有简单的程序,易于操作 2、可以实现简易的实践应用 3、不能够显示具体的闰年的识别,只能进行百年内的计时。 4、没有光标显示,不易于细致调节。 谢谢 * * ?? void choose(void) interrupt 0 using 0 //选择修改的模式 { //EX0=0;可以利用关闭中断来防止抖动 delay1ms(30); if(INT0==0) { press_flag++; //有中断时,选择设置模式 if(press_flag6) //设置模式循环 press_flag=1; key_flag=1; //说明有修改时间的意愿 } //EX0=1;与EX0=0相对应 }
文档评论(0)