电加热炉温度控制系统设计_第1页
电加热炉温度控制系统设计_第2页
电加热炉温度控制系统设计_第3页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1 意义与要求 11.1 实际意义 11.2 技术要求 12 设计内容和步骤 12.1 方案设计 12.2 详细设计 22.2.1 主要硬件介绍 22.2.2 电路设计方法 32.2.3 绘制流程图 62.2.4 程序设计 72.3 调试和仿真 73 结果分析 84 课程设计心得体会 9参考文献 10附录 11电加热炉温度控制系统设计1 意义与要求1.1 实际意义在现实生活当中, 很多场合需要对温度进行智能控制, 日常生活中最常见的 要算空调和冰箱了, 他们都能根据环境实时情况, 结合人为的设定, 对温度进行 智能控制。工业生产中的电加热炉温度监控系统和培养基的温度监控系统都是计 算机控制

2、系统的典型应用。 通过这次课程设计, 我们将自己动手设计一个小型的 计算机控制系统,目的在于将理论结合实践以加深我们对课本知识的理解。1.2 技术要求要求利用所学过的知识设计一个温度控制系统, 并用软件仿真。 功能要求如 下:( 1)能够利用温度传感器检测环境中的实时温度;(2)能对所要求的温度进行设定;(3)将传感器检测到得实时温度与设定值相比较,当环境中的温度高于或低于 所设定的温度时, 系统会自动做出相应的动作来改变这一状况, 使系统温度始终 保持在设定的温度值。2 设计内容和步骤2.1 方案设计要想达到技术要求的内容,少不了以下几种器件:单片机、温度传感器、 LCD 显示屏、直流电动机

3、等。其中单片机用作主控制器,控制其他器件的工作 和处理数据; 温度传感器用来检测环境中的实时温度, 并将检测值送到单片机中 进行数值对比; LCD 显示屏用来显示温度、时间的数字值;直流电动机用来表 示电加热炉的工作情况, 转动表示电加热炉通电加热, 停止转动表示电加热炉断 电停止加热。整体思路是这样的: 首先我们通过按键设定所需要的温度值, 然后利用温度 传感器检测电加热炉的实时加热温度, 并送至单片机与设定值进行比较。 若检测 值小于设定值,则无任何动作,电加热炉继续导通加热;若检测值大于设定值, 则单片机控制光电耦合器导通, 继电器动作, 电加热炉断电停止加热。 一旦炉温 低于设定值,

4、单片机又控制光电耦合器断开, 继电器开关分离, 电加热炉开始导 通加热。这个过程中所设定的温度值和传感器检测到得温度值都要在 LCD 显示 屏上显示出来, 以方便操作人员观察。 另外,还可以加上时钟模块, 以方便计时。这个设计思路相对比较简单, 利用所学过的知识容易实现, 加上光电耦合器 用于隔离强电和弱电, 比较安全,正好符合我们自动化专业用弱电控制强电的目 的,正所谓学以致用。2.2 详细设计2.2.1 主要硬件介绍1单片机这里选用AT89C5仲片机作为控制系统的处理器。AT89C51是一种带4K字 节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。2温度传感器温度传感器

5、有很多种型号,这里我选用DS18B20温度传感器。数字温度传感器DS18B2C具有独特的单总线接口方式,支持多节点,使分布式温度传感器 设计大为简化。 测温时无需任何外围原件, 可以通过数据线直接供电, 具有超低 功耗工作方式。测温范围为 -55 到+1 25摄氏度,可直接将温度转换值以 16位二 进制数字码的方式串行输出, 因此特别适合单线多点温度测量系统。 由于传输的 是串行数据, 可以不需要放大器和 A/D 转换器,因而这种测温方式大大提高了各 种温度测控系统的可靠性,降低了成本,缩小了体积。3 开关器件由于单片机与电动机之间需要用开关器件连接,并且前者用弱电控制,后者由强电控制,这就尤

6、其需要注意安全问题。于是我想到了在课本中学过的高性能安全开关器件光电耦合器。光电耦合器是由一个发光器件和和一个光电转换器件组成,这里所用的光电耦合器OPTOCOUPLER-NP是由一个发光二极管和一个光敏晶体管所组成。当发光二极管发光,就会使得光 敏晶体管导通,继电器通电动作,将开关吸合,电动机回路断开。222电路设计方法1 显示部分电路显示电路截图如下图所示LCD1LM016L图2.1显示部分电路图这里我选用 LCDLM016L液晶显示屏作为系统的显示器件,如图所示, LCDLM016L采用标准的16脚接口,仿真时隐藏了背光正极和背光负极两个 引脚。它通过 D0-D78位数据端来与单片机进行

7、数据和指令传输,这里我们 将它与单片机的 P0 口连接。在显示屏上显示的内容包括设定的温度值SET传感器检测到的环境温度SA以和时钟,这个时钟是可以调整的,这样方便工作人员在对系统进行 操作时有一个时间概念。2 温度检测电路温度传感器与单片机的连接情况如下图所示图2.2温度检测电路图温度传感器18B20将检测到的环境实时温度进行A/D转换和放大,然后串行送入单片机 P1.7 口,便于单片机将此数值与设定的温度值进行比较, 然后先做出相应反应。在仿真时,我们只能通过按18B20上的加减按钮来调节实时温度,是一个模拟的过程。3.键盘电路键盘电路如下图所示。图2.3键盘电路图这里减排设计得比较简单,

8、“ MS键是切换调整对象的,调整对象包括时、分、温度设定值三项,“ +”键是向上加调整对象的值,“一”键是向下减调整对象的值,“ON/OFF键是打开和关闭系统自动调节功能的开关键。4 电气开关和工作电路电器开关和工作电路如下图所示图2.4电气开关和工作电路图如图所示,光电耦合器1脚接电源,2脚接单片机P3.7脚。工作过程用以下三个阶段来描述:(1)单片机将温度传感器送入的值与设定值进行比较,若送入值小于 设定值,则P3.7脚保持高电平,这样发光二极管不发光,光敏晶体管保持 高阻态,继电器也不会工作,电动机和灯泡维持导通,相当于电炉继续加热,指示灯亮;(2) 一旦送入值比设定值大,单片机将会控制

9、P3.7脚变为低电平, 发光二极管导通发光,光敏晶体管受光照影响导通,继而继电器工作,电磁铁将单刀双掷开关吸向左端,使电动机和灯泡同时停止工作,这就相当 于电炉断电,停止加热;(3) 电炉短路一段时间后,必然导致炉温降低,而温度传感器 DS18B20在不间断地检测炉温,当检测值低于设定值后,单片机又控制P3.7脚恢复高电平,光电耦合器恢复高阻态,继电器断电,单刀双掷开关被弹回右端,电动机和灯泡又开始工作,这相当于电炉从新开始加热。223绘制流程图224程序设计由于整个程序工程量比较大,我采用模块化设计方法来设计这个程序。首先定义在后面将会用到的变量,不可能一次定义准确,所以边定义边补充。然后编

10、写子函数,包括LCM初始化子函数、显示指定坐标的一个字符子函数、ds18b20初始化函数、ds18b20延迟子函数、读取 ds18b20当前温度子函数、液晶显示子函数、键盘扫描子函数、设定工作模式子函数、按键加法子函数、按键减法子函数、24C02读写驱动程序、定时器t0中断子函数等子程序,最后是主函数。2.3调试和仿真在Keil软件中编写完程序后,编译生成.Hex文件,单片机可以执行.Hex 文件。在Protues软件中,给单片机加载所生成的.Hex文件,按下运行按rjiU钮,系统开始仿真。系统仿真截图如下图所示。1揺疊鑒碎1罟罟害鲁r鲁害專一一蚩舄耳寻Q5:36:67SET:28C 5A:2

11、1.0Or rJU-LCDtLAVI HLr rJU-DlXi -h-ZJi _*V.-D1X*-3Jl、QJ IVHRL1.图2.5系统仿真图(一)上一张是当温度采样值小于设定值,电热炉处于工作状态时的仿真截 图。以下这张是当温度采样值高于设定值后,系统自动做出反应,使电热 炉断电停止工作的仿真截图。器-TWAT起* U3FILI. ir .orekTO-Vl2Jim-ufTiiTCCLiTLSlF-hfF图2.6系统仿真图(二)3结果分析由以上仿真结果可以知道,此次的设计基本成功。当采样温度低于设 定值的时候,系统不会对电热炉做出相应动作,电热炉保持加热。一旦采 样温度高于设定值,系统就会

12、做出反应,使电加热炉断电停止加热。当温 度降下来后,系统又会自动控制电加热炉重新开始加热。系统的反应速度 也是十分精确的,会在很短的时间内作出相应动作。另外,由于在电路中 加入了 EPROM24C02使得该系统具有掉电保护功能,来电后自动恢复正常 工作。除此之外,该系统还有一个比较实用的小功能一电子钟,这样的话 工作人员可以利用它准确掌握系统已经工作的时间,也就是说可以把它当 做一个定时器来用。在安全保护方面,该系统也有相当不错的表现,由于 使用了光电耦合器和就电磁继电器,将强电部分和弱电部分充分隔离,十 分安全。综合以上分析,该系统的设计十分成功。4 课程设计心得体会一个星期很快就过去了,

13、计算机控制技术课程设计也告一段落。 本次课程设 计,我的题目是设计一个电加热炉温度控制系统 。说到电加热炉,我们都比 较熟悉,在日常生活中我们经常用到, 特别是冬天用它来煮火锅。 我们也会发现 这样一个问题, 一般的电加热炉是没有温度自动控制的, 当温度上升到我们需要 的程度时,它仍然继续加热,这不仅会影响到加热效果,还会造成电能的浪费。 那么就有必要设计一种能自动调节炉温的系统, 把它应用到日常生活中, 将会给 人们带来极大的方便。在设计的过程中, 我也遇到一些麻烦, 比如说怎样来实现电动机回路的自动 通断调节、 怎样来实现时钟的调整等等, 这些问题都令我十分棘手。 通过去图书 馆查阅相关资

14、料和上网搜索各硬件的原理以和应用, 我最终都一一解决了这些问 题。由于我们是三个同学做同一个题目, 在设计过程中, 我们遇到困难的时候也 经常相互讨论,相互请教,最终一起解决问题,在此也感谢我的“战友”们。总的来说, 此次课程设计的过程比较轻松, 从拿到问题到彻底解决问题, 这 是一个令人振奋并享受的过程。 经过去图书馆大量的查阅书籍, 我也学到了很多 在课本上没有的知识, 收获颇丰。 这段过程让我懂得了一个道理, 那就是学生要 学的绝对不该仅仅是课本上的东西, 有些东西只有走进图书馆, 你才可能学习到。 也只有这样,我们才能成为一个见多识广、渊博的人。参考文献1 于海生微型计算机控制技术清华

15、大学出版社, 20042 谭浩强.C程序设计(第三版)清华大学出版社,20063 戴焯. 传感与检测技术 . 武汉理工大学出版社, 20064 张毅刚. 单片机原理和应用 . 高等教育出版社, 20035 柯节成. 简明电子元件器件手册 . 高等教育出版社, 2005附录系统的完整程序如下:/*电加热炉温度控制系统问题描述:当温控开关打开时,若测得环境温度大于设定温度,则继电器 吸合,电加热炉停止工作;若测得环境温度小于设定温度,则继电器释放, 电加热炉继续工作。*/#include#include#include #define uchar unsigned char#define uint

16、 unsigned int#define BUSY 0x80/lcd#define DATAPORT P0 /#define PLAYE_ADDR XBYTE0XBFFFsbit RED_ALARM=PO;sbit WRITE_ALARM=P1A1;sbit GREEN_ALARM=P2;sbit BLUE_ALARM=P1A3;sbit P1_4=P1A4;sbit P1_5=P1A5;sbit P1_6=P1A6;sbit DQ = P1A7;sbit LCM_RS=P2A0;sbit LCM_RW=P2A1;sbit LCM_EN=P2A2;sbit sda=P2A3;/IOsbit s

17、cl=P2A4;sbit ad_busy=P3A2;sbit RECLED_EOC=P3A5;sbit OUT=P3A7;忙检测标志定义P0 口为LCD通讯端口/ 语音报警地址/ 红色指示灯/ 白色指示灯/ 绿色指示灯/ 时钟调整/ 时钟加/ 时钟减/ 定义 ds18b20 通信端口/ 数据 / 命令端/ 读 / 写选择端口定义/LCD 使能信号/adc 中断方式接口/ISD1420 放音结束查询标志uchar ad_data;uchar seconde;uchar minite;uchar hour;uchar mstcnt=0;uchar temp1,temp2,temp;uchar t,

18、set;uchar K;bit ON_OFF=0;bit outflag;bit write=0;uchar code str0=- : : - ; uchar code str1=SET: C SA: . C; void delay_LCM(uint);void initLCM( void);void lcd_wait(void);/ad 采样值存储/ 定义并初始化时钟变量/ 温度显示变量/LCD 延时子程序/LCD 初始化子程序/LCD 检测忙子程序写指令到 ICM 子函数写数据到 LCM子函数显示指定坐标的一个字符显示指定坐标的一/ 定时器初始化void WriteCommandLCM(

19、uchar WCLCM,uchar BusyC); / void WriteDataLCM(uchar WDLCM); /void DisplayOneChar(uchar X,uchar Y,uchar DData) / 子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData);/ 串字符子函数void init_timer0(void);void displayfun1(void);void displayfun2(void);void displayfun3(void);void displayfun4(void);/ 键盘扫描

20、子程序void keyscan(void );void set_adj(void);void inc_key(void);void dec_key(void);void delay_18B20(unsigned int i);void Init_DS18B20(void) ;uchar ReadOneChar(void);void WriteOneChar(unsigned char dat);void ReadTemperature(void);void ad0809(void); void playalarm(void);*延时 K*1ms,12.000mhz*/void delay_LC

21、M(uint k) uint i,j;for(i=0;ik;i+)for(j=0;j60;j+);/*写指令到 LCM 子函数 */void WriteCommandLCM(uchar WCLCM,uchar BusyC)if(BusyC)lcd_wait();DATAPORT=WCLCM;LCM_RS=0;/选中指令寄存器LCM_RW=0;/ 写模式LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/*写数据到 LCM 子函数 */void WriteDataLCM(uchar WDLCM) lcd_wait( );/DATAPORT=WDLCM;LCM_R

22、S=1;/LCM_RW=0;/LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;检测忙信号选中数据寄存器写模式*lcm内部等待函数*/void lcd_wait(void)DATAPORT=0xff;LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();while(DATAPORT&BUSY) LCM_EN=0;_nop_();_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;*LCM初始化子函数 */void initLCM( ) DATAPORT=0;delay_LCM(15);WriteCommandLC

23、M(0x38,0); / delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5);WriteCommandLCM(0x38,0); delay_LCM(5);WriteCommandLCM(0x38,1);/8bitWriteCommandLCM(0x08,1); /WriteCommandLCM(0x01,1); /WriteCommandLCM(0x06,1); /WriteCommandLCM(0x0c,1); /三次显示模式设置,不检测忙信号数据传送, 2 行显示, 5*7 字型,检测忙信号 关闭显示,检测忙信号 清屏,检测忙信号 显示光

24、标右移设置,检测忙信号 显示屏打开,光标不显示,不闪烁,检测忙信号*显示指定坐标的一个字符子函数 */void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=1;X&=15;,地址码 +0X40if(Y)X|=0x40; / 若 y 为 1 (显示第二行)X|=0x80; / 指令码为地址码 +0X80 WriteCommandLCM(X,0);WriteDataLCM(DData);/* 显示指定坐标的一串字符子函数 */void DisplayListChar(uchar X,uchar Y,uchar code *DData)uchar L

25、istLength=0;Y&=0x01;X&=0x0f;while(X0;i-)DQ = 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ) dat|=0x80;delay_18B20(4);return(dat);/*ds18b20写一个字节 *void WriteOneChar(uchar dat)unsigned char i=0; for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;delay_18B20(5);DQ = 1; dat=1;*读取 ds18b20 当前温度 */void ReadTemperature(void) unsign

26、ed char a=0; unsigned char b=0; unsigned char t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B20();WriteOneChar(0xCC);WriteOneChar(0xBE); 是温度delay_18B20(100);a=ReadOneChar(); b=ReadOneChar(); temp1=b4; temp2=a

27、&0x0f;temp=(b*256+a)4); / 跳过读序号列号的操作/ 读取温度寄存器等(共可读 9 个寄存器) 前两个就/ 读取温度值低位/ 读取温度值高位当前采集温度值除16 得实际温度值*液晶显示子函数1 正常显示 */void displayfun1(void)WriteCommandLCM(0x0c,1); / 显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x3

28、0);DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(4,1,K/10+0x30);DisplayOneChar(5,1,K%10+0x30);DisplayOneChar(11,1,temp1/10+0x30); /DisplayOneChar(12,1,temp1%10+0x30);DisplayOneChar(14,1,te

29、mp2/10+0x30);/ 液晶上显示小时/ 液晶上显示分/ 液晶上显示秒/ 液晶上显示设定的温度液晶上显示测得的温度if(ON_OFF=0)DisplayOneChar(14,0,0x4f);DisplayOneChar(15,0,0x46);else/ 若温控标志为 0/ 液晶上显示不控温的标志液晶上显示控温的标志DisplayOneChar(14,0,0x4f); /DisplayOneChar(15,0,0x4e);if(outflag=1)DisplayOneChar(0,0,0x7c);elseDisplayOneChar(0,0,0xef);*液晶显示子函数*void disp

30、layfun2(void)WriteCommandLCM(0x0c,1); / 显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(4,1,K/10+0x30);DisplayOneChar

31、(5,1,K%10+0x30);DisplayOneChar(11,1,temp1/10+0x30);DisplayOneChar(12,1,temp1%10+0x30);DisplayOneChar(14,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); / 显示屏打开,光标显示,闪烁,检测忙信号DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x30);*液晶显示子函数3*void displayfun3(void)WriteCommandLCM(0x0c,1); / 显示屏打开,光标

32、不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(4,1,K/10+0x30);DisplayOneChar(5,1,K%10+0x30);DisplayOneChar(11,1,temp1/10+0x30);D

33、isplayOneChar(12,1,temp1%10+0x30);DisplayOneChar(14,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); / 显示屏打开,光标显示,闪烁,检测忙信号DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);*液晶显示子函数 4 */void displayfun4(void)WriteCommandLCM(0x0c,1); / 显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);Displa

34、yListChar(0,1,str1);DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x30);DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(11,1,temp1/10+0x30);DisplayOneChar(12,1,temp1%10+0x30);D

35、isplayOneChar(14,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); / 显示屏打开,光标显示,闪烁,检测忙信号 DisplayOneChar(4,1,K/10+0x30);DisplayOneChar(5,1,K%10+0x30);*键盘扫描子函数*void keyscan(void)uchar xx;/P1=0xff;if(P1!=0xff)delay_LCM(50);if(P1!=0xff)xx=P1; switch(xx) case 0xfe:set_adj();case 0xfd:inc_key();局部变量/ 根据按键状态,调用不同的

36、子函数break; break;case 0xfb:dec_key(); break;case0xf7:delay_LCM(150);ON_OFF=!ON_OFF;while(!BLUE_ALARM); break;default:break;*设定工作模式子函数*void set_adj(void)delay_LCM(100);set+;if(set=4)set=0;while(!RED_ALARM);*按键加法子函数*void inc_key(void)break; delay_LCM(150); switch(set) case 0:if(P1=0xf7)delay_LCM(150);O

37、N_OFF=!ON_OFF; case 1:hour+; if(hour=23)hour=23; break; case 2:minite+; if(minite=59)minite=59;break; case 3:K+;if(K=99)K=99; break; default:break; while(!WRITE_ALARM);*按键减法子函数*void dec_key(void)break; delay_LCM(150); switch(set) case 0:if(P1=0xf7)delay_LCM(150);ON_OFF=!ON_OFF; case 1:hour-; if(hour

38、=0)hour=0; break; case 2:minite-;if(minite=0)minite=0;break; case 3:K-;if(K=1)K=1;break;default:break;while(!GREEN_ALARM);* *24C02读写驱动程序 */void delay1(uchar x)uint i;for(i=0;ix;i+);void flash() ; ; void x24c02_init() /24c02scl=1;flash();sda=1;flash();void start() /sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();void stop() /sda=0;flash();scl=1;flash();sda=1;flash();初始化子程序启动 I2C 总线停止 I2C 总线void writex(uchar j) /写一个字节uchar i,temp;temp=j;for (i=0;i8;i+) temp=temp1; scl=0; flash(); sda=CY; flash(); scl=1; flash();scl=0;flash();sda=1;flash();uchar readx() / 读一个字节 uchar i,j,k=0;scl=

温馨提示

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

评论

0/150

提交评论