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

下载本文档

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

文档简介

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

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

以AT89S52为核心控制器件作息时间控制钟,由键盘、声音输出模块、电源转换模块和存储模块四某些构成。它运用AT89S52定期/计数器来计算时间,并用存储器记录数据,保证了系统可靠性。AT89S52单片机是整个设计核心控制器件,依照从键盘接受数据控制整个系统工作流程。整体性好,人性化强、可靠性高,实现了对时间控制智能化,挣脱了老式由人来控制时间长短不便,是当代学校必不可少设备。本次校园作息时间控制系统重要用于学校,对某些以24小时为周期开关量进行自动控制。如上下课打铃及扩音设备开与关。采用AT89S52单片机来实现对上述开关量控制,运用24C02芯片来存储数据,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简朴、工作稳定可靠、价廉、控制时间精准及系统体积小等长处。核心词:作息时间控制;AT89S52;24C02目录1绪论 11.1 背景简介 11.2 作息时间控制钟概述 12硬件简介 22.1 硬件仿真环境简介 22.2 系统整体设计 22.3 控制钟硬件设计 32.4系统整体电路图 43作息时间控制钟软件设计 63.1 总体简介 63.2 软件环境简介 63.3 流程图简介 63.3.1系统主程序 63.3.2系统数据读写子程序 103.3.3显示子程序 143.3.4报警扫描子程序 193.3.5键盘扫描子程序 203.3.6设立时钟子程序 223.3.7T1定期器中断子程序 254系统调试 285结论 296附录 246.1参照文献 306.2 重要元件列表 311绪论1.1背景简介随着计算机技术发展和在控制系统中广泛应用,以及设备向小型化、智能化发展,作为高新技术之一单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强生命力。进入21世纪以来,开发推出单片机公司诸多,各种高性能单片机芯片市场也异常活跃,新技术不断采用,更加使单片机种类、性能以及应用领域不断扩大和提高。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语言语法来开发,与汇编相比,C语言在功能上、构造性、可读性、可维护性上有明显优势,因而易学易用,并且大大提高了工作效率和项目开发周期,她还能嵌入汇编,您可以在核心位置嵌入,使程序达到接近于汇编工作效率。KeilC51软件提供丰富库函数和功能强大集成开发调试工具,全Windows界面,使您能在很短时间内就能学会使用keilc51来开发您单片机应用程序。此外重要一点,只要看一下编译后生成汇编代码,就能体会到KeilC51生成目的代码效率非常之高,多数语句生成汇编代码很紧凑,容易理解。在开发大型软件时更能体现高档语言优势。3.3流程图简介软件设计以定期器T1、T2定期、内存读取、时钟显示、键盘扫描、报警程序为主程序。在设计中运用单片机时钟计时集成电路完毕计时任务,并500ms向单片机发一种中断,中断子程序有时钟显示及时间比较,如比较相等,则阐明作息时间已到,发出指令控制电铃开、关操作。3.3.1系统主程序依照控制钟设计规定,设计程序主流程图如图所示:开始设立定期器设立定期器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起始子程序读开始错误刷新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输出秒闪原始状态未达到判断与否达到满分满秒时间置0时间加1铃响20S结束结束图3.7T1定期器中断

温馨提示

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

评论

0/150

提交评论