还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
目录TOC\o1-3\h\z\u第一章系统概述
11.1背景知识
11.2设计内容
21.3设计要求
21.4设计意义2第二章系统方案
32.1总体方案
32.2方案组成4第三章硬件设计
53.1AT89C51的介绍
53.2复位电路
53.3按键电路
63.4显示电路
63.5蜂鸣器电路8第四章软件设计
94.1主程序设计
94.
1.1倒计时模块
104.
1.2键盘扫描模块
104.2时间调整子程序设计
114.3显示子程序设计
124.4复位程序设计12第五章系统调试
145.1软件仿真
145.2硬件调试17第六章总结
186.1设计心得及体会
186.2参考文献19附录20附录A程序清单20附录B总电路图26倒计时第1章系统概述
1.1背景知识近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测日新月异更新在实时控制和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器CPUCentralprocessingunit随机存储器RAM(Randomaccessmemory)只读存储器ROM(Readonlymemory)中断系统、定时器/计数器以及I\O(Input/output)接口电路等主要微型机部件集成在一个芯片上虽然单片机只是一个芯片,但从组成和功能上看,它已具有了计算机系统的属性为此,称它为单片微型计算机SCMC(Singlechipmicrocomputer),简称单片机单片机主要应用与控制领域,用以实现各种测试和控制功能,为了强调起控制属性,也可以把单片机称为微控制器MCU(Microcontrollerunit)在国际上,“微控制器”的叫法似乎更通用一些,而在我国则比较习惯与“单片机”这一名称单片机在应用时,通常是处于控制系统的核心地位并融入其中,即以嵌入的方式进行使用,为了强调其"嵌入"的特点,也常常将单片机称为嵌入式微控制器EMCU(Embeddedmicrocontrollerunit)在单片机的电路和结构中,有许多嵌入式应用的特点根据控制应用的需要,可以将单片机分成为通用型和专用型两种类型通用型单片机是一种基本芯片,他的内部资源比较丰富,性能全面且适用性强,能覆盖多种应用需要用户可以根据需要设计成各种不同应用的控制系统,即通用单片机有一个在设计的过程,通过用户的进一步设计,才能组建成一个以通用单片机芯片为核心再配以其它外围电路的应用控制系统然而在单片机的控制应用中,有许多时候是专门针对某个特定产品的,例如电度表和IC卡读写器上的单片机等这种应用的最大特点是针对性强而且数量巨大,为此厂家常与芯片制造商合作,设计和生产专用的单片机芯片由于专用单片机芯片是针对一种产品或一种控制应用而专门设计的,设计时已经对系统结构的最简化,软硬件资源利用的最优化本系统由单片机系统、按键、蜂鸣器和LED数码管显示系统组成装置利用AT89C51单片机与74LS245驱动器驱动LED数码管显示通过按键控制设定倒计时时间,再通过中断控制系统开始倒计时当倒计时时间到时,由P
3.0口驱动蜂鸣器发声报警为了简化电路,降低成本,采用以软件为主的的接口方法该系统实用、功能灵活多样,可以对计时时间进行实时控制,可以广泛的应用于各种场所的控制设备
1.2设计内容
(1)设计一个倒计时器,由单片机接收小键盘阵列设定倒计时时间,倒计时范围最大为60分钟,由LED显示模块显示剩余时间,显示格式为XX(分)XX(秒).X,精确到
0.1s的整数倍倒计时时间到,由蜂鸣器发出报警
(2)绘制系统硬件接线图,并进行系统仿真
(3)画出程序流程图并编写程序实现上述功能
1.3设计要求
(1)以MCGS-51系列单片机为核心器件,组成一个倒计时系统
(2)能够通过小键盘阵列设定倒计时时间
(3)系统显示器由7位数字型数码管组成,分别显示时间值的分,秒和
0.1秒
(4)倒计时到,由蜂鸣器发出报警
(5)绘制系统硬件接线图,并进行系统仿真
(6)画出程序流程图并编写程序实现上述功能
1.4设计意义本课题开发的意义在于它既节省了硬件成本,又能实现多功能既可做倒计时秒表又可进行定时,还可以通过扩展完成其他功能,而且功能的相互转换也十分简单对于厂商有很大的挖掘潜在价值的空间;对于消费者,也有很大的吸引力第2章系统方案
2.1总体方案为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法由于静态显示法需要数据锁存器等硬件,接口复杂一些考虑计时器显示只有7位,且系统没有其他复杂的处理任务,所以决定用动态扫描法实现LED的显示单片机采用AT89C51系列,如果要使用电池供电的话,则可以采用LV系列的单片机硬件系统的总体构成框架如下图
2.1所示设计时可采用模块化程序设计方法模块划分时应遵循下述原则
(1)每个模块应具有独立的功能,能产生一个明确的结果
(2)模块之间的控制参数应尽量简单,数据参数应尽量少控制参数是指模块进入和推出繁荣条件及方式,数据参数是指模块间的信息交换方式、交换量的多少及交换的频繁程度
(3)模块长度适中模块语句的长度通常在20~100条较合适米快太长时,分析和调试比较困难,失去了模块化程序结构的优越性;模块太短则信息交换太频繁,也不合适
(4)根据模块的划分原则,将该程序划分成4个模块,如图2-2所示
2.2方案组成硬件部分由复位按钮、开始/暂停按钮、时间位选择按钮、时间位调整按钮、AT89C51单片机、一个6位共阴极LED显示器、蜂鸣电路等组成软件部分主程序主要由系统初始化段、键盘识别、键值处理、蜂鸣器处理,以及6位共阴极LED显示器扫描显示子程序,T0中断子程序,时间调整子程序组成第3章硬件设计
3.1AT89C51的介绍AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISPIn-systemprogrammable的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案AT89S51具有如下特点40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,4个中断优先级2层中断嵌套中断,2个16位可编程定时计数器2个全双工串行通信口,内部集成看门狗计时器片内时钟振荡器图3-1为AT89C51在proteus中的引脚图
3.2复位电路为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位一般微机电路正常工作需要供电电源为5V±5%,即
4.75~
5.25V由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过
4.75V低于
5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作 目前为止,单片机复位电路主要有四种类型
(1)微分型复位电路;
(2)积分型复位电路;
(3)比较器型复位电路;
(4)看门狗型复位电路现在详细介绍看门狗复位电路看门狗型复位电路主要利用CPU正常工作时,定时复位计数器,使得计数器的值不超过某一值;当CPU不能正常工作时,由于计数器不能被复位,因此其计数会超过某一值,从而产生复位脉冲,使得CPU恢复正常工作状态典型应用的Watchdog复位电路如图3-2所示此复位电路的可靠性主要取决于软件设计,即将定时向复位电路发出脉冲的程序放在何处一般设计,将此段程序放在定时器中断服务子程序中然而,有时这种设计仍然会引起程序走飞或工作不正常
[3]原因主要是当程序“走飞”发生时定时器初始化以及开中断之后的话,这种“走飞”情况就有可能不能由Watchdog复位电路校正回来因为定时器中断一真在产生,即使程序不正常,Watchdog也能被正常复位为此提出定时器加预设的设计方法即在初始化时压入堆栈一个地址,在此地址内执行的是一条关中断和一条死循环语句在所有不被程序代码占用的地址尽可能地用子程序返回指令RET代替这样,当程序走飞后,其进入陷阱的可能性将大大增加而一旦进入陷阱,定时器停止工作并且关闭中断,从而使Watchdog复位电路会产生一个复位脉冲将CPU复位当然这种技术用于实时性较强的控制或处理软件中有一定的困难http://photo.blog.sina.com.cn/showpic.html\lblogid=4cffe8e00100aef9url=http://static
9.photo.sina.com.cn/orignal/4cffe8e0t537a10764b98\t_blank图3-2看门狗型复位电路
3.3按键电路本设计的按键共有四个,包括有系统复位按钮、开始/暂停按钮、时间位选择按钮、时间位调整按钮四个按钮分别接入P
1.
0、P
1.
1、P
1.
2、P
1.3接线如图3-3所示
3.4显示电路由于本设计要求倒计时范围最大为60分钟,由LED显示模块显示剩余时间,显示格式为XX(分)XX(秒).X,精确到
0.1s的整数倍,故采用6位共阴极LED显示器7SEG-MPX6-CC-BLUE通常在显示上我们采用的方法一般包括两种一种是静态显示,另一种是动态显示其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少在本设计中根据实际情况采用的是动态显示方法引脚图如下图3-4所示图3-4六位共阴极LED显示器引脚图显示器采用一个六位共阴极LED显示器,来实现显示器的动态扫描,八个二极管连接一个阴极的结构,只要另一段为高电平,二极管就会发光,从而形成一段将八段顺序排列后就成为具有一定编码的共阴显示器了动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序显示电路如图3-5所示图3-5显示电路接线图
3.5蜂鸣器电路设计要求倒计时时间到时要有声音提醒信号产生,可选择一只蜂鸣器来实现这一功能选用电平式蜂鸣器蜂鸣器电路与单片机的接口蜂鸣器的输入接P
1.0口,另一端接地当P
1.0=1时,蜂鸣器中有电流通过,而产生蜂鸣声当P
1.0=0时,蜂鸣器不发声连接图如图3-6所示图3-6蜂鸣器电路接线图第4章软件设计
4.1主程序设计所以主程序的设计一般包括主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等等
(1)程序的起始地址MCS-51系列单片机复位后,(PC)=0000H,而0003H~002BH分别为个中断源的入口地址所以,编程也应在0000H处写一跳转指令当CPU接受到中断请求信号并予以响应后,CPU把当前的PC内容压入栈中进行保护,然后转入响应的中断服务程序入口处执行一般在响应的中断服务程序入口处写一条跳转指令,并以跳转指令的目标地址作为中断服务程序的其始地址进行编程
(2)主程序的初始化内容所谓初始化,是对用到的单片机内部部件或拓展芯片进行初始工作状态设定在本例中,使用了两个中断,即T
0、T1其中
1.T0中断采用T0定时中断工作方式,完成倒计时
2.T1中断采用T1定时中断工作方式,完成蜂鸣器报警
(3)主程序流程图如图4-1所示
4.
1.1倒计时模块设计
(1)定时器T0T1计数初值T0计数初值为TL0=(65536-50000)/256;TH0=(65536-50000)MOD256T1计数初值为TH1=(65536-700)/256;TL1=(65536-700)MOD256工作方式TMOD=00000001H=01H
(2)流程图如图4-2所示图4-2倒计时模块流程图
4.
1.2键盘扫描模块扫描按键情况,并显示在数码管的分数值位按键去抖动的处理由于机械触点的弹性作用,在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间长短由按键的机械特性决定,一般为5~10ms而按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合仅做一次处理,键抖动可用硬件和软件两种方法消除本设计采用软件方法,程序框图如图4-3所示图4-3按键去抖框图
4.2时间调整子程序设计时间调整子程序包括两个按钮时间位选择和时间值设定首先时间位选择按钮选择显示器时钟的时位中的十位、个位,或则分钟的十位、个位等,选定时间位后,按下时间位调整按钮,依次+1,在0~9之间选择数值,传送到显示器显示流程图如图4-4所示
4.3显示子程序设计由于该系统使用的是六位LED显示器显示倒计时,因此显示采用动态扫描显示方法,即由显示器扫描显示子程序控制显示器逐个循环从左至右依次点亮各个显示器这样虽然在任一时刻只要一个显示器点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果一样显示器扫描显示子程序显示每一位用如图4-5所示流程方法完成图4-5显示子程序流程图
4.4复位程序设计按钮与单片机P
1.0引脚相连,当每次按下该按钮后,系统将通过软件实现对倒计时器复位功能在主程序运行过程中,只要系统识别到与单片机P
1.0引脚相连的按键按下,程序则会转去执行复位程序,完成对寄存单元的清零,显示器各位的显示数寄存单元的复位,执行完毕后,返回主程序流程图如4-6所示图4-6复位程序流程图第5章系统调试
5.1软件仿真设置倒计时初值按下开始/暂停,开始倒计时再按下开始/暂停,倒计时暂停设置从1分钟开始倒计时,首先,按下复位键,再按下“时间位选择”,显示器显示“
00.
10.0”再按1次“时间位选择”,调至分钟的个位,再按1次“时间位调整”,将分钟个位调至为“1”在按下“时间位选择”,调至秒钟的十位,按“时间位调整”,将秒钟的十位调至为“0”再按下“时间位选择”调至显示器的最后一个空白位,显示情况如下图按下“开始/暂停”,倒计时器开始从一分钟处倒计时当倒计时器到达“
00.
00.0”的时候,蜂鸣器有电流通过,信号显示变为红色,蜂鸣器报警
5.2硬件调试这个电路是在老师的指导下设计的,电路的设计在理论上完全行得通,不过接线是设计中最关键的一步,我的接线原则是从全局出发,逐个模块连接调试,最后总体调试在这个指导思想下,我的安装还算是是成功的逐个模块接线再调试,可以为总体调试省去很多时间,只要每个模块正常运行,几个模块通过地址总线连接之后,就不会出现太大的问题了调试前的直观检查
1、连线是否正确,在通电之前应先检查一下电路的连线是否正确,包括错线,少线和多线的情况查找的方法有按照电路图检查安装的线路,这种方法的特点是,根据电路图来确定,按一定的顺序逐一检查安装好的线路,由此,可容易查出错线和少线的情况,还有一种方法就是按照实际的线路来对照原理电路进行查线,这是一种以元件为中心进行查线的方法把每个元件引脚的连线一次查清,检查每个接线处在电路图上是否存在,这种方法不但可以查出错线和少线,还容易查处多线的情况
2、元器件安装时情况检查元、器见引脚之间有无短路;连接处有无接触不良;二极管和电容极性等是否连接有误电源、信号源连接是否正确
4、电源端对地是否存在短路,在通电前,断开一根电源线,用万用表检查电源对地端是否存在短路第六章总结
6.1设计心得及体会该倒计时器是基于定时而设计的实现计时报警的装置由键盘扫描、动态LED显示电路、报警三大部分构成装置利用AT89C51单片机构成电路,以实现对计时时间的控制同时装置还用一个由电平控制的报警装置,用以实现倒计时时间到时进行声音提示本装置的最大特点是实时性强,可操作性好因为采用了矩阵式键盘控制,能够随时改变倒计时时间,所以装置能够应对不同的要求而做出相应的调整,以适应不同的环境看事物要辩证的看本装置也存在一些缺点值得注意如当按键开关出现问题时,系统会出现错误,甚至误报警如果能采用红外线控制则可避免这一问题一般倒计时器并不是单独使用,可以与一些需要用到定时报警的大型装置相互配合使用,实现其自身的价值定时报警装置越来越受人们关注,从计时几秒到几个小时不等,所选用的器件个不同,功能越来越先进所以,将单片机技术与实际结合起来,具有非常广阔的应用前景作为一名自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的在已度过的大学时间里,我们大多数接触的是专业课我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台我在整个设计过程中懂得了许多东西当遇到一不了的问题,跟同伴一起商量、合作,或许能收到事半功倍的效果不管学什么,一定要打好基础,并将其学好、学精,但空有知识也不一定就能说明什么,还得能为己所用;还有更重要的是培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦虽然这个设计做的不是很完美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益;最后也是我感触比较深的一点这次课程设计时为数不多的独立完成的一次虽然过程中遇到很多困难让自己犯愁过彷徨过急躁过可当自己很快调整好心态从跌倒的地方爬起来继续最后取得成功不止是成功后的喜悦也是一次锻炼!通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质,并将理论与实际相结合,理论与实际同样重要
6.2参考文献
[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002
[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000
[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000
[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社2000
[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001
[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001
[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001
[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社2002
[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002附录附录A程序清单ORG0000HAJMPMAINORG000BH;T0中断程序入口地址AJMPT0ZDORG00100HMAIN:CLRTR0;主程序开始CLRP
3.0;关闭蜂鸣器CLR20H.0;开始/暂停标志位,使程序处于等待开始/暂停键按下MOV40H#00H;
0.1S位查表码MOV41H#00H;秒钟个位位查表码MOV42H#00H;秒钟十位位查表码MOV43H#00H;分钟个位位查表码MOV44H#06H;分钟十位位查表码MOV45H#00H;状态显示管查表码MOV46H#02H;定时器定时次数SETBEA;开总中断SETBET0;开定时器T0中断MOVTMOD#01H;定时器工作方式0MOVTL0#0B0H;定时初值,采用50MS定时MOVTH0#3CHJPJC:LCALLXSCX;显示倒计时初值
60.
00.0XSCX进入键盘检测程序MOVP1#0FFH;判断复位键是否按下JBP
1.0JC12LCALLXDYS;调用消抖延时程序(XDYSJBP
1.0JC12PP10:JNBP
1.0DP10;等待按键按下AJMPMAIN;复位键按下后转到主程序MAIN重新开始JC12:MOVP1#0FFH;判断设置键是否按下JBP
1.2JC11LCALLXDYSJBP
1.2JC11PP12:JNBP
1.2DP12;调时设置键按下后转到调时子程序TSCXACALLTSCXJC11:MOVP1#0FFH;判断开始/暂停键是否按下JBP
1.1JPJCLCALLXDYSJBP
1.1JPJCPP11:JNBP
1.1DP11CPL20H.0;将标志位取反JB20H.0KSJS;开始/暂停标志为1则开始计数KSJSCLRTR0AJMPJPJC;继续检测键盘按键情况JPJCDP10:LCALLXSCX;等待按键按下时,调用显示程序,防止显示管没显示AJMPPP10DP11:LCALLXSCXAJMPPP11DP12:LCALLXSCXAJMPPP12KSJS:SETBP
2.5;JBP
3.0JPJC;若蜂鸣器响,则不启动计时器SETBTR0;启动计时器TOKSJSAJMPJPJC;显示子程序XSCX:MOVDPTR#TAB;显示子程序XSCXMOVA40HMOVCA@A+DPTRMOVP0#0FFH;关闭显示.MOVP2A;输出
0.1S位的显示段码.CLRP
0.0;P
2.0=0ACALLXSYSMOVDPTR#TAB1;MOVA41HMOVCA@A+DPTRMOVP0#0FFH;关闭显示.MOVP2A;输出秒钟个位的显示码.CLRP
0.1;P
2.1=0ACALLXSYSMOVDPTR#TABMOVA42HMOVCA@A+DPTRMOVP0#0FFH;关闭显示.MOVP2A;输出秒钟十位位的显示段码.CLRP
0.2;P
2.2=0ACALLXSYSMOVDPTR#TAB1MOVA43HMOVCA@A+DPTRMOVP0#0FFH;关闭显示.MOVP2A;输出分钟个位的显示段码.CLRP
0.3;P
2.3=0ACALLXSYSMOVDPTR#TABMOVA44HMOVCA@A+DPTRMOVP0#0FFH;关闭显示.MOVP2A;输出分钟十位的显示段码.CLRP
0.4;P
2.4=0ACALLXSYSZBTC:RET;T0中断子程序T0ZD:CLREA;T0中断子程序关中断(T0ZDCLRET0CLRTR0DJNZ46HTCZDMOV46H#02H;当定时两次后重新给计时次数赋值为2MOVR0#40H;减1计数R0为40HCJNE@R0#01HR040INCR0;R0为41HCJNE@R0#00HDEC1INCR0;R0为42HCJNE@R0#00HDEC1INCR0;R0为43HCJNE@R0#00HDEC1INCR0;R0为44HCJNE@R0#00HDEC1AJMPJYFHR040:CJNE@R0#00HDEC1;R0为40HINCR0;R0为41HCJNE@R0#00HR041INCR0;R0为42HCJNE@R0#00HR042INCR0;R0为43HCJNE@R0#00HR043INCR0;R0为44HCJNE@R0#00HR044AJMPZJFHR041:MOV40H#09HDEC41HAJMPTCZDR042:MOV40H#09HMOV41H#09HDEC42HAJMPTCZDR043:MOV40H#09HMOV41H#09HMOV42H#05HDEC43HAJMPTCZDR044:MOV40H#09HMOV41H#09HMOV42H#05HMOV43H#09HDEC44HAJMPTCZDDEC1:DEC40HTCZD:MOVTH0#3CH;退出中断子程序MOVTL0#0B0HSETBEASETBET0SETBTR0AJMPZZFHJYFH:DEC40HZJFH:SETBP
3.0;启动蜂鸣器ZZFH:RETI;时间调整子程序TSCX:CLRTR0;调时子程序TSCXCLR20H.0;使时间调整时处于暂停状态MOV40H#00HMOV41H#00HMOV42H#01HMOV43H#00HMOV44H#00HMOVR0#44HJCTZ:ACALLXSCX;先调用显示程序,扫描时间调整键MOVP1#0FFHJBP
1.3NEXT;+1键盘没有按下ACALLXDYS;键盘按下,消抖延时JBP
1.3NEXTDEN0:JNBP
1.3DEN1;等待按键释放AJMPJYCX;+1键按下后,跳转到+1程序NEXT:MOVP1#0FFHJBP
1.2JCTZACALLXDYS;键盘按下,消抖延时JBP
1.2JCTZDEN2:JNBP
1.2DEN3;等待按键释放MOVA44HCJNEA#06HDEC4;设置键再次按下,将调整指针指向下一位AJMPTCTSDEC4:DECR0CJNER0#3FHJCTZ;若R0为3FH则退出调时程序AJMPTCTS;若@R0不为#06H但R0为#3FH,则跳出调时程序JYCX:CJNER0#44HXIA1;加1调时部分CJNE@R0#06HINCR;调整分钟十位AJMPSET0XIA1:CJNER0#43HXIA2AJMPTZ09;调整分钟个位XIA2:CJNER0#42HXIA3CJNE@R0#05HINCR;调整秒钟十位AJMPSET0XIA3:CJNER0#41HXIA4AJMPTZ09;调整秒钟个位XIA4:CJNER0#40HTCTSTZ09:CJNE@R0#09HINCR;调整
0.1秒位SET0:MOV@R0#00HAJMPJCTZINCR:INC@R0AJMPJCTZDEN1:ACALLXSCXAJMPDEN0DEN3:ACALLXSCXAJMPDEN2TCTS:MOVTH0#3CH;退出调时程序MOVTL0#0B0HMOV45H#00H;将状态显示码更改为D(等待状态)RETXDYS:ACALLXSCX;消抖延时程序,延时10ms(2*5ms)ACALLXSCX;采用调用显示子程序延时以改善LED显示效果RETXSYS:MOV55H#20;显示延时程序,延时1msDEL2:MOV56H#25DEL1:DJNZ56HDEL1DJNZ55HDEL2RETTAB:DB3FH06H5BH4FH66H6DH7DH07H7FH6FHTAB1:DB0BFH86H0DBH0CFH0E6H0EDH0FDH87H0FFH0EFHEND附录B总电路图单片机按键输入电路蜂鸣器电路开关电路延时子程序LED显示电路图2-1系统总体构架框图主程序数码管动态扫描模块当前时间倒计时模块输入倒计时时间模块蜂鸣器报警模块图2-2倒计时器设计框图图3-1AT89C51的引脚图图3-3按键电路接线图主程序设置各中断服务程序的入口地址相关寄存器清零设置数码管显示初始状态按键扫描显示按下的数字进行倒计时时间到零否报警YN图4-1主程序流程图开始倒计时寄存器清零设置定时器0工作方式判断按键次数N启动定时器0关闭定时器01次2次3次等待中断T1中断发声提示达到最大值开始有键闭合?调用延时子程序Y有键闭合?确定闭合的YNN开始N时间键闭合?Y显示器停止,显示00100时间位选择数值调整显示器显示图4-4时间调整子程序流程图从89C51的P1口送显示器位码读相应位存储单元数据(中间两位显示“——”无此步)由读得数据查表确定段码由89C51送相应显示器位下一位显示上一位显示结束开始开始P
1.0为0显示器复位结束。