毕业设计(论文)-基于51单片机控制的电子密码锁设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机控制的电子密码锁设计
摘要:本设计以单片机以AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构,实现要是信息在主机的初步认证注册、密码信息的加密、钥匙丢失报废等功能。

根据51单片机之间的串行通信原理,这便对于密码信息的随机加密和保护。

而且采用键盘输入的电子密码锁具有较高的优势。

采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。

软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统可扩展性和运行的稳定性。

测试结果表明,本系统各功能已达到本设计的所有要求。

关键词:AT89C51;密码锁;单片机设计;电子锁
目录
摘要 (1)
关键词 (1)
第一章密码锁的简介及现况 (1)
1.1引言 (1)
1.2电子密码锁的简介 (1)
1.3电子密码锁发展趋势 (2)
1.4本设计所要实现的目标 (2)
1.5设计的密码锁的功能 (2)
第二章设计方案的选择 (3)
2.1方案的论证与比较 (3)
第三章单片机的组成 (4)
3.1AT89C51单片机的简介 (4)
3.2电路图的绘制 (7)
第四章单片机硬件资源 (7)
4.1开锁机构 (7)
4.2按键电路设计 (8)
4.3显示电路设计 (10)
4.4AT89C51单片机复位方式 (11)
4.5密码锁的电源电路设计 (12)
第五章程序调试 (13)
5.1程序调试用到的软件及工具 (13)
5.2KEIL C51简介 (14)
5.3调试过程 (14)
5.4调试、仿真与实现 (15)
第六章软件设计 (16)
6.1系统软件设计的总统思想 (16)
6.2各子程序设计 (17)
1 键盘扫描子程序 (17)
2 LED显示子程序 (18)
3 密码比较和报警程序 (19)
设计总结与展望 (21)
致谢 (22)
附录:总原理图 (22)
参考文献 (24)
第一章密码锁的简介及现况
1.1引言
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作等优点。

在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。

随着大规模集成电路技术的发展,特别是单片机的问世出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。

随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已有国内外相继面世。

但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识别器若在公共场所所使用存在容易机械损坏,IC卡还存在容易丢失.、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和推广。

鉴于目前的技术水平与市场接收程度,电子密码锁是这类电子防盗产品的主流。

1.2电子密码锁的简介
ATMEL、PHILIPS和SST等公司生产的与80C51兼容的低功耗.高性能8位89C51单片机具有比80C31更丰富的硬件资源,特别是其内部增加的闪速可电改写的储存器FlashROM给单片机的开发及应用带来了很大的方便。

89C51是用静态逻辑来设计的,其工作頻率可下降到0Hz,并提供两种可用软件来选择省电方式----空闲方式和掉电方式。

在空闲方式中CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。

此时的电流可降到大约为注册工作方式的15%。

在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。

这种方式下的电流可降到15μA以下,最小可降到0.6μA。

89C51是一种低功耗高性能的8位单机片。

它采用了CMOS工艺和高密度非意识性存储器(NURAM)技术,而且其输出引脚和指令系统一、都与MCSE-51兼容;片内的FlashROM允许在系统内改编程序或用常规的非易失性存储器编程器来编程。

因此89C51是一种功能强、灵活性高,且价格合理的单片机,可方便地应用在各种控制领域。

1.3电子密码锁发展趋势
由于电子器件所限,以前开发的电子密码锁控制系统,其种类不多,保障性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,后来便是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。

随着电子元件进一步发展,电子密码控制系统也出现了很多种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了更为真正的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现越来越多的电子密码控制系统。

由于数字、字符、图形图像、人体生物特征和时间等要素均可成为电子信息,组合使用这些信息能够使电子防盗密码控制获得更高的保密性,如防范森林的金库,需要使用符合信息密码的电子防盗密码控制系统。

组合使用信息也能够使电子防盗密码控制系统获得无穷扩展的可能。

可以看出组合使用电子信息是电子密码控制系统今后发展的趋势。

1.4本设计所要实现的目标
本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁控制系统,用户想要打开锁,先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。

密码可以由用户自己修改设定,锁打开后才能修改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,易防止误操作。

1.5设计的密码锁的功能
本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:
密码通过键盘输入,若密码正确,则将锁打开。

报警、锁定键盘功能。

密码输入错误页码显示器会出现错误提示,若密码输入错误超过3次,蜂鸣器报警并且锁定键盘。

电子密码锁的设计主要由三部分组成;4×4矩阵键盘接口电路、密码锁的控制电路输出八段显示电路。

另外系统还有LED提示灯,报警蜂鸣器等。

密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能。

密码输入功能:按下一个数字键,一个“一”就显示在最右边的数码管上,同时将先前输入的所有“一”向左移动一位。

密码清除功能:当按下清除键时,清楚前面输入的所有值,并清除所有显示。

开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开
主要的设计实施过程:首先,选用ATMEL公司的单片机AT89C51,以及选购其他电子元件。

第二步,使用DXP2004设计硬件单路原理图,并设计PCB图完成人工布线(后因PBC板损坏决定采用万能板焊接的方法)第三步,使用Keil
uVision3软件编写的C语言程序、仿真、软件调试。

第四步使用PROTEUS软件进行模拟软、硬件调试。

最后联合软、硬件调试电路板。

第二章设计方案的选择
2.1方案的论证与比较
设计本课题时构思了两种方案:一种是用以AT89C51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。

考虑到数字电路方案原理过于简单,而且不能满足现在的安全需要,所以本文采用前一种方案。

我们的密码锁控制器就是以单片机为核心设计的,本设计采用的是ATMEL 公司的AT89C51芯片,此芯片根据了充分的静止CMOS控制器与三级节目记忆锁,共有32条I/O线,2个定时计数器,6个中断来源,4K闪存,128个字节在芯片RAM。

方案一:采用数字电路控制。

其原理方框图如图2.1所示
图2.1数字密码锁电路方案
采用数字密码锁电路的好处就是设计简单。

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其他的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入的密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人非法操作。

电路由两大部分组成;密码锁电路和备用电源(UPS)其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

方案二:采用一种是用以AT89S51为核心的单片机控制方案。

利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电储存、声光提示甚至添加遥控控制功能。

其原理如图2.2所示。

图2.2单片机控制方案
通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能很大程度上扩展功能,而且还可以很方便的对系统进行升级,所以我们采用后一种方案。

第三章单片机的组成
3.1AT89C51单片机的简介
AT89C51单片机包含中央处理器、程序存储器(ROM)、定时\计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三打总线,单片机的内部结构如图所示:
1.中央处理器
中央处理器(CPU)是整个单片机的核心部件是8位数据宽度的处理器能处理8位2进制数据或代码,CPU负责控制智慧和调度整个单眼系统的协调工作完成运算和控制输入输出功能等操作。

2. 数据储存器(RAM)
AT89C51内部有128个8位用户数据储存单元和128个专用寄存单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以用户能使用的RAM只有128个,可存放度写的数据,运算的中间结果或用户自定义的字型表。

程序储存器(ROM)
3.AT689C51共有4KB掩膜ROM,最大可扩展64K字节,用于存放用户程序,原始数据或表格。

4.定时/计数器:
89C51有两个16为的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

5.并行输入输出(I/O)口
89C51共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。

6.中断系统
89C51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。

7.AT89C51单片机的引脚AT89C51单片机内部总线是单总线结构,即数据总线和地址总线是公用的。

8.89C51有40条引脚,与其他51系列单片机引脚是兼容的。

这40条引脚可分为I/O接口线、电源线、控制线、外接晶体线4部分。

AT89C51单片机为双列直插式封装结构,如下图所示。

主要特征:
1、与MCS-51兼容
2、4K字节可编程闪烁存储器
3、寿命:1000写/擦循环
4、数据保留时间:10年
5、全静态工作:0Hz-24Hz
6、三级程序存储器锁定
7、128*8位内部RAM
8、32可编程I/O线
9、两个16位定时器/计数器
10、5个中断源
11、可编程串行通道
12、低功耗的闲置和时钟电路
13、片内振荡器和时钟电路
AT89C51引脚分配图
AT89C51单机的电源线有以下两种:
(1)VCC:+5V电源线。

电源线
(2)GND:接地线
AT89C51单片机德外接晶体引脚有以下两种
(1)XTAL1:片内振荡器反相放大器的输入和内部时钟工作的输入端。

采用内部振荡器时,它接外部石英晶体和微调电容的一个引脚。

(2)XTAL2:片内振荡器反相放大器的输出端,接外部石英晶体和微调电容的另一端。

采用外部振荡器时,该引脚悬空。

外界晶体引脚。

控制线 AT89C51单片机的控制线有以下几种:
(1)RST; 复位输入端,高电平有效。

(2)ALE/PROG:地址锁存允许/编程线
(3)PSEN: 外部程序存储器的读选通线。

(4)EA/Vpp:片外ROM允许访问端/编程电源端
3.2电路图的绘制
电路的功能单元设计
第四章单片机硬件资源
4.1开锁机构
通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。

其原理如图4.1.1所示。

4.1.1密码锁开锁机构示意图
当用户输入的密码正确而且是在规定的时间(普通用户要求在12s内输入正确的密码,管理员要求在5s输入正确的密码)输入的话,单片机便输出开门信号。

送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。

其实际电路如图4.1.2所示。

电路驱动和开锁两级组成。

由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。

D5作为开锁的提示:由D6、C24、T11组成。

其中D6、C24是为了消除电磁锁可能产生的反向高压电以及可能产生的电磁干扰。

T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且由一定的余量。

在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。

4.1.2密码锁开锁机构电路图
4.2按键电路设计
由于设计要求使用矩阵键盘,所以设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占的I/O线的数目,在按键比较多的时候,通常采用这样方法。

其原理如图4.2.1所示。

4.2.1键盘原理图
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

当确认有按键按下后,下一步就要识别哪一个按键按下。

对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

对照下图4.2.2所示的4*4键盘,说明线反转个工作原理。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。

方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加起A中。

如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中那一个键被按下使通过将列行线逐列置低电平后,检查行输入状态来实现的。

方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是与零电平行线相交的交点上的那个键。

按键操作面板如图所示。

共计数字键10个,功能键6个。

键盘上还有3个指示灯和一个蜂鸣器。

4.2.2按键操作面板示意图
10个数字键用来输入密码,另外6个功能键分别是:CLR、EN、F1、F2、F3、F4。

其中CLR键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。

EN键的功能是确认输入的密码。

F1是管理模式切换键,当用户不小心三次输入密码都没有正确,键盘被锁定,这个时候就可以启动管理模式,使用管理员的密码来开门。

F2是用来进入修改密码的状态。

F3用来关闭显示器,以来可以节省电量,另外也可以防止不法分子偷窥密码。

F4用来做电铃。

上面的3个指示灯L1、L2、L3是用来指示操作的状态:L1锁定及输入指示状态灯,正常的情况下显示红色,当键盘动作的时候,L1灯开始闪动,当键盘处于锁定状态时,指示灯也显示红色。

L2开门指示灯,当用户在规定的时间内正确的输入了密码,此灯转变为绿色,表示开门,否则不显示。

L3是管理员状态指示灯,当按下F1后,指示灯自动点亮。

面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。

4.3显示电路设计
本系统设计的显示电路是为了给使用者以提示而设置的。

考虑到为了节约单片机的口资源,本系统的显示采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图所示。

电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。

这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,挂壁显示,这样可以达到节省电能的目的。

从单片机串口输出的信号先送到左边的移位寄存器(74HCL64),由于以为脉冲的作用,使数据向右移,达到显示的目的。

移位寄存器74HCL64还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。

电路中的三个整流管D1~D3的作用是降低数码管的工作电压,增加其使用寿命。

4.4AT89C51单片机复位方式
单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态,在这种情况下都需要复位。

复位的作用是使中央处理器CPU以及其他功能部件都恢复到一个确定的初始状态,并从这个状态重新开始工作。

AT89C51单片机的复位靠外部电路实现信号由RESET(RST)引脚输入,高电平有效,在震荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。

复位后,PC程序计数器的内容为0000H,片内RAM中内容不变,复位电路一般哟哟上电复位,手动开关复位和自动复位电路3种:
4.4.1单片机复位电路
由于设计所需,我们在这里选用手动式复位电路。

由外部扩展M24C01设定功能键控制手动式复位电路。

4.5密码锁的电源电路设计
为了防止情况的发生,本电路后备了UPS的电源,它包括市电供电电路,停电检测电路,电子开关切换电路,蓄电池充电池电路组成。

电源电路图如图 4.5.1所示。

4.5.1市电供电电路
220V市电通过变压器降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。

由R8,R9,R6,R7及IC14构成电压比较器,正常情况下,V+<V-IC14输出高电平,继电器的常闭触点和市电相连;当市电断开,V+>V-IC14输出高电平,由T4,T3构成的达林顿管使继电器J开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。

其电路图如图4.5.2所示:
4.5.2停电检测及电子开关切换电路
T1,T2构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D1亮为正在充电,D2为工作指示。

由R4,R5,T1构成电压检测电路,蓄电池电压低,则T1,T2导通,实现对其充电;充满后,T1,T2截止,停止充电,同时D1熄灭,电路中C4的作用是滤出干扰信号。

其电路图如图4.5.3所示:
4.5.3蓄电池自动充电电路
第五章程序调试
5.1程序调试用到的软件及工具
调试本程序需要用到KEIL C51,及51开发板一块及其配套的下载烧录软件
5.2KEIL C51简介
Keil C51 是美国Keil Software公司出品是51系列兼容单片机C语言软件开发系统,与汇编语言相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后在使用C来开发,体会更加深刻。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。

另外重要一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

C51工具包的整体结构:uVision与Ishell分别是C51 for Windows for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其他编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可直接写入程序存贮器如EPRO5.2KEIL C51简介M中。

5.3 调试过程
首先打开KEIL C51主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后汇编,生成51单片机可执行的HEX文件。

然后用51开发板相匹配的烧录软件把HEX文件写入单片机。

图5.3.1 keil c51控制介面
图5.3.2 单片机烧录软件介面
5.4调试、仿真与实现
系统的设计是不可能一次酒完全实现的,刚开始时有可能一点现象都没有,这就需要经过不断的调试、分析、再调试、再分析等步骤来逐步解决遇到的各个问题。

调试包括硬件和软件部分的调试:
硬件部分:首先应对制作完成的硬件电流进行检测,主要检查电路是否有短路、断路的地方。

检测时应该分块有序的进行,一面有漏检的地方。

若发现电路有问题,应及时修改,检查到一处便修改一处,以免忘记修改影响调试,耽误时
间。

软件部分:首先是对所编的程序用编译软件进行编译,只有通过编译的程序才能加载到控制器中,进行仿真调试。

编译有问题,则要根据编译器给出的提示进行修改。

其次是仿真,仿真是将程序加载到仿真器中,对硬件电路进行在线调试,仿真的好处是可以边调试边修改,大大简化了调试流程。

在仿真调试过程中,若出现问题,就应该将整个系统按功能分成几块,然后分块调试,一步一步的解决问题。

当各个功能块都能实现之后,就可以将整个功能块组合,然后进行综合调试,整个系统得以实现。

本系统使用Proteus仿真软件进行的仿真,仿真线路的接法与主电路的接法完全一样,见图5.4.1所示:
图5.4.1 仿真电路图
第六章软件设计
6.1系统软件设计的总统思想
一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。

同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多有硬件完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。

因此充分利用其内部丰富的硬件资源和软件资源,采用与51系列单片机相对应的51汇编语言和结构化程序设计方法进行软件编程。

程序设计语言有三种:机器语言、汇编语言和高级语言。

机器语言是机器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(成为目标程序),计算机才能“看懂”。

然后逐一执行。

高级语言是面对问题和计算过程的语言,它可以通过各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,但是本系统却选用了汇编语言。

原因在于,本系统是编制程序工作量不大、规模较小的单片机微机控制系统,使用汇编语言可以不用像高级语言那样占用很多的存储空间,适合于存储容量较小的系统。

6.2 各子程序设计
1 键盘扫描子程序
键盘扫描流程图如图6.2.1。

相关文档
最新文档