AT89C51单片机电子时钟的设计_第1页
AT89C51单片机电子时钟的设计_第2页
AT89C51单片机电子时钟的设计_第3页
AT89C51单片机电子时钟的设计_第4页
AT89C51单片机电子时钟的设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...基于AT89C51单片机电子时钟的设计摘要单片机是集CPU、RAM、ROM、定时、计数和多种接口于一体的微控制器。近年来随着计算机在社会领域的渗透和大规模集成电路的开展,单片机的应用正在不断地走向深入而51单片机是各单片机中最为典型和最有代表性的一种。由于它具有功能强,体积小,功耗低,价格廉价,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,本文介绍单片机AT89C51结合74LS373设计时钟定时控制器实现的方案。74LS373为三态输出的八组缓冲器。本系统将单片机AT89C51内部时钟读出并通过七段数码管(LED)显示出来,通过按键设定的时间来改变系统的闹钟时间,单片机依据设定的时间来响铃,从而实现了系统的智能化。关键词:AT89C51电子时钟74LS373AbstractMCUisaCPU、RAM、ROM、timing、countingandmultipleinterfacesinonemicrocontroller.Inrecentyears,withthefieldofcomputerpenetrationinthecommunityandthedevelopmentoflarge-scaleintegratedcircuits,single-chipapplicationsissteadilymovingtowarddepthand51single-chipisthemosttypicalandmostrepresentativeone.Becauseofitsstrongfunctions,smallsize,lowpowerconsumption,cheap,reliableandeasytouseandsoon,itisparticularlysuitedtocontrolsystemsand,morewidelyusedinautomaticcontrol,intelligentinstruments,meters,dataacquisition,militaryproducts,aswellashouseholdappliancesandotherfields,Thisarticledescribesthedesignofsingle-chipmicrocomputerAT89C51combination74LS373clocktimingoftheprogramcontroller.74LS373tri-stateoutputfortheeightsetsofbuffers.AT89C51single-chipmicrocomputerofthesystemwillreadouttheinternalclockandthroughtheLEDdisplay,throughthebuttontosetthealarmclocktochangethesystemtime,single-chipbasedonthetimetosetalarmclockprocessing,thusrealizingtheintelligentsystem.Keywords:AT89C51MCU;Electronicclock;74LS373目录摘要1Abstract1目录2第一章单片机概述31.1单片机的定义31.2单片机的特点31.3单片机的应用领域4第二章MCS-51单片机简介62.1MCS-51单片机构造及引脚说明62.2中央处理器(CPU)的构造82.3AT89C51单片机的存储器10第三章LED数码管及74LS373简介143.1数码管的分类143.2数码管的驱动方式143.3数码管应用153.4数码管使用的电流与电压153.574LS373简介15第四章电子钟功能介绍164.1系统功能介绍164.2软件设计流程164.3电子钟程序清单18第五章电子钟软件实现仿真195.1单片机模拟调试软件Keil195.2Proteus软件简介225.3电子时钟仿真235.4整机仿真及调试25附录29第一章单片机概述1.1单片机的定义单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大局部功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大局部部件:CPU、内存、内部和外部总线系统,目前大局部还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备[1]。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器〔Microcontroller〕,是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器开展而来,最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小、更容易集成于复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的开展便分道扬镳。1.2单片机的特点单片机是以工业测控对象、环境、接口特点出发向着增强控制功能,提高工业环境下的可靠性方向开展。主要特点如下[2]:种类多,型号全很多单片机厂家逐年扩大适应各种需要,有针对性地推出一系列型号产品,使系统开发工程师有很大的选择余地。大局部产品有较好的兼容性,保证了已开发产品能顺利移植,较容易地使产品进展升级换代。提高性能,扩大容量,性能价格比高集成度已经到达300万个晶体管以上,总线速度到达数十微妙到几百纳秒,指令执行周期已经到达几微妙到数十纳秒,以往片外XRAM现已在物理上存入片内,ROM容量已经扩大达32K,64K,128K以致更大的空间。价格从几百到几元不等。增加控制功能,向真正意义上的“单片〞机开展把原本是外围接口芯片的功能集成到一块芯片内,在一片芯片中构造了一个完整的功能强大的微处理应用系统。低功耗现在新型单片机的功耗越来越小,供电电压从5V降低到了3.2V,甚至1V,工作电流从mA降到µA级,gz2频率从十几兆可编程到几十千赫兹。特别是很多单片机都设置了多种工作方式,这些工作方式包括等待、暂停、睡眠、空闲、节电等。C语言开发环境,友好的人机互交环境多数单片机都提供基于C语言开发平台,并提供大量的函数供使用,这使产品的开发周期、代码可读性、可移植性都大为提高。1.3单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴[7]:在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精细的测量设备〔功率计,示波器,各种分析仪〕。在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。在家用电器中的应用现在的家用电器根本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进展数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备根本上都实现了单片机智能控制,从手机,机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动,集群移动通信,无线电对讲机等。单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进展模块化应用,而不要求使用人员了解其内部构造。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中〔有别于磁带机的原理〕,就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中〔类似于ROM〕,由微控制器读出,转化为模拟音乐电信号〔类似于声卡〕。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。第二章MCS-51单片机简介2.1MCS-51单片机构造及引脚说明MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的构造更先进,功能更强,在原来的根基上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,MCS-51系列单片机主要包括8031、8051和8751等通用产品。2.1.1、MCS-51单片机构造框架图2.1.1MCS-51单片机构造框架2.1.2、MCS-51的引脚说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP构造,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明[3]:如图2.1.2:图2.1.2Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开场工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用存放器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开场执行程序。然而,初始复位不改变RAM〔包括工作存放器R0-R7〕的状态,8051的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见以下列图2.1.3。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丧失。图2.1.3·Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。·Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。2.2中央处理器(CPU)的构造MCS-51单片机内部有一个8位的CPU,同时CPU内部包含了运算器,控制器及假设干存放器。如图[4]:图2.2MCS-51单片机CPU内部构造框图图2.2中虚线框内的就是CPU的内部构造,8位的MCS-51单片机的CPU内部有数术逻辑单元ALU〔ArithmeticLogicUnit〕、累加器A〔8位〕、存放器B〔8位〕、程序状态字PSW〔8位〕、程序计数器PC〔有时也称为指令指针,即IP,16位〕、地址存放器AR〔16位〕、数据存放器DR〔8位〕、指令存放器IR〔8位〕、指令译码器ID、控制器等部件组成。运算器〔ALU〕的主要功能A〕算术和逻辑运算,可对半字节〔一个字节是8位,半个字节就是4位〕和单字节数据进展操作。B〕加、减、乘、除、加1、减1、比拟等算术运算。C〕与、或、异或、求补、循环等逻辑运算。D〕位处理功能〔即布尔处理器〕。由于ALU内部没有存放器,参加运算的操作数,必须放在累加器A中。累加器A也用于存放运算结果。程序计数器PCPC的作用是用来存放将要执行的指令地址,共16位,可对64KROM直接寻址,PC低8位经P0口输出,高8位经P2口输出。也就是说,程序执行到什么地方,程序计数器PC就指到哪里,它始终是跟蹿着程序的执行。我们知道,用户程序是存放在内部的ROM中的,我们要执行程序就要从ROM中一个个字节的读出来,然后到CPU中去执行,那么ROM具体执行到哪一条呢这就需要我们的程序计数器PC来指示。程序计数器PC具有自动加1的功能,即从存储器中读出一个字节的指令码后,PC自动加1〔指向下一个存储单元〕。指令存放器IR指令存放器的作用就是用来存放即将执行的指令代码。下面先简单的介绍下CPU执行指令的过程,首先由程序存储器〔ROM〕中读取指令代码送入到指令存放器,经译码器译码后再由定时与控制电路发出相应的控制信号,从而完成指令的功能。指令译码器ID用于对送入指令存放器中的指令进展译码,所谓译码就是把指令转变成执行此指令所需要的电信号。当指令送入译码器后,由译码器对该指令进展译码,根据译码器输出的信号,CPU控制电路定时地产生执行该指令所需的各种控制信号,使单片机正确的执行程序所需要的各种操作。地址存放器AR〔16位〕AR的作用是用来存放将要寻址的外部存储器单元的地址信息,指令码所在存储单元的地址编码,由程序计数器PC产生,而指令中操作数所在的存储单元地址码,由指令的操作数给定。从上图中我们可以看到,地址存放器AR通过地址总线AB与外部存储器相连。数据存放器DR用于存放写入外部存储器或I/O端口的数据信息。可见,数据存放器对输出数据具有锁存功能。数据存放器与外部数据总线DB直接相连。程序状态字PSW用于记录运算过程中的状态,如是否溢出、进位等。时序部件由时钟电路和脉冲分配器组成,用于产生微操作控制部件所需的定时脉冲信号。2.3AT89C51单片机的存储器单片机的构造有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)构造,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的构造,即普林斯顿(Princeton)构造。INTEL的MCS-51系列单片机采用的是哈佛构造的形式。2.3.1、程序存储空间程序存储空间可以被映射为内部程序存储器或者外部程序存储器。AT89C51单片机内部具有的4KB程序存储器被映射到程序存储空间的0000H~0FFFH区间,如图1.2所示。这局部程序存储空间也可以被映射为外部程序存储器,它具体被映射为哪一种程序存储器取决于引脚〔引脚31〕所接的电平。当引脚为高电平,内部程序存储器被映射到这局部程序存储空间;当引脚为低电平,外部程序存储器被映射到这局部程序存储空间。高于0FFFH的程序存储空间只能被映射为外部程序存储器。2.3.2、数据存储空间AT89C51的内部数据存储器有256字节,它们被分为两局部:高128字节和低128字节。低128字节的内部数据存储器是真正的RAM区,可以被用来写入或读出数据。这一局部存储容量不是很大,但有很大的作用。它可以进一步被分为3局部,如图2.3.1所示。图2.3.1内部数据存储器低128字节在内部数据存储器低128字节中,地址从00H~1FH的最低32个字节组成4组工作存放器,每组有8个工作存放器。每组中的8个工作存放器都被命名为从R0到R7。在一个具体时刻,CPU只能使用其中的一组工作存放器。当前正在使用的工作存放器组由位于高128字节的程序状态字存放器〔PSW〕中第3位〔RS0〕和第4位〔RS1〕的数据决定。程序状态字存放器中的数据可以通过编程来改变,这种功能为保护工作存放器的内容提供了很大的方便。如果用户程序中不需要全部使用4组工作存放器,那么剩下的工作存放器所对应的内部数据存储器也可以作为通用数据存储器使用。工作存放器在内部数据存储器中的地址映射如表1.1所示[5]。表1.1工作存放器地址映射表0组〔RS1=0,RS0=0〕1组〔RS1=0,RS0=1〕2组〔RS1=1,RS0=0〕3组〔RS1=1,RS0=1〕地址存放器地址存放器地址存放器地址存放器00HR008HR010HR018HR001HR109HR111HR119HR102HR20AHR212HR21AHR203HR30BHR313HR31BHR304HR40CHR414HR41CHR405HR50DHR515HR51DHR506HR60EHR616HR61EHR607HR70FHR717HR71FHR7在工作存放器区上面,内部数据存储器的地址从20H~2FH的16个字节范围内,既可以通过字节寻址的方式进入,也可以通过位寻址的方式进入,位地址范围从00H到7FH。字节地址与位地址的对应关系如表1.2所示。表1.2字节地址与位地址的关系位地址字节地址D7D6D5D4D3D2D1D02FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100内部数据存储器地址从30H~7FH局部仅可以用作通用数据存储器。内部数据存储器的高128字节被称为特殊功能存放器〔SFR〕区。特殊功能存放器被用作CPU和在片外围器件之间的接口,它们之间的联系方框图如图2.3.2所示。图2.3.2特殊功能存放器〔SFR〕工作框图CPU通过向相应的特殊功能存储器写入数据实现控制对应的在片外围器件的工作,从相应的特殊功能存储器读出数据实现读取对应的在片外围器件的工作结果。表1.3AT89C51F8HFFHF0HBF7HE8HEFHE0HACCE7HD8HDFHD0HPSWD7HC8HCFHC0HC7HB8HIPBFHB0HP3B7HA8HIEAFHA0HP2AUXR1WDERSTA7H98HSCONSBUF9FH90HP197H88HTCONTMODTL0TL1TH0TH1AUXR8FH80HP0SPDP0LDP0HDP1LDP1HPCON87H在表1.3中,对于没有定义的存储单元用户不能使用。如果向这些存储单元写入数据将产生不确定的效果,从它们读取数据将得到一个随机数。对于字节地址低位为8H或者FH的特殊功能存储器,既可以进展字节操作,也可以进展位操作。例如前面提到的用来确定当前工作存放器组的程序状态字存放器〔PSW〕,它的地址为D0H,因此对它可以进展字节操作,也可以进展位操作。采用位操作可以直接控制程序状态字存放器中的第3位〔RS0〕或第4位〔RS1〕数据而不影响其他位的数据。低位地址不为8H或FH的特殊功能存储器只可以进展字节操作,当需要修改这些特殊功能存储器中的某些位时,对其他的位应注意保护。片外数据存储空间可以被映射为数据存储器、扩展的输入/输出接口、模拟/数字转换器和数字/模拟转换器等。这些外围器件统一编址,所有外围器件的地址都占用数据存储空间的地址资源,因此CPU与片外外围器件进展数据交换时可以使用与访问外部数据存储器一样的指令。CPU通过向相应的外部数据存储器地址单元写入数据实现控制对应的片外外围器件的工作,从相应的外部数据存储器地址单元读出数据实现读取对应的片外外围器件的工作结果。第三章LED数码管及74LS373简介数码管是一种半导体发光器件,其根本单元是发光二极管。3.1数码管的分类数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元〔多一个小数点显示〕;按能显示多少个“8〞可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴极数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。3.2数码管的驱动方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。3.2.1静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进展驱动,或者使用如BCD码二-十进制译码器译码进展驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:〕,实际应用时必须增加译码驱动器进展驱动,增加了硬件电路的复杂性。3.2.2动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到一样的字形码,但终究是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制翻开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3.3数码管应用数码管是一类显示屏通过对其不同的管脚输入相对的电流会使其发亮从而显示出数字。可以显示、时间、日期、温度等所有可以用数字代替的参数。由于它的价格廉价使用简单,所以在电器特别是家电领域应用极为广泛,如:空调、热水器、冰箱等等。绝大多数热水器用的都是数码管其他家电也用液晶屏与荧光屏。3.4数码管使用的电流与电压电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。电压:中选择红色时,使用1.9V;中选择绿色时,使用2.1V。3.574LS373简介74LS373是一种带三态门的8D锁存器,其管脚示意图如下示:其中:1D-8D为8个输入端。1Q-8Q为8个输出端。LE为数据打入端:当LE为“1”状态同输入状态;当LE由“1”变“0打入锁存器。OE为输出允许端:当OE=0时,三态门翻开;当OE=1时,三态门关闭,输出高阻。第四章电子钟功能介绍4.1系统功能介绍1.采用六位数码管显示小时、分钟、秒,并且可以任意设定时间。2.可以查看并且设定日期,日期采用年、月、日的显示方式。3.可以查看并设定闹钟,闹钟的显示方式采用与时间一样的显示方式。4.可以查看并设定星期,数码管的最后一位显示星期,用数字8表示星期日。5.系统设定详细说明:系统的初始状态为显示时钟状态,此时显示小时、分钟、秒。初始状态下,按S0键进入时间调整程序,按S1键查看闹钟,按S2键查看日期,按S3键查看星期。进入时间调整状态后,首先调整分钟,此时分钟闪烁显示,按S1键加一,按S2键减一。按S0键开场调整小时,此时小时闪烁显示,按S1键加一,按S2键减一,再按S0键后系统返回到显示时间状态。在调整时间状态下按下S3键进入调整闹钟状态,此时显示原先的闹钟时间,并且闹钟分钟闪烁显示,此时按S1键加一,按S2键减一;调整后按S0键转换到闹钟小时调整单元,此时按S1键加一,按S2键减一。闹钟调整完毕后按0键回到调整时间状态,按S3键转到调整日期状态。在调整日期状态下,日单元闪烁显示,此时按S1键加一,按S2键减一;按下S0键进入调整月,此时按S1键加一,按S2键减一;按下S0键进入调整年,此时按S1键加一,按S2键减一。此时按下S0键返回到调整时间状态,按下S3键进入调整星期状态。在调整星期状态下,星期闪烁显示,此时按S1键加一,按S2键减一。按下S0键返回到调整时间状态。此时分钟闪烁显示,按S0键开场调整小时,此时小时闪烁显示,再按S0键后系统返回到显示时间状态。4.2软件设计流程程序流程如以下列图所示:图4.2.1主程序流程图图4.2.2计时中断服务程序流程图4.3电子钟程序清单见附录第五章电子钟软件实现仿真5.1单片机模拟调试软件Keil5.1.1、Keil单片机模拟仿真调试软件的安装和启动Keil单片机模拟调试软件是目前获得广泛应用的一种开发MCS51系列兼容单片机的软件。该软件可以从Keil公司中国代理处购置,也可以从Keil公司的网站〔://keil〕上下载它的免费评估〔Eval〕版本。下载获得的Keil单片机模拟调试软件是一个压缩包,解压后执行其中的Setup.exe程序就可以安装这个软件。软件的安装过程与一般的Windows应用软件类似,只要按照安装提示操作即可,这里不作详细介绍,仅需要注意的是,安装方式要选择EvalVision安装。Keil单片机模拟调试软件安装完成以后,计算机桌面上将产生一个标注有“KeilμVision2”的图标,双击这个图标就可以进入Keil单片机模拟调试软件的集成开发环境[10]图5.1Keil单片机模拟调试软件的集成开发环境5.1.2、工程(Project)的建设Keil单片机模拟调试软件对MCS51单片机应用系统的软件开发过程采用工程〔Project〕管理。工程保存着程序编辑的信息和程序调试的环境。在开场编写程序之前首先应该建设一个工程。新建一个工程之前通常还需要建设一个文件夹,后面产生的工程文件和源程序文件等都将存储在这个文件夹之中。在如图5.1所示的集成开发环境的窗口中选择Project→NewProject命令将翻开建设新工程的对话框,如图5.2所示。图5.2建设新工程的对话框在“保存在〞下拉列表框中选择新建工程将要存储的文件夹名,在“文件名〞文本框中输入工程的名称,注意对于工程不要添加扩展名,单击“保存〞按钮即可完成一个工程的创立。单击“保存〞按钮在完成一个工程创立的同时也翻开了单片机芯片型号选择对话框。如图5.3所示的对话框已经完成了芯片型号的选择。图5.3单片机芯片型号选择对话框Keil单片机模拟调试软件支持许多公司生产的MCS51单片机兼容产品。如前所述,本书应用电路中采用Atmel公司的AT89C51在图5.3所示的对话框中的Database列表框中首先选择生产芯片的公司名称Atmel,双击这个公司名称即可翻开Atmel公司目前生产的所有芯片型号。接着在列出的产品清单中选择将使用的AT89C51芯片,如图5.3所示。最后单击“完成芯片的选择后又回到如图5.1所示的集成开发环境的窗口,但是这时该窗口中的工程管理窗口不再是空白,在它的文件选项卡中出现目录列表Target1和它的子目录SourceGroup1。集成开发环境中的菜单Project内还包含OpenProject和CloseProject等选项。OpenProject选项用来以后再次进入已经建设的工程,选择Project→OpenProject命令将翻开选择工程的对话框,该对话框与图5.2类似。在“查找范围〞下拉列表框中选择欲翻开的工程所在的文件夹,列表框中将出现该文件夹中的所有工程,选择将要翻开的工程,单击“翻开〞按钮即可翻开一个工程。选择Project→CloseProject命令将关闭当前的工程。5.1.3、源文件的输入Keil单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。在如图5.1所示的集成开发环境中选择File→New命令、单击新建工具按钮或者按快捷键Ctrl+N将翻开一个新的文本编辑窗口,如图5.1.4所示。在图5.4中已经完成了汇编语言源文件的输入,并且完成了源程序向当前工程的添加。图5.4Keil单片机模拟调试软件的集成开发环境完成汇编语言源文件的输入后,在集成开发环境中选择File→SaveAs命令可以完成文件的第一次存储。注意,汇编语言源文件的扩展名应该是ASM,它应该与工程文件存储在同一文件夹内。在完成文件的第一次存储后,当对汇编语言源文件又进展了修改,再次存储文件时则应该选择File→Save命令、单击保存工具按钮或者按快捷键Ctrl+S实现文件的保存。接着需要把汇编语言源文件参加工程之中。选择图5.4中的工程管理器窗口的子目录SourceGroup1,再单击鼠标右键翻开快捷菜单。在快捷菜单中选择AddFiletoGroup“SourceGroup1”,参加文件对话框被翻开。在这个对话框的“查找范围〞下拉列表框中选择存储汇编语言源文件的文件夹,在“文件类型〞下拉列表框中选择AsmSourcefile〔*.a*;*.src〕,这时存储的汇编语言源文件将显示出来。双击要参加的文件名,或者选择要参加的文件名再单击Add按钮即可完成把汇编语言源文件参加工程。文件参加以后,参加文件对话框并不消失,更多的文件也可以利用它参加工程。如果不需要参加其他文件,单击Close按钮可以关闭参加文件对话框。这时工程管理窗口的文件选项卡中子目录SourceGroup1需要注意的是,当把汇编语言源文件参加工程但还没有关闭参加文件对话框时,有可能被误认为文件没有成功地参加工程而再次进展参加操作,系统将显示所需的文件已经参加的提示。在这种情况下,单击提示框中的“确定〞按钮,再单击Close按钮可以关闭参加文件对话框。5.2Proteus软件简介5.2.1、Proteus介绍如今基于单片机的嵌入式系统已广泛应用在国防、教育、工业等领域。其核心在于其微处理器。因此单片机的开发越来越受到重视。但是在传统的嵌入式系统学习中,嵌入式开发平台是必不可少的。购置开发平台是一种花费,而且对于初学者来说,原理图设计完成之后,需要自己反复搭电路或屡次制PCB板,这大大增加了开发本钱。Proteus是一款优秀的单片机仿真与开发软件,他可以以软件的方式模拟整个系统的运行,这样大大节省了开发周期和开发本钱。Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是[6]:实现了单片机仿真和SPICE电路仿真相结合具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真目前支持的单片机类型有:ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。提供软件调试功能在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、存放器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。具有强大的原理图绘制功能总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。5.2.2、Proteus仿真环境介绍图5.5Proteus软件的集成开发环境5.3电子时钟仿真5.3.1选择仿真元件本次设计中用到的元器件,下表列出:5.3.2绘出仿真图5.4整机仿真及调试整机仿真图如以下列图所示:在数字电子时钟单片机程序初步编完之后,利用单片机硬件仿真软件进展仿真和调试,同时对程序进展适当的修改。该设计在仿真及调试过程中应注意以下几点:1.单片机时间基准振荡电路中振荡晶体频率的选择必须要和程序中的时间基准相一致。2.由于单片机处理数据过程中要响应中断等原因,而中断服务程序所花费的时间必须在中断返回后在计时单元中扣除掉,否则准确度会变差。3.在仿真调试中调试数码管的发光时间时,需要反复修改程序中的给定的时间,直到整体上的显示效果较好,不会有闪烁的现象产生。附录电子时钟程序清单SHIAEQU30HSHIBEQU31HFENAEQU32HFENBEQU33HMIAOAEQU34HMIAOBEQU35H;显示代码存储单元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHIANEQU40HSHIBNEQU41HFENANEQU42HFENBNEQU43HMIAOANEQU44HMIAOBNEQU45H;显示数据存储单元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JIAN0EQUP0.0JIAN1EQUP0.1JIAN2EQUP0.2JIAN3EQUP0.3;键盘定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHIALEQU46HSHIBLEQU47HFENALEQU48HFENBLEQU49H;闹钟存储单元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;NIANAEQU4AHNIANBEQU4BHYUEAEQU4CHYUEBEQU4DHRIAEQU4EHRIBEQU4FH;日历存储单元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;XINGQIEQU56H;星期存储单元;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ORG0000HLJMPMAINORG000BHLJMPTIMER0;秒计时中断服务程序ORG001BHLJMPTIMER1;调时闪烁中断服务程序ORG0035H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序MAIN:MOV20H,#00HMOVR0,#40HMOVR1,#32MAIN1:MOV@R0,#00HINCR0DJNZR1,MAIN1;40H--5FH存储单元清零MOVSHIAL,#2 MOVSHIBL,#3 MOVNIANA,#0 MOVNIANB,#1 MOVYUEA,#0 MOVYUEB,#1 MOVRIA,#0 MOVRIB,#1 MOVXINGQI,#1 MOVTMOD,#11H MOVTL0,#01H MOVTH0,#4CH MOVTL1,#01H MOVTH1,#4CH MOV36H,#00H SETBEA SETBET0 SETBTR0 MOVR4,#14HLOOP: LCALLCHANGELCALLDISPLAYJNBJIAN0,TIAO0;按下0键进入调时程序JNBJIAN1,NAOSEE;按下1键进入查看闹钟程序JNBJIAN2,RILISEE;按下2键进入查看日历程序JNBJIAN3,WEEKDAY;按下3键进入查看星期程序LCALLNAOZHONGLJMPLOOPTIAO0:LJMPTIAOWEEKDAY:JNBJIAN3,WEEKDAY1LJMPWEEKDAY2WEEKDAY1:LCALLDISPLAYLJMPWEEKDAYRILISEE:JNBJIAN2,RILISEE1LJMPRILISEE2RILISEE1:LCALLDISPLAYLJMPRILISEENAOSEE:JNBJIAN1,NAOSEE1LJMPNAOSEE2NAOSEE1:LCALLDISPLAYLJMPNAOSEE;闹钟查看程序NAOSEE2:MOVDPTR,#ZIXINGMAMOVA,SHIAL MOVCA,@A+DPTR MOVSHIA,A MOVA,SHIBL MOVCA,@A+DPTR MOVSHIB,A MOVA,FENAL MOVCA,@A+DPTR MOVFENA,A MOVA,FENBL MOVCA,@A+DPTR MOVFENB,A MOVA,#0 MOVCA,@A+DPTR MOVMIAOA,A MOVMIAOB,AMOVR5,#200 MOVR1,#4LOOP1:LCALLDISPLAYDJNZR5,LOOP1 MOVR5,#200 DJNZR1,LOOP1LJMPLOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;闹钟程序,按0键解除闹钟NAOZHONG:MOVA,SHIALCJNEA,SHIAN,ZHONGOUTMOVA,SHIBLCJNEA,SHIBN,ZHONGOUTMOVA,FENALCJNEA,FENAN,ZHONGOUTMOVA,FENBLCJNEA,FENBN,ZHONGOUT ZHONG:CLRP2.7LCALLCHANGELCALLDISPLAYCJNEA,FENBN,ZHONGOUTJNBJIAN0,ZHONG2LJMPZHONGZHONG2:LCALLCHANGELCALLDISPLAY CJNEA,FENBN,ZHONGOUT LJMPZHONG2ZHONGOUT:RET;日历查看程序RILISEE2:MOVDPTR,#ZIXINGMAMOVA,NIANA MOVCA,@A+DPTR MOVSHIA,A MOVA,NIANB MOVCA,@A+DPTR MOVSHIB,A MOVA,YUEA MOVCA,@A+DPTR MOVFENA,A MOVA,YUEB MOVCA,@A+DPTR MOVFENB,A MOVA,RIA MOVCA,@A+DPTR MOVMIAOA,A MOVA,RIB MOVCA,@A+DPTR MOVMIAOB,AMOVR5,#200 MOVR1,#4LOOP2:LCALLDISPLAY DJNZR5,LOOP2 MOVR5,#200 DJNZR1,LOOP2 LJMPLOOP;星期查看程序WEEKDAY2:MOVDPTR,#ZIXINGMAMOVA,#0 MOVCA,@A+DPTR MOVMIAOA,A MOVFENA,A MOVFENB,A MOVSHIA,A MOVSHIB,A MOVA,XINGQI MOVCA,@A+DPTR MOVMIAOB,A MOVR1,#4 MOVR5,#200LOOP3:LCALLDISPLAY DJNZR5,LOOP3 MOVR5,#200 DJNZR1,LOOP3 LJMPLOOP;秒计时中断服务程序TIMER0:PUSHACCPUSHPSW CLRET0 CLRTR0 MOVA,#14 ADDA,TL0 MOVTL0,A MOVA,#4CH ADDA,TH0 MOVTH0,A SETBTR0 DJNZR4,OUTT0ADDSS:MOVR4,#14HMOVR0,#MIAOAN LCALLADD1 MOVA,R3 CLRC CJNEA,#60H,ADDMMADDMM:JCOUTT0LCALLCLR0 MOVR0,#FENAN LCALLADD1 MOVA,R3 CLRC CJNEA,#60H,ADDHHADDHH:JCOUTT0LCALLCLR0 MOVR0,#SHIAN LCALLADD1 MOVA,R3 CLRC CJNEA,#24H,HOURHOUR:JCOUTT0LCALLCLR0LCALLDAYOUTT0:POPPSWPOPACC SETBET0RETI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DAY:MOVR0,#RIALCALLADD1 INCXINGQI MOVA,XINGQI CJNEA,#8,DAY1 MOVXINGQI,#01HDAY1: MOVA,R3 CLRC CJNEA,#32H,DAYOUTMOVRIA,#0 MOVRIB,#1 MOVR0,#YUEA LCALLADD1 MOVA,R3 CLRC CJNEA,#13H,DAYOUTMOVYUEA,#0 MOVYUEB,#1 MOVR0,#NIANA LCALLADD1 MOVA,R3 CJNEA,#24H,DAYOUT MOVNIANA,#0 MOVNIANB,#0DAYOUT:RET;调时闪烁中断服务程序TIMER1:PUSHACCPUSHPSWMOVTL1,#01HMOVTH1,#4CH;装定时初值DJNZR2,TIM1OUT;0.3秒未到退出中断MOVR2,#6;0.3秒到重装0.3秒定时值CPL02H;对闪烁标志取反JB02H,FLASH1;02H为1时显示单元熄灭MOVSHIAN,50HMOVSHIBN,51HMOVFENAN,52HMOVFENBN,53HMOVMIAOAN,54HMOVMIAOBN,55HTIM1OUT:POPPSW;POPACCRETIFLASH1:JB01H,FLASH2;小时闪烁标志JB03H,FLASH3;秒闪烁标志 JB04H,FLASH4 JNB00H,TIM1OUTMOVFENAN,#10;MOVFENBN,#10MOVSHIAN,50HMOVSHIBN,51HMOVMIAOAN,54HMOVMIAOBN,55HLJMPTIM1OUTFLASH2:MOVSHIAN,#10MOVSHIBN,#10MOVFENAN,52HMOVFENBN,53HMOVMIAOAN,54HMOVMIAOBN,55HLJMPTIM1OUTFLASH3:MOVMIAOAN,#10;秒闪烁MOVMIAOBN,#10MOVSHIAN,50HMOVSHIBN,51HMOVFENAN,52HMOVFENBN,53HLJMPTIM1OUTFLASH4:MOVMIAOBN,#10MOVMIAOAN,54HMOVSHIAN,50HMOVSHIBN,51HMOVFENAN,52HMOVFENBN,53H LJMPTIM1OUT;调时程序,TIAO:CLRET0CLRTR0MOV50H,SHIANMOV51H,SHIBNMOV52H,FENANMOV53H,FENBN MOV54H,MIAOAN MOV55H,MIAOBNMOVR2,#6SETBET1SETBTR1TIAO1:JNBJIAN0,TIAO11;按下0键开场调整分钟SETB00H;;;;;;;;;;;;;;;;;;;;;;;;;;;TURNFEN:LCALLCHANGE;调整分钟程序LCALLDISPLAYJNBJIAN0,TIAOSHI;按0键则转调整小时程序 JNBJIAN3,ZHUAN;按3键则转到散转程序 JNBJIAN1,FENJIA0;按1键则分钟加一 JNBJIAN2,FENJIAN0;按2键则分钟减一LJMPTURNFEN;;;;;;;;;;;;;;;;;;;;;;;;;;;TIAO11:LCALLDISPLAYLJMPTIAO1TIAOSHI:JNBJIAN0,TIAOSHI1CLR00H SETB01HLJMPTURNSHITIAOSHI1:LCALLDISPLAYLJMPTIAOSHIFENJIA0:JNBJIAN1,FENJIA1LCALLFENJIA LJMPTURNFENFENJIA1:LCALLDISPLAYLJMPFENJIA0FENJIAN0:JNBJIAN2,FENJIAN1LCALLFENJIAN LJMPTURNFENFENJIAN1:LCALLDISPLAYLJMPFENJIAN0;散转程序,根据按键3的次数来跳转到闹钟,日历,星期设置程序。ZHUAN:JNBJIAN3,TIAO12CLRET1 CLRTR1LJMPNAOTIAO12:LCALLDISPLAYLJMPZHUAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TURNSHI:LCALLCHANGE;调整小时程序LCALLDISPLAY JNBJIAN0,TOUT;按下0键则退出调时 JNBJIAN1,SHIJIA0;按1键小时加一 JNBJIAN2,SHIJIAN0;按2键小时减一 JNBJIAN3,ZHUAN;按3键则跳转 LJMPTURNSHI;;;;;;;;;;;;;;;;;;;;;;;;;;;;TOUT:JNBJIAN0,TOUT1LJMPTIAOOUTTOUT1:LCALLDISPLAYLJMPTOUTSHIJIA0:JNBJIAN1,SHIJIA1LCALLSHIJIA LJMPTURNSHISHIJIA1:LCALLDISPLAYLJMPSHIJIA0SHIJIAN0:JNBJIAN2,SHIJIAN1LCALLSHIJIAN LJMPTURNSHISHIJIAN1:LCALLDISPLAYLJMPSHIJIAN0;;;;;;;;;;;;;;;;;;;;;;;;;;;;时间调整退出程序TIAOOUT:CLR00HCLR01H CLR02H CLR03H CLR04H MOVSHIAN,50H MOVSHIBN,51H MOVFENAN,52H MOVFENBN,53H CLRET1 CLRTR1 SETBET0 SETBTR0 LJMPLOOP;调时完毕返回到主程序;闹钟调整程序NAO:SETB00H;分钟闪烁标志置1CLR01H;小时闪烁标志清零CLR03H;秒闪烁标志清零 MOV60H,50H MOV61H,51H MOV62H,52H MOV63H,53H MOV64H,54H MOV65H,55H MOV50H,SHIAL MOV51H,SHIBL MOV52H,FENAL MOV53H,FENBL SETBET1 SETBTR1;;;;;;;;;;;;;;;;闹钟分钟调整程序NAOFEN:LCALLCHANGELCALLDISPLAYJNBJIAN0,NAOSHI0JNBJIAN1,NFENJIA0JNBJIAN2,NFENJIAN0JNBJIAN3,NZHUANLJMPNAOFENNAOSHI0:JNBJIAN0,NAOSHI1CLR00HSETB01HCLR03HLJMPNAOSHINAOSHI1:LCALLDISPLAYLJMPNAOSHI0NFENJIA0:JNBJIAN1,NFENJIA1LCALLFENJIA LJMPNAOFENNFENJIA1:LCALLDISPLAYLJMPNFENJIA0NFENJIAN0:JNBJIAN2,NFENJIAN1LCALLFENJIAN LJMPNAOFENNFENJIAN1:LCALLDISPLAYLJMPNFENJIAN0NZHUAN:JNBJIAN3,NZHUAN1MOVSHIAL,50H MOVSHIBL,51H MOVFENAL,52H MOVFENBL,53H MOVSHIAN,60H MOVSHIBN,61H MOVFENAN,62H MOVFENBN,63H MOVMIAOAN,64H MOVMIAOBN,65HLJMPRIQINZHUAN1:LCALLDISPLAYLJMPNZHUAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;闹钟小时调整程序NAOSHI:LCALLCHANGELCALLDISPLAYJNBJIAN0,NOUT0JNBJIAN1,NSHIJIA0JNBJIAN2,NSHIJIAN0JNBJIAN3,NZHUANLJMPNAOSHINOUT0:JNBJIAN0,NOUT1CLR00H CLR01H CLR03H MOVSHIAL,50H MOVSHIBL,51H MOVFENAL,52H MOVFENBL,53H MOVSHIAN,60H MOVSHIBN,61H MOVFENAN,62H MOVFENBN,63H MOVMIAOAN,64H MOVMIAOBN,65HLJMPTIAONOUT1:LCALLDISPLAYLJMPNOUT0NSHIJIA0:JNBJIAN1,NSHIJIA1LCALLSHIJIA LJMPNAOSHINSHIJIA1:LCALLDISPLAYLJMPNSHIJIA0NSHIJIAN0:JNBJIAN2,NSHIJIAN1LCALLSHIJIAN LJMPNAOSHINSHIJIAN1:LCALLDISPLAYLJMPNSHIJIAN0;;;;;;;;;;;;;;;;;;;;;;;日期调整程序RIQI:SETB03HCLR00H CLR01H MOV50H,NIANA MOV51H,NIANB MOV52H,YUEA MOV53H,YUEB MOV54H,RIA MOV55H,RIB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;调整日TURNRI:LCALLCHANGELCALLDISPLAY JNBJIAN0,TURNYUE0 JNBJIAN1,RIJIA0 JNBJIAN2,RIJIAN0 JNBJIAN3,XZHUAN LJMPTURNRITURNYUE0:JNBJIAN0,TURNYUE01CLR03H SETB00HLJMPTURNYUETURNYUE01:LCALLDISPLAYLJMPTURNYUE0RIJIA0:JNBJIAN1,RIJIA01LJMPRIJIARIJIA01:LCALLDISPLAYLJMPRIJIA0RIJIAN0:JNBJIAN2,RIJIAN01LJMPRIJIANRIJIAN01:LCALLDISPLAYLJMPRIJIAN0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;跳转到调整星期XZHUAN:JNBJIAN3,XZHUAN1MOVNIANA,50H MOVNIANB,51H MOV

温馨提示

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

评论

0/150

提交评论