毕业设计(论文)-单片机控制电脑时钟系统的设计_第1页
毕业设计(论文)-单片机控制电脑时钟系统的设计_第2页
毕业设计(论文)-单片机控制电脑时钟系统的设计_第3页
毕业设计(论文)-单片机控制电脑时钟系统的设计_第4页
毕业设计(论文)-单片机控制电脑时钟系统的设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

摘要PAGEIVPAGEII单片机控制电脑时钟系统的设计摘要近些年,人们对数字钟的要求越来越高,传统的时钟已不能满足人们的要求。单片机在电脑时钟中的应用已是非常普遍,人们对电脑时钟的功能及工作顺序非常清楚,但是却很少知道它的内部结构以及工作原理。单片机即单片微型计算机。由RAM,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。本设计主要设计了一个基于AT89C51单片机的电脑时钟,利用单片机内部的时钟信号进行计时,再经过程序延时产生以秒为单位的信号,实现电脑时钟的各种功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时。显示器为七应用Proteus的ISIS软件实现了单片机电脑时钟系统的仿真,该方法仿真效果真实、准确,节省了硬件资源。关键词:单片机,时钟,AT89C51,七段数码管

SCMCONTROLCOMPUTERCLOCKSYSTEMDESIGNABSTRACTInrecentyears,peoplehavebecomeincreasinglydemandingdigitalclock;Theclockcannotmeetthetraditionalrequirementsofthepeople.Microcomputerapplicationinthecomputer'sclockisverycommon,peoplearecomputerclockfunctionandworkingorderisveryclear,butfewknowitsinternalstructureandworkingprinciple.Thatsinglechipcomputerchip.ROM,RAM,bytheCPU,timing,countingandmultipleinterfacesinoneofthemicrocontroller.Itssmallsize,lowcost,thefunctionisstrong,widelyusedinintelligentindustryandindustrialautomation.ThedesignofthemaindesignofacomputerclockbasedonAT89C51microcontroller,usingtheinternalMCUclocksignaltiming.Afteranotherdelayproceduresproduceasignalinseconds.Thecomputerclocktoachieveavarietyoffunctions,theirtimedataoutputbytheMCUusingthemonitordisplay.Thekeyboardcanbetime,schooltime.Fortheseven-segmentdigitaltubedisplay.ApplicationofProteus'sISISsoftwareofthemicrocontrollerclocksystemcomputersimulation,thesimulationresultsapproachthetrue,accurate,andsavethehardwareresources.KEYWORDS:SCM,Clock,AT89C51,7digitaltube前言目录前言 1第1章电脑时钟 31.1 电脑时钟的简介 31. 2电脑时钟的基本特点 31.3电脑时钟的原理 3第2章单片机相关知识 42.1单片机简介 42.2单片机的特点 62.3AT89C51单片机介绍 6第3章系统硬件设计 103.1单片机型号的选择 103.2数码管显示工作原理 103.3键盘电路设计 113.4电源模块 123.5时钟电路模块 123.6电路原理图 14第4章系统软件设计 154.1程序流程图 154.1.1主程序流程图 154.1.2中断程序流程图 174.2程序设计 184.3仿真结果 304.4仿真结果分析 31结论 32谢辞 33参考文献 34外文资料翻译 36前言目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电脑宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。由于单片机有许多优点,因此其应用领域之广,几乎到了无孔不入的地步。单片机应用的主要领域有:1.

智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电脑线路控制,升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等;2.办公自动化设备:现代办公室使用的大量通信和办公设备多数嵌入了单片机。如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等;3.

商业营销设备:在商业营销系统中已广泛使用的电脑称、收款机、条形码阅读器、IC卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制;4.

工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一。如各种测控系统、过程控制、机电一体化、PLC等。在化工、建筑、冶金等各种工业领域都要用到单片机控制;5.

智能化仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据处理和存储、故障诊断、联网集控等;6.

智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机;7.汽车电脑产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机;8.航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。随着单片机应用的推广,微控制技术将不断发展完善。通过本次设计让我们把学过的比较零碎的知识系统化,真正能够把学过的知识落到实处,能够开发简单的系统,也进一步激发我们的学习的热情。本次设计的技术要求:1.自动计时,并用8个LED显示时、分、秒;2.具备时间调整功能;3.具备定时起脑功能;4.一天的时间误差不能超过1秒。第1章标题第1章电脑时钟1.1电脑时钟的简介1957年,Ventura发明了世界上第一个电脑表,从而奠定了电脑时钟的基础,电脑时钟开始迅速发展起来。现代的电脑时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。1.2电脑时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电脑钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电脑钟用集成电路计时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。1.3电脑时钟的原理本电脑时钟由AT89C51芯片、数码管、七段译码驱动器等组成。用+5V直流电源作为驱动电源,利用晶振震荡产生的时钟脉冲作为时钟信号,再经过程序延时产生以秒为单位的信号,根据一小时等于六十分、一分种等于六十秒的原理从而达到记时的目的。第3章REF_Ref168484495\h错误!未找到引用源。洛阳理工学院毕业设计(论文)PAGE14第2章单片机相关知识2.1单片机简介单片机全称为单片机微型计算机(SingleChipMicrosoftcomputer)。从应用领域来看,单片机主要用来控制,所以又称为微控制器(MicrocontrollerUnit)或嵌入式控制器。单片机属于第四代电脑计算机。它把中央处理器(CPU)、存储器(RAM和ROM)、输入输出接口电路以及定时器|计数器等集合在一块集成电路芯片上,从而具有体积小、价格和功耗低、抗干扰能力强,可靠性高等特点,极适合于智能仪器仪表和工业检测系统的前端装置。如图2-1所示:图2-1AT89C51实物图单片机的发展史: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,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。Inter公司1980年推出的MCS-51系列单片机是在MCS-48系列的基础上发展起来的,由于它被广泛应用,因此成为公认的单片机的标准系列。3.16位单片机1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。4.32位单片机随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理,复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单片机,如Motorola公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降,将会与8位单片机并驾齐驱。5.64位单片机近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已有应用,如英国Inmost公司的TransporterT800是高性能的64位单片机。2.2单片机的特点1.优异的性能价格比。2.集成度高、体积小,有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了个芯片之间的连线,大大提高了单片机的可靠性欲抗干扰能力,另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。3.控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有丰富的转移指令I|0口的逻辑操作以及位处理能力。4.低功耗、低电压,便于生产便携式产品。5.外部总线增加了IIC和SPI等串行总线方式,进一步缩小了体积,简化了结构。6.单片机的系统配置便于构成各种规模的应用系统。2.3AT89C51单片机介绍AT89C51单片机,它是由美国ATMEL公司生产的高性能、低功耗的CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(FlashROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。AT89C51是一个低功耗高性能单片机,它有40个引脚,32个外部双向输入|输出(I|O)端口。功能强大的AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。如图2-2所示:图2-2AT89C51单片机1.AT89C51管脚功能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口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。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)。VCC:供电电压。GND:接地。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输入。第3章系统硬件设计3.1单片机型号的选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为103.2数码管显示工作原理数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。如图3-1所示:图3-1七段数码管3.3键盘电路设计该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现时分秒的调节以及控制是否进入省电模式。当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。达到时间调节的目的。如图3-2所示:图3-2键盘电路模块设计3.4电源模块在各种电脑设备中,直流稳压电源是必不可少的组成部分,它是电脑设备唯一能量来源,它的设计思路是根据我们以前学过的模电电脑技术,要想得到我们所要的+5V输出电压,我们这里采用我们日常用的5V电源。3.5时钟电路模块时钟电路由一个晶振、和两个电容组成。晶振产生振荡电流,两个电容也叫负载电容。一般单片机的晶振工作于并联谐振状态,也可以理解为谐振电容的一部分。它是根据晶振厂家提供的晶振要求负载电容选值的,换句话说,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差。也能保证温漂等误差。两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。如图3-3所示: 图3-3时钟晶振电路模块复位电路模块复位由电阻、按钮、电容组成。当按钮按下时,电阻给电容充电,电容的电压缓慢上升直到VCC,没到VCC时芯片复位脚近似低电平,于是芯片复位,接近VCC时芯片复位脚近高电平,于是芯片停止复位,复位完成。如图3-4所示:图3-4复位电路3.6电路原理图图3-5系统原理图第3章标题PAGE8PAGE35第4章系统软件设计4.1程序流程图4.1.1主程序流程图图4-1主程序流程图4.1.2中断程序流程图图4-2中断程序流程图4.2程序设计本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。;定时计数中断程序MOVTMOD,#00H;写控制字MOVTH0,#0F0H;写定时常数MOVTLO,#0CHSETBTR0;启动T0SETBETO;允许T0中断SETBEA;开放CPU中断AJMP$;时间调整程序SETMM:CLRET0;关定时器T0中断CLRTR0;关闭定时器T0LCALLDL1S;调用1秒延时程序JBP3.7,CLOSEDI;键按下时间小于1秒,关闭显示MOVR2,#06H;进入调时状态,赋闪烁定时初值SETBET1;允许T1中断SETBTR1;开启定时器T1SET2:JNBP3.7,SET1;P3.7口为0(键未释放)等待SETB00H;键释放,分调整闪烁标志置1SET4:JBP3.7,SET3;等待键按下LCALLDL05S;有键按下,延时0.5秒JNBP3.7,SETHH;按下时间大于0.5秒调;小时状态MOVR0,#77H;按下时间小于0.5秒加1;分钟操作LCALLADD1;调用加1子程序MOVA,R3;取调整单元数据CLRC;清进位标志CJNEA,#60H,HHH;调整单元数据与60比HHH:JCSET4;调整单元数据小于60转;SET4循环LCALLCLR0;调整单元数据大于或于;60时清0CLRC;清进位标志AJMPSET4;跳转到SET4循环CLOSEDIS:SETBET0;省电状态,开T0中断SETBTR0;开启T0定时器(开时钟)CLOSE:JBP3.7,CLOSE;无按键按下,等待LCALLDISPLAY;有键按下,调显示子程;序延时削抖JBP3.7,CLOSE;是干扰返回CLOSE等待WAITH:JNBP3.7,WAITH;等待键释放LJMPSTART1;返回主程序(LED数;据显示亮度)SETHH:CLR00H;分闪烁标志清除(进;入调小时状态)SETHH1:JNBP3.7,SET5;等待键释放SETB01H;小时调整标志置1SET6:JBP3.7,SET7;等待按键按下LCALLDL05S;有键按下延时0.5秒JNBP3.7,SETOUT;按下时间大于0.5秒;退出时间调整MOVR0,#79H;按下时间小于0.5秒;加1小时操作LCALLADD1;调加1子程序MOVA,R3CLRCCJNEA,#24H,HOUU;计时单元数据与24比较HOUU:JCSET6;小于24转SET6循环LCALLCLR0;大于或等于24时清0操作AJMPSET6;跳转到SET6循环SETOUT:JNBP3.7,SETOUT1;调时退出程序。等待;键释放LCALLDISPLAY;延时削抖JNBP3.7,SETOUT;是抖动,返SETOUT再等待CLR01H;清调小时标志CLR00H;清调分标志CLR02H;清闪烁标志CLRTR1;关闭定时器T1CLRET1;关定时器T1中断SETBTR0;开启定时器T0SETBET0;开定时器T0中断(计;时开始)LJMPSTART1;跳回主程序SET1:LCALLDISPLAY;键释放等待时调用显示程序AJMPSET2;防止键按下时无时钟显示SET3:LCALLDISPLAY;等待调分按键时时显示用AJMPSET4SET5:LCALLDISPLAY;键释放等待时调用示;程序(调小时)AJMPSETHH1;防止键按下时无时钟显示SET7:LCALLDISPLAY;等待调小时按键时钟显示用AJMPSET6SETOUT1:LCALLDISPLAY;退出时钟调整时键放等待AJMPSETOUT;防止键按下时无时钟显示;延时程序1MS延时程序,LED显示程序用DL1MS:MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象DS20MS:ACALLDISPLAYACALLDISPLAYACALLDISPLAYRETORG0000H;程序执行开始地址LJMPSTART;跳到标号START执行ORG0003H;外中断0中断程序入口RETI;外中断0中断返回ORG000BH;定时器T0中断程序入口LJMPINTT0;跳至INTTO执行ORG0013H;外中断1中断程序入口RETI;外中断1中断返回ORG001BH;定时器T1中断程序入口LJMPINTT1;跳至INTT1执行ORG0023H;串行中断程序入口地址RETI;串行中断程序返回;主程序开始START:MOVR0,#70H;清70H-7AH共11个内;存单元MOVR7,#0BH;CLEARDISP:MOV@R0,#00H;INCR0;DJNZR7,CLEARDISP;MOV20H,#00H;清20H(标志用)MOV7AH,#0AH;放入"熄灭符"数据MOVTMOD,#11H;设T0、T1为16位定时器MOVTL0,#0B0H;50MS定时初值(T0计时用)MOVTH0,#3CH;50MS定时初值MOVTL1,#0B0H;50MS定时初值(T1闪烁定时用)MOVTH1,#3CH;50MS定时初值SETBEA;总中断开放SETBET0;允许T0中断SETBTR0;开启T0定时器MOVR4,#14H;1秒定时用初值(50MS×20)START1:LCALLDISPLAY;调用显示子程序JNBP3.7,SETMM1;P3.7口为0时转时间调整程序SJMPSTART1;P3.7口为1时跳回START1SETMM1:LJMPSETMM;转到时间调整程序SETMM;1秒计时程序INTT0:PUSHACC;累加器入栈保护PUSHPSW;状态字入栈保护CLRET0;关T0中断允许CLRTR0;关闭定时器T0MOVA,#0B7H;中断响应时间同步修正ADDA,TL0;低8位初值修正MOVTL0,A;重装初值(低8位修正值)MOVA,#3CH;高8位初值修正ADDCA,TH0;MOVTH0,A;重装初值(高8位修正值)SETBTR0;开启定时器T0DJNZR4,OUTT0;20次中断未到中断退出ADDSS:MOVR4,#14H;20次中断到(1秒)重赋初值MOVR0,#71H;指向秒计时单元(71H-72H)ACALLADD1;调用加1程序(加1秒操作)MOVA,R3;秒数据放入A(R3;为2位十进制数组合)CLRC;清进位标志CJNEA,#60H,ADDMM;ADDMM:JCOUTT0;小于60秒时中断退出ACALLCLR0;大于或等于60秒时对秒计时单元清0MOVR0,#77H;指向分计时单元(76H-77H)ACALLADD1;分计时单元加1分钟MOVA,R3;分数据放入ACLRC;清进位标志ADDHH:JCOUTT0;小于60分时中断退出ACALLCLR0;大于或等于60分时分计时单元清0MOVR0,#79H;指向小时计时单元(78H-79H)ACALLADD1;小时计时单元加1小时MOVA,R3;时数据放入ACLRC;清进位标志CJNEA,#24H,HOUR;HOUR:JCOUTT0;小于24小时中断退出ACALLCLR0;大于或等于24小时计;时单元清0OUTT0:MOV72H,76H;中断退出时将分、时计时单元;数据移MOV73H,77H;入对应显示单元MOV74H,78H;MOV75H,79H;POPPSW;恢复状态字(出栈)POPACC;恢复累加器SETBET0;开放T0中断RETI;中断返回;闪动调时程序;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1:PUSHACC;中断现场保护PUSHPSW;MOVTL1,#0B0H;装定时器T1定时初值MOVTH1,#3CH;DJNZR2,INTT1OUT;0.3秒未到退出断(50MS;中断6次)MOVR2,#06H;重装0.3秒定时用初值CPL02H;0.3秒定时到对闪烁标志取反JB02H,FLASH1;02H位为1时显示单元"熄灭"MOV72H,76H;02H位为0时正常显示MOV73H,77H;MOV74H,78H;MOV75H,79H;INTT1OUT:POPPSW;恢复现场POPACC;RETI;中断退出FLASH1:JB01H,FLASH2;01H位为1时,转小;时熄灭控制MOV72H,7AH;01H位为0时,"熄灭;符"数据放入分MOV73H,7AH;显示单元(72H-73H),;将不显示分数据MOV74H,78H;MOV75H,79H;AJMPINTT1OUT;转中断退出FLASH2:MOV72H,76H;01H位为1时,"熄;灭符"数据;放入小时MOV73H,77H;显示单元,小时数据将不显示MOV74H,7AH;MOV75H,7AH;AJMPINTT1OUT;转中断退出;加1子程序ADD1:MOVA,@R0;取当前计时单元数据到ADECR0;指向前一地址SWAPA;A中数据高四位与低四位交换ORLA,@R0;前一地址中数据放入A中低四位ADDA,#01H;A加1操作DAA;十进制调整MOVR3,A;移入R3寄存器ANLA,#0FH;高四位变0MOV@R0,A;放回前一地址单元MOVA,R3;取回R3中暂存数据INCR0;指向当前地址单元SWAPA;A中数据高四位与低四;位交换ANLA,#0FH;高四位变0MOV@R0,A;数据放入当削地单元中RET;子程序返回;清零程序;对计时单元复零用CLR0:CLRA;清累加器MOV@R0,A;清当前地址单元DECR0;指向前一地址MOV@R0,A;前一地址单元清0RET;子程序返回;时钟调整程序;当调时按键按下时进入此程序SETMM:CLRET0;关定时器T0中断CLRTR0;关闭定时器T0LCALLDL1S;调用1秒延时程序JBP3.7,CLOSEDIS;键按下时间小于1秒,关闭显示MOVR2,#06H;进入调时状态,赋闪烁定时初值SETBET1;允许T1中断SETBTR1;开启定时器T1SET2:JNBP3.7,SET1;P3.7口为0(键未释放),等待SETB00H;键释放,分调整闪烁标志置1SET4:JBP3.7,SET3;等待键按下LCALLDL05S;有键按下,延时0.5秒JNBP3.7,SETHH;按下时间大于0.5秒转;调小时状态MOVR0,#77H;按下时间小于0.5秒加1;分钟操作LCALLADD1;调用加1子程序MOVA,R3;取调整单元数据CLRC;清进位标志CJNEA,#60H,HHH;调整单元数据与60比较HHH:JCSET4;调整单元数据小于60转SET4循环LCALLCLR0;调整单元数据大于或等于60清0CLRC;清进位标志AJMPSET4;跳转到SET4循环CLOSEDIS:SETBET0;省电状态,开T0中断SETBTR0;开启T0定时器(开时钟)CLOSE:JBP3.7,CLOSE;无按键按下,等待。LCALLDISPLAY;有键按下,调显示子程序延时削抖JBP3.7,CLOSE;是干扰返回CLOSE等待WAITH:JNBP3.7,WAITH;等待键释放LJMPSTART1;返回主程序SETHH:CLR00H;分闪烁标志清除SETHH1:JNBP3.7,SET5;等待键释放SETB01H;小时调整标志置1SET6:JBP3.7,SET7;等待按键按下LCALLDL05S;有键按下延时0.5秒JNBP3.7,SETOUT;按下时间大于0.5秒退出;时间调整MOVR0,#79H;按下时间小于0.5秒加1;小时操作LCALLADD1;调加1子程序MOVA,R3;CLRC;CJNEA,#24H,HOUU;计时单元数据与24比较HOUU:JCSET6;小于24转SET6循环LCALLCLR0;大于或等于24时清0操作AJMPSET6;跳转到SET6循环SETOUT:JNBP3.7,SETOUT1;调时退出程序。等待键释放LCALLDISPLAY;延时削抖JNBP3.7,SETOUT;是抖动,返回SETOUT再等待CLR01H;清调小时标志CLR00H;清调分标志CLR02H;清闪烁标志CLRTR1;关闭定时器T1CLRET1;关定时器T1中断SETBTR0;开启定时器T0SETBET0;开定时器T0中断LJMPSTART1;跳回主程序SET1:LCALLDISPLAY;键释放等待时调用显示序AJMPSET2;防止键按下时无时钟显示SET3:LCALLDISPLAY;等待调分按键时时钟显示用AJMPSET4SET5:LCALLDISPLAY;键释放等待时调用显示程序AJMPSETHH1;防止键按下时无时钟显示SET7:LCALLDISPLAY;等待调小时按键时时钟显示用AJMPSET6SETOUT1:LCALLDISPLAY;退出时钟调整时键释放等待AJMPSETOUT;防止键按下时无时钟显示;显示程序DISPLAY:MOVR1,#70H;指向显示数据首址MOVR5,#0FEH;扫描控制字初值PLAY:MOVA,R5;扫描字放入AMOVP3,A;从P3口输出MOVA,@R1;取显示数据到AMOVDPTR,#TAB;取段码表地址MOVCA,@A+DPTR;查显示数据对应段码MOVP1,A;段码放入P1口LCALLDL1MS;显示1MSINCR1;指向下一地址MOVA,R5;扫描控制字放入AJNBACC.5,ENDOUT;ACC.5=0时一次显示结束RLA;A中数据循环左移MOVR5,A;放回R5内AJMPPLAY;跳回PLAY循环ENDOUT:SETBP3.5;一次显示结束,P3口复位MOVP1,#0FFH;P1口复位

温馨提示

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

最新文档

评论

0/150

提交评论