论基于单片机的作息时间控制钟系统的设计样本_第1页
论基于单片机的作息时间控制钟系统的设计样本_第2页
论基于单片机的作息时间控制钟系统的设计样本_第3页
论基于单片机的作息时间控制钟系统的设计样本_第4页
论基于单片机的作息时间控制钟系统的设计样本_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

课程设计任务书分院信息科学和工程学院专业自动化学生姓名王利伟学号设计题目基于单片机作息时间控制钟系统设计——软件设计课程设计内容及要求:内容:1设计电路,选择器件2利用Protel画原理图3编程,调试4焊接电路,调试要求:1.系统时间设计,设计以二十四小时为周期时间钟。2.LED数码管显示时间。3.设计键盘,经过键盘修改时间、设定闹铃。进度及安排:(10天)1.查资料(2天)2.设计电路画电路图(2天)3.编程和调试(2天)4.焊接硬件电路并调试(2天)5.写汇报(2天)指导老师(签字):年月日分院院长(签字):年月日摘要单片机作息时间控制系统设计目标和意义:伴随计算机技术发展和在控制系统中广泛应用,和设备向小型化、智能化发展,作为高新技术之一单片机以其体积小、功效强、价格低廉、使用灵活等优势,显示出了很强生命力。进入二十一世纪以来,开发推出单片机企业很多,多种高性能单片机芯片市场也异常活跃,新技术不停采取,愈加使单片机种类、性能和应用领域不停扩大和提升。因其功耗低,超高型,低成本,功效完整,在中国越来越受到用户重视和广泛使用。伴随科技进步和技术不停提升。一块大而复杂模拟电路花费了您巨大精力,繁多元器件增加了您成本。而现在,只需要一块几厘米见方单片机,写入简单程序,就能够使您以前电路简单很多。相信您在使用并掌握了单片机技术后,不管在您以后开发或是工作上,

一定会带来意想不到惊喜。

以AT89S52为关键控制器件作息时间控制钟,由键盘、声音输出模块、电源转换模块和存放模块四部分组成。它利用AT89S52定时/计数器来计算时间,并用存放器统计数据,确保了系统可靠性。AT89S52单片机是整个设计关键控制器件,依据从键盘接收数据控制整个系统工作步骤。整体性好,人性化强、可靠性高,实现了对时间控制智能化,摆脱了传统由人来控制时间长短不便,是现代学校必不可少设备。此次校园作息时间控制系统关键用于学校,对部分以二十四小时为周期开关量进行自动控制。如上下课打铃及扩音设备开和关。采取AT89S52单片机来实现对上述开关量控制,利用24C02芯片来存放数据,设有六位数码管、能够实时显示时间、系统还设有输入键盘,用以修改实时时钟,表现了系统简单、工作稳定可靠、价廉、控制时间正确及系统体积小等优点。关键词:作息时间控制;AT89S52;24C02目录2.4系统整体电路图 43.3.1系统主程序 63.3.2系统数据读写子程序 103.3.3显示子程序 143.3.4报警扫描子程序 193.3.5键盘扫描子程序 203.3.6设置时钟子程序 223.3.7T1定时器中止子程序 25285结论 2940311绪论1.1背景介绍伴随计算机技术发展和在控制系统中广泛应用,和设备向小型化、智能化发展,作为高新技术之一单片机以其体积小、功效强、价格低廉、使用灵活等优势,显示出了很强生命力。进入二十一世纪以来,开发推出单片机企业很多,多种高性能单片机芯片市场也异常活跃,新技术不停采取,愈加使单片机种类、性能和应用领域不停扩大和提升。16位单片机问世,使得单片机科技含量及应用跃上一个新台阶。因其功耗低,超高型,低成本,功效完整,在中国越来越受到用户重视和广泛使用。本设计是一个含有报时功效作息时间控制钟。它利用AT89S52单片机定时器计时,进行时间计算;在进行时间计算,分每加一时,全部和要求作息时间比较,假如相等则进行对应控制或动作。由键盘和显示部分组成,系统扩展八个按键用于报时及校正时间。现代机关企业,尤其是学校要求对时间加以控制,要按时打铃及播放广播,以确保学习和工作正常运行。本设计实现了这些功效,给学校及其它机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制智能化。1.2作息时间控制钟概述科技进步需要技术不停提升。一块大而复杂模拟电路花费了您巨大精力,繁多元器件增加了您成本。而现在,只需要一块几厘米见方单片机,写入简单程序,就能够使您以前电路简单很多。相信您在使用并掌握了单片机技术后,不管在您以后开发或是工作上,

一定会带来意想不到惊喜。该系统以AT89S52为主体设计,整体性好,人性化强、可靠性高,实现了对时间控制智能化,摆脱了传统由人来控制时间长短不便,是现代学校必不可少设备。2硬件介绍2.1硬件仿真环境介绍:Protues软件是英国Labcenterelectronics企业出版EDA工具软件。它不仅含有其它EDA工具软件仿真功效,还能仿真单片机及外围器件。它是现在最好仿真单片机及外围器件工具。即使现在中国推广刚起步,但已受到单片机爱好者、从事单片机教学老师、致力于单片机开发应用科技工作者青睐。Proteus是世界上著名EDA工具(仿真软件),从原理图布图、代码调试到单片机和外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品完整设计。是现在世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一设计平台,其处理器模型支持8051、HC11、PIC10/DsPIC33、AVR、ARM、8086和MSP430等,立即增加Cortex和DSP系列处理器,并连续增加其它系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多个编译器。支持目前主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。1)提供软件调试功效2)提供丰富外围接口器件及其仿真RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。这么很靠近实际。在训练学生时,能够选择不一样方案,这么更利于培养学生。3)提供丰富虚拟仪器利用虚拟仪器在仿真过程中能够测量外围电路特征,培养学生实际硬件调试能力。4)含有强大原理图绘制功效2.2系统整体设计依据设计要求画出系统框图,图1.1所表示:上拉电阻单片机上拉电阻单片机数码管电源数码管电源驱动电路时钟驱动电路时钟存放器存放器复位电路复位电路响铃键盘电路响铃键盘电路图2.1系统总体框图该系统是由微处理器、存放器、数码显示部分和键盘输入部分所组成。该控制系统用LED数码管显示时、分、秒时间,能够显示实时时钟,显示闹铃时间,尽可能降低时间积累误差,含有秒闪功效。显示电路采取了7407芯片来完成驱功效,利用上拉电阻共同驱动数码管显示时间。系统采取AT89S52作为处理器,利用24C02芯片作为数据存放器,打铃时间点数据存放于非易失存放器存放24C02中,预防掉电丢失数据;能逐一检验、修改、删除已设置打铃时间点和增加打铃时间点。系统还设有输入键盘,用以校正实时时钟,设定闹铃时间,键盘设计简单、易于操作。输出驱动电路部分,利用220V电源为系统提供供电,利用继电器驱动,便于控制220V电铃。同时利用直流——交流转换模块为整个系统提供电源,更方便实际应用。2.3控制钟硬件设计按系统框图分五个部分设计以下图2.1。键盘键盘部分显示部分单片机控制部分响铃部分图2.2硬件系统框图系统以单片机为基础关键,利用24C02芯片能够统计40个闹铃时间,而且能够长时间统计时间,不会造成时间混乱,能够满足正常作息时间设置,简单实用,能够满足正常生活。依据学校作息时间,能够得到需要打铃时间以下表所表示:表2.1作息时间控制表时间事件动作8:00第一节课上课铃响;延时20S8:45第一节课下课铃响;延时20S8:55第二节课上课铃响;延时20S9:40第二节课下课铃响;延时20S10:00第三节课上课铃响;延时20S10:45第三节课下课铃响;延时20S10:55第四节课上课铃响;延时20S11:40第四节课下课铃响;延时20S13:00第五节课上课铃响;延时20S13:45第五节课下课铃响;延时20S13:55第六节课上课铃响;延时20S14:40第六节课下课铃响;延时20S14:50第七节课上课铃响;延时20S15:35第七节课下课铃响;延时20S15:45第八节课上课铃响;延时20S16:30第八节课下课铃响;延时20S16:40第九节课上课铃响;延时20S17:25第九节课下课铃响;延时20S17:35第十节课上课铃响;延时20S18:20第十节课下课铃响;延时20S2.4系统整体电路图系统整体电路图以下图所表示:图2.3作息时间控制钟系统整体电路图3作息时间控制钟软件设计3.1总体介绍硬件平台结构一旦确定,大功效框架即形成。软件在硬件平台上构筑,完成各部分硬件控制和协调。系统功效是由软硬件共同实现,因为软件可伸缩性,最终实现系统功效可强可弱,差异可能很大。所以,软件是本系统灵魂。软件采取模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提升软件可靠性。同时,对软件进行全方面测试也是检验错误排除故障关键手段。本程序用汇编语言设计。3.2软件环境介绍:KeiluVision2是美国KeilSoftware企业出品51系列兼容C语言软件开发系统,使用靠近于传统语法来开发,和相比,C语言在功效上、结构性、可读性、可维护性上有显著优势,所以易学易用,而且大大提升了工作效率和项目开发周期,她还能嵌入汇编,您能够在关键位置嵌入,使程序达成靠近于汇编工作效率。KeilC51软件提供丰富库函数和功效强大集成开发调试工具,全界面,使您能在很短时间内就能学会使用keilc51来开发您单片机应用程序。另外关键一点,只要看一下编译后生成汇编代码,就能体会到KeilC51生成目标代码效率很之高,多数语句生成汇编代码很紧凑,轻易了解。在开发大型软件时更能表现优势。3.3步骤图介绍软件设计以定时器T1、T2定时、内存读取、时钟显示、键盘扫描、报警程序为主程序。在设计中利用单片机时钟计时集成电路完成计时任务,并500ms向单片机发一个中止,中止子程序有时钟显示立即间比较,如比较相等,则说明作息时间已到,发出指令控制电铃开、关操作。3.3.1系统主程序依据控制钟设计要求,设计程序主步骤图图所表示:开始设置定时器T1、T2设置定时器T1、T2调用读取存放器内容程序调用读取存放器内容程序显示时间初值显示时间初值调用动态扫描程序调用动态扫描程序调用报警扫描子程序调用报警扫描子程序调用键盘扫描子程序调用键盘扫描子程序不相等比较键值是否相等调用设置报警子程序调用设置时钟子程序调用设置报警子程序调用设置时钟子程序不等比较键值图3.1主程序步骤图步骤图程序以下:TF2 EQU0CFH;T2中止标志控制位TR2 EQU 0CAH;T2开启/停止控制位ET2 EQU 0ADH;T2许可中止控制位PT2 EQU 0BDH;T2优先级控制位RCAP2L EQU 0CAH;T2自动重载低位RCAP2H EQU 0CBH;T2自动重载高位TL2 EQU 0CCH;T2计数器低位TH2 EQU 0CDH;T2计数器高位I2cStart EQU 55H;I2C开始标志I2cStop EQU 0AAH;I2C结束标志SDA EQU 0B2H;I2C数据线SCL EQU 0B3H;I2C时钟线SHOW_CODE EQU 80H;显示段码SHOW_BIT EQU 0A0H;显示位码KeyFlag EQU 00H;按键标志位S_Flash EQU 01H;秒闪标志位LED_FLAG EQU 02H;LDE显示模式标志位BeforKey EQU22H;上次采样键值NowKey EQU 23H;现在次采样键值LS_S EQU 24H;临时变量1LS_M EQU 25H;临时变量2LS_H EQU 26H;临时变量3CLOCK_DATA0 EQU 27H;时钟秒CLOCK_DATA1 EQU 28H;时钟分CLOCK_DATA2 EQU 29H;时钟时SHOW_MOUDE EQU 2AH;显示模式SHOW_PC EQU 2BH;显示数据指针RingCount EQU 2CH;报警数据个数ShowRing EQU 2DH;显示报警数据地址RINGDATAH EQU2EH;报警数据高位起始地址RINGDATAL EQU 57H;报警数据低位起始地址 ORG0000H MOVSP,#10H SJMPSTART ORG0001BH AJMPINT_T1 ORG0002BH CPLP3.5 CLRTF2 RETI ORG00035HSTART: MOVTH2,#3CH ;设置T2定时50ms MOVTL2,#0B0H MOVRCAP2H,#3CH MOVRCAP2L,#0B0H SETBPT2 SETBET2 MOVTMOD,#60H;设置T1定时500ms(T2中止10次,T1中止5次) MOVTH1,#0FBH MOVTL1,#0FBH SETBET1 ACALLREAD_DATA SETBEA SETBTR2 SETBTR1 MOVCLOCK_DATA0,#0 MOVCLOCK_DATA1,#0 MOVCLOCK_DATA2,#12 SETBLED_FLAG CLRP3.4AGAIN: MOVSHOW_MOUDE,#0 ;显示模式0 MOVSHOW_PC,#CLOCK_DATA0;显示时钟(传时钟地址指针) ACALLDISPLAY ;调用动态扫描子程序 ACALLCOMP_DATA ;调用报警扫描子程序 MOVBeforKey,NowKey ACALLGETKEY ;调用键盘扫描子程序 MOVNowKey,A CJNEA,BeforKey,AGAIN CJNEA,#0,NEXT_KEY0 SETBKeyFlag SJMPAGAINNEXT_KEY0: JNBKeyFlag,AGAIN CLRKeyFlag CJNEA,#1,NEXT_KEY2 ACALLSetTimer ;调用设置时钟子程序 SJMPAGAINNEXT_KEY2: CJNEA,#2,AGAIN ACALLSetRing ;调用设置报警子程序 SJMPAGAIN;--------------------//主程序结束//3.3.2系统数据读写子程序系统中利用24C02存放系统数据,该芯片为单电源供电,工作电压范围为1.8-5.5V,低功耗CMOS技术,自定时写周期,页面写周期经典值为2ms,含有硬件写保护。经过串行I2C总线扩展技术对数据进行读写操作,节省了接口引脚数,只利用两根传输总线就能够实现全双工同时数据传送。其程序步骤图以下:开始调用设置I2C起始子程序调用设置I2C起始子程序读开始错误刷新24C02写入数据读24C02高位数据读取结束读取结束读24C02低位读24C02低位未读完是否读完结束图3.2数据读写子程序步骤图程序以下:I2C_START:;I2C开始 SETBSDA SETBSCL NOP CLRSDANOP CLRSCL RETI2C_STOP:;I2C结束 CLRSDA NOP SETBSCLNOP SETBSDA RETI2C_SEND:;I2C发送一个字节MOVR7,#08 CLRCSEND_BIT: RLCA MOVSDA,CNOP SETBSCL NOP CLRSCLDJNZR7,SEND_BIT SETBSDANOP SETBSCL NOP CLRSCL RETI2C_RECEIVE: ;I2C接收一个字节MOVR7,#08RECEIVE_BIT: SETBSCL NOPMOVC,SDA RLCA CLRSCL DJNZR7,RECEIVE_BIT SETBSDA NOP SETBSCL NOP CLRSCL RETREAD_24C02: ;读24C02 ACALLI2C_START MOVA,#0A0H ACALLI2C_SEND MOVA,R0 ACALLI2C_SEND ACALLI2C_START MOVA,#0A1H ACALLI2C_SEND ACALLI2C_RECEIVE ACALLI2C_STOP RETWRITE_24C02: ;写24C02 ACALLI2C_START MOVA,#0A0H ACALLI2C_SEND MOVA,R0 ACALLI2C_SEND MOVA,R1 ACALLI2C_SEND ACALLI2C_STOP RETREAD_DATA:;--------------------从24C02中读取数据更新内存 MOVR2,#10READ_START_AGAIN: ;读开始标志位 MOVR0,#0 CLREA ACALLREAD_24C02 SETBEA CJNEA,#I2cSTART,READ_SUB SJMPWRITE_STOPREAD_SUB: DJNZR2,READ_START_AGAIN ;读开始位错误刷新24C02WRITE_STOP: XRLA,#I2cSTART JZREAD_NEXT1 MOVR0,#0 MOVR1,#I2cStart CLREA ACALLWRITE_24C02 ;写开始字节 SETBEA MOVR7,#5 ACALLDelay1ms MOVR0,#1 MOVR1,#I2cStop CLREA ACALLWRITE_24C02 ;写结束字节 SETBEA MOVR7,#5 ACALLDelay1msREAD_NEXT1: MOVR0,#1;读数据地址;R1为间地址寻址寄存器 MOVR3,#0;读数据总数;R2为数据缓存器READ_DATA_AGAIN: CLREA ACALLREAD_24C02 ;读高位 SETBEA INCR0 CJNEA,#I2cStop,READ_NEXT2 ;判定是否是结束标志 SJMPREAD_EXITREAD_NEXT2: MOVR2,A MOVA,#RINGDATAH ADDA,R3 MOVR1,A MOVA,R2 MOV@R1,A CLREA ACALLREAD_24C02 ;读低位 SETBEA INCR0 MOVR2,A MOVA,#RINGDATAL ADDA,R3 MOVR1,A MOVA,R2 MOV@R1,A INCR3 CJNER3,#40,READ_DATA_AGAINREAD_EXIT: MOVRingCount,R3 ;更新报警数据个数 RET3.3.3显示子程序对多位LED显示器动态显示,通常全部是采取动态扫描方法进行显示,即逐一循环点亮各位显示器。这么即使在任一时刻只有一位显示器被点亮,不过因为间隔时间较短,且人眼含有视觉残留效应,看起来和全部显示器连续点亮一样。为了实现LED显示器动态扫描,除了要给显示器提供输入之外,还要对显示器加位选择控制,这就是通常所说段控和位控。所以多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位信号;另一个用于输出段控制信号。其显示模式有五种:0:正常显示数据;1:显示调试模式(0,1位闪烁);2:显示调试模式(2,3位闪烁);3:显示调试模式(4,5位闪烁);4:显示特殊字符模式。其程序步骤图以下:开始A=0A=0调用得到位数据子程序调用得到位数据子程序未完全显示显示模式为4则显示NULL数码管显示模式为4则显示NULL显示数据屏蔽显示数据屏蔽显示数据屏蔽显示数据屏蔽结束图3.3显示子程序步骤图程序以下:SHOW_NUMBER:;段码 DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DB40HSHOW_NULL:;空码 DB00H,38H,38H,3EH,37H,00HSHOW_BIT_CODE:;位码 DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH;------------------DISPLAY:;显示子程序 MOVR1,#6SHOW_AGAIN: MOVA,SHOW_MOUDE XRLA,#4 JZSHOW_CHAR MOVA,R1 ACALLGETCODE ;调用得到位数据子程序 MOVDPTR,#SHOW_NUMBER MOVCA,@A+DPTR SJMPSHOW_TO_CODESHOW_CHAR:;显示模式为4则显示字符NULL MOVDPTR,#SHOW_NULL MOVA,R1 DECA MOVCA,@A+DPTRSHOW_TO_CODE: MOVSHOW_BIT,#0FFH;-------显示数据屏蔽 MOVSHOW_CODE,A MOVA,R1 MOVDPTR,#SHOW_BIT_CODE-1 MOVCA,@A+DPTR MOVSHOW_BIT,A MOVR7,#1 ACALLDelay1ms DJNZR1,SHOW_AGAIN MOVSHOW_BIT,#0FFH;--------显示数据屏蔽 RETDelay1ms:;-----------延时1MS MOVR5,#2DELAY: MOVR6,#0 DJNZR6,$ DJNZR5,DELAY DJNZR7,Delay1ms RETGETCODE:;得到位数据子程序 MOVB,#10 DECARLA MOVDPTR,#FIND_BIT JMP@A+DPTRFIND_BIT:;位散转 SJMPSHOW_0 SJMPSHOW_1 SJMPSHOW_2 SJMPSHOW_3 SJMPSHOW_4 SJMPSHOW_5SHOW_0: ;得到位0数据 MOVR0,SHOW_MOUDE CJNER0,#1,SHOW_LED_0 JBS_Flash,SHOW_LED_0 MOVA,#10 RETSHOW_LED_0: MOVR0,SHOW_PC MOVA,@R0 DIVAB MOVA,B RETSHOW_1: ;得到位1数据 MOVR0,SHOW_MOUDE CJNER0,#1,SHOW_LED_1 JBS_Flash,SHOW_LED_1 MOVA,#10 RETSHOW_LED_1: MOVR0,SHOW_PC MOVA,@R0 DIVAB RETSHOW_2: ;得到位2数据 MOVR0,SHOW_MOUDE CJNER0,#2,SHOW_LED_2 JBS_Flash,SHOW_LED_2 MOVA,#10 RETSHOW_LED_2: MOVR0,SHOW_PC INCR0 MOVA,@R0 DIVAB MOVA,B RETSHOW_3: ;得到位3数据 MOVR0,SHOW_MOUDE CJNER0,#2,SHOW_LED_3 JBS_Flash,SHOW_LED_3 MOVA,#10 RETSHOW_LED_3: MOVR0,SHOW_PC INCR0 MOVA,@R0 DIVAB RETSHOW_4: ;得到位4数据 MOVR0,SHOW_MOUDE CJNER0,#3,SHOW_LED_4 JBS_Flash,SHOW_LED_4 MOVA,#10 RETSHOW_LED_4: MOVR0,SHOW_PC INCR0 INCR0 MOVA,@R0 DIVAB MOVA,B RETSHOW_5: ;得到位5数据 MOVR0,SHOW_MOUDE CJNER0,#3,SHOW_LED_5 JBS_Flash,SHOW_LED_5 MOVA,#10 RETSHOW_LED_5: MOVR0,SHOW_PC INCR0 INCR0 MOVA,@R0 DIVAB RET3.3.4报警扫描子程序经过扫描时钟和定时时间是否相同来控制电铃,其程序步骤图以下:开始未到时间比较铃响铃响数据加一数据加一结束图3.4报警扫描子程序步骤图程序以下:COMP_DATA: ;报警扫描子程序 MOVA,RingCount JZCOMP_EXIT MOVA,CLOCK_DATA0 JNZCOMP_EXIT MOVR2,RingCountCOMP_LOOP: MOVA,RINGDATAH CJNEA,CLOCK_DATA2,NEXT_COMP MOVA,RINGDATAL CJNEA,CLOCK_DATA1,NEXT_COMP SETBP3.4 SJMPCOMP_EXITNEXT_COMP: INCR0 INCR1 DJNZR2,COMP_LOOPCOMP_EXIT: RET3.2.5键盘扫描子程序系统利用独立式键盘,作为系统输入设备,能够实现对时钟调整,和对响铃报警时间设置,含有设计简单,方便,使用特点。其步骤图以下:开始键值相等和键值1比较和键值2比较和键值3比较和键值4比较和键值5比较和键值6比较和键值7比较和键值8比较结束图3.5键盘扫描子程序步骤图程序以下:GETKEY:;扫描键盘得到键值子程序 MOVA,P1 CJNEA,#0FEH,GOTO_KEY2 MOVA,#1 RETGOTO_KEY2: CJNEA,#0FDH,GOTO_KEY3 MOVA,#2 RETGOTO_KEY3: CJNEA,#0FBH,GOTO_KEY4 MOVA,#3 RETGOTO_KEY4: CJNEA,#0F7H,GOTO_KEY5 MOVA,#4 RETGOTO_KEY5: CJNEA,#0EFH,GOTO_KEY6 MOVA,#5 RETGOTO_KEY6: CJNEA,#0DFH,GOTO_KEY7 MOVA,#6 RETGOTO_KEY7: CJNEA,#0BFH,GOTO_KEY8 MOVA,#7 RETGOTO_KEY8: CJNEA,#07FH,KEY_EXIT MOVA,#8 RETKEY_EXIT: MOVA,#0 RET3.3.6设置时钟子程序:利用键盘设置,经过模式左移右移来实现对时间修改设置和保留。其程序步骤图以下:开始调用显示扫描程序调用显示扫描程序调用报警扫描子程序调用报警扫描子程序调用键值扫描程序调用键值扫描程序键值相等比较键值模式左移调整时间模式左移调整时间保留退出保留退出结束图3.6设置时钟子程序步骤图程序以下:SetTimer: ;时钟设置子程序 MOVLS_S,CLOCK_DATA0 ;时钟数据放临时变量 MOVLS_M,CLOCK_DATA1 MOVLS_H,CLOCK_DATA2 MOVSHOW_MOUDE,#1 ;显示模式1 MOVSHOW_PC,#LS_S ;显示数据指针转临时变量SetTimer_Again: ACALLDISPLAY ;调用显示扫描子程序 ACALLCOMP_DATA ;调用报警扫描子唾弃 MOVBeforKey,NowKey ACALLGETKEY ;调用键值扫描子程序 MOVNowKey,A CJNEA,BeforKey,SetTimer_Again CJNEA,#0,SetTimer_KEY0 SETBKeyFlag SJMPSetTimer_AgainSetTimer_KEY0: JNBKeyFlag,SetTimer_Again CLRKeyFlag ;健值控制 CJNEA,#03,SetTimer_KEY4 ;模式左移 MOVA,SHOW_MOUDE CJNEA,#3,SHOW_MOUDE_ADD MOVSHOW_MOUDE,#1 AJMPSetTimer_AgainSHOW_MOUDE_ADD: INCSHOW_MOUDE AJMPSetTimer_AgainSetTimer_KEY4: CJNEA,#04,SetTimer_KEY5 MOVA,SHOW_MOUDE CJNEA,#1,ADD_M ;秒加 MOVA,LS_S CJNEA,#59,NOT_RESET_S MOVLS_S,#0 AJMPSetTimer_AgainNOT_RESET_S: INCLS_S AJMPSetTimer_AgainADD_M: ;分加 CJNEA,#2,ADD_H MOVA,LS_M CJNEA,#59,NOT_RESET_M MOVLS_M,#0 AJMPSetTimer_AgainNOT_RESET_M: INCLS_M AJMPSetTimer_AgainADD_H: ;时加 MOVA,LS_H CJNEA,#23,NOT_RESET_H MOVLS_H,#0 AJMPSetTimer_AgainNOT_RESET_H: INCLS_H AJMPSetTimer_AgainSetTimer_KEY5: CJNEA,#05,SetTimer_KEY6 MOVA,SHOW_MOUDE CJNEA,#1,SUB_M ;秒减 MOVA,LS_S CJNEA,#0,NOT_SET_S MOVLS_S,#59 AJMPSetTimer_AgainNOT_SET_S: DECLS_S AJMPSetTimer_AgainSUB_M: ;分减 CJNEA,#2,SUB_H MOVA,LS_M CJNEA,#0,NOT_SET_M MOVLS_M,#59 AJMPSetTimer_AgainNOT_SET_M: DECLS_M AJMPSetTimer_AgainSUB_H: ;时减 MOVA,LS_H CJNEA,#0,NOT_SET_H MOVLS_H,#23 AJMPSetTimer_AgainNOT_SET_H: DECLS_H AJMPSetTimer_AgainSetTimer_KEY6: ;模式右移 CJNEA,#06,SetTimer_KEY7 MOVA,SHOW_MOUDE CJNEA,#1,SHOW_MOUDE_SUB MOVSHOW_MOUDE,#3 AJMPSetTimer_AgainSHOW_MOUDE_SUB: ;退出 DECSHOW_MOUDE AJMPSetTimer_AgainSetTimer_KEY7: CJNEA,#07,SetTimer_KEY8 SJMPEXIT_SetTimerSetTimer_KEY8: ;保留退出 CJNEA,#08,RETURN_SetTimer MOVCLOCK_DATA0,LS_S MOVCLOCK_DATA1,LS_M MOVCLOCK_DATA2,LS_H SJMPEXIT_SetTimerRETURN_SetTimer: AJMPSetTimer_AgainEXIT_SetTimer: RET3.3.7T1定时器中止子程序主程序利用T1定时器中止来修改时间值,同时修改秒闪状态、数码管闪烁,同时修改响铃状态,当响铃经过20S后断电。其步骤图以下:开始堆栈操作堆栈操作A=1判定数码管标志秒闪标志位置1秒闪标志位置1输出秒闪原始状态输出秒闪原始状态未达成判定是否达成满分满秒时间置0时间置0时间加1时间加1铃响20S结束铃响20S结束结束图3.7T1定时器中

温馨提示

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

评论

0/150

提交评论