单片机课程设计数字电子钟_第1页
单片机课程设计数字电子钟_第2页
单片机课程设计数字电子钟_第3页
单片机课程设计数字电子钟_第4页
单片机课程设计数字电子钟_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华东交通的大学 单片机技术课程设计说明书 数 字 电 子 钟 系 、 部: 学生姓名: 指导教师: 专 业: 班 级: 完成时间: 摘要 本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键S1、S2、S3和S4键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、精度、稳定等优点。整个过程

2、就是先设计和焊接好硬件电路,再通过汇编语言编写应用程序来实现我们需要的功能,这期间,进行的软件仿真和调试是本设计的重点和难点。关键词 电子钟; AT89S52;硬件设计;软件设计 1 引言单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上1。 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点2。因此,它应用广泛前景美好,它的实用性大大地提高了我对毕业设计的兴趣。在我国,单片机的开

3、发应用已有15年左右,已经形成一支庞大的技术开发队伍,为我国单片机应用积累了丰富的经验。随着电子技术、计算机芯片技术和微电子技术的飞速发展促进了单片机技术一日千里的变化3。随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开

4、发过程也较繁琐。来自英国Labcenter Electronics公司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。它包括PROTEUS VSM(Virtual System Modelling)、PROTEUS PCB DESIGN两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面, 其调试过程一般分为软件调试、硬件测试、系统调试3个过程。如果采用单片机系统的虚拟仿真软件

5、Proteus,则不用制作具体的电路板也能够完成以上工作。数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便4。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各

6、种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。而且向着精确、低功耗、多功能发展。基于单片机设计的数字钟精确度较高, 因为在程序的执行过程中, 任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。另外,程序较为简洁,具有可靠性和较好的可读性。如果我们想将它应用于实时控

7、制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟, 也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。这些方法都各有特点, 其中,利用单片机实现的电子钟具有编程灵活, 便于功能扩充, 精确度高等特点5。基于以上分析,在此次设计中,我选择的是利用单片机制作电子钟。电子钟的设计本身包括程序的设计和硬件电路的设计6。我的思路是,先进行电路的整体设计,再根据电路进行编程,在编程的过程中,对电路进行微调,以更好地配合程序。在设计完成后,

8、进行程序调试,调试软件选择MedWin,调试成功后,再根据电路图画出仿真图,将软件装入单片机芯片,利用Proteus软件进行仿真,仿真中的错误通过改正程序中的逻辑错误和电路中的设计不当进行排除,这个过程是很艰难的但也是很重要的。若仿真可以实现,则硬件电路的实现就可以有条不紊地进行。目 录1 设计课题任务、功能要求说明及方案介绍11.1 设计课题任务11.2 功能要求说明11.3 设计总体方案介绍及原理说明12 设计课题硬件系统的设计22.1 设计课题硬件系统各模块功能简要介绍22.2 设计课题电路原理图、元器件布局图 22.3 设计课题元器件清单33 设计课题软件系统的设计43.1 设计课题使

9、用单片机资源的情况43.2 设计课题软件系统各模块功能简要介绍43.3 设计课题软件系统程序流程框图43.4 设计课题软件系统程序清单84 设计结论、仿真结果、误差分析、教学建议94.1 设计课题的设计结论及使用说明94.2 设计课题的仿真结果94.3 设计课题的误差分析104.4 设计体会104.5 教学建议10参考文献 12致 谢 13附 录 141 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。具有时间显示、报时等功能。并有时间设定,时间调整功能。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”

10、, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.3 设计课题总体方案介绍及工作原理说明1.3.1 整体设计思路这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:熟悉硬件 了解各引脚功能分块设计各部分电路将分块的电路组合认真学习单片机汇编语言完成整体电路图确定变成结构和思路综合各程序完成整体程序编辑各个程序模块用Proteus画出电路图调试程序,进行修改对仿真中出现的问题进行改正画出仿真图进行仿真准备器件、搭

11、接电路仿真成功软硬件结合,完成任务书要求验证硬件电路成功进行扩展图2.1 整体设计思路针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构7。这样,既能做到经济合理又能实现预期的功能。在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。运用这种方法,关键在

12、于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。本电子钟设计主要是依照图2.1中的流程做出来的,时间分配比较均匀。首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中

13、进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,本设计加进了日期显示与调整功能。本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示: 图1.1 总体设计方案图本电子钟的所有的软件、参数均存放在AT89S52的Flash ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。由于AT89S52芯片内部Flash ROM有8KB,RAM有256个字节,故软件下载编译时有足够的存储空间。键盘采用动

14、态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。(1)单片机最小系统模块:包括低功耗、高性能CMOS8位微控制器AT89S52;复位电路;晶振电路。本本模块AT89S52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XT

15、AL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一个稳定的自激振荡器。 (2)输入模块:本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。3个按键独立式键盘,S1键控制电子钟的启动状态,S2键为加1键,S3键为减1键。且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的电子钟功能。(3)输出模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管驱动为74LS245芯片。(4)电源模块:现在市面上销售的编程器有很多都是由PC机的US

16、B口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。2.2 设计课题电路原理图、PCB图、元器件布局图设计课题电路原理图,见附录二;设计课题电路的PCB图,见附录三;设计课题电路的元器件布局图,见附录四;2.3 设计课题元器件清单设计课题元器件清单如表2.1所示。表2.1 设计所用元器件清单名称数量参数电阻5个1K共阳数码管2个4位一体电阻4个4.7kISP下载口插座1个普通插座1个40PIN电阻8个470电阻5个200按键5个插针1排40PIN锁紧插座1个40PIN驱动一套74ls245USB供电接口及供电线一套晶振及其插座一套12MH

17、z电容2个30pF极性电容1个22F排阻1个10K芯片1块AT89S52发光二极管1个六角开关1个电容 各1个470f、104P铜柱 (带螺母)4个3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:P1.1;按一次使选中位加1;减少键DEC_KEY:P1.2;按一次使选中位减1;P2.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元; 50H 用于控制秒基准时钟源的产生

18、;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控制调时闪烁;堆栈栈底:70H。3.2 设计课题软件系统个模块功能简要介绍 本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码

19、管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。3.3 设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。主程序流程框图如3.1所示;加1子程序如3.2所示;中断服务程序程序如3.3所示;键盘扫描子程序框图如3.4所示;显示子程序框图如3.5所示; 图3.1 主程序流程框图图3.2 加1子程序流程框图图3.3 中断子程序图3.4 键盘扫描子程序 图3.5 显示子程序3.4设计课题软件

20、系统程序清单设计课题软件系统程序清单,详见附录一。4 设计结论、仿真结果、误差分析、教学建议4.1 设计课题的设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键 S3为减控制键,当整点时间到时,蜂鸣器报警。这样的结果与设计要求完全相符,本设计成功。完成了

21、设计任务。4.2 设计课题的仿真结果在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图4.1与4.2所示。实现功能:可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。 (1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,按S1键有效,进入运行状态; (2)、运行状态,在此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态; (3)、调整状态,按S1键进入时、分、秒的闪烁,在此状态下,按S2(+1键)、S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入

22、运行状态。在调整状态时长按S2、S3时可以连加及连减。时间显示格式为:时-分-秒; 图4.1 “P.”运行状态仿真图4.2 时钟运行状态仿真4.3 设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到11.0592MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。4.4 设计体会 课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实

23、践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。 这次我设计的课程设计内容是电子钟。对于我们这些工科学生来说,这是一次考验。怎样才能找到课堂所学与实际运用的最佳结合点?怎样让自己业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的方向的。这次课程设计我学到了很多很多的东西,学会了怎样去制定计划,怎样去实现这个计划,并掌握了执行这个计划过程中怎样去克服心理上的不良情绪。不仅巩固了以前所学的知识,而且学到了书本上所没有的过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程,提高了自己独立思考的能力。本次课程设计,让我受益匪浅,认识到了自己的许多缺

24、点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我们只求它在运行时没有出错,我们便以为我们的计划成功了岂不知它能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。4.5 教学建议经过一个学期陈老师教导的的单片机学习,我掌握了很多单片机学习的宝贵经验,尤其在编程的思路和PCB实物的制作上面。编程思路是整个程序的灵魂,没有编程思路,程序就不会编出来,就失去了编程的意义。在开始编程之前,想好编程的思路,编程能力才会提高,编程的过程才会顺畅,程序的

25、质量才会提高。在陈老师的教学过程中,幽默轻松的教学方式常常让课堂气氛很活跃,幽默诙谐,授课内容条理清晰,经常运用各种实例,娓娓道来,给人印象深刻。陈师在课堂上也十分注重和同学们的互动,经常会用一些亲身实践的经验为例,让同学们在基于事实的基础上更好的理解相关理论,充分做到了理论与实际的结合,既形象生动,又丰富有趣。参考文献1 代启化.基于Proteus的电路设计与仿真J.现代电子技术.2006,第19期.2 刘文秀.单片机应用系统仿真的研究J.现代电子技术.2005, 第286 期.3 曹巧媛.单片机原理及应用M,北京:电子工业出版社,1997.7.4 张洪润.兰清华,单片机应用技术教程M,北京

26、:清华大学出版社,1997.11.致 谢通过不断努力,终于完成了此次单片机的课程设计。在此,首先感谢往陈老师,正是他在万忙之中还抽出宝贵的时间对我进行精心的指导,才使我顺利完成了此次单片机课程设计。同时也感谢电子科技协会各位同学和老师对我提供的帮助。使我在此次设计中学到了许多宝贵的知识和经验。在此,衷心地感谢你们!附 录附录1;-;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时;显示格式:00-00-00(设置小时十位为0时,不显示);通过3只按键来调整时间;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁; 增加键ADD_KEY:P1.1;按一次使选中位加1;

27、减少键DEC_KEY:P1.2;按一次使选中位减1;如果长按ADD_KEY或DEC_KEY,可进行调时、调分快进快减,并停止闪烁;如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能;P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;P2.1为蜂鸣器发声报时;编程人:郑振凡 编写日期:2009年12月2日 修改日期(最终):2009年12月6日;-;-;程序入口;- ORG 0000H ;程序入口地址 LJMP START ORG 000BH ;定时器0中断入口地址 LJMP TIMET0ORG 1000H;-;显P.程序;功能:可以在8个数码闪烁移位进行屏

28、保;-START: MOV R6, #2 ;闪烁次数MOV A, #01H ;位选TT:MOV P3, AMOV P0, #0CH ;段码"P."LCALL DELAYMOV P3, #00HDJNZ R6, TTLCALL DELAYLCALL DELAY1RR AJB P1.0, TT ;键是否按下,没按下则转移LCALL DELAY ;延时去抖JNB P1.0, KAI ;再次判断键是否按下KAI:SETB P1.0CLR A ;状态恢复MOV P0, #0FFHLCALL DELAY1SETB 48H ;用于调时闪烁标志SETB 47H ;用于产生脉冲用于调时快进的

29、脉冲MOV R1, #0 ;键功能标志:0计时、1调时、2调分、3调秒;-;清16位寄存器及初始化;50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控制调时闪烁;-MOV R0, #50H ;初始化MOV R6, #10HCLEARJCQ:MOV R0, #00H ;清寄存器INC R0DJNZ R6, CLEARJCQMOV IP, #02HSETB EASETB ET0MOV TMOD, #01H ;设定定

30、时器0工作方式1MOV TH0, #3CHMOV TL0, #0B0H ;赋定时初值,定时50msSETB TR0 ;启动定时器0MOV SP, #70H ;堆栈;-;主程序 ;- MAIN:LCALL DISPLAYLCALL KEY_SCANJZ MAINLCALL SET_KEYJB 46H, MAIN ;如果已进行调时快进,则不再执行下面的调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环;-; 显示处理程序;-DISPLAY:MOV A, 51HANL A, #0FHMOV 5FH, A

31、;转换出秒个位,存入5FHMOV A, 51HANL A, #0F0HSWAP AMOV 5EH, A ;转换出秒十位,存入5EHJB 46H, MIN ;如果调时快进,则跳过闪烁处理程序CJNE R1, #3,MIN ;如果R1为3,闪烁秒位待调整JB 48H, MINMOV 5FH, #0AH ;使该位为10,查表得到使该位不显示MOV 5EH, #0AHMIN:MOV A, 52HANL A, #0FHMOV 5DH, A ;转换出分个位,存入5DHMOV A, 52HANL A, #0F0HSWAP AMOV 5CH, A ;转换出分十位,存入5CHJB 46H, HOURCJNE R

32、1, #2,HOUR ;如果R1为2,闪烁分位待调整JB 48H, HOURMOV 5DH, #0AHMOV 5CH, #0AHHOUR: MOV A, 53HANL A, #0FHMOV 5BH, A ;转换出时个位,存入5BHMOV A, 53HANL A, #0F0HSWAP AMOV 5AH, A ;转换出时十位,存入5AHJB 46H, DISPCJNE R1, #1,DISP ;如果R1为1,闪烁时位待调整JB 48H, DISPMOV 5BH, #0AH ;使该位为10,查表得到使该位不显示MOV 5AH, #0AH;-;数码管动态扫描显示;-DISP:MOV DPTR, #TA

33、BLEMOV A, 5FHMOVC A, A+DPTRMOV P0, ASETB P3.7LCALL DELAYCLR P3.7 ;显示秒个位MOV A, 5EHMOVC A, A+DPTRMOV P0, ASETB P3.6LCALL DELAYCLR P3.6 ;显示秒十位MOV A, #0BFHMOV P0, ASETB P3.5LCALL DELAYCLR P3.5 ;显示“-”MOV A, 5DHMOVC A, A+DPTRMOV P0, ASETB P3.4LCALL DELAYCLR P3.4 ;显示分个位MOV A, 5CHMOVC A, A+DPTRMOV P0, ASETB

34、 P3.3LCALL DELAYCLR P3.3 ;显示分十位MOV A, #0BFHMOV P0, ASETB P3.2LCALL DELAYCLR P3.2 ;显示“-”MOV A, 5BHMOVC A, A+DPTRMOV P0, ASETB P3.1LCALL DELAYCLR P3.1 ;显示时个位MOV DPTR, #TABLE1 ;该位使用TABLE1以消除时的十位置0MOV A, 5AHMOVC A, A+DPTRMOV P0, ASETB P3.0LCALL DELAYCLR P3.0 ;显示时十位RET;-;定时器中断1s程序;-TIMET0:PUSH ACC ;保护现场P

35、USH PSWMOV TH0, #3CHMOV TL0, #0B0HCPL 47H ;产生脉冲用于调时快进INC 54HMOV A, 54HCJNE A, #10,ADD_TIME;产生0.5秒,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 54H, #00HADD_TIME:INC 50HMOV A, 50HCJNE A, #10,ZDBACD;整点报时时蜂鸣器响延迟时间SETB P2.1 ;关蜂鸣器ZDBACD:CJNE A, #20,RETI1 ;产生1秒时钟MOV 50H, #00H ;一秒钟时间到,清零50HMOV A, 51HADD A, #01HDA A ;十进制调整M

36、OV 51H,ACJNE A,#60H,RETI1MOV 51H,#00H ;一分钟到MOV A,52HADD A,#01HDA AMOV 52H,ACJNE A,#60H,RETI1CLR P2.1MOV 52H,#00H ;一小时到,开蜂鸣器,清分显示MOV A,53HADD A,#01HDA AMOV 53H,ACJNE A,#24H,RETI1MOV 53H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回;-;键盘扫描程序;R4设置为00H是为了在进入长按处理前加长延时,以区分长按与短按键;-KEY_SCAN:CLR 46H ;关

37、闭调时快进标志MOV P1,#0FFH ;将P1口设置成输入状态MOV A,P1CPL AANL A, #07H ;1口低3位连接3个按键,只判断该3位JZ EXIT_KEYLCALL DELAY ;延时去抖动MOV A, P1 ;重新判断CPL AANL A, #07HJZ EXIT_KEYMOV R5, AMOV R4, #00H ;用于控制调时快进速度LOOP: LCALL DISPLAY ;进入长按处理MOV A, P1CPL AANL A, #07HJB 47H, LOOP1INC R4 ;调时快进间隔时间基准加1LOOP1: CJNE R1, #03H,LOOP2 ;如果调秒时长按

38、,则不处理LJMP LOOP3LOOP2: CJNE R4, #99H,LOOP3MOV R4, #70H ;确认长按后,加快调时快进速度SETB 46HLCALL ADD_KEYLCALL DEC_KEYLOOP3: JNZ LOOP ;等待键释放MOV A, R5 ;输出键值RETEXIT_KEY:RET;-;延时子程序;- DELAY:MOV R7,#200 DJNZ R7,$ RETDELAY1:MOV R3,#50 MOV TMOD,#00H MOV TH1,#63H MOV TL1,#18H SETB TR1 LP1:JBC TF1,LP2 SJMP LP1 LP2:MOV TH1,#63H MOV TL1,#18H DJNZ R3,LP1 RET ;-;选择键处理子程序;-SET_KEY:CJNE R5,#01

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论