ImageVerifierCode 换一换
格式:DOC , 页数:37 ,大小:857KB ,
资源ID:1976464      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/1976464.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(远程天然气报警控制系统的设计与实现课程设计论文.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

远程天然气报警控制系统的设计与实现课程设计论文.doc

1、 + 现代电子系统设计与实践课程设计 题 目: 远程天然气报警控制系统的设计与实现 指导教师: 专业班级: 11级电子信息科学与技术 学 号: 姓 名: 同组人员: 日

2、 期: 2014-12-15 37 目录 一、绪论 3 1.1 课题背景及意义 3 1.2 课题目标及功能实现 3 二、硬件系统 4 2.1 通信模块ATM900V 4 2.2 MQ-4气敏元件 4 2.3 单片机STC12LE60S2 4 2.4 实验步骤 5 三、软件系统 5 3.1 主程序 5 3.2 系统初始化函数 6 3.3 发送中文短信程序 7 3.4 MQ-4程序 8 3.5 时间程序 9 3.6 GPRS程序 13 3.7 时间显

3、示 19 3.8 汉字字模的数据结构定义 25 四、总结 35 4.1实验结果 35 4.2 心得体会 35 一、绪论 1.1 课题背景及意义 近年来,全国天然气作为清洁能源已在工商业和城镇居民用户中得到广泛应用,特别是随着“西气东输”工程的快速进展,燃气行业发展潜力巨大。城市燃气的普及与应用无疑对改善城市的环境质量和提高居民的生活质量发挥了巨大的作用。但是随着燃气的广泛应用,由于燃气泄漏所引发的爆炸、中毒和火灾事故也时有发生,这在某种程度上增加了城市的不安全和不稳定因素。为了减少并杜绝各种因燃气泄漏而引发的爆炸及火灾事故,

4、各燃气使用单位及居民用户选择一种适合的煤气报警器实为必要之举。         本次课程设计的题目是远程天然气报警控制系统的设计,天然气泄漏报警电路是用于当天然气泄漏达到一定危害浓度时就立即发出报警,它在实际生活中有着十分广泛的应用。我相信通过本次课程设计,我将进一步加深对传感器应用的理解,同时也对电子设计的方法有一定的了解,为今后的学习和工作打下一定的基础。 1.2 课题目标及功能实现 实现对天然气的远程监控,若有燃气泄漏情况则马上启动通讯模块发送短信。 二、硬件系统 2.1 通信模块ATM900V ATM900

5、V是一个通信模块,负责通信,采用AT指令来驱动。 2.2 MQ-4气敏元件 MQ-4是一个气敏元器件,有二端输出,共四个引脚AO、DO、GND、VCC,其中DO是信号输出,当气体浓度达到限定值时就会引发信号,由DO输出的信号发生变化,由高电平变为低电平。 2.3 单片机STC12LE60S2 STC12LE60S2是一个类似于51的单片机,但是时钟频率更高,内存更大,比较适合与通信模块相连。 2.4 实验步骤 使用ATM900V与STC单片机连接,通过烧录单片机的程序来控制通信模块正常工作,并且能在有燃气泄漏的情况下,立即启动通讯模块发送短信。

6、 三、软件系统 3.1 主程序 *******************************主程序************************************ 程序说明: 本程序实现开机自动发送一条中文短信 1.我们的程序全部都是通过单片机串口2与SIM300通讯,串口1用于下载程序和观察SIM300返回的数据 (串口2收到的SIM300返回的数据会通过串口1发送到电脑中,用于观察数据),使用过程中,如果没 有特殊要求跳线帽不用变动。 2.在开发板上放入您的手机卡,接好天线,打开电源,接入耳机。 3.把程序编译后下载到

7、单片机中,使用STC—ISP下载,具体请参照教程。 4.开机自动发送短信到指定的手机上。号码和内容请在开头的数组里面修改 ************************************************************************** #include "systerm.h" #include "mq4.h" void SysInital(void); void SendUDPMessage(char* pnum, char* context, void (*sendfun)(char*)); //在此处修改发送号码和内容 uchar n[

8、13] = "15009719926";//短信号码 uchar context[] = "674E742680015E0860A8597DFF0C6211662F6697604B60A876845973751FFF0C621157285B9E9A8C5BA47B4960A8";//洪旭你好! void main() { uint i = 0; SysInital();//初始化 GPRS_RST = 0;//Sim300 复位键置位 CleanGsmRcv(); while(!Hand("OK"))//与GSM模块握手,判断是否收到GSM模块返回的OK

9、 { Uart2SendStr("ATE1\r");//打开回显命令 DelaySec(1); LCD_prints(0,0,"STARTING..."); } CleanGsmRcv();//清除接收缓存 LED1_ON; while(!(Hand("+CREG: 1,1") || Hand("+CREG: 1,5")))//检测是否以注册到服务商 { Uart2SendStr("AT+CREG=1\r");//设置服务商状态为数据显示 DelaySec(1); Uart2SendStr("AT+CREG?\r");//检测服

10、务商状态 DelaySec(1); } CleanGsmRcv();//清除接收缓存 LCD_prints(0,0,"GSPR REGISTER"); LCD_LIGHT_ON; while(1) { if(DOUT==0)//当浓度高于设定值时 ,执行条件函数 { delay(5);//延时抗干扰 if(DOUT==0)//确定 浓度高于设定值时 ,执行条件函数 { LED=0;//点亮P1.0口灯 delay(500); LED=1; //delay(500);

11、 Uart2SendStr("AT+CLCC\r");//接通电话返回接通指令 DelaySec(1); SendUDPMessage(n, context, Uart2SendStr); LCD_prints(0,1,"PDU MSM SEND"); DelaySec(2); } CleanGsmRcv();

12、 LCD_clr_scr(); } } } 3.2 系统初始化函数 /***************************系统初始化函数************************/ /*函数原型:void SysInital(void) /*函数功能:初始化系统,启动设置各个硬件,寄存器 /*输入参数:无 /*输出参数:无 /********************************************************************/ void SysInital(void) {

13、//设置P02 P04端口为强上拉,设置P03端口为开漏,外接上拉电阻。以驱动ds1302时钟。 P0M0 = 0x1c;//b 0001 1100 P0M1 = 0x08;//b 0000 1000 //打开P44 P45 P46 IO功能。 P4SW = P44EN|P45EN|P46EN;//定时器0初始化 Timer0Init(); Uart1Init(0,1,253);//初始化串口,设置波特率115200 Uart2Init(0,1,253);//初始化串口,设置波特率115200 LCD5510_Init();//初始化1302时钟

14、芯片 DS1302_Initial(); //设置初始时间 DS1302_SetTime(init); //注册定时函数 LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF;//关闭LED } 3.3 发送中文短信程序 /**********************************发送中文短信程序************************************ /*函数原型:void SendUDPMessage(char* num, char* context, void

15、sendfun)(char*)) /*函数功能:发送中文短信程序 /*输入参数:char* num 短信号码指针 char* context 短信内容unicode码指针 void (*sendfun)(char*) 用于和通讯模块发送数据的串口函数指针 /********************************************************************/ void SendUDPMessage(char* pnum, char* context, void (*sendfun)(char*)) { uns

16、igned char i=0,x=0; unsigned char con_cnt[3] = {0,0,0}; unsigned char tabhex[] = "0123456789ABCDEF"; unsigned char num[13] = ""; strncpy(num, pnum, strlen(pnum)); for(i=0; num[i]!=0; i=i+2)//将号码转换到udp格式,两位一反 { if(num[i+1] == 0) { num[i+1] = 'F'; } x = num[i]; num[i]

17、 num[i+1]; num[i+1] = x; } (*sendfun)("AT+CMGF=0\r");//设置成udp中文短信发送模式 DelaySec(1); (*sendfun)("AT+CMGS=");//发送数据位数 x = 15+strlen(context)/2;//计算发送位数 con_cnt[0] = 0x30 + x/10; con_cnt[1] = 0x30 + x%10; (*sendfun)(con_cnt);//发送数据位数 (*sendfun)("\r"); DelaySec(1); (*sendfun)(

18、"0011000D9168");//固定发送内容,不用改动 (*sendfun)(num);//发送号码 (*sendfun)("0008A0");//固定发送内容,不用改动 x = strlen(context)/2;//转换内容的个数 con_cnt[1] = tabhex[x&0x0f]; con_cnt[0] = tabhex[(x&0xf0)>>4]; (*sendfun)(con_cnt); DelaySec(1); (*sendfun)(context);//发送内容 con_cnt[0] = 0x1a; con_cnt[1] = 0;

19、 (*sendfun)(con_cnt);//发送结束符 DelaySec(1); } 3.4 MQ-4程序 ***************************MQ-4程序************************************* 说明:1、当测量浓度大于设定浓度时,单片机IO口输出低电平 *********************************************************************/ //#include//库文件 #define uchar unsigned char/

20、/宏定义无符号字符型 #define uint unsigned int //宏定义无符号整型 /******************************************************************** I/O定义 *********************************************************************/ sbit LED=P2^5;//定义单片机P1口的第1位 (即P1.0)为指示端 sbit DOUT=P1^0;//定义单片机P2口的第1位 (即P2.0)为传感器的输入端 /**********

21、 延时函数 *********************************************************************/ void delay(int t)//延时程序 { int i,j; for(i=t;i>0;i--) for(j=512;j>0;j--); } /******************************************************************** 主函数

22、 *********************************************************************/ /*void main() { //P0=0Xff; while(1) //无限循环 { LED=1;//熄灭P1.0口灯 if(DOUT==0)//当浓度高于设定值时 ,执行条件函数 { delay(5);//延时抗干扰 if(DOUT==0)//确定 浓度高于设定值时 ,执行条件函数 { LED=0;//点亮P1.0口灯 delay(500); LED=1; delay(500); } } } }*/ 3

23、5 时间程序 ****************************时间程序*********************************** #include "systerm.h" volatile unsigned int data timer0_cnt = 0; uint data timer0_debug_cnt = 0; volatile int data sec_cnt = 0; void (code * pfun1)(void) = 0; // 定时到达时操作函数的函数指针1 #define T0H 0xFC #define T0L 0x66 /*

24、初始化定时器0****************************/ /*函数原型:Timer0Init /*函数功能:初始化定时器0 /********************************************************************/ void Timer0Init(void) { TMOD=0x01; //设置定时器0为工作方式1 // AUXR|=T0x12; TH0=T0H; //放入初值,11.0592M,1ms

25、 TL0=T0L; // 设置定时器0中断优先级(优先级1) IPH &= ~PT0H; PT0 = 1; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 } /***************************定时器0中断******************************/ /*函数原型:Timer0 /*函数功能:每1ms执行一次中断,中断内

26、部重新赋值 /********************************************************************/ void timer0() interrupt 1 { uchar i = 0; TH0=T0H; TL0=T0L; #ifdef UART1_DEBUG//发送数据用于调试。 timer0_debug_cnt++; if(timer0_debug_cnt == 20) { timer0_debug_cnt = 0; Uart1SendStr(DebugBuf_U2); for(i=0; i<

27、MAXBUF; i++) { DebugBuf_U2[i] = 0; } Debug2RcvCnt = 0; Uart2SendStr(DebugBuf_U1); for(i=0; i

28、EBUG if(timer0_cnt == 500) { //显示时间 ShowTime(0, 4); //显示日期 ShowDate(0, 5); } #endif //SHOW_TIME_DEBUG } /******************************************定时函数****************************************/ /*函数原型:void DelaySec(unsigned char sec) /*函数功能:是函数等待一段时间 /*输入参数:sec,要等待的时间(秒

29、 /********************************************************************************************/ void DelaySec(unsigned char sec) { sec_cnt = 0; while(sec_cnt < sec); } /***************************网络授时函数******************************/ /*函数原型:void GprsTime(void) /*函数功能:获取网络时间后更新ds1302的时间

30、 /********************************************************************/ void GprsTime(void) { char* pos = NULL; uchar temp[4] = {0}; uchar i = 0; LCD_prints(0,2,"UPDATA TIME."); while(!(Hand("CONNECT OK") || Hand("ALREADY CONNECT")))//检测是否收到 CONNECT OK ,如果有连接成功 { CleanGsmRcv();//清

31、除接收缓存 Uart2SendStr("at+cipshut\r"); DelaySec(2); Uart2SendStr("AT+CIPSTART=\"TCP\",\"\",80\r");//连接对应的域名的端口 DelaySec(5); } LCD_prints(0,2,"UPDATA TIME.."); DelaySec(1); Uart2SendStr("AT+CIPSEND\r"); DelaySec(1); Uart2SendStr("GET /websearch/features/standardtimeadjust.jsp?a

32、0.9724362262059003 HTTP/1.1\r\nHost: \r\nConnection: keep-alive\r\n\r\n"); Uart2SendHex(0x1a);//以0x1a结束 CleanGsmRcv();//清除接收缓存 LCD_prints(0,2,"UPDATA TIME..."); sec_cnt = 0; while(1) { if(Hand("Expires:")) { pos = strstr(GsmRcv, "Expires:");// i = (*(pos+26)-0x30)*10+(*(po

33、s+27))-0x30+8; if(i>=24) i=i-24; init[2] = ((i/10)<<4) + i%10; init[1] = ((*(pos+29)-0x30)<<4) + *(pos+30)-0x30; init[0] = ((*(pos+32)-0x30)<<4) + *(pos+33)-0x30; init[6] = ((*(pos+23)-0x30)<<4) + *(pos+24)-0x30; init[3] = ((*(pos+14)-0x30)<<4) + *(pos+15)-0x30; i = 0;

34、 strncpy(temp, pos+9, 3); while(!strstr(zhou_tab[i], temp)) i++; init[5] = i; i = 0; strncpy(temp, pos+17, 3); while(!strstr(yue_tab[i], temp)) i++; init[4] = i+1; DS1302_SetTime(init); CleanGsmRcv();//清除接收缓存 LCD_prints(0,2,"TIME UPDATAED"); break; } e

35、lse if(sec_cnt == 3) { LCD_prints(0,2,"TIME FEILED"); break; } } } 3.6 GPRS程序 *********************************GPRS程序****************************** #include "systerm.h" uchar GsmRcv[MAXRCV] = {0}; uchar DebugBuf_U2[MAXBUF] = {0}; uchar DebugBuf_U1[MAXBUF] = {0}; uchar Gsm

36、RcvCnt = 0; uchar GsmAtFlag = 0; uchar Debug2RcvCnt = 0; uchar Debug1RcvCnt = 0; bit uart2Sending = 0; bit uart1Sending = 0; /***************************串口2初始化函数函数*****************************/ /*函数原型:char Uart2Init(char smod,char brtx12,unsigned char reload) /*函数功能:初始化用于连接gprs的串口2 ,串口2只能设置为

37、独立波特率提供波特率 并打开串口2中断和全局中断 /*输入参数: smod s2smod位0/1 brtx12 brtx12位 0/1 reload reload寄存器数值 0-255 /*输出参数: -1 s2smod位错误,没有写入0/1 -2 brtx12位错误,没有写入0/1 /********************************************************************/ char Uart2Init(char s2smod,char brtx12,unsigned char reload) {

38、 S2CON = 0X50;//8位可变波特率,无奇偶位 BRT = reload;//设置独立波特率发生器波特率 if(s2smod == 1) { AUXR |= S2SMOD; //S2SMOD = 1;//波特率倍速位 } else if(s2smod == 0) { AUXR &= (~S2SMOD); //S2SMOD = 0;//取消波特率倍速位 } else { return -1; } if(brtx12 == 1) { AUXR |= BRTx12;//BRTx12 = 1;1T模式

39、} else if(brtx12 == 0) { AUXR &= (~BRTx12);//BRTx12 = 0;12T模式 } else { return -2; } AUXR |= BRTR;//开启波特率发生器 //设置串口2中断优先级 IP2H |= PS2H; //设置串口2优先级为3(最高) IP2 |= PS2; if (UART2_PRIO & 0x02) { IP2H |= PS2H; } else { IP2H &= ~PS2H; } if (UART2_PRIO &

40、 0x01) { IP2 |= PS2; } else { IP2 &= ~PS2; } IE2 |= ES2;// ES2 = 1; //允许串口2中断 EA = 1; //开总中断 return 0; } /***************************串口2发送函数函数************************/ /*函数原型:void Serial_Init(void) /*函数功能:串口2发送函数,发送单一数据 /*输入参数:数据 /****************

41、/ void Uart2SendHex(uchar i) { while(uart2Sending == 1); uart2Sending = 1; S2BUF = i;//装入数据 } /***************************串口2发送字符串函数**********************/ /*函数原型:void Uart2SendStr(char* data_at) /*函数功能:串口2发送函数,发送字符串 /*输入参数:字符串指针 /

42、输出参数:无 /********************************************************************/ void Uart2SendStr(char* data_at) { while(*data_at) { Uart2SendHex(*data_at++); } } /***************************串口1初始化函数**********************/ /*函数原型:char Uart1Init(char smod,char brtx12,unsigned char

43、reload) /*函数功能:串口1初始化 /*输入参数: smod smod位 0/1 brtx12 brtx12位 0/1 reload reload寄存器数值 0-255 /*输出参数: -1 smod位错误,没有写入0/1 -2 brtx12位错误,没有写入0/1 /*备注:串口设置位独立波特率提供波特率,和串口2使用同一个波特率,也可以使用定时器1来提供波特率 /********************************************************************/ char Uart1Init(char

44、smod,char brtx12,unsigned char reload) { SCON = 0X50;//8位可变波特率,无奇偶位(SM0=0,SM1=1),使能串口接收模块(REN=1) BRT = reload;//设置独立波特率发生器波特率 if(smod == 1) { PCON |= SMOD; //SMOD = 1;//波特率倍速位 } else if(smod == 0) { PCON &= (~SMOD); //SMOD = 0;//取消波特率倍速位 } else { return -1; }

45、if(brtx12 == 1) { AUXR |= BRTx12;//BRTx12 = 1;1T模式 } else if(brtx12 == 0) { AUXR &= (~BRTx12);//BRTx12 = 0;12T模式 } else { return -2; } AUXR |= S1BRS;//串口1设置为使用独立波特率发生器 AUXR |= BRTR;//开启波特率发生器 //设置串口1中断优先级 if (UART1_PRIO & 0x02) { IPH |= PSH; } else

46、 { IPH &= ~PSH; } if (UART1_PRIO & 0x01) { PS = 1; } else { PS = 0; } ES = 1; //开串口中断 EA = 1; //开总中断 return 0; } /*********************************************串口1发送函数*************************************/ /*函数原型:void Uart1SendHex(char i)

47、 /*函数功能:串口1发送函数 /*函数功能:串口1发送函数,发送单一数据 /*输入参数:数据 /*输出参数:无 /**************************************************************/ void Uart1SendHex(char i) { while(uart1Sending);//等待发送完毕 uart1Sending = 1; SBUF = i;//将数据放入寄存器发送 } /***************************串口1发送字符串函数**********************/ /

48、函数原型:void Uart1SendStr(char* data_at) /*函数功能:串口1发送函数,发送字符串 /*输入参数:字符串指针 /*输出参数:无 /********************************************************************/ void Uart1SendStr(char* at) { while(*at) //判断一串数据是否结束 { Uart1SendHex(*at++);//发送数据 } } /**************************串口1发送接收中断函数*****

49、/ /*函数原型:void Uart1InterruptReceive(void) interrupt 4 /*函数功能:串口2发送接收中断函数 /*备注:接收函数内部不可以放入其他的中断或者发送函数,否则影响接收数据 /********************************************************************/ void Uart1InterruptReceive(void) interrupt 4 { char tmp = 0; if(RI) { ES=0;//关串行口中断 RI=0;//接收中断信号清零,表示将继续接收 tmp = SBUF;//接收数据 #ifdef UART1_DEBUG //将接收到的数据放入DebugBuf_U1,在定时器内,DebugBuf_U1会被串口2发送给GSM模块。 //这样通过串口1发送到单片机的数据GSM模块就可以收到了,主要为了调试的方便。 DebugBuf_U1[Debug1RcvCnt] = tmp; Debug1RcvCnt++; if(Debug1RcvCnt>=MAXBUF-1) { Debug1RcvCnt = 0

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服