51单片机电子时钟课程设计(编辑修改稿)内容摘要:

,但动态扫描的显示方式需要占有 CPU 较多 的时间,在单片机没有太多实时测控任务的情况下可以采用。 本系统需要采用 6位 LED 数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式。 时钟显示校正电路 本设计利用按键开关来校正时钟显示的数字。 当按钮按下时,将在相应的端口输入一个低电平,通过相应的程序来改变时钟显示。 其中 S1 按键开关用来选择要修改的数字; S2 按键用来增加所选数字的数值; S3 按键用来减少所选数字的数值。 蜂鸣器电路 电路接法:三极管选定 PNP 型,基极 B 连接 5V 电压,发射极 E 连接一个 1K 左右的电阻后接 I/O 口,集电极 C 连接蜂鸣器后接地。 单片机在复位 后的个 I/O 口是高电平,此时三极管是截止的,编写程序使选定的 I/O 为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴的响声。 其中电阻 R1 在电路 里起分压限流的作用, PNP 三极管起到模拟开关的作用。 外接电源电路 外接电源电路用于连接外部 5V 电源与电子时钟电路,通过自锁开关控制电路的导通与断开,当开关闭合时,电路导通,外部电源给电路正常供电,电子时钟正常工作。 当开关断开时,电路停止工作。 总电路原理图 (五) 软件部分 根据上述电子时钟的工作流程,软件设计可分为以下几个功能模块: ( 1)主程序模块。 主程序主要用于系统初始化:设置计时缓冲区的位置及初值,设置 8155 的工作方式、定时器的工作方式和计数初值等参数。 主程序流程如下图所示。 开始 定义堆栈区 815 T0、数据缓冲区、标志位初始化 调用键盘扫描程序 否 是 C/R 键。 是 地址指针指向计时缓冲区 调用时间设置程序 主程序流程图 ( 2)计时模块。 即定时器 0中断子程序,完成刷新计时缓冲区的功能。 系统使用 6MHz 的晶振,假设定时器 0工作在方式 1,则定时器的最大定时时间为 ,这个值远远小于 1s。 因此本系统采用定时器与软件循环相结合的定时方法。 设定时器 0 工作在方式 1,每隔 50ms 溢出中断一次,则循环中断 20 次延时时间是 1s,上述过程重复 60 次为 1分,分计时 60 次为 1 小时,小时计时 24次则时间重新回到 00: 00: 00。 因定时器 0 工作在方式 1,则 50ms 定时对应的定时器初值为: 65536-50ms/2us=40536=9E58H,即 TH0=9EH, TH0=58H。 但应当指出: CPU 从响应 T0中断到完成定时器初值重装这段时间,定时器 T0 并不停止工作,而是继续计数。 因此,为了确保 T0能准确定时 50ms,重装的定时器初值必须加以修正,修正的定时器初值必须考虑到从原定时器初值中扣除计数器多计的脉冲个数。 由于定时器计数脉冲的周期恰好和机器周期吻合,因此修正量等于 CPU 从响应中断到重装完 TL0 为止所用的机器周期数。 CPU 响应中断通常要 3~8 个机器周期。 经过测试,定时器 0重装的计数初值设为 9E5FH~9E67H,可以满足精度要求。 另外, MCS51单片机只有二进制加法指令,而时间是按十进制递增,因此用加 法指令后必须进行二 十进制转换。 计时模块流程图如下图所示。 保护现场 重装定时器初值 循环次数减 1 否 满 20次。 是 秒单元加 1 否 60s到。 是 秒单元清 0,分单元加 1 否 60分到。 是 分单元清 0,时单元加 1 否 24小时到。 是 时单元清 0 恢复现场 返回 计时模块流程图 ( 3)时间设置模块。 该模块由键盘输入相应的数据来设置当前时间。 程序通过调用一个键盘设置子程序通过键盘扫描将键入的 6位时间值送入显示缓冲区。 设置时间后,时钟要从这个时间开始计时,而时分秒单元各占一个字节,键盘占 6个字节。 因此程序中要调用一个合字子程序将显示缓冲区中的 6 位BCD 码合并为 3 位压缩 BCD 码,并送入计时缓冲区,作为当前计时起始时间。 该程序同时要检测输入时间值的合法。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。