收藏 分销(赏)

恒温箱设计优质报告.docx

上传人:精**** 文档编号:2951290 上传时间:2024-06-11 格式:DOCX 页数:41 大小:749.80KB 下载积分:14 金币
下载 相关 举报
恒温箱设计优质报告.docx_第1页
第1页 / 共41页
恒温箱设计优质报告.docx_第2页
第2页 / 共41页


点击查看更多>>
资源描述
计算机控制系统设计汇报 设计名称: 恒温箱温度计算机控制系统设计 姓 名: 学 号: 班 级: 学 院: 信息工程学院 任课老师: 基于单片机恒温箱控制系统设计 摘要: 本设计是基于AT89S52单片机恒温箱控制系统,系统分为硬件和软件两部分,其中硬件包含:电源、温度传感器、显示、控制、晶闸管驱动和报警设计;软件包含:键盘管理程序设计、显示程序设计、PID控制程序设计和温度报警程序设计。编写程序结合硬件进行调试,能够实现设置和调整初始温度值,进行液晶显示,当加热到设定值后立即报警。本设计从实际应用出发选择了体积小、精度相对高数字式温度传感元件DS18B20作为温度采集器,单片机AT89S52为主控芯片,液晶作为显示输出,实现了对温度实时测量和恒定控制。 关键词:单片机、温度传感器、恒温、声光报警、PID。 引言: 温度控制是工业生产过程中常常碰到过程控制,尤其是在冶金、化工、建材、食品、机械、石油等工业中,含有举足重轻作用,其温度控制效果直接影响着产品质量,所以设计一个较为理想温度控制系统是很有价值。对于不一样场所、不一样工艺、所需温度高低范围不一样、精度不一样,则采取测温元件、测温方法和对温度控制方法也将不一样;产品工艺不一样、控制温度精度不一样、时效不一样,则对数据采集精度和采取控制算法也不一样。所以,对温度测控方法多个多样。伴随电子技术和微型计算机快速发展,微机测量和控制技术也得到了快速发展和广泛应用。利用微机对温度进行测控技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。然而现有温度传感元件大多为模拟器件(热电耦)体积大、应用复杂、而且不轻易实现数字化等缺点,阻碍了应用领域扩展。本设计从实际应用出发选择了体积小、精度相对高数字式温度传感元件DS18B20作为温度采集器,单片机AT89S52作为主控芯片,数码管作为显示输出,实现了对温度实时测量和恒定控制。 一、 本课题设计要求 以下图所表示,恒温箱采取木箱或纸箱(外形尺寸小于30cm×30cm×30cm),内置白炽灯泡(功率小于100W)用于加热。 30cm 30cm 木箱或纸箱 白炽灯泡≤100W 自制恒温箱要求 (1)温度采集传感器采取热电阻或热电偶,或一体化数字温度传感器DS18B20。 (2)控制灯泡亮度或发烧量,采取可控硅平滑控制。 (3)采取单片机作为控制器。 (4)采取LCD液晶显示器作为显示器,同时显示给定温度和实际温度。 (5)采取自制按键键盘作为温度给定值输入。 (6)恒温箱实际温度达成给定值时(误差要求±1℃)需声光提醒,声音延时5秒后停止。 (7)恒温箱最高温度≤50℃。 二、总体方案设计 系统整体框图以下图: 图1 系统结构框图 1.电源模块 首先是电源模块,利用变压器把220V交流电转为正负12V交流电,再用二极管桥式整流电路,整流出直流电。以后用大电容平波,小电容滤波,以后在用7805稳压芯片稳出5V直流电,供给各个部分。其次是单片机外围电路,其中包含有单片机最小系统、LCD显示、按键、晶闸管控制电路和温度采集电路。 2.温度传感器 方案一:使用热敏电阻作为传感器,用热敏电阻和一个对应阻值电阻相串联分压,利用热敏电阻阻值随温度改变而改变特征,采集这两个电阻改变分压值,并进行A/D转换,此设计方案需要A/D转换电路,增加了硬件成本而且热敏电阻感温特征曲线并不是严格性,会产生较大测量误差。 方案二:采取温度传感器铂电阻 Pt1000。铂热电阻物理化学性能在高温和氧化性介质中很稳定,它能用作工业测温元件,且此元件线性很好。在 0—100 摄氏度时,最大非线性偏差小于 0.5 摄氏度。铂热电阻和温度关系是,Rt = R0(1+At+Bt) ;其中 Rt 是温度为 t 摄氏度时电阻;R0 是温度为 0 摄氏度时电阻;t 为任意温度值,A,B 为温度系数。 方案三:采取模拟温度传感器AD590K,AD590K含有较高精度和反复性(反复性优于0.1℃),其良好非线性能够确保优于±0.1℃测量精度。但其测量值需要经过运算放大、模数转换再传给单片机,硬件电路较复杂,调试也会相对困难,所以本系统不宜采取此法。 方案四:采取数字式温度传感器DS18B20,这类传感器为数字式传感器,而且仅需要一条数据线进行数据传输,易于和单片机连接,能够去除A/D模块,降低了硬件成本,简化系统电路。另外,数字式温度传感器还含有测量精度高,测量范围广等优点。 综合以上四种方案,本设计采取第四种方案,利用数字温度计DS18B20作为温度传感器。 3.显示部分 方案一:温度显示能够用数码管,但数码管只能显示简单数字,它有电路复杂,占用资源较多,显示信息少等缺点。 方案二:1602液晶也叫1602字符型液晶,它是一个专门用来显示字母、数字、符号等点阵型液晶模块。显示字母和数字比较方便,控制简单,成本较低。我们设计系统需要显示更多信息,所以考虑显示功效愈加好液晶显示,要求能显示更多数据,增强显示信息可读性,看起来更方便。 综合以上两种方案,本设计采取方案二,用1602液晶显示器来显示数据。 4.输出控制 方案一:采取继电器,易于控制,且实施比较简单,但强电和弱电不能很好隔离,抗干扰能力极差,开关频率不能太高,灯泡会一直闪烁。 方案二:采取固态继电器,易于控制,电路简单,但需要PWM波来进行控制,一般51单片机无PWM口,故不采取此法。 方案三:采取晶闸管,控制信号和输出信号能够很好隔离,增强了系统安全性和抗干扰能力。 综合以上三种方案,本设计采取晶闸管控制负载工作。 三、硬件电路设计及工作原理 1.系统功效及工作步骤介绍 依据恒温箱控制器功效要求,并结合对51系列单片机资源分析,即单片机软件编程自由度大,可用编程实现多种控制算法和逻辑控制。所以采取AT89C52作为电路系统控制关键。恒温箱控制器总体布局图1所表示。按键将设置好温度值传给单片机,经过温度显示模块显示出来。初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到温度值实时显示出来,当加热到设定温度值时,单片机控制声光报警模块,发出声光报警,当超出设置温度关闭加热器。当自然冷却到设定温度以下时,单片机再次开启加热器,如此循环反复,以达成恒温控制目标。系统结构框图图1所表示,系统基础硬件电路图图2所表示。 图2 基础硬件电路图 2. 系统硬件设计 (1)DS18B20测温电路 DS18B20数字温度计是Dallas企业生产1-Wire器件,即单总线器件。和传统热敏电阻有所不一样,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,含有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。所以用它来组成一个测温系统,含有电路简单,在一根通信线上能够挂很多这么数字温度计,十分方便。现在已被众多行业进行广泛利用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。 经过编程,DS18B20能够实现9~12位温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,所以从微处理器到DS18B20仅需连接一条信号线和地线。读、写和实施温度变换所需电源能够由数据线本身提供,而不需要外部电源。 每片DS18B20在出厂时全部设有唯一产品序列号,所以多个DS18B20能够挂接于同一条单线总线上,这许可在很多不一样地方放置温度传感器,尤其适合于组成多点温度测控系统 因为DS18B20采取是1-Wire总线协议方法,即在一根数据线实现数据双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,所以,我们必需采取软件方法来模拟单总线协议时序来完成对DS18B20芯片访问。1-Wire总线支持一主多从式结构,硬件上需外接上拉电阻。当一方完成数据通信需要释放总线时,只需将总线置高点平即可;若需要取得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平取得总线控制权。 图3 DS18B20测温电路 (2)输出控制电路 加热电路中采取MOC3023目标是实现强电和弱电隔离,其在电路中工作原理是单片机依据传感器和设定开关输入控制指令,控制电器电源通断。BTA16是小型塑封双向晶闸管,当电源控制电路输出管脚送出开关控制指令为高电平,MOC3023截止,BTA16截止,电器被关闭;当电源控制电路送出开关控制指令为低电平,MOC3023导通,BTA16导通,电器被打开。R4是BTA16保护电路。 图4 光耦控制输出 (3)显示电路 1602液晶也叫1602字符型液晶 它是一个专门用来显示字母、数字、符号等点阵型液晶模块 它有若干个5X7或5X11等点阵字符位组成,每个点阵字符位全部能够显示一个字符。显示电路采取LCD1602液晶显示,图(7)所表示,图中只画出了其对应接口,3脚用于调整LCD1602背光,4、5、6为LCD1602控制口,用于控制其写入或是读出指令,7至14脚为LCD1602数据口,将数传送到LCD1602中。 图5 LCD1602显示电路 LCD1602特征: +5V电压,对比度可调; 内含复位电路; 提供多种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多个功效; 有80字节显示数据存放器DDRAM; 内建有160个5X7点阵字型字符发生器CGROM,8个可由用户自定义5X7字符发生器CGRAM; 基础操作时序: 读状态:输入:RS=L,RW=H,E=H;输出:DB0~DB7=状态字 ; 写指令:输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码 ;输出:无。 读数据:输入:RS=H,RW=H,E=H;输出:DB0~DB7=数据 ; 写数据:输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据 ;输出:无。 LCD1602多种指令不再一一说明。 (4)温度越线报警电路 报警电路图8所表示,该电路采取一个小功率三极管Q1驱动蜂鸣器BELL,当单片机接收到超额温度信号或危险信号时,输出脚BELL输出高点平,Q1导通,致使蜂鸣器BELL得电工作,发出报警声。同时,电路中发光二极管指示出电路工作状态。 图6 报警电路 (5)过零检测 TLP521-2是一个内部集成两个光耦芯片,关键用于过零检测,当电源正弦交流电过零时,在三极管集电极会产生一个下降沿和一个上升沿,这么单片机外部中止口能够识别到,最终用于控制晶闸管导通角。 图7过零检测电路 四、系统应用软件设计 软件描述 本程序关键功效就是控制晶闸管导通角,来控制白炽灯亮度,最终达成控制温度目标。设置有两个按键,一个按键能够增加期望温度,另一个能够降低期望温度,步进最小是0.1摄氏度。有一个LCD显示器,能够显示目前温度和期望,当实际温度达成期望温度时,蜂鸣器和LED灯报警5s后停止。 利用控制策略是PID算法,PID算法精华之处就是利用偏差进行控制。P代表是百分比,这个参数可是使调整愈加快速,I是积分,这个参数能够消除稳态误差,D是微分,能够超前控制。 依据以上对操作和工作过程分析,程序应分为两个阶段:一是通电或复位后到给定温度;二是检测并显示系统实时温度,并依据检测结果控制电热器,这时系统不接收键盘输入。所以,程序能够分为以下多个功效模块:温度设定和开启;显示;温度检测;温度控制和报警。 (1)键盘管理模块 当通电以后,系统进入键盘管理状态,单片机只接收设定温度和开启。当检测到有键闭合时先去除抖动,这里采取软件延时方法,延时一段时间后,再确定是否有键闭合,然后将设定好值送入预置温度数据区,并调用温度正当检测报警程序,当设定温度超出最大值时就会报警,最终当开启键闭合时开启加热。 键盘设定:用于温度设定。共两个按键。 KEY1(P3.6): 设置温度“+”。 KEY2(P3.7): 设置温度“-”。 (2)显示模块 显示子程序功效是将缓冲区二进制数据先转换成3个BCD码,再将其分别存入百位、十位、个位3个显示缓冲区,送往串行口,利用单片机P0口进行扫描,让数据动态在1602上显示出来,可显示设置温度和测量温度。 (3)控制模块 温度控制子程序步骤图7所表示,将目前温度和设定好温度比较,当目前温度小于设定温度时,开启电热器;当目前温度大于设定温度时,关闭电热器;当二者相等时,电热器保持这一状态。 图8控制模块程序步骤 (4)温度报警模块 依据设计要求,当检测到目前温度值高于设定温度值时报警,报警同时关闭电热器。为了预防误报,设置了报警许可标志,只有在许可报警情况下,温度值高于设定温度值时才报警。 (5)主程序和中止服务程序步骤 主程序采取中止嵌套方法设计,各功效模块可直接调用。主程序完成系统初始化,温度预置及其正当性检测,预置温度显示及定时器0设置。定时器0中止服务子程序是温度控制体系主体,用于温度检测、控制和报警(包含开启温度转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出控制脉冲等)。 图9 主程序步骤图 图10 中止服务程序步骤图 五、系统调试和仿真 硬件调试时,可先检验印制板及焊接质量是否符合要求,有没有虚焊点及线路间有没有短路、断路。然后用万用表检测,检验无误后,可通电检验 LCD 液晶显示器亮度情况,通常情况下取背光电压为 4~5.5V 即可得到满意效果,再依次检验各部分结构安装是否牢靠。 软件调试是在proteus编译器下进行,源程序编译及仿真调试应分段或以子程序为单位逐一进行,最终结合硬件实时调试。 子程序调试包含: 1).LCD1602显示程序; 2).延时函数子程序; 3).DS18B20读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。 六、设计心得 这次课程设计是对过去所学知识一次回顾和巩固,也是一次尤其实践能力。经过该次课程设计,不仅培养了我们实践动手能力,而且也学到了很多东西。因为以前学习知识,全部是基于理论,就算是试验课,器材也是学校已经弄好了,我们做试验基础就是连接线路,也根本了解不深入。不过,这次课程设计,不仅要我们自己买器材,更要我们设计电路、画出电路图、画出PCB、最终焊接成一块板子,然后调试板子,板子调试差不多了就要开始设计程序了。恒温箱顾名思义就是要让温度基础恒定在一个我们期望值,所以在设计程序时,就要想一个算法来控制单片机,使之能够恒定温度。当然对于这种控制,最好算法莫过于PID算法,因为此法简单而有效,工业上也有很多应用,假如需要更正确控制,能够在PID基础增加部分算法,比如模糊控制、鲁棒控制等。 看到完成课程设计时,我知道还有部分不足,很多地方需要更深入改善,不过我仍然很快乐,因为我尽心尽力将它全部全部完成了,我尽到自己最大努力。即使还是有很多不懂之处,不过在同学帮助下也弄懂了不少。 参考文件 (1) 郭天祥,新概念51单片机c语言教程,电子工业出版社, (2) 陈跃东,DS18B20集成温度传感器原理和应用[J],安徽教育出版社,,5-23 (3) 李广弟,《单片机基础》[M],北京航空航天大学出版社,1994,1-56 (4) 谭浩强,C程序设计(第二版)[M],清华大学出版社, (5) 付家才,单片机控制工程实践技术[M],化学工业出版社, 附录一 源程序代码 #include<includes.h> //=============================================// //============液晶初始化及显示模块=============// //=============================================// sbit RS=P2^5; //数据/命令选择端 sbit RW=P2^6; //读/写选择端 sbit E=P2^7; //使能端 uchar table[10]={'0','1','2','3','4','5','6','7','8','9'}; //-----------delay延时函数 void delay1602(int z) { int i,j; for(j=z;j>=0;j--) for(i=11;i>=0;i--); } uchar gfReverse_Bits(uchar Data) { Data=(Data<<4)|(Data>>4); Data=((Data<<2)&0xcc)|((Data>>2)&0x33); Data=((Data<<1)&0xaa)|((Data>>1)&0x55); return Data; } //-----------写com为命令 void write_com(uchar com) { com=gfReverse_Bits(com); E=0; RS=0; RW=0; P0=com; E=1; delay1602(20); E=0; RS=1; } //-----------写dat为数据 void write_dat ( uchar dat ) { dat=gfReverse_Bits(dat); E=0; RS=1; RW=0; P0=dat; E=1; delay1602(20); E=0; RS=0; } //-----------初始化液晶屏 void init_1602() { write_com(0x38); delay1602(50); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); } //-----------液晶显示函数 //-----------address为显示地址: //0x80--第一行,0x80+0x40--第二行 //-----------mean[]为意义字符串 //-----------value为显示值 //-----------unit[]单位字符串 void dispaly(uchar address,uchar mean[],float value,uchar unit[]) { uchar *pt; int Val; write_com(address); for(pt=mean;*pt!='\0';pt++) { write_dat(*pt); } Val = (int)(value*10); write_dat(table[Val/100]); write_dat(table[Val%100/10]); write_dat('.'); write_dat(table[Val%10]); for(pt=unit;*pt!='\0';pt++) { write_dat(*pt); } } void bdispaly(uchar ad,uchar sta[]) { uchar *pp; write_com(ad); for(pp=sta;*pp!='\0';pp++) { write_dat(*pp); } } #include<includes.h> //=============================================// //=============DS18b20模块初始化===============// //=============================================// sbit DQ = P2^1; //-----------delayDs18b20延时函数 void delayDs18b20(uint i)//延时函数 { while(i--); } //----------18b20初始化函数 void Init_DS18B20(void) { DQ = 1; //DQ复位 delayDs18b20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delayDs18b20(80); //正确延时 大于 480us DQ = 1; //拉高总线 delayDs18b20(20); } //----------读一个字节 uchar ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delayDs18b20(5); } return(dat); } //----------写一个字节 void WriteOneChar(uchar dat) { uchar i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delayDs18b20(5); DQ = 1; dat>>=1; } delayDs18b20(5); } //----------读取温度 float ReadTemperature(void) { uchar TH=0; uchar TL=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号操作 WriteOneChar(0x44); // 开启温度转换 delayDs18b20(200); Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 TL=ReadOneChar(); TH=ReadOneChar(); return((TH*256+TL)*0.0625); } #include<includes.h> //=============================================// //================键盘延时函数=================// //=============================================// void DelayKeyms(int z) { int i,j; for(j=z;j>=0;j--) for(i=110;i>=0;i--); } //=============================================// //================键盘扫描函数=================// //=============================================// sbit SET=P1^0; sbit UP=P1^1; sbit DOWN=P1^2; sbit OUT=P1^3; uchar count=1; uchar OutFlag=1; float TempSet=27.0; float temp; /*uchar KeyScan(void) { if(Key1==0) { DelayKeyms(10); if(Key1==0) { while(!Key1); return 1;} } if(Key2==0) { DelayKeyms(10); if(Key2==0) { while(!Key2); return 2;} } if(Key3==0) { DelayKeyms(10); if(Key3==0) { while(!Key3); return 3;} } return 0; } */ void SetKey() //模式选择 { if(SET==0) { DelayKeyms(10); if(SET==0) { count++; if(count>2) count=1; } while(SET==0); } } void UpKey() //按键加 { if(UP==0) { DelayKeyms(10); if(UP==0) { switch(count) { case 1:temp=TempSet; temp=temp+1; if(temp>50.0) temp=20.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp+0.1; if(temp>50.0) temp=20.0; TempSet=temp; break; default:break; } } while(UP==0); } } void DownKey() //按键减 { if(DOWN==0) { DelayKeyms(10); if(DOWN==0) { switch(count) { case 1:temp=TempSet; temp=temp-1; if(temp<20.0) temp=50.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp-0.1; if(temp<20.0) temp=50.0; TempSet=temp; break; default:break; } } while(DOWN==0); } } void OutKey() //弹出 { if(OUT==0) { DelayKeyms(10); if(OUT==0) { OutFlag++; if(OutFlag>1) OutFlag=0; } while(OUT==0); } } void keyDone() //按键功效实施 { bdispaly(0x80,"please set Tempset:"); dispaly(0x80+0x40,"Temp_Set:",TempSet,"'C"); SetKey(); switch(count) { case 1: UpKey(); DownKey(); dispaly(0x80+0x40,"Temp_Set:",TempSet,"'C"); break; case 2: UpKey(); DownKey(); dispaly(0x80+0x40,"Temp_Set:",TempSet,"'C"); break; default:break; } OutKey(); } #include<includes.h> sbit Controlpin=P2^0; sbit Light=P2^3; sbit Beep=P2^2; //=============================================// //===================延时函数====================// //=============================================// void Delayms(int z) { int i,j; for(j=z;j>=0;j--) for(i=110;i>=0;i--); } //=============================================// //===================主函数====================// //=============================================// uchar beepflag=0; uchar Be_LiFlag=0; extern float TempSet; float TempReal=0; uchar ExpectTime=0; void main() { //初始化定义 //uchar k; float TempNew = 0; //float TempOld1 = 0; //float TempOld2 = 0; init_1602(); XInterruptInit(); TimerInit(); Beep =1; Controlpin=1; EA=0; while(1) { //键盘数据处理 //蜂鸣器报警 OutKey(); while(OutFlag==0) { keyDone(); Light=1; beepflag=0; } if(TempSet==TempReal&&!beepflag) { Be_LiFlag++; } if(Be_LiFlag==6) { Be_LiFlag=0; Beep =0; Light=0; Delayms(500); Beep =1; Light=1; Delayms(500); Beep =0; Light=0; Delayms(500); Beep =1; Light=1; beepflag=1; } //液晶显示数据 //读取温度 TempNew = ReadTemperature(); TempReal=TempNew; //ExpectTime = PidControl(15,0.0,TempSet,TempReal); if(TempNew>TempSet) { // EA=0; Controlpin=1; P2 |=0x10; } else if(TempSet>TempNew) { // EA=0; Controlpin=0; P2 &=0xef; } dispaly(0x80,"Temp_Now:",TempNew ,"'C "); dispaly(0x80+0x40,"Temp_Set:",TempSet,"'C "); } } //=============================================// //==================中止处理===================// //=============================================// void OutIn() interrupt 0 { TR0 = 1; } void Timer0() interrupt 1 { static char time=0; TH0 = (65535-200)/256; TL0 = (65535-200)%256; time++; if(time==ExpectTime) { Controlpin = 0; _nop_(); _nop_(); _nop_(); _nop_(); Controlpin = 1; time = 0; TR0 = 0; } } #include<includes.h> void TimerInit(void) { TMOD=0x01; TH0=(65535-200)/256; TL0=(65535-200)%256; EA=1; PT0=1; ET0=1; } void XInterruptInit(void) { IT0=1; //负跳变延触发 EX0=1; //外部中止0 PX0=0; EA=1; //开总中止 } #include<includes.h> float ErrorNew; float ErrorSum; uchar PidControl(float Kp,float Ki,float tset,float tfeedback) { int Result=0; ErrorNew = tset-tfeedback; ErrorSum=ErrorNew; if((tfeedback-tset)>=0&&(tfeedback-tset)<0.3) Result=25; else if((tset-tfeedback)>0.6
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服