




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文单片机电子钟论文(定稿) 河北工业大学毕业设计说明书作者李若津学号062068学院信息工程学院系(专业)电子科学与技术题目基于单片机设计LED显示电子钟指导者张存善教授评阅者xx年6月7日毕业设计中文摘要基于单片机设计LED显示电子钟摘要本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用7407驱动电路,实现在6个LED数码管上显示日期、时间、定时、闹铃,通过6个按键实现设置日期、进行调时、设定闹铃、倒计时等功能,在实现各功能时数码管进行相应显示,闹铃或定时时间到时蜂鸣器响,按下闹铃键或定时键时,声音停止。 软件部分用汇编实现,分为显示、延迟、调时、闹铃、定时、调整日期等部分。 通过软硬件结合达到最终目的。 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。 单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点2。 因此,它应用广泛前景美好,它的实用性大大地提高了我对毕业设计的兴趣。 在我国,单片机的开发应用已有15年左右,已经形成一支庞大的技术开发队伍,为我国单片机应用积累了丰富的经验。 随着电子技术、计算机芯片技术和微电子技术的飞速发展促进了单片机技术一日千里的变化3。 随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。 单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。 然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。 英国Labcenter Electronics公司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。 它包括PROTEUS VSM(Virtual SystemModelling)、PROTEUS PCBDESIGN两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。 单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。 如果采用单片机系统的虚拟仿真软件Proteus,则不用制作具体的电路板也能够完成以上工作。 数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。 数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便4。 不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。 而且是控制的核心部分。 因此,研究数字钟及扩大其应用,有着非常现实的意义。 电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。 而且向着精确、低功耗、多功能发展。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。 另外,程序较为简洁,具有可靠性和较好的可读性。 如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。 数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。 这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于功能扩充,精确度高等特点5。 基于以上分析,在此次设计中,我选择的是利用单片机制作电子钟。 电子钟的设计本身包括程序的设计和硬件电路的设计6。 我的思路是,先进行电路的整体设计,再根据电路进行编程,在编程的过程中,对电路进行微调,以更好地配合程序。 在设计完成后,进行程序调试,调试软件选择MedWin,调试成功后,再根据电路图画出仿真图,将软件装入单片机芯片,利用Proteus软件进行仿真,仿真中的错误通过改正程序中的逻辑错误和电路中的设计不当进行排除,这个过程是很艰难的但也是很重要的。 若仿真可以实现,则硬件电路的实现就可以有条不紊地进行。 2整体设计思路这部分主要介绍工作安排和整体设计的思想。 工作过程规划如下图2.1整体设计思路针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51单片机是一认真学习单片机汇编语言款低功耗,高性能CMOS8位单片机,片内综合各程序完成整体程序含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易对仿真中出现的问题进行失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构7。 这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。 程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。 运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。 本电子钟设计主要是依照图2.1中的流程做出来的,时间分配比较均匀。 首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。 这是前期准备工作。 第二部分是硬件部分依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。 第三部分是软件部分先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。 第四部分是软件画图部分设计好电路后进行画图,包括电路图和仿真图的绘制。 第五部分是软件仿真部分软硬熟悉硬件了解各引脚功能分块设计各部分电路将分块的电路组合完成整体电路图确定变成结构和思路各个程序模块用Proteus画出电路图调试程序,进行修改改正画出仿真图进行仿真准备器件、搭接电路仿真成功软硬件结合,完成任务书要求验证硬件电路成功进行扩展件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。 第六部分是硬件实现部分连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。 最后进行功能扩展,本设计加进了日期显示与调整功能。 3主要元件的使用方法下面就本次设计中用到的主要元件的所有功能进行简单的介绍,包括AT89C51单片机、74LS07芯片、以及数码管的特性和用法。 3.1AT89C51单片机8该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的基础上进行一些扩展。 单片机的结构如下图3.1.1单片机引脚图在使用时VCC接电源电压,GND接地。 P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。 XTAL1和XTAL2接复位电路。 这些可以在硬件设计部分体现出来。 3.27407驱动器97407是集电极开路六正相高压驱动器,1入2出,3进4出,5进6出,9进8出,11进10出,13进12出,7接地,14接高电平。 7407引脚图图3.2.17407引脚图7407逻辑图图3.2.27407逻辑图3.3数码管图3.3.1数码管使用共阴极数码管时将6个数码管按相同功能连接起来,3与8相连,当选通端所接管脚为低电平时该数码管选通。 单片机的P2口作为选通端,连接各数码管的 3、8引脚轮流显示,连接时要加7407和上拉电阻。 单片机的P1口作为功能段,通高电平的引脚会使相应段亮起,同样的也要与7407和电阻连接使用。 4电路设计4.1整体设计此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块显示电路用六个数码管分别显示小时(年份)、分钟(月g fa be ddp c87109612345a bc de fg份)和秒(日),通过动态扫描进行显示,从而避免了译码器的使用,使电路更加简单。 单片机采用AT89C51系列,这种单片机应用简单,适合电子钟设计。 电路的总体设计框架如下图4.1.1电路模块图4.2分块设计这部分介绍各模块电路的设计方法和成果,主要分为输入部分、输出部分、复位和晶振电路。 42.1输入部分在电子钟的输入部分,设置相应的置数功能,通过外部设备的输入,如按键,实现时间的修改10-11。 除此之外,调整闹铃、定时、日期时也需要按键进行输入。 在选用输入端口时,将P3引脚与按键相连进行输入12。 设计的输入部分如下图4.2.1输入部分各按键功能在后面的部分将会介绍到42.2输出部分(显示电路)该部分电路图如下所示图4.2.2显示部分在实际电路中采用片机单个数码管相连进行显示,先把数码管的 1、 2、 4、 5、 6、 7、 9、10对应相连,然后把各晶体管的3和8引脚各自相连,P1.6P1.0分别接ag,P2作为选通端P2.0P2.5分别从左到右接各数码管的 3、8端。 采用动态显示,即一位一位地轮流点亮各位显示器18,因此P2.0P2.5轮流置0。 持续时间为1ms,这点在程序部分还会讲到。 42.3晶振与复位电路图4.2.3晶振与复位电路5程序设计5.1程序思路图5.1.1程序设计思路结合电路,程序的输出部分总体思路是17按下1键 1、点复位键后,进行时间显示,从0时0分0秒开始。 2、按下按键1时,调时进行调时,此时按下4调整时,按下5调整分,若显示所调时间2秒钟未按键,则不再等待,恢复走时,持续按键时大约0.3秒步进1,下同。 3、按下2键时进行闹铃调整,用 4、5键分别调时和分,此时只有前四位进行显示,即闹铃功能精确到分,2秒钟无按键则返回时间显示,时间到达闹铃所定初始化判断按键显示按下3键按下2键若无按键调闹钟调定时显示闹铃时间显示定时时间调整时限到或有其他输入单输入部分晶振和复位时间时P0.7输出高电平,蜂鸣器响,按下按键2或3时蜂鸣器停止。 4、按3键时进行定时的设定,同样,分别通过 4、5调整分和秒,若两秒未按键则不进行定时,设定之后再次按下3键则进行倒计时,倒计时时间未到时若按下1键则进行时间显示;若倒计时时间到则P0.7为高电平,蜂鸣器响。 定时的最大值为59分59秒。 在程序设计时,尽量改进算法,算法的改进可以使相对误差减小12,或者可以使占用空间减小14。 另外,分块的设计思想要贯穿始终,整个程序较为繁杂,某些程序段会反复用到,因此采取的方法是写出多个程序段,通过跳转指令进行调用。 5.2程序设计步骤在程序设计过程中,我遇到了很多困难,这部分也是让我学到很多东西的地方。 首先,我学习了定时器的相关知识,计数器的使用是很重要的组成部分15,在这个设计中选择计数器T0。 T0的工作方式有方式0不推荐方式116位计数器,常用方式2自动重装初值的8位定时/计数器方式3T0相当于两个独立的8位定时/计数器此程序采用方式1,方式1的定时时间t为t=(216-M)*12/fosc。 其中M为定时器初值,fosc为12MHz,若M为0则t=65536*12/2*106=65.536ms。 因此可取50ms为计时单位16,初值M应为50*10-3*106=216-M。 M=15536=11110010110000=3CB0。 即定时器初值为TH0=03CH,TL0=0B0H。 定时器中断20次为一秒,这部分在中断程序中用到。 其次,我参看了文献中的设计思路,做到胸有成竹后再进行具体的程序书写工作。 认真学习了教科书中关于汇编语言编程的问题,熟悉了汇编语言的编程方法和语法习惯。 第三步就是进行具体的程序编写工作。 5.3程序的主要模块5.3.1延迟程序在动态扫描时,必然用到延迟程序,这里使用延迟1ms的程序,此程序需要反复调用。 此段程序是很简单的,但就是在这段简单的程序上,也会出现问题,若用D_1MS:MOV R7,#500DJNZ R7,$RET则会出现警告,因为R7是8位寄存器,所能存储的最大值应为255,所以应改为D_1MS:MOV R7,#2D_5:MOV R2,#250DJNZ R2,$DJNZ R7,D_5RET5.3.2中断服务子程序中断服务程序中,总体思路是由于初值是3CB0H,所以装满定时器需要50ms的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。 包括日期显示的功能也是如此。 另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。 基于以上考虑,以R3为倒计时中的秒,R4为倒计时的分,当秒加1时R3减一,减到0之后,秒赋值为59,分减一,直到分为0。 再显示走时部分。 流程框图如下图5.3.1中断程序思路5.3.3主程序主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用声音程序,该段程序如下MAIN:JNB P3.0,DATETZ;按下0键时,显示日期并可对日期进行调整JNB P3.1,ZSTZ1;按下1键时,显示时间,并可调时JNB P3.2,NLTZ1;按下2键进行闹铃设置JNB P3.3,DSTZ;按下3键进行定时设置ACALL DISP;MOV A,HOUR;SUBB A,38H;JZ FEN;AJMP DSPD2;FEN:MOV A,MINUTE;SUBB A,37H;JZ SHENGYIN1;DSPD2:MOV A,R4;JZ S_PD;给T0赋值AJMP MAIN;S_PD:MOV A,R3;JZ SHENGYIN1;AJMP MAIN;5.3.4显示程序6个晶体管轮流进行显示,分别显示1ms,这依赖的是人们视觉的惰性,该段程序如下DISP:;走时的显示程序,包括调时时的显示MOV DPTR,#LEDTAB MOV A,SECOND MOVB,#10DIV AB;A存十位B存个位MOVC A,A+DPTR MOVP1,A CLRSEC_S ACALLD_1MS;显示秒十位SETB SEC_S MOV A,B MOVCA,A+DPTR MOVP1,A CLRSEC_G ACALLD_1MS;显示秒个位中断20次秒加一R3=0N SETBSEC_G以此类推,进行时和分的显示RET另外,调闹铃和定时时间、进行日期显示时,有各自的显示程序,但不能成为独立子程序,分别柔和在闹铃、定时、和日期程序中。 5.3.5闹铃程序和定时程序这两段程序分别包含了各自的显示、调整程序。 程序思路是对照,走时部分的程序,进行编写,包括显示程序,与显示时间的程序是相似的,闹铃和定时的调整程序与走时调整程序相似。 5.4程序调试程序写完以后必须进行调试,以验证程序是否正确。 在程序调试时,出现了很多问题,比如跳转距离过长、打错字母、逻辑有错等,发现问题后,利用两天时间进行了改正,但即使编译通过,最后也不一定能够实现功能。 以为程序的调试只能检查出语法错误,而不能检查出逻辑的错误。 要真正把程序写对,要通过仿真发现并且改正错误。 6功能仿真这部分工作可能遇到的困难是很多的,程序庞大很可能出现各种问题。 在仿真工作中,首先要对仿真软件有足够的了解并能够正确熟练地运用6.1软件介绍在这部分工作中用到了medwin3和Proteus两个软件,其中Medwin3用来编译程序并生成hex文件,装入Proteus仿真图的芯片中,通过仿真结果一步步进行调整最后达到预期的功能。 6.1.1PROTEUS PROTEUS软件是目前世界上最先进、最完整的嵌入式系统设计与仿真平台,可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA工具。 微控制器系统相关的仿真需建立编译和调试环境,可选择MedWin V3软件。 该软件支持众多不同公司的芯片,集、编译和程序仿真等于一体,同时还支汇编和C语言的程序设计。 Proteus的界面友好易学,在调试程序、软件仿真方面有很强大的功能。 其革命性的功能是将电路仿真和微处理器仿真进行协同,直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过动态器件如电机、LED、LCD、开关等,实时看到运行后的输入、输出的效果。 Proteus为我们建立了完备的电子设计开发环境。 6.1.2MedWi nMedWin可以用来编写汇编语言程序并进行编译、产生代码并装入仿真器以便于仿真,在输出文件夹中会产生hex文件,将该hex文件导入仿真图的单片机芯片中即可进行仿真。 使用时点击“项目管理新建项目”就可以建立编程的平台,然后选择项目管理中的新建文件就可以建立asm文件,在这个文件中可以进行程序的编写,程序编写完毕后可点击“项目管理编译汇编”看其是否有错,有错时,在下面的窗口会提示出错的行以及错误原因。 改正无误后可产生代码并装入,将hex文件导入单片机中即可进行仿真6.2仿真过程通常在仿真过程中会遇到很大的麻烦。 在程序汇编通过之后程序不一定是正确的,比如我刚开始进行仿真时数码管并不进行显示,结果发现应该是置零的置一了,应该置一的置零了。 改正之后发现虽然走时程序正常了,但是调时中出现了大量的问题,更不要说闹铃和定时程序了。 在整个毕业设计的过程中程序的修改贯穿始终,在修改的过程中一定要条理清晰,认真细心。 6.2.1仿真图的绘制在使用Proteus进行仿真时,仿真图不用画出数码管驱动程序,其他部分与设计的硬件图相仿。 绘制结果如下图6.2.1仿真图6.2.2功能的实现在绘制仿真图之后,要向单片机装入程序,从而使单片机开始工作并带动整个电路工作,装入过程为点击单片机,选择所编译程序的输出hex文件,确定即可。 此时单片机会按照程序所设定的功能进行工作,在仿真过程中会遇到各种问题,在第九章会具体讲到。 这里列出仿真结果 (1)走时仿真图6.2.2走时状态下的仿真结果 (2)闹钟设定的仿真图6.2.3闹铃仿真结果可见所定闹钟时间为10点15分。 (3)定时钟倒计时的仿真图6.2.3倒计时仿真可见,倒计时进行到3分3秒。 7实际电路的实现在仿真无误后,开始进行实际电路的搭接。 搭接时先不用芯片实物,而用仿真器替代。 按照电路图,先把数码管按照对应的管脚连接起来,然后接驱动电路等,接好之后把程序装入仿真器,通电运行,再对电路进行调试。 在根据电路图搭接好各个器件后,一个很重要的问题就是检查各器件是否完全工作。 下面介绍检验方法导线看似不用太费力气去检验,但一个成功的实验需要前期充分的准备,比如在我的实验过程中,由于导线繁多,而且使用旧导线进行实际电路的连接,所以就出现了导线不通的情况,因此验证过程中不要放过小问题。 数码管的检测拆除89C51芯片,先分别给芯片P2对应的导线加低电平,再分别给P1对应的导线加高电平,使每个数码管的每一笔段都能亮。 若出错,先检查电路的连接再换一下器件试试,对于此电路问题出在7407的连接方法的问题比较大。 这部分需要重点验证。 随后,按下复位键看9引脚是否为低电平,是则没有错误。 通过以上工作,硬件仿真无误后,可以用单片机芯片代替仿真器进行最后的实现工作,用easyPRO80B编程器将程序下载到芯片中,具体步骤为先进行擦除,然后查空,查空无误后打开所需的hex文件,然后进行编程、校验。 这时程序载入了芯片中,就可以实现相应的功能了。 实验结果如下图7.1走时显示实物图这里要说的是,软件仿真成功和硬件电路实现之间是有很大差别的,在做软件仿真时,没有驱动的问题,没有芯片和器件质量的问题,也没有电线导电的问题,没有工作条件的问题,但在实际电路中这些因素都要考虑。 常常会出现这种情况软件仿真实现了,但实际电路没有任何功能。 在电子钟硬件实现过程中,就出现了很多问题,有引脚接错的问题,也有插线松动或电线不通的问题,这些问题都是需要耐心和细心认真解决的。 8日历功能的实现在加入其它功能时,我想到了很多可能达到的功能,比如加入备用电源、夜间亮灯功能、多个闹铃的功能、显示日期功能等。 然后我进行了理论上的验证,加入备用电源可避免因停电而造成的电路全部失灵20,21,但受到实验条件的影响未选择对这个功能进行实现。 夜间亮灯功能对程序要求不高,但在电路中要加入传感器,把光的照度测出来后,低于某一值时,灯亮,从而使得夜间时也能看到时间显示,虽然程序简单,但由于要加入传感器,容易受到干扰,各项工作投入时间较长,考虑到时间有限,也没有采纳这个方案。 闹铃的功能和日期的功能的实现都是比较容易的,做了权衡之后我选择了后者,因为日期功能主要涉及算法和程序的跳转、调用等,更能加深对单片机的认识和理解。 在设计的开始阶段,我主要考虑了日期的逻辑算法19。 首先,要考虑年份是不是闰年,闰年的判断方法是将年份除以100,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;若不能被100整除,则判断是否能被4整除,若能,则为闰年,若不能则为平年。 只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。 其中 1、 3、 5、 7、 8、 10、12月是每月31天, 4、 6、 9、11月为每月30天。 在电路方面有两种方法 (1)可以增加6个数码管用来显示日期,但这样显然电路更复杂; (2)用按键的输入决定6个数码管显示日期还是时间,这种情况下,只需加一个按键即可,不用增加数码管。 最终的按键控制为按下1键时,显示日期,并且用 4、 5、6键分别调整年、月、日;按下2键时,进行走时和时间调整;3键位闹铃键;4键为定时键。 这样实现功能的好处是 (1)电路简单,若同时显示日期和时间,则需要的引脚很多,需要加入译码器对引脚进行扩展。 采用按键决定显示时间或日期的方法避免了这个问题; (2)节约空间,节约成本。 程序思路如下图8.1扩展部分思路由于在前面的工作中积累了较多的经验,对汇编语言已经相当熟悉,因此在实现日历功能时,程序设计显得相当容易。 按键如图8.2所示,按键功能如下按下按键1时,显示日期并且允许对日期进行调整;按下按键2时,显示时间并且允许对时间进行调整;按下按键3时,显示闹钟所设定的时间并允许通过 5、6键对闹钟进行设定;按下按键4时,显示定时功能所设定的时间并允许对其进行设定,再次按下时,开始倒计时过程,并进行倒计时过程的显示,在显示日期时,该键可对年份进行调整;按键 5、6可对时间年份能否被100整除N Y年份是否能被4整除年份是否能被400整除N N平年闰年Y Y是不是2月是不是2月Y日=28之后返回为1N NY日=29之后返回为1若月份为 1、 3、 5、 7、 8、 10、12月则调用31天的程序若月份为 4、 6、 9、11则调用30天的程序显示时的时、分或日期显示时的月、日进行调整。 按键形式遇到了新的问题蜂鸣图8.2按键图示实验成果如下图8.2日期显示实物图图中显示的日期为10年5月27日。 9电子钟设计中遇到的问题及其解决方法在电子钟设计中程序比较长,遇到了各种各样的问题,比如跳转距离过长出现语法错误。 因此修改程序的时间很长,有语法错误,也有仿真时功能无法实现的问题,在此不能一一说明,只能对个别问题加以阐述。 由于在走时调整、闹铃调整及定时设定时,按下键时每0.2秒步进1,这就需要每0.2秒对按键输入进行一次扫描,因此开始时,我用的是延迟0.2秒再返回按键扫描程序的方法,但是可以想到,进行单纯的延迟时,不会有显示,在仿真时功能没有实现。 后来我采用的是反复调用若干次显示程序以实现延迟,较好地解决了这个问题。 虽然现在回过头来发现这个问题很简单,但当时是百思不得其解。 我从中学到任何简单的事情都会有出错的可能,有些时候人的思路中的一些错误是自己难以发现的,在工作和生活中要多对自己的想法提出质疑。 不光是这种明显的问题很多,有些细微的问题也一样出现了,但解决起来并不容易。 在最后的硬件实现阶段发现蜂鸣器不响,此时连接方法是蜂鸣器直接连接在了P0.7引脚。 考虑到单片机的输出电流比较小,虽然P0.7引脚的电平已经达到2V以上,也无法驱动蜂鸣器。 于是我设想加上驱动电路。 作此修改之后,蜂鸣器发出响声,但是又器无法停止响声!看上去这个问题很简单,只要有停止闹铃的按键输入时,在程序中加一句将P0.7置零的语句就可以了。 但事实并不是这么简单。 通过苦思冥想,发现在主程序中,对“定时时间是否已到”是不断进行扫描的,而倒计时是在中断服务子程序中进行的,当倒计时为0分0秒时,主程序判断出来后会不停地调用声音程序MAIN:JNB P3.0,DATETZ;按下0键时,显示日期并可对日期进行调整JNB P3.1,ZSTZ1;按下1键时,显示时间,并可调时JNB P3.2,NLTZ1;按下2键进行闹铃设置JNB P3.3,DSTZ;按下3键进行定时设置ACALL DISP;MOV A,HOUR;SUBB A,38H;JZ FEN;AJMP DSPD2;FEN:MOV A,MINUTE;SUBB A,37H;JZ SHENGYIN1;DSPD2:MOV A,R4;JZ S_PD;AJMP MAIN;S_PD:MOVA,R3;JZ SHENGYIN1;AJMP MAIN;蜂鸣器响声不停是不可避免的,因为R3和R4是在中断程序中变化的,随着时间的推移必然都为0,在此情况下即使按下了声音停止键,由于程序跳回主程序,又会不断地调用声音程序。 基于这个想法要达到的效果是按下声音停止键之后,不再进行定时时间是否为0的判断。 要实现这个想法就要引入新的参数,这里,试用3CH作为判断的因子。 当点击定时开始后,将3CH赋值为1,在主程序中判断3CH如果不为0,就进行倒计时是否到0的判断。 蜂鸣器响后,点击3键时,将3CH赋值为0,这样在主程序中就不进行这个判断,因此蜂鸣器就不会响。 当然这个解决问题的过程不是一下子解决的在这个过程中,我进行了相当多的尝试和摸索,最终找到了这个解决途径。 这个问题解决后,发现闹铃也有相同的问题,声音会持续一分钟,在此期间即使按下停止键,声音也不会停。 发现这个问题后,可以看出,这个问题解决起来比上个问题要简单得多,因为闹钟程序没有涉及到中断服务子程序。 因此考虑按下停止键时,修改判断所用的参数比如38H,即在clr P0.7的同时加一句DEC38H,当再进行判断时,蜂鸣器就不会再响了。 结论本文介绍的是利用AT89C51单片机设计的有调时、定时、闹铃功能的电子钟。 并详细说明了软件和硬件设计方法及仿真、硬件实现。 在设计过程中可以看出,汇编语言有着其独特的魅力,它简单易学,语法错误容易纠正;用单片机实现电子钟的设计是比较方便和易于实现的。 通过电子钟的设计和制作,加深了对单片机的理解,能够更熟练地应用单片机实现预期的功能,对今后的工作有很大的帮助。 电子钟各项功能的实现,为自动控制的实现打下了理论基础,获得了实现方法。 当然,该电子钟还有很多不足之处,比如闹钟不能关闭,且只能定一个闹钟。 在今后的工作中还要对此加以研究,尽量实现更多的功能。 在今后的其他工作中,也可以把这次设计中的收获运用进去,这是我此次毕业设计得到的最大财富。 参考文献1H.G.Cragon.The Elementsof Single-Chip MicroputerArchitecture.Computer,1980 (13)27412潘永雄.新编单片机原理与应用.第2版.西安西安电子科技大学出版社xx3何立民.我国单片机应用技术发展趋势及展望.自动化与仪表,1992 (1):154向继文,廖立新.基于AT89S51的电子钟系统设计.机电产品开发与创新,xx (2):62635张静.基于单片机数字钟的设计.办公自动化杂志,xx (89):456樊金荣,谢智文.数字倒计时秒表的设计与实现.中南民族大学计算机科学学院院报,xx (1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 舞蹈学校年终工作总结
- 消防安全使用培训课件
- 消防员安全驾驶知识培训课件
- 走进词语乐园课件
- 走进科学家课件
- 走进佳节话中秋课件
- 赠友送别诗鉴赏课件
- 消毒和个人防护课件
- 消毒供应中心下送课件
- 消化道溃疡课件
- 装卸工安全培训
- 医院客服主管年终总结
- 软件系统集成方案
- 联通技能竞赛考试题及答案(5G核心网知识部分)
- 恶性贫血的动物模型构建和研究
- “余香萦绕”-2024年中考语文作文押题分析+学生习作+素材积累+金句积累
- 2024年秋新北师大版一年级上册数学教学课件 我上学啦 第5课时 收获的季节
- 拨叉加工工艺及夹具设计毕业设计
- DL-T475-2017接地装置特性参数测量导则
- 医疗器械知识测试题+答案
- 常见药物不良反应及安全用药
评论
0/150
提交评论