多功能电子钟设计

多功能电子钟设计
设计任务
利用定时器/计数器中断和静态显示或动态显示,实现电子钟的时分秒精确走时和校准。时间显示用四个数码管分别显示时和分,秒用点表示,在时和分的中间闪动时间显示格式:如12.40.
时间校准用2个键实现:一个键K1做移位选择键(选中要修改的位,选中的位用闪烁指示)。一个键K2做加1键(对选中的位进行加1修改)。
设计要求
1)时间走时准确,每天误差不能超过5秒。
2)仿照电子表的校时功能,校时修改时,被修改为能闪烁显示,按键要灵敏。
3)若最高位为0,高位能灭零显示。
程序设计方法
1)先做资源分配,实现显示时间存储单元的默认数字。
2)增加定时器./计数器中断服务子程序,定时器/计数器工作是能正确改变时间存储器的值并实现显示。
3)增加按键子程序,按键要能准确修改时间存储单元。
软件流程图
1)主程序流程图
2)按键子程序流程图
五、心得体会
通过此次多功能数字钟设计,将从书本上学到的知识用于实践,进一步加深了对单片机的了解,让我对程序的设计有了更多的信心。在设计的过程中遇到问题,可以说得是困难重重,毕竟是第一次做单片机的课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计,我懂得了理论与实际相结合非常重要,只有理论知识是远远不够的,必须把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。这为自己今后进一步深化学习,积累了一定宝贵的经验。把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。
总的来说,这次课程设计还是比较成功的,在设计中遇到了很多问题,最后在同学的热心的指点下,终于迎刃而解。最后,对给过我帮助的指导老师和同学再次表示忠心的感谢!
附:六 实验程序
NUM      DATA    30H      ;1秒内T0中断次数
        HOUR    DATA    31H        ;""存储单元
        MINUTE    DATA    32H        ;""存储单元   
        SECOND    DATA    33H        ;""存储单元
        DSBUF1    DATA    34H        ;显示缓冲区高字节
        DSBUF2    DATA    35H        ;显示缓冲区低字节
        TIME    DATA    36H      ;修改时间位记数单元
        KEY1    BIT    P1.6      ;按键
        KEY2    BIT    P1.4      ;按键2
        POINT    BIT    08H        ;""点闪烁标志
        MODE    BIT    09H        ;系统模式标志位
        FLAG    BIT    10H        ;""显示的标志位
        ZERO    BIT    11H      ;时高位灭零控制位,0为灭零,1为不灭零
                HH      BIT    12H
; 主程序   
        ORG    0000H
        LJMP    MAIN
        ORG    000BH
        LJMP    ITP0              ;定时器T0中断入口
        ORG    0030H
MAIN:        MOV    SP,#7FH
        MOV    TMOD,#01H          ;贝克曼梁设置定时器工作方式为方式1
        MOV    NUM,#20            ;转入T0中断次数
                CLR    HH
        CLR    A                 
        MOV    TIME,A            ;修改时间位记数清0
        MOV    HOUR,A            ;""单元清0
        MOV    MINUTE,A          ;""单元清0
        MOV    SECOND,A          ;""单元清0
        CLR    FLAG              ;""显示的标志位为低电平
        CLR    MODE              ;系统模式标志位为低电平
        CLR    POINT              ;""点闪烁标志位为低电平
        SETB    ET0                ;允许定时器0申请中断
        SETB    EA                ;CPU开中断
        MOV    TH0,#3CH          ;T0装入记数初值
        MOV    TL0,#0B0H
        SETB    TR0                ;启动定时器0
        MOV    P1,#0FFH          ;P1口初始化
KEYA:        JB    KEY1,KEYB          ;判断KEY1是否按下
        JNB    KEY1,$            ;等待KEY1松开
        LCALL    KEYA_DEAL          ;调用KEY1处理程序
KEYB:        JB    KEY2,KEND          ;判断KEY2是否按下
        JNB    KEY2,$            ;等待KEY2松开
        LCALL    KEYB_DEAL          ;调用KEY2处理程序
KEND:        SJMP    KEYA              ;跳回继续查键
按键1处理子程序 
KEYA_DEAL:    SETB    MODE              ;系统模式标志位置位
        CLR    FLAG              ;""显示的标志位清0
        INC    TIME              ;修改时间位记数增1
        CLR    ZERO
        MOV    A, TIME
        CJNE    A, #01, KEYA_B
        SETB    ZERO
KEYA_B:        CJNE    A, #05, KEYA_END
        MOV    TIME,#00          ;修改时间位归0
        MOV    SECOND,#00        ;""单元清0
        CLR    MODE              ;系统模式标志位清零
KEYA_END:    RET
按键2处理子程序 
KEYB_DEAL:    JB    MODE,KEYB_A        ;判断处于何种系统模式
        CPL    FLAG                ;""显示的标志位取反
电子定时器
        LJMP    KEYB_END
   
KEYB_A:        MOV    A, TIME
        CJNE    A,#01,KA            ;修改""高位?
        MOV    A , HOUR            ;
        ANL    A,#0F0H            ;""高位
        ADD    A,#10H              ;""高位加1               
        ANL    HOUR,#0FH          ;""低位
        ORL    HOUR,A              ;""高低位合并
        CJNE    A,#30H,KEY0    ;判断""高位是否为3
        ANL    HOUR,#0FH          ;,""高位清0
        LJMP    KEYB_END
KA:        CJNE    A,#02,KB        ;修改""低位?
        MOV    A, HOUR             
        ANL    A,#0FH              ;""低位
        ADD    A,#01H              ;""低位加1
        ANL    HOUR,#0F0H          ;""高位
        ORL    HOUR,A              ;""高低位合并
                MOV    C, HH
                JNC    KEY3               
                CJNE    A , #04H,KEYB_END
                SJMP    KEY4
KEY3:        CJNE    A,#0AH,KEYB_END    ;判断""低位是否为10
KEY4:        ANL    HOUR,#0F0H          ;,""低位清0
                clr    HH
        LJMP    KEYB_END
KB:        CJNE    A,#03,KC        ;修改""高位
        MOV    A, MINUTE         
        ANL    A,#0F0H            ;""高位
        ADD    A,#10H              ;""高位加1
        ANL    MINUTE,#0FH        ;""低位
        ORL    MINUTE,A            ;"防盗机箱分"高低位合并
        CJNE    A,#60H,KEYB_END    ;判断""高位是否为管理农场6
        ANL    MINUTE,#0FH        ;,""高位清0
        LJMP    KEYB_END
KC:        CJNE    A,#04,KEYB_END        ;修改""低位
        MOV    A, MINUTE           
        ANL    A,#0FH              ;""低位
        ADD    A,#01H              ;""低位加1
        ANL    MINUTE,#0F0H        ;""高位
        ORL    MINUTE,A            ;""高低位合并
        CJNE    A,#0AH,KEYB_END    ;判断""低位是否为10
        ANL    MINUTE,#0F0H        ;,""低位清0
                SJMP    KEYB_END
滚珠滑轨
KEY0:          CJNE    A,#20H,KEYB_END
悬浮床
                SETB    HH
KEYB_END:    RET
   
定时器T0中断服务程序     
ITP0:        PUSH    PSW                ;保护现场
        PUSH    ACC
        CLR    TR0                ;T0停止记数 
        MOV    A,#0B0H            ;T0赋初值
        ADD    A,TL0
        MOV    TL0,A
        MOV    A,#3CH           
        ADDC    A,TH0
        MOV    TH0,A
        SETB    TR0                ;T0开始记数
        DJNZ    NUM,RETURN        ;1s未到,跳转   
        MOV    NUM,#20            ;重装中断次数

本文发布于:2024-09-22 09:51:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/337452.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显示   时间   修改   设计   标志
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议