欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机的的多路数据采集系统设计(共20页).doc

    • 资源ID:6489806       资源大小:156.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的的多路数据采集系统设计(共20页).doc

    精选优质文档-倾情为你奉上引言近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。单片机作为微型计算机的一个重要分支,应用广泛,对人类社会产生了巨大的影响。Intel公司生产的51系列单片机,由于具有集成度高、处理功能强、可靠性好、系统结构简单、价格低廉、易于使用等优点。在我国已经得到了广泛的应用。特别是在智能仪器仪表、工业检测控制等一些领域取得了令人瞩目的成就。基于单片机的数据采集系统完全能够满足各种测控系统需要,实时性好,应用前景广阔。对于本设计而言,其主要任务就是将05V的直流电压进行测量并送到数码管去显示。基于功能与价格的考虑,在这里选用了比较常见的逼近型ADC0809芯片,其在精度、速度和价格上都适中,可以满足我们在这个设计的要求。考虑到本系统是由单片机供电,选用了低功耗的数码管,以满足显示结果的要求。软件设计方面,采用了功能模块化的设计思想;键盘模数转换控制采用了单片机外部中断0与外部中断1结合的方式来实现,大大提高了单片机的效率,实时处理能力。由于对汇编语言较为了解,所以采用汇编语言来编程。1 设计任务及总体设计方案 在本次课程设计中,要求设计一个基于单片机的的多路数据采集系统,这个课题和我们所学的课程联系紧密、息息相关,涉及到很多的知识,是对我们所学知识的一次考察,利于我们对学过的知识复习一遍,加深理解。1.1 设计任务与要求 在本次设计中要求我们达到以下三点要求: (1)单片机控制A/D转换器检测多路电压 (2)检测的结果送单片机处理并显示 (3)数码管轮流显示各路电压或显示指定的通道电压1.2 总体设计方案 (1)选择89S52作为主芯片,ISP下载线编程、方便灵活、功能强大,完全可以满足本设计的性能要求,而且89S52是51系列中比较常用的芯片,好用 (2)选择ADC0809作为模数转换器,就本设计的要求而言,ADC0809性价比相当的高,而且在很多的课程都学习过,比如:智能仪器、单片机等课程,对它的性能、结构都比较了解。 (3)选择74LS74作为分频器,从单片机的ALE输出2MHZ的频率,经过74LS74的4分频作用,最终产生一个500KHZ的时钟频率给ADC0809,使ADC0809正常工作。 (4)还有一些外围电路,比如:ISP下载电路、单片机复位电路、数码管显示电路等,这样才能组成一个完整的多路数据采集系统。其系统框图如图1-2-1所示74LS74分频器ALE 89S52单片机 数码管显示CLKADC0809 图1-2-1 系统框图2 硬件设计 数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。在该系统中需要将模拟量转换为数据量,而 A/D是将模拟量转换为数字量的器件,需要考虑的指标有:分辨率、转换时间、转换误差等等。而单片机是该系统的基本的微处理系统,它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。 数据采集系统一般由信号调理电路,多路切换电路,采样保持电路,A/D,单片机等组成。但是在本设计中直接就对输入电压进行A/D转换,着重在模数转换器的选择和使用上。2.1 单片机的选择 单片机是一种面向大规模的集成电路芯片,是微型计算机中的一个重要的分支。此系统是由CPU、随即存取数据存储器、只读程序存储器、输入输出电路(I/O口),还有可能包括定时/计数器、串行通信口、显示驱动电路(LCD和LED驱动电路)、脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一个单块芯片上,构成了一个最小但完善的计算机任务。单片机要使用特定的组译和编译软件编译程序,在用keiluvision4把程序下载到单片机内。而本设计选用的是AT89S52. AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器,使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。其结构图如下图2-1-1所示图 2-1-1 89S52结构2.2 模数转换器的选择A/D转换器的种类很多,就位数来说,可以分为8位、10位、12位和16位等。位数越高其分辨率就越高,价格也就越贵。A/D转换器型号很多,而其转换时间和转换误差也各不相同。(1)逐渐逼近式A/D转换器:它是一种速度快、精度较高、成本较低的直接式转换器,其转换时间在几微秒到几百微秒之间。(2)双积分A/D转换器:它是一种间接式的A/D转换器,优点是抗干扰能力强,精度比较高,缺点是数度很慢,适用于对转换数度要求不高的系统。(3)并行式A/D转换器:它又被称为flash(快速)型,它的转换数度很高,但她采用了很多个比较器,而n位的转换就需要2n-1个比较器,因此电路规模也极大,价格也很贵,只适用于视频A/D转换器等数度特别高的领域。鉴于上面三种方案,在价格、转换速度等多种标准考量下,在本设计选用的是逐渐逼近式A/D转换器ADC0809.2.3 显示部分 LED数码显示管是一种由LED发光二极管组合显示字符的显示器件。它使用了8个LED显示管,其中7个用于显示字符,1个用来显示小数点,故通常称之为八段发光二极管数码显示器。对LED数码显示器的控制可以采用按时间向它提供具有一定驱动能力的位选和段选信号。LED数码显示有动态扫描显示法和静态显示。在单片机中,为了节省硬件资源,多采用动态扫描显示法 。为了布线和做板的简单,采用一个4位的共阴数码管。2.4 按键部分 为实现显示指定的通道电压,需要用到单片机的外部中断0和外部中断1来实现跳转,其原理图如下图2-4-1所示,Q11接到外部中断0(P3.2),Q12接到外部中断1(P3.3)。当按下按键S3时,给P3.2低电平,启动外部中断0;当按下按键S3时,给P3.3低电平,启动外部中断1,编写相应的中断服务程序就可以实现功能。 图 2-4-1按键原理图3 软件设计3.1 主程序设计 主程序的设计的思路是:当没有中断的时候,就按顺序从1通道轮流显示到8通道。在外部中断0(INTER0)的中断服务程序中对寄存器R2加1,即进入外部中断0时,R2就加1;在外部中断1(INTER1)的中断服务程序中对寄存器R0加1,即进入外部中断0时,R0就加1。在主程序中对R2进行比较,当R2=1时就停止轮流显示,即当外部中断0第一次响应后,停止轮流显示;当R2=2是将R0的值赋给R3,(R3是通道轮流显示的条件寄存器)然后调用显示子程序。其程序流程图如下图3-1-1所示开始P3.7=0?初始化 N开中断Y 调用通道选择子程序LPINC R3MOV R3,#01HR3=9?YR2=1?NYR2=2?NN将R0的值赋给R3Y 图3-1-1 程序流程图3.2 子程序设计 子程序有4个,分别是通道选择子程序LP,显示子程序DISPLAY,延迟子程序D10ms,数据处理子程序CAI。 (1)通道选择子程序LP: LP: CJNE R3,#01H,LP1 ;根据R3来选择通道 CLR P2.7 ;开通道 CLR P2.6 CLR P2.5 AJMP QID LP1: . ;有8个通道,格式一样的, . LP7: SETB P2.7 ;8通道 SETB P2.6 SETB P2.5 QID:CLR P2.0 ;启动ADC0809,给P2.0输入一个正脉冲 NOP NOP NOP SETB P2.0NOP NOPNOPCLR P2.0JB P2.1,$ ;判断是否开始转换JNB P2.1,$ ;判断转换是否结束 ACALL D10ms1MOV 44H,P0;将P0口的给44HACALL CAI;调用数据处理子程序 YAN1:ACALL DISPLAY1 ;显示通道数ACALL DISPLAY ;显示转换结果 DJNZ R4,YAN1 ;延迟 RET 这个子程序的作用是根据R3的值来选择通道,实现8路数据顺序采集、轮流显示,当这个子程序调用结束后,就会返回主程序,实行INC R3操作,并将R3与#09H比较。 (2)显示子程序DISPLAY: DISPLAY: ;数码显示子程序 MOV DPTR,#TAB MOV A,40H MOVC A,A+DPTR CLR P2.2 SETB P2.3 CLR P2.4 ADD A,#80H MOV P1,A ACALL D10ms1 MOV DPTR,#TAB MOV A,41H MOVC A,A+DPTR CLR P2.2 CLR P2.3 SETB P2.4 MOV P1,A ACALL D10ms1 RET DISPLAY1: MOV DPTR,#TAB MOV A,R3 MOVC A,A+DPTR SETB P2.2 CLR P2.4 CLR P2.3 MOV P1,A ACALL D10ms1 RET 这个子程序的作用是:根据P2.2、P2.3、P2.4的不同赋值来选择数码管显示,显示的段码分别存储在40H,41H,而通道数段码存储在R3。 (3)延迟子程序D10ms: D10ms: MOV R5,#14H DL: MOV R6,#0FFH DL0: DJNZ R6,DL0 DJNZ R5,DL RET 这个子程序起到延迟的作用,因为在显示的时候可能要用到延迟才能够让数码管上的值显示的清晰明了,这个是必不可少的。(4)数据处理子程序CAI: CAI:MOV A,44H;数据处理子程序 MOV B,#51 DIV AB ;B为余数 MOV 40H,A ;整数存入40H MOV A,B ;余数大于19H(25)时F0为1 CLR F0 SUBB A,#1AH;判断余数是否大于19(25)? MOV F0,C;判断溢出 MOV A,#10 MUL AB;余数扩大10倍 MOV B,#51 DIV AB JB F0,LOOP7 ADD A,#5 ;余数大于19H(25)时,结果加5LOOP7: MOV 41H,A MOV A,B CLR F0 SUBB A,#1AH MOV F0,C MOV A,#10 MUL AB MOV B,#51 DIV AB JB F0,LOOP8 ADD A,#5 LOOP8: MOV 42H,A RET 因为A/D转换输出为2位16进制数,电压显示方式为十进制数,所以应进行数据转换,所以需要调用这个数据处理子程序CAI,其转换公式为: VCCA/D转换输出(十六进制) FF(十六进制) X(转换后显示为十进制值) 5V(最大电压值)4 硬件制作与调试 当硬件制作完成后,在检测没有发生短路和断路的情况下,就可以编写程序进行调试可分成一下几个步骤: (1)编写一个小程序,然后烧写到芯片里,有可能烧不进去,这可能是ISP下载口接反了或者是芯片的问题,一步一步的检查。 (2)当小程序能够烧写进去并且能够实现程序的功能以后,说明硬件应该没什么问题,接着再编写能够实现更多功能的程序,并且能过实现为止,这样循序渐进,由小到大,这样编写出来的程序就可以实现 (3)可能存在这样的问题:每个模块的程序都能实现,但是当把它们集合在一起的时候就不行了,这就要检查每个模块之间的调用有没有问题了,下面是具体的流程:4.1 硬件制作硬件制作的流程如下:(1) 画出电路草稿图,经过修改选择,确定好方案。(2) 根据电路图,利用DXP2004,画出原理图。(3) 编译原理图,确定无误后导入PCB图。(4) 排版PCB图,考虑好用单面还是双面板来制板,然后连线。(5) 据原理图生成元件清单,买好所用器件及铜板。(6) 打印PCB,进行印板腐蚀,打孔、焊接。(7) 完成焊接之后,检查电路,最后上电观察电路是否正常。4.2 调试在电脑上装好keil编程软件及下载器软件progisp1.66,将编好的程序生成可执行文件,文件名以.HEX为后缀。通过下载器,将仿真好的程序烧入单片机芯片。给电路上电,看硬件是否正常工作。以下是我调试的遇到的问题:(1) 板子制作出来,发现下载器画错了,管脚接得不对。所以要烧入程序必须借助单片机最小系统版。(2) 电路板上电,烧入程序,发现数码管不亮。按下任何键都没有反应,能确定的是板子复位电路不起作用。(3) 上电检查单片机每个管脚的电压,没有发现异常。再检查各块芯片,也能显示正常。说明硬件部分没有问题,只需考虑软件部分了。(4) 仔细的研究程序,觉得可能按键去抖没有做好。在程序中添加了延时去抖,再次烧入单片机,电路能正常工作了,调试成功。调试仪器:数字万用表(1个),电源(1个),下载器(1个) 测量结果及误差表如下:通道数Int1Int2Int3Int4Int5Int6Int7Int8万用表测量电压值2.8v0.0v5.0v3.9v3.0v2.0v1.0v0.0v数码显示值2.8v0.0v5.0v4.0v3.0v1.9v1.0v0.0v误差0.0v0.0v0.0v0.1v0.0v0.1v0.0v0.0v从上表来对比看,采集到的电压值很接近实际电压。证明电路是对的,软件程序处理没有错误,硬件做得比较成功。5 分析设计方案优缺点5.1 优点本次课程设计,设计方案优点有以下几个:(1) 硬件简单,器件少,制作容易。(2) 所用器件都是常用的,易买,而且价格便宜。(3) 采集各个通道的电压因为电阻值不一致,在调试时易辨别是否为所采集通道的电压值。(4) 显示部分用一个四位共阴数码管。首先,采用集成数码管最大的好处是减少了PCB制作的困难。第二,采用NPN9014三极管驱动而不使用芯片,节约了成本。5.2 缺点方案设计存在的不足之处如下:(1) 硬件电路中采用了74LS74进行分频出500KHz送至ADC0809的时钟端。原则上ADC0809确实需要500KHz来驱动,不过正常情况下,1MHz是也是可以的。即采用6MHz的晶振,经单片机分频从ALE端输出的频率为1MHz来驱动即可。所以分频显得多此一举了。但为了保证ADC0809一定能正常工作,才会采取分频。 (2)输出数据没有采取锁存,显示时数码管虽然能显示,但数据不够稳定。本次课程设计的目的是培养和锻炼学生的实践能力,同时希望学生能把所学到的东西应用至实际生活中。虽然之前的实验做过多通道采集,但那只是软件部分,根本不涉及硬件的设计,所以对硬件的组成原理是不深入了解的。另外,这次课题也能加强学生的自学能力。就像本次课程设计,用到了74LS74才自己上网去查资料,通过仿真确信可行才用于实践中。还有单片机C语言编程,之前是有一定的基础,可毕竟还不足,仍需要自己花时间去学习,边学便用。为以后的工作做了一定的准备。6 总结 在本次设计中发现了不少的问题,也解决了很多的问题,学会了如何去发现问题、分析问题进而解决问题。特别是在调试的时候,在我制作完成硬件后,在将程序烧到芯片里的时候,没有烧进去,不知道原因在哪里,我把电路检测了一遍,没有发生短路或断路的情况,于是我怀疑是不是芯片的问题,把别人的芯片拿来试了一下,但还是烧不进去,只好再检查一下电路,最后在检查PCB的时候发现是ISP下载口接反了,将其重新焊接,再试接成功了。当然在程序调试的过程中不止这些问题,比如:烧写程序进去后,数码管没有反映,检查一下程序的逻辑有没有错,有时会陷入某个语句的死循环,跳不出来;显示的数字不同步,那有可能是在显示时的延迟不够,达不到要求等等一些问题。程序的调试是一件枯燥而持久的事情,所以要保持耐心和热情,有的问题一时间找不到原因,那不妨换个思路,也许就会豁然开朗了。这不仅是在调试的时候需要,在编程的时候,乃至做什么事情的时候,在看似陷入绝境的时候,不妨换个思路、换个角度,当看问题的角度不同的时候,可能就会有一些新的想法。 在这次设计中锻炼了我将软件和硬件结合起来的能力,加深了对以前学过的知识的记忆和理解。同时让我站在一个新的角度去看问题,想实现某种功能并不只有一条途径,切不可陷入固定的思维,认为只有这样做才行,这样可能到最后也解决不了问题。问题是多种多样的,答案也不只有一种。谢 辞 在完成课程设计的时候,衷心的感谢我的指导老师黄源老师。在我遇到问题和困难的时候,他给了我很大的帮助,有了他的帮助,我的课程设计才能少走一点弯路,在这里道一声真挚的感谢。当然也要感谢帮助过我的其他老师们,每当有问题去求教她们的时候,她们总是不厌其烦、耐心的给我指导。当有一些学过的知识记不起来时,她们总是慢慢的引导,直到将知识点记起来,最终把问题解决。在这里真的要谢谢她们,谢谢!8 参考文献1 白驹珩、雷晓平.单片计算机及其应用(二).高等教育出版社,2005.9 2 阎石.数字电子技术基础M.北京:高等教育出版社,2006.53 王选民. 智能仪器原理及设计M.北京:清华大学出版社,2008.2附 录元件清单:序 号名 称数 量单 价备 注1单片机89C521+1个DIP40底座2A/D转换08091+1个DIP28底座34位共阴数码管1410K精密电位器25按键3小61*40圆针插座27 三极管32N30948电阻710K9 电阻 333010 电阻 1100K11 电容 227pf12 电容 110413晶振 112MHZ141*40排针2151*8排线216ISP下载口12*517单面板1180mm*85mm程序: ORG 0000H AJMP MAIN ORG 0003H AJMP INTER0ORG 0013HAJMP INTER1ORG 0030H;-MAIN: MOV R0,#01H ;初始化 MOV R1,#00H MOV R3,#00H MOV R4,#02H MOV 40H,#00H MOV 41H,#00H JNB P3.7,LOOP ;P3.7作为开始键 AJMP MAINLOOP: ACALL D10ms JNB P3.7,START AJMP MAIN;-START: SETB EA ;开中断SETB IT0SETB IT1 SETB EX0SETB EX1 ACALL LP INC R3CJNE R3,#09H,ST1 MOV R3,#01H;-ST1:CJNE R1,#01H,NEXT2 ;进行中断变量的比较 AJMP ST1NEXT2:CJNE R1,#02H,NEXT3 MOV R1,#00H MOV A,R0 MOV R0,#00H MOV R3,A NEXT3:AJMP START;-INTER0: ;中断服务程序0 MOV R1,#01H CJNE R0,#00H,N1 ACALL D10ms1 AJMP N2N1: MOV R1,#02HN2: RETIINTER1: ;中断服务程序1 INC R0 RETI;-LP: CJNE R3,#01H,LP1 ;根据R3来选择通道 CLR P2.7 ;开通道 CLR P2.6 CLR P2.5 AJMP QID ;LP1: CJNE R3,#02H,LP2 ;2通道 CLR P2.7 CLR P2.6 SETB P2.5 AJMP QIDLP2: CJNE R3,#03H,LP3 ;3通道 CLR P2.7 SETB P2.6 CLR P2.5 AJMP QIDLP3: CJNE R3,#04H,LP4;4通道 CLR P2.7 SETB P2.6 SETB P2.5 AJMP QIDLP4: CJNE R3,#05H,LP5;5通道 SETB P2.7 CLR P2.6 CLR P2.5 AJMP QIDLP5: CJNE R3,#06H,LP6 ;6通道 SETB P2.7 CLR P2.6 SETB P2.5 AJMP QIDLP6: CJNE R3,#07H,LP7 ;7通道 SETB P2.7 SETB P2.6 CLR P2.5 AJMP QIDLP7: SETB P2.7 ;8通道 SETB P2.6 SETB P2.5QID:CLR P2.0 ;启动ADC0809,给P2.0输入一个正脉冲 NOP NOP NOP SETB P2.0NOP NOPNOPCLR P2.0JB P2.1,$ ;判断是否开始转换JNB P2.1,$ ;判断转换是否结束 ACALL D10ms1MOV 44H,P0;将P0口的给44HACALL CAI;调用数据处理子程序YAN1:ACALL DISPLAY1 ;显示通道数ACALL DISPLAY ;显示转换结果 DJNZ R4,YAN1 ;延迟 RET;-CAI:MOV A,44H;数据处理子程序 MOV B,#51 DIV AB ;B为余数 MOV 40H,A ;整数存入40H MOV A,B ;余数大于19H(25)时F0为1 CLR F0 SUBB A,#1AH;判断余数是否大于19(25)? MOV F0,C;判断溢出 MOV A,#10 MUL AB;余数扩大10倍 MOV B,#51 DIV AB JB F0,LOOP7 ADD A,#5 ;余数大于19H(25)时,结果加5LOOP7: MOV 41H,A MOV A,B CLR F0 SUBB A,#1AH MOV F0,C MOV A,#10 MUL AB MOV B,#51 DIV AB JB F0,LOOP8 ADD A,#5LOOP8: MOV 42H,A RET ;- DISPLAY: ;数码显示子程序 MOV DPTR,#TAB MOV A,40H MOVC A,A+DPTR CLR P2.2 SETB P2.3 CLR P2.4 ADD A,#80H MOV P1,A ACALL D10ms1 MOV DPTR,#TAB MOV A,41H MOVC A,A+DPTR CLR P2.2 CLR P2.3 SETB P2.4 MOV P1,A ACALL D10ms1 RETDISPLAY1: MOV DPTR,#TAB MOV A,R3 MOVC A,A+DPTR SETB P2.2 CLR P2.4 CLR P2.3 MOV P1,A ACALL D10ms1 RETD10ms: MOV R5,#14H DL: MOV R6,#0FFH DL0: DJNZ R6,DL0 DJNZ R5,DL RET D10ms1: MOV R5,#05H DL1: MOV R6,#0FFH DL2: DJNZ R6,DL0 DJNZ R5,DL RET TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H END图1 主程序PCB图 图2 显示模块PCB图专心-专注-专业

    注意事项

    本文(基于单片机的的多路数据采集系统设计(共20页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开