第一范文网 - 专业文章范例文档资料分享平台

基于DS1302的万年历毕业论文 数码管显现 附程序 硬件电路图

来源:用户分享 时间:2025/5/18 18:25:21 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

3.2 子程序设计

3.2.1 实时时钟日历子程序设计

该程序主要实现对DS1302写保护、充电,对年、月、日、时、分、秒等寄存器的读写操作。在读写操作子程序中都执行了关中断指令,因为在串行通信时对时序要求比较高,而且在此是用I/O口软件模拟串行时钟脉冲,所以在通信过程中最好保证传输的连续性,不要允许中断。其流程图如图3.2

开始初始化写入时钟初值开始计时读出数据返回 图3.2实时时钟日历子程序流程图

DS1302每次上电时自动处于暂停状态,必须把秒寄存器的位7置位0,时钟才开始计时。如果DS1302一直没有掉电,则不存在此问题。

在进行写操作时,需要先解除写保护寄存器的“禁止”状态。当用多字节模式进行操作时,必须写够8字节。 3.2.2 显示子程序设计

用9012三极管驱动显示电路位选,将从DS1302读取出来的数编辑成对应的

BCD码,通过开各位的位选,将要显示的数字的BCD码送段选,就可以正常的显示,通过中断0键的切换判断是时、分、秒显示,还是年、月、日的显示。

时间显示子程序流程图参见图3.3。 3.2.3中断0子函数设计

当中断键S3有按下,程序跳转到中断子函数,显示相应的切换到如期显示,

如果在显示期间有修改日期按键按下,则相应的修改日期值。 中断0子程序流程图参见图3.5。 3.2.4 时间设置函数ftion0

用户每次按下S4键是都会调用该函数进行处理,每按一次修改时钟修改位

14

置记录,再根据该记录判断选择设置时钟的秒分时。在此主要通过按下S4键的次数设置对应时间的时、分、秒修改标志位,然后统一由时间加1修改功能函数进行修改,流程图如图3.4。 3.2.5 加1修改时间功能函数cum

用户按下S2键后,根据时间设置模块设置的修改标志位将时间相应的时、

分、秒、计数单元加1,其中需要针对时、分、秒的进制进行归零处理,流程图如图3.6。

3.2.6 日期设置函数ftion1

在日期显示状态下,用户每次按下S1键是都会调用该函数进行处理,毎按

一次修改时钟修改位置记录,再根据该记录判断选择设置时钟的秒分时。在此主要通过按下S1键的次数设置对应日期的年、月、日修改标志位,然后统一由日期加1修改功能函数进行修改,流程图如图3.7。 3.2.7 加1修改日期功能函数cum1

用户按下S2键后,根据日期设置模块设置的修改标志位将日期相应的年、

月、日计数单元加1,其中需要针对年、月、日的进制进行归零处理,流程图如图3.8。

15

开始 开始 从DS1302读取秒值 从DS1302读取日值 调秒显示子函数 调日显示子函数 从DS1302读取分值 从DS1302读取月值 调分显示子函数 调月显示子函数 从DS1302读小时值 从DS1302读年值 调小时显示子函数 调年显示子函数 返回 返回 图3.3显示子程序流程图

图3.4 时间设值函数流程图

16

中断0 现场保护 调日期显示子函数 N 判断是否有键按下? Y 调用LED显示函数和延时函数去抖 Y 是抖动吗? N 是时钟修改键吗? N 是加1功能键吗? Y 调初始化DS1302函数 Y N 调用时钟设置函数 调用加1修改函数 N 判断t是否到0? Y 恢复现场 中断返回 图3.5中断0子函数流程图

17

基于DS1302的万年历毕业论文 数码管显现 附程序 硬件电路图.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5us651zyaw01k8300soq_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top