




免费预览已结束,剩余27页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0 毕业设计(论文) 题 目 名 称 电子时钟设计 课 程 名 称 单片机原理与接口技术 学 生 姓 名 于彩虹 学 号 系 、 专 业 机电工程系电气自动化类 指 导 教 师 马世强 2012 年 5 月 1 日 1 电子时钟设计 摘 要 单片计算机即单片微型计算机。由 ram ,rom,cpu 构成,定时,计数和多 种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业 自动化上。而 51 系列单片机是各单片机中最为典型和最有代表性的一种。这次课程 设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于 at89c51 单片机的电子时钟。并在数码管上显示相 应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用 proteus 的 isis 软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、 准确,节省了硬件资源。 关键字:单片机;子时钟;键盘控制。 2 3 目 录 摘 要 2 英文摘要 .3 目 录 4 1 电子时钟 6 1.1 电子时钟简介 6 1.2 电子时钟的基本特点 6 1.3 电子时钟的原理 6 2 单片机识的相关知识 7 2.1 单片机简介 7 2.2 单片机的发展史 8 2.3 单片机的特点 8 2.4 89c51 单片机介绍 9 3 控制系统的硬件设计 .11 3.1 单片机型号的选择 11 3.2 数码管显示工作原理 11 3.3 键盘电路设计 12 3.4 整个电路原理图 13 4 控制系统的软件设计 .14 4.1 程序设计 14 4.2 程序流程图 .17 4.3 仿真图 .20 4.4 仿真结果分析 .21 5 结束语 .22 4 6 参考文献 .23 7 附录 .24 5 1 电子时钟 1.1 电子时钟简介 1957 年,ventura 发明了世界上第一个电子表,从而奠定了电子时钟的基础,电 子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时 程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一, 满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活 补课缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、 石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试, 数字式电子钟用集成电路计时时,译码代替机械式传动,用 led 显示器代替指针显 示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以 进行时和分的校对,片选的灵活性好。 1.3 电子时钟的原理 该电子时钟由 89c51,button,六段数码管等构成,采用晶振电路作为驱动 电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟, 六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不 同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按 下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按 键不放松,则可实现小时的调节,同样每按一次小时加一。 2 单片机识的相关知识 2.1 单片机简介 单片机全称为单片机微型计算机(single chip microsoftcomputer)。从应用领 域来看,单片机主要用来控制,所以又称为微控制器(microcontroller unit )或嵌入 6 式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。 2.2 单片机的发展史 1 . 4 位单片机 1975 年,美国德克萨斯仪器公司首次推出 4 位单片机 tms-1000;此后,各个 计算机公司竞相推出四位单片机。日本松下公司的 mn1400 系列,美国洛克威尔公司 的 pps/1 系列等。四位单片机的主要应用领域有: pc 机的输入装置,电池充电器, 运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩 具,钟表,计算器,多功能电话等。 2 . 8 位单片机 1972 年,美国 intel 公司首先推出 8 位微处理器 8008,并于 1976 年 9 月率 先推出 mcs-48 系列单片机。在这以后, 8 位单片机纷纷面市。例如,莫斯特克和仙 童公司合作生产的 3870 系列,摩托罗拉公司生产的 6801 系列等。随着集成电路工艺 水平的提高,一些高性能的 8 位单片机相继问世。例如,1978 年摩托罗拉公司的 mc6801 系列及齐洛格公司的 z8 系列,1979 年 nec 公司的 upd78xx 系列。这 类单片机的寻址能力达 64kb,片内 rom 容量达 4-8kb,片内除带有并行 io 口 外,还有串行 io 口,甚至还有 ad 转化器功能。8 位单片机由于功能强,被广泛用 于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。 3 . 16 位单片机 1983 年以后,集成电路的集成度可达几十万只管/片,各系列 16 位单片机纷纷 面市。这一阶段的代表产品有 1983 年 intel 公司推出的 mcs-96 系列,1987 年 intel 推出了 80c96,美国国家半导体公司推出的 hpc16040,nec 公司推出的 783xx 系列等。16 位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。 4 . 32 位单片机 随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理, 复杂实时控制,网络服务器等领域的应用与发展,20 世纪 80 年代末推出了 32 位单 片机,如 motorlora 公司的 mc683xx 系列,intel 的 80960 系列,以及近年来流 行的 arm 系列单片机。32 位单片机是单片机的发展趋势,随着技术的发展及开发成 本和产品价格的下降,将会与 8 位单片机并驾齐驱。 5 . 64 位单片机 7 近年来,64 位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算 法密集的实时控制场合已有应用,如英国 inmos 公司的 transputer t800 是高性能 的 64 位单片机。 2.3 单片机的特点 1 . 单片机的存储器 rom 和 ram 时严格区分的。rom 称为程序存储器,只 存放程序,固定常数,及数据表格。ram 则为数据存储器,用作工作区及存放用户 数据。 2 . 采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能力 ,特别是单片机具有很强的位处理能力。 3 . 单片机的 i/o 口通常时多功能的。由于单片机芯片上引脚数目有限,为了解决实 际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能, 可由指令来设置或由机器状态来区分。 4 . 单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求时,均可在 外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便 。 2.4 89c51 单片机介绍 vcc:电源。 gnd:接地。 p0 口: p0 口为一个 8 位漏级开路双向 i/o 口,每脚可吸收 8ttl 门电流。 当 p1 口的管脚第一次写 1 时,被定义为高阻输入。 p0 能够用于外部程 序数据存储 器,它可以被定义为数据/地址的第八位。在 fiash 编程时,p0 口作为原码输入口, 当 fiash 进行校验时,p0 输出原码,此时 p0 外部必须被拉高。 p1 口: p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器能 接收输出 4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作 输入,p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 flash 编程 和校验时,p1 口作为第八位地址接收。 p2 口: p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可接收, 输出 4 个 ttl 门电流,当 p2 口被写“1” 时,其管脚被内部上拉电阻 拉高,且作为输 入。并因此作为输入时,p2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的 缘故。p2 口当用于外部程序存储器或 16 位地址外部数据存 储器进行存取时,p2 口 8 输出地址的高八位。在给出地址“1” 时,它利用内部上拉优势,当对外部八位地址数据 存储器进行读写时,p2 口输出其特殊功能寄存器 的内容。p2 口在 flash 编程和 校验时接收高八位地址信号和控制信号。 xtal218 xtal119 ale30 ea31 psen29 rst9 p0.0/ad0 39p0.1/ad1 38p0.2/ad2 37 p0.3/ad3 36p0.4/ad4 35p0.5/ad5 34 p0.6/ad6 3p0.7/ad7 32 p1.01 p1.12 p1.23 p1.34 p1.45 p1.56 p1.67 p1.78 p3.0/rxd 10p3.1/txd 1p3.2/int0 12 p3.3/int1 13p3.4/t0 14 p3.7/rd 17p3.6/wr 16p3.5/t1 15 p2.7/a15 28 p2.0/a8 21p2.1/a9 2p2.2/a10 23 p2.3/a1 24p2.4/a12 25p2.5/a13 26 p2.6/a14 27 u4 at89c51 图 2.1 89c51 单片机 p3 口: p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入 “1”后,它们被内部上拉为高电平,并用作输入。作为输入, 由于外部下拉为低电平,p3 口将输出电流(ill)这是由于上拉的缘故。 p3 口也可作为 at89c51 的一些特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断 0) p3.3 /int1(外部中断 1) p3.4 t0(记时器 0 外部输入) p3.5 t1(记时器 1 外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3 口同时为闪烁编程和编程校验接收一些控制信号。 9 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电平 时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时,ale 端以不 变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出 的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在 执行 movx,movc 指令是 ale 才起作用。另外,该引脚被略微拉高。如果微处 理器在外部执行状态 ale 禁止,置位无效。 psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/psen 有效。但在访问外部数据存储器时,这两次有效的/psen 信号 将不出现。 ea/vpp:当/ea 保持低电平时,则在此期间外部程序存储(0000h-ffffh ), 不管是否有内部程序存储器。注意加密方式 1 时, /ea 将内部锁定为 reset;当 /ea 端保持高电平时,此间内部程序存储器。在 flash 编程期间,此引脚也用于施 加 12v 编程电源(vpp)。 3 控制系统的硬件设计 3.1 单片机型号的选择 通过对多种单片机性能的分析,最终认为 89c51 是最理想的电子时钟开发芯片。 89c51 是一种带 4k 字节闪烁可编程可擦除只读存储器的低电压,高性能 cmos8 10 位微处理器,器件采用 atmel 高密度非易失存储器制造技术制造,与工业标准的 mcs-51 指令集和输出管脚相兼容。由于将多功能 8 位 cpu 和闪烁存储器组合在单 个芯片中,atmel 的 89c51 是一种高效微控制器,而且它与 mcs-51 兼容,且具 有 4k 字节可编程闪烁存储器和 1000 写/擦循环,数据保留时间为 10 年等特点,是 最好的选择。 3.2 数码管显示工作原理 数码管是一种把多个 led 显示段集成在一起的显示设备。有两种类型,一种是 共阳型,一种是共阴型。共阳型就是把多个 led 显示段的阳极接在一起,又称为公 共端。共阴型就是把多个 led 显示段的阴极接在一起,即为公共商。阳极即为二极 管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为 8 段,即 8 个 led 显示段,这是为工程应用方便如设计的,分别为 a、 b、 c、 d、e 、f、g 、dp ,其中 dp 是小数点位段。而多位数码管,除某一位 的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的 a 段 都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为 静态显示和动态显示两种。静态显示就是数码管的 8 段输入及其公共端电平一直有效。 动态显示的原理是,各个数码管的相同段连接在一起,共同占用 8 位段引管线;每位 数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公 共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视 觉暂留速度时,显示就会清晰显示出来。 图 3.1 共阴数码管 11 3.3 键盘电路设计 该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗, 该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开, 可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按 键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时 的调节,同样每按一次小时加一。达到时间调节的目的。 图 3.2 多功能控制键 12 3.4 整个电路原理图 图 3.3 系统电路原理图 13 4 控制系统的软件设计 4.1 程序设计 本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延 时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块 作介绍。 定时计数中断程序: mov tmod,#00h ;写控制字 mov th0,#0f0h ;写定时常数 mov tlo,#0ch setb tr0 ;启动 t0 setb eto ;允许 t0 中断 setb ea ;开放 cpu 中断 ajmp $ 时间调整程序: setmm: clr et0 ;关定时器 t0 中断 clr tr0 ;关闭定时器 t0 lcall dl1s ;调用 1 秒延时程序 jb p3.7,closedis ;键按下时间小于 1 秒,关闭显示 (省电) mov r2,#06h ;进入调时状态,赋闪烁定时初值 setb et1 ;允许 t1 中断 setb tr1 ;开启定时器 t1 set2: jnb p3.7,set1 ;p3.7 口为 0(键未释放),等待 setb 00h ;键释放,分调整闪烁标志置 1 set4: jb p3.7,set3 ;等待键按下 lcall dl05s ;有键按下,延时 0.5 秒 jnb p3.7,sethh ;按下时间大于 0.5 秒转调小时状态 mov r0,#77h ;按下时间小于 0.5 秒加 1 分钟操作 14 lcall add1 ;调用加 1 子程序 mov a,r3 ;取调整单元数据 clr c ;清进位标志 cjne a,#60h,hhh ;调整单元数据与 60 比较 hhh: jc set4 ;调整单元数据小于 60 转 set4 循环 lcall clr0 ;调整单元数据大于或等于 60 时清 0 clr c ;清进位标志 ajmp set4 ;跳转到 set4 循环 closedis:setb et0 ;省电(led 不显示)状态。开 t0 中 断 setb tr0 ;开启 t0 定时器(开时钟) close: jb p3.7,close ;无按键按下,等待。 lcall display ;有键按下,调显示子程序延时削抖 jb p3.7,close ;是干扰返回 close 等待 waith: jnb p3.7,waith ;等待键释放 ljmp start1 ;返回主程序(led 数据显示亮) sethh: clr 00h ;分闪烁标志清除(进入调小时状态) sethh1: jnb p3.7,set5 ;等待键释放 setb 01h ;小时调整标志置 1 set6: jb p3.7,set7 ;等待按键按下 lcall dl05s ;有键按下延时 0.5 秒 jnb p3.7,setout ;按下时间大于 0.5 秒退出时间调整 mov r0,#79h ;按下时间小于 0.5 秒加 1 小时操作 lcall add1 ;调加 1 子程序 mov a,r3 ; clr c ; cjne a,#24h,houu ;计时单元数据与 24 比较 houu: jc set6 ; 小于 24 转 set6 循环 lcall clr0 ;大于或等于 24 时清 0 操作 ajmp set6 ; 跳转到 set6 循环 15 setout: jnb p3.7,setout1 ;调时退出程序。等待键释 放 lcall display ;延时削抖 jnb p3.7,setout ;是抖动,返回 setout 再等待 clr 01h ;清调小时标志 clr 00h ;清调分标志 clr 02h ;清闪烁标志 clr tr1 ;关闭定时器 t1 clr et1 ;关定时器 t1 中断 setb tr0 ;开启定时器 t0 setb et0 ;开定时器 t0 中断(计时开始) ljmp start1 ;跳回主程序 set1: lcall display ;键释放等待时调用显示程序(调分) ajmp set2 ;防止键按下时无时钟显示 set3: lcall display ;等待调分按键时时钟显示用 ajmp set4 set5: lcall display ;键释放等待时调用显示程序(调小时) ajmp sethh1 ;防止键按下时无时钟显示 set7: lcall display ;等待调小时按键时时钟显示用 ajmp set6 setout1: lcall display ;退出时钟调整时键释放等待 ajmp setout ;防止键按下时无时钟显示 延时程序: 1ms 延时程序,led 显示程序用 dl1ms: mov r6,#14h dl1: mov r7,#19h dl2: djnz r7,dl2 djnz r6,dl1 ret 16 ;20ms 延时程序,采用调用显示子程序以改善 led 的显示闪烁现象 ds20ms: acall display acall display acall display ret 4.2 程序流程图 系统的流程图如图 4.1 和图 4.2 所示: 17 图 4.1 主程序流程图 18 图 4.2 中断处理流程图 19 4.3 仿真结果 图 4.3 开始运行程序仿真图 20 图 4.4 运行一段时间后仿真图 4.4 仿真结果分析 功能太过单调,只能实现时分秒的显示,设计比较简单。电路图的设计过于单调, 用的器件太少,实现调节时间的按钮太少,不能很好的实现时间的调节。在测试过程 中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在 proteus 软件环境中进行仿真,最终解决了这个问题,同时也透露出本人在单片机 电路设计和程序设计方面的不足。不过最后的仿真效果非常好,实现了预期的效果, 能过通过多功能控制键调节时间和是否进入省电模式,是一个比较令人满意的设计。 21 5 结束语 在马世强老师耐心的指导下,我顺利完成了这次单片机课程设计课题中的数码时 钟设计,通过这次的设计使我认识到我对单片机方面的知识知道的太少了,对于书本 上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理 解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗 了过多的内存资源。 本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化, 怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们 灌输专业知识,而我应把所学的用到我们现实的生活中去,此次的电子时钟设计给我 奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞 争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同 学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。 最后,感谢马世强老师对我的细心的指导,正是由于马老师的细心的辅导和他提 供给我们的参考资料,使得我的课程设计能够顺利的完成,同时在课程设计过程中, 我们巩固和学习了我们的单片机知识。相信这对我以后的课程设计和毕业论文答辩将 会有很大的帮助! 22 6 参考文献 1 h.g.cragon.the elements of single-chip microcomputer architecture. computer,1980 (13)2741 2 潘永雄.新编单片机原理与应用. 第2版.西安:西安电子科技大学出版社2006 3 何立民.我国单片机应用技术发展趋势及展望.自动化与仪表,1992(1):1 5 4 向继文,廖立新.基于at89s51 的电子钟系统设计 .机电产品开发与创新,2007(2): 6263 5 张静.基于单片机数字钟的设计.办公自动化杂志,2006(89):4 5 6 樊金荣,谢智文.数字倒计时秒表的设计与实现.中南民族大学计算机科学学院院 报,2005(1): 6263 7 魏立峰,王宝兴.单片机原理与应用技术m.北京:北京大学出版社,2006. 8 马立国. ad7888与at89c51单片机接口应用技术.集成电路通讯,2007(25): 3334 23 7 附 录 org 0000h ;程序执行开始地址 ljmp start ;跳到标号 start 执行 org 0003h ;外中断 0 中断程序入口 reti ;外中断 0 中断返回 org 000bh ;定时器 t0 中断程序入口 ljmp intt0 ;跳至 intto 执行 org 0013h ;外中断 1 中断程序入口 reti ;外中断 1 中断返回 org 001bh ;定时器 t1 中断程序入口 ljmp intt1 ;跳至 intt1 执行 org 0023h ;串行中断程序入口地址 reti ;串行中断程序返回 主程序开始; start: mov r0,#70h ;清 70h-7ah 共 11 个内存单元 mov r7,#0bh ; cleardisp: mov r0,#00h ; inc r0 ; djnz r7,cleardisp ; mov 20h,#00h ;清 20h(标志用) mov 7ah,#0ah ;放入“熄灭符“ 数据 mov tmod,#11h ;设 t0、t1 为 16 位定时器 mov tl0,#0b0h ;50ms 定时初值(t0 计时用) mov th0,#3ch ;50ms 定时初值 24 mov tl1,#0b0h ;50ms 定时初值(t1 闪烁定时用) mov th1,#3ch ;50ms 定时初值 setb ea ;总中断开放 setb et0 ;允许 t0 中断 setb tr0 ;开启 t0 定时器 mov r4,#14h ;1 秒定时用初值 (50ms20) start1: lcall display ;调用显示子程序 jnb p3.7,setmm1 ;p3.7 口为 0 时转时间调整程序 sjmp start1 ;p3.7 口为 1 时跳回 start1 setmm1: ljmp setmm ;转到时间调整程序 setmm ; 1 秒计时程序 ; intt0: push acc ;累加器入栈保护 push psw ;状态字入栈保护 clr et0 ;关 t0 中断允许 clr tr0 ;关闭定时器 t0 mov a,#0b7h ;中断响应时间同步修正 add a,tl0 ;低 8 位初值修正 mov tl0,a ;重装初值(低 8 位修正值) mov a,#3ch ;高 8 位初值修正 addc a,th0 ; mov th0,a ;重装初值(高 8 位修正值) setb tr0 ;开启定时器 t0 djnz r4, outt0 ;20 次中断未到中断退出 addss: mov r4,#14h ;20 次中断到(1 秒)重赋初值 mov r0,#71h ;指向秒计时单元(71h-72h ) acall add1 ;调用加 1 程序(加 1 秒操作) mov a,r3 ;秒数据放入 a(r3 为 2 位十进制数组合) clr c ;清进位标志 cjne a,#60h,addmm ; addmm: jc outt0 ;小于 60 秒时中断退出 25 acall clr0 ;大于或等于 60 秒时对秒计时单元清 0 mov r0,#77h ;指向分计时单元(76h-77h ) acall add1 ;分计时单元加 1 分钟 mov a,r3 ;分数据放入 a clr c ;清进位标志 cjne a,#60h,addhh ; addhh: jc outt0 ;小于 60 分时中断退出 acall clr0 ;大于或等于 60 分时分计时单元清 0 mov r0,#79h ;指向小时计时单元(78h-79h ) acall add1 ;小时计时单元加 1 小时 mov a,r3 ;时数据放入 a clr c ;清进位标志 cjne a,#24h,hour ; hour: jc outt0 ;小于 24 小时中断退出 acall clr0 ;大于或等于 24 小时小时计时单元清 0 outt0: mov 72h,76h ;中断退出时将分、时计时单元数据移 mov 73h,77h ;入对应显示单元 mov 74h,78h ; mov 75h,79h ; pop psw ;恢复状态字(出栈) pop acc ;恢复累加器 setb et0 ;开放 t0 中断 reti ;中断返回 ; 闪动调时 程 序 ; ;t1 中断服务程序,用作时间调整时调整单元闪烁指示 intt1: push acc ;中断现场保护 push psw ; mov tl1, #0b0h ;装定时器 t1 定时初值 mov th1, #3ch ; djnz r2,intt1out ;0.3 秒未到退出中断( 50ms 中断 6 次) mov r2,#06h ;重装 0.3 秒定时用初值 26 cpl 02h ;0.3 秒定时到对闪烁标志取反 jb 02h,flash1 ;02h 位为 1 时显示单元“熄灭“ mov 72h,76h ;02h 位为 0 时正常显示 mov 73h,77h ; mov 74h,78h ; mov 75h,79h ; intt1out: pop psw ;恢复现场 pop acc ; reti ;中断退出 flash1: jb 01h,flash2 ;01h 位为 1 时,转小时熄灭控制 mov 72h,7ah ;01h 位为 0 时,“熄灭符“ 数据放入分 mov 73h,7ah ;显示单元(72h-73h),将不显示分数据 mov 74h,78h ; mov 75h,79h ; ajmp intt1out ;转中断退出 flash2: mov 72h,76h ;01h 位为 1 时,“熄灭符“数据放入 小时 mov 73h,77h ;显示单元(74h-75h),小时数据将不显示 mov 74h,7ah ; mov 75h,7ah ; ajmp intt1out ;转中断退出 ; 加 1 子 程 序 ; add1: mov a,r0 ;取当前计时单元数据到 a dec r0 ;指向前一地址 swap a ;a 中数据高四位与低四位交换 orl a,r0 ;前一地址中数据放入 a 中低四位 add a,#01h ;a 加 1 操作 da a ;十进制调整 mov r3,a ;移入 r3 寄存器 anl a,#0fh ;高四位变 0 mov r0,a ;放回前一地址单元 27 mov a,r3 ;取回 r3 中暂存数据 inc r0 ;指向当前地址单元 swap a ;a 中数据高四位与低四位交换 anl a,#0fh ;高四位变 0 mov r0,a ;数据放入当削地址单元中 ret ;子程序返回 ; 清零程序 ; ;对计时单元复零用 clr0: clr a ;清累加器 mov r0,a ;清当前地址单元 dec r0 ;指向前一地址 mov r0,a ;前一地址单元清 0 ret ;子程序返回 ; 时钟调整程序 ; ;当调时按键按下时进入此程序 setmm: clr et0 ;关定时器 t0 中断 clr tr0 ;关闭定时器 t0 lcall dl1s ;调用 1 秒延时程序 jb p3.7,closedis ;键按下时间小于 1 秒,关闭显示(省电) mov r2,#06h ;进入调时状态,赋闪烁定时初值 setb et1 ;允许 t1 中断 setb tr1 ;开启定时器 t1 set2: jnb p3.7,set1 ;p3.7 口为 0(键未释放),等待 setb 00h ;键释放,分调整闪烁标志置 1 set4: jb p3.7,set3 ;等待键按下 lcall dl05s ;有键按下,延时 0.5 秒 jnb p3.7,sethh ;按下时间大于 0.5 秒转调小时状态 mov r0,#77h ;按下时间小于 0.5 秒加 1 分钟操作 lcall add1 ;调用加 1 子程序 mov a,r3 ;取调整单元数据 28 clr c ;清进位标志 cjne a,#60h,hhh ;调整单元数据与 60 比较 hhh: jc set4 ;调整单元数据小于 60 转 set4 循环 lcall clr0 ;调整单元数据大于或等于 60 时清 0 clr c ;清进位标志 ajmp set4 ;跳转到 set4 循环 closedis:setb et0 ;省电(led 不显示)状态。开 t0 中断 setb tr0 ;开启 t0 定时器(开时钟) close: jb p3.7,close ;无按键按下,等待。 lcall display ;有键按下,调显示子程序延时削抖 jb p3.7,close ;是干扰返回 close 等待 waith: jnb p3.7,waith ;等待键释放 ljmp start1 ;返回主程序(led 数据显示亮) sethh: clr 00h ;分闪烁标志清除(进入调小时状态) sethh1: jnb p3.7,set5 ;等待键释放 setb 01h ;小时调整标志置 1 set6: jb p3.7,set7 ;等待按键按下 lcall dl05s ;有键按下延时 0.5 秒 jnb p3.7,setout ;按下时间大于 0.5 秒退出时间调整 mov r0,#79h ;按下时间小于 0.5 秒加 1 小时操作 lcall add1 ;调加 1 子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全国青岛版信息技术八年级下册专题青春岁月纪念册第13课二、《幻灯片切换的播放方式》教学设计
- 六年级品德与社会下册 战争给人类带来了什么2教学设计 鄂教版
- 旧车置换流程合同
- 2024年园艺师考试复习方法的多样性试题及答案
- 电子设备安装合同
- 税务师考试复习策略试题及答案
- 园林二级技师试题及答案
- 2024园艺师考试财务管理试题及答案
- 八年级道德与法治上册 第三单元 明辨善恶是非 第8课 远离暴力 第1框《暴力影响生活》教学设计 北师大版
- 农业职业经理人考试的制度变迁与成效分析试题及答案
- 人教版音乐三年级下册知识总结
- 2022年江苏对口单招市场营销试卷剖析
- 同等学力工商管理综合复习资料(全)
- 爱爱医资源-生理学-122排卵、黄体形成与月经周期
- 科技小巨人工程验收培训
- 大班绘本教案《月亮冰激凌》
- 关键过程(工序)和特殊过程(工序)管理办法
- 火力发电厂运煤设计规程
- 01-第一章--粉末的制取雾化法
- 专利挖掘和布局专题培训课件
- 3D打印学习教案
评论
0/150
提交评论