毕业论文基于51单片机数字秒表设计【完稿】 37710.doc

上传人:laozhun 文档编号:3972963 上传时间:2023-03-30 格式:DOC 页数:27 大小:2.16MB
返回 下载 相关 举报
毕业论文基于51单片机数字秒表设计【完稿】 37710.doc_第1页
第1页 / 共27页
毕业论文基于51单片机数字秒表设计【完稿】 37710.doc_第2页
第2页 / 共27页
毕业论文基于51单片机数字秒表设计【完稿】 37710.doc_第3页
第3页 / 共27页
毕业论文基于51单片机数字秒表设计【完稿】 37710.doc_第4页
第4页 / 共27页
毕业论文基于51单片机数字秒表设计【完稿】 37710.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《毕业论文基于51单片机数字秒表设计【完稿】 37710.doc》由会员分享,可在线阅读,更多相关《毕业论文基于51单片机数字秒表设计【完稿】 37710.doc(27页珍藏版)》请在三一办公上搜索。

1、单片机系统课 程 设 计基于单片机的数字秒表设计目录第1章 数字式秒表的设计介绍5 1.1设计任务及功能要求说明5 1.2工作原理及其方法5第2章 数字式秒表硬件系统的设计7 2.1数字式秒表硬件系统各模块功能简要介绍7 2.1.1 AT89S52简介.7 2.1.2时钟电路.8 2.1.3键盘电路8 2.1.4复位电路.9 2.1.5 驱动及显示电路9 2.1.6 单片机下载口电路10 2.2 数字式秒表的硬件系统设计图11. 2.2.1 电路原理图.11. 2.2.2 PCB图11.第3章 数字式秒表软件系统的设计.11. 3.1 数字式秒表使用单片机资源情况11 3.2 主程序流程图12

2、. 3.3中断服务程序流程图12 3.4显示程序流程图14 3.5软件系统程序清单.14第4章 设计总结15 4.1 数字式秒表的设计结论及使用说明15 4.2 程序仿真与结果.15 4.3 误差分析及解决方法16.总结16参考文献17附录17 第1章 数字式秒表的设计介绍1.1设计任务及功能要求说明 由单片机接收小键盘控制递增计时,由LED 显示模块计时时间,显示格式为 XX(分):XX(秒).XX,精确到0.01s的整数倍。绘制系统硬件接线图,并进行系统仿真和实验。画出程序流程图并编写程序实现系统功能。使用单片机AT89S52作为主要控制芯片,以四位一体共阳极数码显示管通过三极管驱动作为显

3、示部分,设计一个具有特定功能的数字式秒表。该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该数字式秒表通过按键控制可实现开始计1时、暂停计时、连续计时、清零和停止功能。1.2工作原理及其方法 使用AT89S52单片机作为核心控制部件,采用12M晶体振荡器及微小电容构成振荡电路;采用S8550作为数码管的驱动部分;用两个四位一体共阳极或共阴极数码显示管作为显示部分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的复位、计时、连续、清零、停止各项功能。对于时钟,它有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率

4、的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。 LED数码显示器有如下两种连接方法:共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。 键盘部分方案:键盘控制采用独立式按键,每个按键的一端均接

5、地,另一端直接和P1口相连,在按键和P1口之间通过10K电阻与+5V电源相连。键盘通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单,比较适合按键较少或操作速度较高的场合,这种独立式接口的应用很普遍。 显示部分方案:显示部分采用动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决

6、于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事实上,显示器上任何时刻只有一个数码管有显示。由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。为防止闪烁延时的时间在1ms左右,不能太长,也不能太短。本设计可采用P0口直接驱动八段数码管显示。此方案成本低,而且单片机的I/O口占用较少,可以节约单片机接口资源,而且功耗更低。 此电路采用单片机的P0口作为

7、数码显示管的段控,采用P2口作为数码管的位控。8个独立式键盘分别接在单片机的P1口上,以及其他部分构成数字式秒表的硬件电路。通过编写程序使用单片机的定时计数器,以及软件延时,中断资源来实现秒计时和相关控制。此数字式秒表的硬件整体结构如图1-1所示。AT89S52电源振荡电路复位电路独立式键盘驱动电路数码管显示限流图 1-1数字式秒表的硬件结构图第2章 数字式秒表硬件系统的设计2.1数字式秒表硬件系统各模块功能简要介绍2.1.1 AT89S52简介(1) 与MCS-51产品相兼容;(2) 具有8KB可改写的Flash 内部程序存储器,可写/擦1000次;(5) 256字节内部RAM;(6) 32

8、根可编程I/O口;(7)3个16位定时器/计数器。 (8) 8个中断源;(9)可编程中串行口;(10) 低功耗空闲和掉电方式。它的价格便宜,功能强大,能耗低。很大程度上减少总电路的复杂性,提高了所设计系统的稳定性。其芯片引脚图如图2-1所示。图2-1 单片机AT89S52引脚图2.1.2时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在AT89S52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚TXAL2,在芯片的外部通过这两个引角跨接晶体振荡器

9、和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12MHz的石英晶体。时钟电路如图2-2:图2-2 时钟电路2.1.3键盘电路 本设计使用独立式键盘接在单片机的P1口上但通过软件赋予其中三个按键功能,其中S2是计时开始按键,第二功能为停止,S3为计时暂停按键,第二功能为继续计时按键,S4是清零按键。注意使用时只有在暂停状态下才能继续计时,只有在停止状态下才能清零,在停止时不能继续计时,在暂停时不能清零。键盘电路如图2-3:图2-3独立式键盘电路图 2.1.4复位电路 复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进

10、入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。 RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。在本设计中采用了按键电平复位方式,其复位电路如图2-4所示:图2-4 复位电路2.1.5 驱动及显示电路 数码管实际上是由二极管构成发光二级管正

11、常工作时,其两端正向压降约为1.6v,正向电流约为10mA,为了使数码管达到一定的亮度而又不至于由于电流过大而损坏,我们使用三极管S8550作为数码管的驱动,同时在P0口和P2口上串上470欧姆的电阻。此处使用四位一体共阴极数码管,由于驱动电路决定了此处共阴极数码管和共阳极数码管均可以采用而且均采用共阳极代码来编写显示程序,具体电路如图2-5所示。 图2-5 数码管驱动及显示电路图2.1.6 单片机下载口电路 下载口主要是一个十芯的座子,可以通过使用USB下载线对单片机进行程序下载。方便整个软件的设计,也能让我们使用起来更加方便。图2-6 单片机下载口电路图2.2 数字式秒表的硬件系统设计图2

12、.2.1 电路原理图 此处电路原理图以及PCB原理图的绘制均使用protel99软件完成,Protel99是基于Win95/Win NT/Win98/Win2000的纯32位电路设计制版系统。Protel99提供了一个集成的设计环境,包括了原理图设计和PCB布线工具,集成的设计文档管理,支持通过网络进行工作组协同设计功能。根据硬件接线要求设计绘制电路原理图及PCB。具体电路图见附录A与附录B。2.2.2 PCB图 PCB图设计时,首先要使元器件尽量少,这样既可以节约材料,又可以是布线更加短,减少干扰,同时还应注意尽量减少线路之间的寄生电容和电感,布线时需要将线宽设置得比较宽这样可以提高腐蚀电路

13、板时的成功率,焊盘大小也要设置的比较大,这样在腐蚀环节和焊接环节比较容易成功。不易出现短线的现象和焊盘剥离的现象。双面布线时芯片和针脚多的元件需将焊接点置于底层,这样才能比较方便的焊接。 制作电路板PCB图见附录B。 第3章 数字式秒表软件系统的设计3.1 数字式秒表使用单片机资源情况 本次电子钟设计除了了使用单片机工作所必须的硬件资源(如连接晶振的引脚XTAL1和XTAL2,复位引脚RESET)外,对单片机的硬件资源还做了具体的安排。(1).P0口:P0.0-P0.7作为数码管显示器的段控。(2).P1口:P1.0-P1.3作为独立式键盘的输入端。(3).P2口:P2.0-P2.7分别控制数

14、码管LED0-LED7的位控码驱动。(4).定时/计数器:使用定时器0工作方式2实现数字式计数器的运行。(5).专用寄存器:定时器控制寄存器TCON,通过设置该寄存器TR0位的状态来控制定时/计数器0的启动/停止;中断允许寄存器IE,通过设置该寄存器EA/ET0位的状态来设置定时/计数器0中断允许/禁止;定时/计数器工作方式寄存器TMOD,设置定时/计数器0的工作方式。3.2 主程序流程图 MAIN定义堆栈显示缓冲单元清零定时器0工作方式1装载计数初值定时开始开中断设置循环次数调用显示子程序等待定时中断请求键盘扫描 图3-1 主程序流程图3.3中断服务程序流程图PDJW现场保护计数器重加载循环

15、次数减1是否满8次毫秒值加1是否满60毫秒缓冲清零秒值加1是否60S秒显缓冲清零分显示加1是否满60分显示清零现场恢复返回YNNNNYYY 图3-2 中断服务程序流程图3.4显示程序流程图DISP现场保护寄存器初始化显示代码查表送段控代码送位控代码延时送段控代码位控代码左移左移8次?恢复现场返回NY 图3-3显示程序流程图3.5软件系统程序清单 按照流程图应用软件keil汇编语言编程实现秒表功能。程序见附录C。 第4章 设计总结4.1 数字式秒表的设计结论及使用说明 通过设计和调试,数字式秒表能顺利完成各项功能。上电或复位后显示“P.”提示符,此时按1键便可开始计时。在计数状态下,按下2键即可

16、实现暂停,再次按下2键即可实现继续计数,在计数状态下按下1键,实现计数停止,在停止状态下按下3键,便可实现计数清零。计数状态下按下清零键,无效。4.2 程序仿真与结果 我们是在Keil软件里编写程序并编译通过才能被硬件电路所应用。Keil的功能比较强大但还是有一定的缺点。他编译过程中他只能检查出所编写的语法错误,所以我们一步一步的去在硬件电路里仿真去达到我们所设计要求的功能。经仿真修改和完善均已达到设计要求.“P.”显示,电子钟准备状态与电子钟自动运行状态的仿真如下图所示。(1). “P.”显示如图4-1所示。图4-1 “P”显示图(2). 数字式秒表准备状态仿真的显示如图4-2所示。 图4-

17、2 准备计时状态(3). 数字式秒表运行状态的仿真如图4-3所示。 图4-3 4.3 误差分析及解决方法我们可以发现数字式秒表计数一段时间的我们的标准时间相比较出现了误差,所设计的数字式秒表比我们的标准时间要慢,而且相比较的时间越长他的时差越大。经过分其主要原因与硬件和软件都有关。软件原因:我们从外部中断请求有效到转向中断区入口地址所需的机器周期数来计算中断时间,51系列单片机最短响应时间为3个机器周期。在一般情况下中断响应时间通常无需考虑,但在精确定时的应用场合需知道中断响应时间,以保证定时的精确控制。硬件原因:单片机的时钟信号是由外部的振荡电路所提供,在芯片的外部通过接XATL1与XATL

18、2这两个引角跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。因为电子原件不可以就有我们所设计的那么理想(电容的容量,振晶的输出频率)所以会造成我们的时间准确。针对这样的问题我们就能只能从上述两个方面入手去解决。软件方面我们可以通过计算设计子程序去减少响应的时差。硬件部分我们可以采用一些稳定,精确度比较高的电子元件去完善,但是在最后调试出的还是有误差但我尽可能的减少差误差接近理想。总结: 同过这几天的实验设计,让自己对AT89S52单片机有了更深的了解,其具有计时开始、暂停及清零功能, 计时最大值为59分59.99秒, 计时精度为0.01秒。利用Proteus和Keil软件

19、进行了仿真, 达到了预期的效果。整体电路的计时精度高, 电路结构简单, 抗干扰能力强,具有广泛的应用前景。作为仅仅上了一个学期单片机课后就看这些课程设计题目,感觉压力比较大,毕竟自己还是初学者,对各方面都不是了解的很透彻,因为都看上去都比较有难度,熟悉了单片机的内容后觉得还是可以做的出来了,一开始不知道从哪里开始下手,于是问了一些人上网查了点资料,有些是c编还有些是汇编,于是参考了一下,也和别人一起探讨了一下,在不断地求知中前进,最终编成了一个完整的程序,是自己对与多练有了跟进一步的认识,明白动手的重要性,努力走的更远,尽自己的力为社会做一点贡献,也为自己创造一个未来!参考文献1李朝青.单片机

20、原理及接口技术M.北京:北京航空航天大学出版社,1988.1Li Zhaoqing. SCM Theory and Interface Technology M. Beijing: Beijing Aerospace University Press, 1988.2李勋等.单片机实用教程M.北京:北京航空航天大学出版社,20002 Li Xun and so on. microcontroller Practical Guide M. Beijing: Beijing Aerospace University Press, 20003王幸之等.单片机应用系统抗干扰技术M. 北京:北京航空航天大

21、学出版社,19993 Wangxing the other. microcomputer application system interference technology M. Beijing: Beijing Aerospace University Press, 19994何为民.低功耗单片微型计算机系统设计M. 北京:北京航空航天大学出版社,19944 What the people. low-power single-chip micro-computer system design M. Beijing: Beijing Aerospace University Press, 1

22、9945李杏春等.8090单片机原理及实用接口技术M. 北京:北京航空航天大学出版社,19965 Li Xingchun such .8090 SCM Theory and practical interface technology M. Beijing: Beijing Aerospace University Press, 1996 附 录 A 原理图 附录 B 程序清单;项目名称:秒表;设计者:高金科;设计日期:2013年12月;LED数码管显示器设定;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a ;P2.7-P2.0位控线从左至右(LED7,LED6,L

23、ED5,LED4,LED3,LED2,LED1,LED0);显示缓冲区设定从左至右依次为78H,79H,7AH,7BH,7CH,7DH,7EH,7FH ;独立式键盘设定与功能;8个按键S1至S8分别依次接在P1.0至P1.7口线;K0的功能为复位 ;K1的功能为启动/停止(标识符为22H.0当它为1时启动,为0时停止);K2的功能为暂停/继续(标识符为22H.1当它为1时暂停,为0时继续);K3的功能为清零;常数表格; ;DISBH(系统提示符P.字型代码序号表);TAB(共阳数码管字型代码表) ; ;子程序;TIME_1MS(定时1ms子程序);KEY(键扫描子程序);KEYCHULI(P1

24、口数据处理子程序);DISP(数码管显示子程序);DL(2毫秒延时子程序);ADD01(入口地址为R0);存储器内容的安排;堆栈栈底7FHH; ;20H作为按键标志(20H.020H.7分别对应的是按键K1K8);专用寄存组1,用在显示子程序中;系统起始程序区 ORG 0000H START: LJMP MAIN ORG 000BH LJMP PDJW;系统监控程序区 ORG 0030HMAIN: MOV PSW, #00H MOV SP, #7FH ;确立堆栈区 MOV R0, #20H ;RAM区首地址 MOV R7, #96 ;RAM区单元个数 MOVTMOD,#01H SETB EA

25、SETBET0ML: MOV R0, #00H INC R0 DJNZ R7, MLTSF: MOV DPTR, #DISBH ;系统初始化后提示符“P.”字符代码表首地址 MOV R5, #08H MOV R0, #78HDISPTSF:CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSFKEY0:LCALLDISP LCALL KEYJB 20H.0, K1JB 20H.1, K2JB 20H.2, K3LJMP KEY0KEY00: LCALL KEY LCALL DISPJB 20H.2, K3LJMP KEY0

26、0 K1: JB 22H.1, KEY0;如果此时为暂停状态,本次按键K1无效CPL 22H.0 JB 22H.0, K01 ;高电平则计时 CLR TR0 ;低电平则停止 LCALL DISPLJMP KEY00K01: MOV 7AH, #12H ;从零开始计时 MOV 7DH, #12H MOV 7FH, #10H MOV 78H, #00H MOV 79H, #00H MOV 7BH, #00H MOV 7CH, #00H MOV 7EH, #00H MOV 7FH, #00H LCALL DISP MOV TH0,#0D8H MOV TL0,#0F0H SETB TR0;启动定时器

27、LJMP KEY0K2: JB 22H.0, K21 ;判断秒表是否启动,如不是启动状态则此次按键无效 LJMP KEY0K21: CPL22H.1 JB 22H.1, K22 SETB TR0 ;继续计时LJMP KEY0K22: CLR TR0 ;暂停秒表 LCALL DISPLJMP KEY0 K3:JB22H.0, KEY0 ;只有当停止是,清零键才有效MOV R0, #79H ;秒表清零 LCALL CLR00MOV R0, #7CH LCALL CLR00MOV R0, #7FH LCALL CLR00 LJMP KEY0PDJW: PUSH PSW PUSH ACCMOV TMO

28、D, #01H ;定时器以工作方式1工作SETB RS1 ;设定组号为2组CLR RS0MOVTH0,#0D8HMOVTL0,#0F0HMOV R0, #79HLCALL ADD01CJNE R2, #99, RETT ;判断1秒到没待添加的隐藏文字内容1MOV R0, #7CH LCALL ADD01CJNE R2, #60, RETT ;判断60毫秒到没LCALL CLR00MOV R0, #7FHLCALL ADD01CJNE R2, #60H, RETT ;判断60分到没LCALL CLR00RETT: POP ACC POP PSWRETI;常数表格区;系统初始化后提示符“P.”字符

29、代码表;DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号;显示字符段选码表(共阳极代码)TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8 DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,灭,p.,-子程序区;ADD01: MOVA, R0 DEC R0SWAP AORL A, R0ADD A, #01HDA AMOV R2, AANL A, #0FHMOV R0, A MOV A, R2ANL A,

30、 #0F0HSWAP AINC R0MOV R0, ARETCLR00: MOV R0, #00H DEC R0MOV R0, #00HRET;键扫描子程序KEY:LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回 LCALLDISP ;调显示子程序去抖动 LCALLDISP LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回 MOVB,20H ;保存取反后的键值KEYSF:LCALLKEYCHULI;调P1口数据处理子程序JZKEY1 ;键释放,转恢复键值LCALLDISPLCALL DISP ;调显示子程序延时 L

31、JMP KEYSF;等待释放KEY1:MOV 20H,B;键值送20H保存EXIT:RET ;子程序返回;P1口数据处理子程序KEYCHULI:PUSH PSW;保护现场CLR RS1 ;改变当前寄存器组为组1SETB RS0MOV P1,#0FFH ;先向P1口写1MOV A,P1 ;读P1口数据CPL A ;P1口数据取反MOV 20H,A ;保存取反后的键值CLR RS1 ;恢复当前寄存器组为组0 CLR RS0POP PSW ;恢复现场RET ;子程序返回;显示子程序;入口:78H,79H,7AH,7BH,7CH,7DH,7EH,7FH, DISP: PUSHDPHPUSHDPLPUS

32、HACCPUSHPSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示 MOV R5, #08H ;循环次数,即驱动数码管的位数 DISP1: MOVA, R1MOVDPTR, #TABMOVCA, A+DPTRMOVP0, A ;送段控 MOVP2, R2 ;送位控LCALLDL ;延时1毫秒MOVA,R2 ;位控码送ARLA ;获得新的位控码MOVR2, A ;保存新的位控码INCR1 ;获得新的显示缓冲单元地址DJNZR5,DISP1 ;循环没有结束则继续 DISP2:POPPSW

33、 ;恢复当前寄存器组的组号POPACCPOPDPLPOPDPHRET;延时1ms子程序(晶振频率12MHz)DLDL:MOVR7, #02HDL1:MOVR6, #0FFHDL2:DJNZR6, DL2DJNZR7, DL1RETEND附录D 元器件清单元器件名称型号数量单片机AT89S521片芯片座40脚1个四位一体数码管共阳极/共阴极2个晶振12M1个瓷片电容33pf2蜂鸣器5V1个电阻4.7K1个电阻1K3个电阻47024个电阻2001个电容22uf1个三极管S85509个排阻10K2个LED指示灯红9个单排插针8脚4排下载口10针1个温度传感器18B201个六脚开关1个Emloymen

34、t tribunals sort out disagreements between employers and employees. You may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly. For more inf

35、ormu, take advice from one of the organisations listed underFurther help. Employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation. Most people find making a claim to an employment tribunal challengin

36、g. If you are thinking about making a claim to an employment tribunal, you should get help straight away from one of the organisations listed underFurther help. ation about dismissal and unfair dismissal, seeDismissal. You can make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal. Remember that in most cases you must make an application to an employment tribunal within three months of the

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号