当前位置:文档之家› 毕业论文:水温控制系统报告

毕业论文:水温控制系统报告


摘要 温度控制是无论是在工业生产过程中还是在日常生活中都起着非常重要的
作用过低的温度或过高的温度都会使水资源失去应有的作用从而造成水资源
的巨大浪费。特别是在当前全球水资源极度缺乏的情况下我们更应该掌握好对
水温的控制把身边的水资源好好地利用起来。
在现代冶金、石油、化工及电力生产过程中温度是极为重要而又普遍的热
工参数之一。在环境恶劣或温度较高等场合下为了保证生产过程正常安全地进
行提高产品的质量和数量以及减轻工人的劳动强度、节约能源要求对加热
炉炉温进行测、显示、控制使之达到工艺标准以单片机为核心设计的炉温控
制系统可以同时采集多个数据并将数据通过通讯口送至上位机进行显示和控
制。那么无论是哪种控制我们都希望水温控制系统能够有很高的精确度起码
是在满足我们要求的范围内帮助我们实现我们想要的控制解决身边的问题。
在计算机没有发明之前这些控制都是我们难以想象的。而当今随着电子
行业的迅猛发展计算机技术和传感器技术的不断改进而且计算机和传感器的
价格也日益降低可靠性逐步提高用信息技术来实现水温控制并提高控制的精
确度不仅是可以达到的而且是容易排除生活用水问题实施对水温的控制已成为
我们电子行业的任务以此来加强工业化建设,提高人民的生活水平。 方案论证与比较
1、总体方案设计及论证 根据题目的要求我们提出了以下的三种方案
方案1此方案是采用传统的二位模拟控制方法选用模拟电路用电位器
设定给定值采用上下限比较电路将反馈的温度值与给定的温度值比较后决定
加热或者不加热。由于采用模拟控制方式系统受环境的影响大不能实现复杂
的控制算法使控制精度做得高而且不能用数码显示和键盘设定。 https://www.doczj.com/doc/8610072541.html,
方案2
采用单片机AT89S2核心。采用了热敏电阻来采集温度A/D采样芯
片ADC0804将其转换成数字信号并通过单片机处理后去控制但热敏电阻线性度
不好精度不高。而且外围电路比较复杂。
方案3采用单片机AT89S52核心使用单片机具有编程灵活控制简单的
优点使系统能简单的实现温度的控制及显示采用经常用到的并有很高精度的
集成温度传感器DS18B20。可直接读出温度并且通过软件编程能实现各种控制
算法使系统还具有控制精度高的特点。省去A/D采样芯片简化了外围电路
性价比高。


经过分析论证明从方案的可行性测量温度的精度制作成本我们采用
了第三种方案。
硬件选择
为了方便制作和调试我们选择AT89S52的DIP封装形式。P0、P2口作为
LED七段数码管的驱动P1口作为各种信号灯的驱动。P3口作键盘输入和控制
并且留出RXD、TXD通过MAX232与PC通信实现远程控制。电源由220V
市电经变压器变压整流滤波再由7805稳压输出供给AT89S51和整个系
统。
主芯片功能特性
AT89S52是一个低功耗高性能CMOS 8位单片机片内含4k Bytes
ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器器
件采用ATMEL公司的高密度、非易失性存储技术制造兼容标准MCS-51指令
系统及80C51引脚结构芯片内集成了通用8位中央处理器和ISP Flash存储单
元功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性
价比的解决方案。
AT89S52具有如下特点40个引脚4k Bytes Flash片内程序存储器128 bytes
的随机存取数据存储器RAM32个外部双向输入/输出I/O口5个中断
优先级2层中断嵌套中断2个16位可编程定时计数器,2个全双工串行通信口
看门狗WDT电路片内有时钟振荡器。
DS18B20简介
DS18B20数字温度计是DALLAS公司生产的1Wire即单总线器件具有线路简https://www.doczj.com/doc/8610072541.html,
单体积小的特点。因此用它来组成一个测温系统具有线路简单在一根通信
线可以挂很多这样的数字温度计十分方便。
a) DS18B20产品的特点
1、只要求一个端口即可实现通信。
2、在DS18B20中的每个器件上都有独一无二的序列号。
3、实际应用中不需要外部任何元器件即可实现测温。
4、测量温度范围在55。C到125。C之间。
5、数字温度计的分辨率用户可以从9位到12位选择。
6、内部有温度上、下限告警设置。
b) DS18B20的引脚介绍
TO92封装的DS18B20的引脚排列见图1其引脚功能描述见表1。
底视图图1
表1 DS18B20详细引脚功能描述



名称 引脚功能描述
1 GND 地信号
2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源
下也可以向器件提供电源。
3 VDD 可选择的VDD引脚。当工作于寄生电源时此引脚必须接地。
c) DS18B20的使用方法
由于DS18B20采用的是1Wire总线协议方式即在一根数据线实现数据
的双向传输而对AT89S51单片机来说硬件上并不支持单总线协议因此
我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访
问。
由于DS18B20是在一根I/O线

上读写数据因此对读写的数据位有着严
格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完
整性。该协议定义了几种信号的时序初始化时序、读时序、写时序。所有时序
都是将主机作为主设备单总线器件作为从设备。而每一次命令和数据的传输都https://www.doczj.com/doc/8610072541.html,
是从主机主动启动写时序开始如果要求单总线器件回送数据在进行写命令后
主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
33H Read ROM(读ROM)
44H Convert Temperature (开始温度转换)
4EH Write Scratchpad(写存储器)
55H Match ROM(匹配ROM)
BEH Read scratchpad(读存储器)
CCH Skip ROM (跳过ROM)
读取温度的流程如下复位——发CC跳过ROM命令——发44H开始
温度转换命令——延时1S——复位——发CC跳过ROM命令——发BEH
读存储器命令——
连续从总路线上读出2个字节的数据温度数据的低位和
高位——结束
DS18B20的复位时序
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后在15秒之内就得释放
单总线以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过
程至少需要60us才能完成。 https://www.doczj.com/doc/8610072541.html,
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同当要写0时序时单总线
要被拉低至少60us保证DS18B20能够在15us到45us之间能够正确地采样IO
总线上的“0”电平当要写1时序时单总线被拉低之后在15us之内就得释放
单总线。 DS18B20中的温度传感器完成对温度的测量以12位转化为例:用16位符号扩
展的二进制补码读数形式提供以0.0625℃/LSB形式表达其中S为符号位。 这是12位转化后得到的12位数据存储在18B20的两个8比特的RAM中二进制中的前面5位是符号位如果测得的温度大于0这5位为0只要将测到
的数值乘于0.0625即可得到实际温度如果温度小于0这5位为1测到的数
值需要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07
D0H+25.0625℃的数字输出为0191H-25.0625℃的数字输出为FF6FH-55℃
的数字输出为FC90H。 https://www.doczj.com/doc/8610072541.html,

DS1820使用中注意事项
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点
但在实际应用中也应注意以下几方面的问题 (1)较小的硬件开销需要相对复杂
的软件进行补偿由于DS1820与微处理器间采用串行数据传送因此在对D
S1820进行读写编程时

必须严格的保证读写时序否则将无法读取测温结果。
对DS1820操作部分最好采用汇编语言实现。 (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题容易
使人误认为可以挂任意多个DS1820在实际应用中并非如此。当单总线上所挂
DS1820超过8个时就需要解决微处理器的总线驱动问题这一点在进行多点
测温系统设计时要加以注意。
(3)连接DS1820的总线电缆是有长度限制的。试验中当采用普通信号电
缆传输长度超过50m时读取的测温数据将发生错误。当将总线电缆改为双绞
线带屏蔽电缆时正常通讯距离可达150m当采用每米绞合次数更多的双绞线
带屏蔽电缆时正常通讯距离进一步加长。这种情况主要是由总线分布电容使信
号波形产生畸变造成的。因此在用DS1820进行长距离测温系统设计时要充分
考虑总线分布电容和阻抗匹配问题。 https://www.doczj.com/doc/8610072541.html,
(4)在DS1820测温程序设计中向DS1820发出温度转换命令后程序总要
等待DS1820的返回信号一旦某个DS1820接触不好或断线当程序读该DS1
820时将没有返回信号程序进入死循环。这一点在进行DS1820硬件连接和
软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽4芯双绞线其中一
对线接地线与信号线另一组接VCC和地线屏蔽层在源端单点接地。
电路功能模块图如下 1、电源电路设计 把220v交流电经变压器转变为12v的交流电并经整流桥转变为直流电再经
电容滤波送入集成稳压电源LM7805使输出电压为5v供单片机使用。 https://www.doczj.com/doc/8610072541.html,
2、测温电路
测温电路比较简单只要对DS18B20供电在数据输出端加上一个4.7K的上拉
电阻便可。 3、键盘
只用四个键来输入它们的功能分别为“状态设定”“加2”“减2”和“确
认”四个功能按键因为DS18B20对时序要求比较严格所以键盘程序采用中
断方式。 https://www.doczj.com/doc/8610072541.html,

4、LED显示模块,利用P0与P2来完成显示功能 5、指示灯模块LED选用直径3mm的白色LED指示单片机的工作状态。它们的
功能分别为“制冷”和“加热”。 https://www.doczj.com/doc/8610072541.html,
6、 输出接口模块
接口电路中采用光电耦合器和双向可控硅组成。单片机的触发信号经光电耦合隔
离后控制双向可控硅的导通角实现对加热丝的控制。  光电耦合器的选择
为了使脆弱的单片机芯片不受外部干扰信号的影响选用光电耦合
器moc4031来隔离电流它的参数为
输入直流电流为50mA,电压为3V。
输入最大电流为3A功率为100mw。
输出端耐压400V功率为100mw.
总功率为300mw。
 双向可控硅的选择

双向可控硅选用BTA16600B它的参数如下
It(RMS)16A
VDRM/VRRM600V https://www.doczj.com/doc/8610072541.html,
IGT(Q1)
10~50mA
封装TO220
7、制冷模块,制冷用到一个驱动电压为12V的直流小风扇通过简单的电路便可
实现对其控制。 8050为NPN ebc
8550为PNP ebc 8、蜂鸣报警电路蜂鸣器通过一个三极管来驱动这里选用三极管8550。电路
图如下 9、串口通讯利用MAX232实现电平转换与PC机进行通讯。 https://www.doczj.com/doc/8610072541.html,
软件选择 基于DS18B20对时序的要求比较严格软件采用汇编语言设计,汇编语言
有直接对硬件操作生成代码高执行速度快等特点。
https://www.doczj.com/doc/8610072541.html,
硬件的测试与软件的调试
我们首先对各部分硬件的功能加以测试以确保硬件焊接是正确的。
软件上的调试我们首先是校准温度我们用水银温度计要进行校正第一步是
采用冰水混合物来校正0度第二步是采用沸水来进行校正。在校准过程中发现
我们所做的温度探头敏
不够高所以我们又重做一个温度探头。第三步是通过加
热测温得出各种数据。所得的温度数据与温度计的进行比较并做成图表如下 https://www.doczj.com/doc/8610072541.html,

从表中可看出所测温度与温度计有1.5度的误差这主要是由于我们所做的温度
探头要放到水中我们采用了包装隔水措施使DS18B20与的灵敏度下降了。
所以我们采用了软件进行温度补偿。经过温度补偿后实测值与温度计值相差
0.4度。

https://www.doczj.com/doc/8610072541.html,
我们在PC机用VB做了一个水温控制系统界面

水温控制系统使用说明书 一、概述
本作品是根据现实生活中的实际需要设计成的具有众多优点
1、采用单片机AT89S52主控升级容易响应迅速控制精确。
2作品在静态时能很好地控制水温使其在设定温度正负0.5度的范围内。
3、本作品不仅具有加热功能还具有制冷的功能。
2、带4位LED显示屏以数字形式显示现在所测得的温度。
3、设置温度过程中能够时实显示所设定的温度值。
4、具有超温报警功能并LED显示888的功能。
5、具有当DS18B20不正常工作时便会报警和LED显示888的功能。
6、具有串口通讯功能在PC机用VB做出界面并显示时实温度。
7、外壳结实耐用制作精良。 二、主要技术参数: 电源电压 交流220V±10% 驱动电热棒功率500W https://www.doczj.com/doc/8610072541.html,
测温范围 0
——100度 超调量《1度
外型尺寸18CM×11CM×11CM
三、使用方法
1、开机
首先是对系统进行供电开机后供电指示灯亮。
2、温度的设定
按模式键进入温度设置状态—

—可进行温度加2与减2操作——待温度调到所需
时按下确认键。
3、VB界面的使用
只需运行软件便可软件便能通过串口采集到数据并显示出来。
源程序如下
;内存分配声明
TEMPER_H EQU 30H ;用于保存读出温度的高字节
TEMPER_L
EQU 31H ;用于保存读出温度的低字节
AA EQU 32H ;数码管小数位BCD存放内存位置
BB EQU 33H ;数码管个数位BCD存放内存位置
CC EQU 34H ;数码管十位数BCD存放内存位置
BAO EQU 37H ;上限温度
T_INTEGER EQU 38H ;温度十与个位整合成1字节(二进制)
KEY_BUF EQU 39H ;键盘输入后的值
HH EQU 40H ;放差值
GG EQU 44H ;存串口发来的值
FLAG EQU 20H.0 ;标志位,确定是否存在DS18B20
HOT EQU P3.7 ;加热(高电平有效)
DAT BIT P1.7 ;DS18B20数据线
;-----------------------------主函数开始-------------------------
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INT_0
ORG 0023H
LJMP GET_T0
ORG 0030H
MAIN:
MOV SP,#60H
MOV IE,#10010001B ;开总中断外部中断定时器1中断串口
中断
MOV IP,#01H ;外部中断为最高级 https://www.doczj.com/doc/8610072541.html,
MOV TCON,#00H ;外中断脉冲方式低电平有效
MOV TMOD,#00100000B ;定时器1工作在方式2
MOV TH1,#0FDH ;波特率为9600
MOV TL1,#0FDH
MOV PCON,#00H ;SMOD=0
MOV SCON,#01010000B ;串口工作方式一且允许接收
SETB TR1 ;开始计时
MOV BAO,#45H ;设置上限报警的十位温度值
MOV KEY_BUF,#00H ;由于KEY_BUF是由用户输入的所以先
赋值初始化
CLR P3.7 ;加热
CLR P1.0 ;制冷
SETB P1.3 ;制冷指示灯
SETB P1.1 ;加热指示灯
MOV 44H,#0FFH ;串口的初值

START: LCALL GET_TEMPER
JB FLAG,NORMAL ;判断是否有DS18B20的存在
CALL ERR ;不存在时显示错误信息
NORMAL: LCALL BAIJING ;报警
LCALL DISPLAY ;显示温度
LCALL SWITCH ;加热与制冷
LCALL FATEMPER ;发数据
LCALL DUDATA ;使串口来的数据起作用
AJMP START
;--------------------DS18B20的温度转换子程序--------------------
GET_TEMPER:

LCALL Set_18B20
MOV A,#0CCH ;跳过ROM匹配
LCALL WRITE_1820
MOV A,#44H ;发出温度转换命令
LCALL

WRITE_1820
LCALL DISPLAY ;用显示温度(持续1s左右)来等待AD转
换结束,12位的话要转换750ms
LCALL Set_18B20 ;准备读温度前先初始化
MOV A,#0CCH ;跳过ROM匹配
LCALL WRITE_1820
MOV A,#0BEH ;发出读温度命令
LCALL WRITE_1820
LCALL READ_1820
LCALL T_FORMAT ;将读出的2字节温度格式化,并转换为
压缩BCD码
RET https://www.doczj.com/doc/8610072541.html,
;----------------------------DS18B20初始化程序--------------------
Set_18B20:
SETB DAT
NOP
CLR DAT
MOV R2,#250 ;主机发出延时500微秒的复位低脉冲
DJNZ R2,$
SETB DAT ;然后拉高数据线
MOV
R2,#30
DJNZ R2,$ ;延时60us等待DS18B20回应
JNB DAT,INIT1
JMP INIT2 ;超时而没有响应,重新初始化
INIT1:
MOV R2,#120
DJNZ R2,$ ;延时240us
JB DAT,INIT3 ;数据变高初始化成功
INIT2: CLR
FLAG ;清标志位,表示DS1820不存在
JMP INIT4
INIT3: SETB FLAG ;置标志位,表示DS1820存在
MOV R2,#240
DJNZ R2,$
INIT4: SETB DAT
RET

;--------------------写DS18B20的子程序(有具体的时序要求)--------------
WRITE_1820:
MOV R2,#8 ;一共8位数据
WR0: CLR DAT
MOV R3,#6
DJNZ R3,$
RRC A
MOV DAT,C
MOV R3,#20
DJNZ R3,$
SETB DAT
NOP
NOP
DJNZ R2,WR0
SETB DAT
RET
;--------------读DS18B20的程序,从DS18B20中读出两个字节的温度数据-------
READ_1820:
MOV R4,#2 ;将温度高位和低位从DS18B20中读出
MOV R1,#TEMPER_L ;低位存入31H(TEMPER_L) https://www.doczj.com/doc/8610072541.html,
RE0: MOV R2,#8
RE1: SETB DAT
NOP
NOP
CLR DAT
NOP
NOP
SETB DAT
MOV R3,#4
DJNZ R3,$
MOV C,DAT
RRC A
MOV R3,#30
DJNZ R3,$
DJNZ R2,RE1
MOV @R1,A
DEC
R1 ;高位存入30H(TEMPER_H)
DJNZ R4,RE0
RET
;------------------------整合读出的两字节温度---------------------
T_FORMAT:
MOV A, TEMPER_L
ANL A, #0FH
MOV DPTR,#TEMPDOTTAB
MOVC A,@A+DPTR
MOV AA,A ;获得小数部分BCD码
MOV A,TEMPER_L
SWAP A
MOV @R0,A
MOV A,TEMPER_H
SWAP A

XCHD A,@R0
INC A ;温度补偿
INC A
MOV T_INTEGER,A ;获得整数部分(1字节)
RET
;小数部分码表
TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H
DB 05H,06H,06H,07H,08H,08H,09H,09H
;---------------------------外部中断0----------------------
INT_0:
PUSH ACC
PUSH PSW
SETB RS0 ;选择寄存器组1 https://www.doczj.com/doc/8610072541.html,
CLR RS1
MOV GG,#0FFH ;使串口为0FFH
MOV KEY_BUF,T_INTEGER
A1: LCALL DISPLAY
JNB P3.5,A2 ;有P按下跳出中断
JNB P3.3,PRO_UP ;按下温度值加二
JNB P3.4,PRO_DOWN ;按下温度值减二
JMP A1
PRO_UP:
CALL K_DELAY ;加二
CALL K_DELAY
INC KEY_BUF
INC KEY_BUF
MOV T_INTEGER,KEY_BUF
JNB P3.5,A2 ;有P1.2按下跳出中断
JMP A1
PRO_DOWN:
CALL K_DELAY ;减二
CALL K_DELAY
DEC KEY_BUF

DEC KEY_BUF
MOV T_INTEGER, KEY_BUF
JNB P3.5,A2 ;有P1.2按下跳出中断
JMP A1
A2:
CLR RS0
POP PSW
POP ACC
RETI
;-------------------------------串口-------------------------
GET_T0:
CLR RI ;清中断标志位
PUSH ACC
PUSH PSW
MOV A,SBUF
MOV 44H,A ;存值
POP PSW
POP ACC
RETI
;----------------------------使串口数据起作用---------------------

DUDATA:
MOV A,GG ;判断是否设定了温度
CJNE A,#0FFH,QUIT9 ;与键盘相协调 https://www.doczj.com/doc/8610072541.html,
LJMP QUIT12 ;若没有设定则跳出来
QUIT9: ORL A,#00H ;判是否为关风扇关加热键
JZ QUIT10
LJMP QUIT11 ;为设定的有效值
QUIT10:
MOV KEY_BUF,GG ;若为0则进行相应的处理
MOV GG,#0FFH ;给GG初值
LJMP QUIT12
QUIT11: MOV KEY_BUF,GG ;给值
QUIT12: RET
;-------------------------------发数据---------------------------
FATEMPER: CLR ES
MOV A,T_INTEGER
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES

RET

;--------------------程序名称:ERR程序出错处理,显示三个8 --------

ERR: MOV T_INTEGER,#58H ;如果没有找到DS18B20那么就显示错误,
错误显示为888
MOV AA,#08H
LCALL DISPLAY
RET
;--------------------------显示程序--------------------------

DISPLAY:
MOV A,T_INTEGER
MOV B,#10
DIV AB
MOV CC,A
MOV BB,B
MOV DPTR,#TAB
MOV R3,#7FH
MOV R1,#CC
DPLOP: MOV A,@R1
MOVC A,@A+DPT

R
MOV P2,R3
MOV P0,A
CJNE R3,#0BFH,DPNEXT ;显示小数点
CLR P0.7
DPNEXT:MOV A,R3 https://www.doczj.com/doc/8610072541.html,
RR A
MOV R3,A
DEC R1
CALL D1MS
CJNE R3,#0EFH,DPLOP
MOV P0,#0FFH ;一次显示结束P0口复位
MOV P2,#0FFH ;P2口复位
RET
;----------------------------报警-------------------------------
BAIJING:
MOV A,BAO
SUBB A,T_INTEGER
JNC JING2
JING1: CLR P1.4 ;报警
MOV R5,#45
D2: CALL D1MS
DJNZ R5,D2
SETB P1.4
JING2: RET
;------------------------------加热与制冷------------------------
SWITCH:
MOV A,KEY_BUF ;判断是否设定了温度
ORL A,#00H
JZ QUIT1 ;如没有输入键值则退出
MOV A,KEY_BUF
SUBB A,T_INTEGER
MOV 40H,A ;保存温差
JC COOL ;如果现在的温度比设定的温度小则转
J1: CLR P1.0
SETB P1.3 ; 制冷指示灯
CLR P1.1 ;开工作指示灯
MOV A,40H
SUBB A,#05H
JC J2
SETB P3.7 ;全功率加热
LJMP QUIT2
J2: CLR C
MOV A,40H
SUBB A,#03H ;当温差为2度时进行别一种方式加热
JC J3
LCALL DISPLAY
SETB P3.7
LCALL DISPLAY
CALL D1MS https://www.doczj.com/doc/8610072541.html,
LCALL DISPLAY
CALL D1MS
LCALL DISPLAY
CALL D1MS
LJMP QUIT1
J3:
CLR C
MOV A,40H
SUBB A,#01H
JC QUIT1 ;当实际温度与设定值相等时不加热
LCALL DISPLAY
SETB P3.7
CALL D1MS
LJMP QUIT1
COOL:
SETB P1.1
CLR P3.7

CLR C
MOV A,T_INTEGER
SUBB A,KEY_BUF

SUBB A,#01H
JC J6
CLR P1.3 ;开制冷指示灯
SETB P1.0 ;制冷
LJMP QUIT2
J6: LJMP QUIT1
QUIT1: SETB P1.3
SETB P1.1
CLR P3.7
CLR P1.0
QUIT2: RET
;---------------------------程序名称:K_DELAY ------------------------
K_DELAY:
MOV R6,#200 ;键盘抖动延时子程序
D1: MOV R7,#200
DJNZ R7,$
DJNZ R6,D1
RET
;-------------------------共阳数码管对应字型表-------------------------
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;段码表
; 0 1 2 3 4 5 6 7 对应内容
DB 80H,90H
;8 9
END https://www.doczj.com/doc/8610072541.html,

相关主题
文本预览
相关文档 最新文档