单片机课程设计报告—带有LCD的定时闹钟.doc
《单片机课程设计报告—带有LCD的定时闹钟.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告—带有LCD的定时闹钟.doc(20页珍藏版)》请在咨信网上搜索。
. . XX轻工业学院 软件学院 单片机与接口技术课程设计总结报告 设计题目:带有LCD的定时闹钟 学生XX: 系别: 专业: 班级: 学号: 指导教师: 2021年12月16日 XX轻工业学院 课 程 设 计 任 务 书 题目 带有LCD的定时闹钟 专业、班级学号 主要内容: 设使用89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,假设LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可以使用。 根本要求: .字符型LCD〔16*2〕显示器 .显示格式“时时 分分〞。 .由LED闪动来做秒计数表示。 .一旦时间到侧发动声响,同时继电器启动,可以扩大控制家电开启和关闭。 .程序执行后工作指示灯LED闪动,表示程序开场执行,LCD显示“00 00〞,按下操作键K1-k4动作如下: (1) K1—设置现在的时间。 (2) K2—显示闹钟设置的时间。 (3) K3—设置闹铃的时间。 (4) K4—闹铃ON/OFF的 状态设置,设置ON时连续三次发出“哗〞的一声,off置为哗的一声。设置当前时间或闹铃时间如下: (1) K1—时的调整。 (2) K2—分的调整。 (3) K3—设置完成。 (5) OFF发出“哗〞K4---闹铃时间到时,发出一阵声响,按下本键可以停顿声响。 除了显示当前时间的功能外,还可以扩大如下功能; .增加秒表计数。 .闹铃时间到侧产生音乐声。 .增加减计数功能。 .增加多组计数的功能。 参考文献 郭天祥 51单片机C语言教程-入门。 余发山 单片机原理及应用技术。中国矿业大学。 涂世亮,X友德。单片微机控制技术。清华大学。 一.设计本电子定时闹钟的目的和意义 以单片机为核心的数字时钟是很有社会意义和社会价值的。钟表原先的报时功能已经原不能满足人们日益增长的要求,现代的电子时钟多带有类似自动报警、按时自动打铃、时间程序自动控制、定时播送、自动起闭路灯、通断动力设备、甚至各种定时电气的自动启用等功能。 1.1 本LCD电子闹钟的特点和功能介绍 数字钟介绍 时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置。而单片机模块中最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。而LCD电子定时闹钟是以单片机为根底的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为24小时,另外应有校时功能和一些显示日期、闹钟等附加功能。一个根本的数字钟电路主要由译码显示器、“时〞,“分〞,“秒〞,“星期〞计数器、校时电路、报时电路和振荡器组成。目前电子钟广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手。 2 总体方案设计 2.1 总体设计方案 本LCD定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用汇编语言设计的程序来实现的。根据C51单片机的外围接口特点扩展相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件执行一定的程序来实现数字钟的功能。由于采用集成芯片性的单片机来制作电子钟,这样设计制作简单而且功能多、准确度高,也可方便扩大其他功能,实现也十分简单。本设计是利用AT89C51单片机为主控芯片,由LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和控制的数字定时闹钟 AT89C51 震荡 电路 调时电路 喇叭 LCD 片选 代码 AT89C51 震荡 电路 调时电路 喇叭 LCD 片选 代码 。3 硬件设计 3.1 主控芯片AT89C51的设计 在本LCD电子闹钟设计中就是采用利用我们熟悉的AT89C51单片机为主控芯片。AT89C51单片机由微处理器,存储器,I/O口以及特殊功能存放器SFR等局部构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。89C51单片机有4个8位的并行I/O口:P0口,P1口,P2口和P3口。各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号. 3.2 时钟电路局部设计 AT89C51系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的根底。在一个单片机应用系统中,时钟有两方面的 图3.2 含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。 本LCD电子闹钟设计是采用内部时钟方式,用一个12MHz晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.其电路图见图3.2。 之所以采用高性能的振荡电路,因为: 1.单片机电子钟的计时脉冲基准是由外部晶振的频率经过12分频后提供,采用内部的定时/计数器来实现计时功能。所以,外接晶振频率准确度直接影响电子钟计时的准确性。 2.单片机电 子钟利用内部定时/计数器溢出产生中断〔12M晶振一般为50ms〕再乘以相应的倍率来实现秒、分、时的转换。大家都知道从定时/计数器产生中断请求到响 应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子程序也要占用一定的 机器周期。 3.3 LCD显示电路局部 为了获得更好的效果本设计并没有采用常见的LED,而是采用了型号为1602的 LCD。LCD有LED数码显示更好的更的直观效果,也更加经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶 可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口〔共14线〕,工作电压为5V。没背光,和常用的1602B功能和引脚一样〔除了调背光的二个线脚〕. 该模块也可只用 D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。 引脚说明,见表3.1。 VDD:电源正极,4.5-5.5V,通常使用5V电压; VL:LCD比照度调节端,电压调节X围为0-5V。接正电源时比照度最弱,接地电源时比照度最高,但比照度过高时会产生“鬼影〞,因此通常使用一个10K的电位器来调整比照度或者直接串接一个电阻到地; RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平; R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据; E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。 D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧X的话,该模块也可以只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式; BLA: LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右; BLK: LED背光地端。[12] 表3.1 LCD显示屏引脚说明 编号 符号 引脚说明 编号 符号 引脚说明 1 VCC 电源地 9 D2 双向数据口 2 VDD 电源正极 10 D3 双向数据口 3 VL 比照度调节 11 D4 双向数据口 4 RS 数据/命令选择 12 D5 双向数据口 5 R/W 读/写选择 13 D6 双向数据口 6 E 模块使能端 14 D7 双向数据口 7 D0 双向数据口 15 BLK 背光源地 8 D1 双向数据口 16 BLA 背光源正极 4 软件设计 4.1 软件设计概述 这里用汇编的单片机程序构成了本LCD电子闹钟的软件系统。该程序实现时间及定时(时间以0点0分0秒为基准计算,闹铃定时以0时0分为基准计算〕的显示,有外中断0和五个开关实现校时,闹钟功能。其中程序的晶振频率为12MHz,最小计时单位为1/20秒。 主芯片p0.1-p0.7输出数据到LCD数据总线,p3.0-2.2输出LCD控制信号,P2.1输出声音信号,.P1.0-P1.3输入外部控制信号,整个软件系统也是根据这个关系连接成一个完整的系统。 4.2 主函数的设计 本LCD电子闹钟的的主程序流程图如图4.1所示: CPU系统初始化 定时器0初始化 定时器1初始化 串口初始化 显示待机指示符 设定闹铃时间 判设置闹铃时间否? 显示刷新 启动走时 有关变量初始化 刷新显示 判断日期是否变化化否? 秒指示 判断时间是否变化 闹铃 判是否到闹铃时间? 延时 Y Y Y Y 4.3.1 程序初始化 在系统开场上电时,需要.首先初始化液晶: void TimeInit() { write_(0x01); //初始化1602液晶 write_(0x80); //设置现实初始坐标 for(num=0;num<9;num++) //显示年月日 { write_date(table[num]); delay(5); } write_(0x80+0x40+6); //写出时间显示局部的两个冒号 write_date(':'); delay(5); write_(0x80+0x40+9); write_date(':'); delay(5); write_sfm(4,shi); //分别送去液晶显示 write_(0x80+0x40+4); write_sfm(7,fen); write_(0x80+0x40+7); write_sfm(10,miao); write_(0x80+0x40+10) 4.3.2 闹钟的实现 闹钟功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进展闹铃。当时十位、时个位、分十位、分个位中任一位发生改变〔进位〕时,就必须进展闹铃判别。程序设计思想如图4.3。 [8] 时十位、个位,分十位、个位改变了 设置闹铃标志 是否设置了闹铃 去除闹铃标志 判当前时间是设定时间 中断返回 中断返回 Y N Y 闹铃判别处理 4.3.3 显示程序 显示程序包括时钟显示和定时显示程序。具体程序见附录。 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否那么此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表4.1是TC1602EL液晶模块的内部显示地址。[15] 表4.1 内部显示地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 硬件原理图 程序: #include <reg52.h> #include "24C08.h" #define uint unsigned int #define uchar unsigned char uchar code table[]="NOW TIME:"; uchar code table1[]="SET NOW TIME:"; uchar code table2[]="SET ALARM TIME:"; uchar code alarm[]="ALARM TIME:"; uchar code alarmoff[]="ALARM TIME: OFF"; uchar code alarmon[]="ALARM TIME: ON"; sbit lcden=P3^2; sbit lcdrs=P3^0; sbit lcdrw=P3^1; sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit beep=P2^1; uchar flag,num,count,k1num,k2num,k3num,k4num; char miao,shi,fen,ashi,afen; //延时函数 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } //蜂鸣器子程序 void di() { beep=0; delay(100); beep=1; } //写命令函数 void write_(uchar ) { lcdrs=0; lcdrw=0; lcden=0; P0=; delay(5); lcden=1; delay(5); lcden=0; } //写数据函数 void write_date(uchar date) { lcdrs=1; lcdrw=0; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; } //写时间函数 void write_sfm(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } //显示时间初始化 void TimeInit() { write_(0x01); write_(0x80); for(num=0;num<9;num++) { write_date(table[num]); delay(5); } write_(0x80+0x40+6); write_date(':'); delay(5); write_(0x80+0x40+9); write_date(':'); delay(5); write_sfm(4,shi); write_(0x80+0x40+4); write_sfm(7,fen); write_(0x80+0x40+7); write_sfm(10,miao); write_(0x80+0x40+10); } //设置当前时间 void SetNowTime() { if(K1==0) { delay(5); if(K1==0) { while(!K1); di(); shi++; if(shi==24) shi=0; write_sfm(4,shi); write_(0x80+0x40+4); write_add(3,shi); } } if(K2==0) { delay(5); if(K2==0) { while(!K2); di(); fen++; if(fen==60) fen=0; write_sfm(7,fen); write_(0x80+0x40+7); write_add(2,fen); } } if(K3==0) { delay(5); if(K3==0) { while(!K3); di(); k1num=0; TR0=1; TimeInit(); } } } //设置闹钟时间 void SetAlarmTime() { flag=0; if(K1==0) { delay(5); if(K1==0) { while(!K1); di(); ashi++; if(ashi==24) ashi=0; write_sfm(4,ashi); write_(0x80+0x40+4); write_add(4,ashi); } } if(K2==0) { delay(5); if(K2==0) { while(!K2); di(); afen++; if(afen==60) afen=0; write_sfm(7,afen); write_(0x80+0x40+7); write_add(5,afen); } } if(K3==0) { delay(5); if(K3==0) { while(!K3); di(); k3num=0; EA=1; flag=1; TimeInit(); } } } //显示闹钟函数 void DisplayAlarmTime() { write_(0x01); write_(0x80); for(num=0;num<11;num++) { write_date(alarm[num]); delay(5); } write_(0x80+0x40+6); write_date(':'); delay(5); write_sfm(4,ashi); write_(0x80+0x40+4); write_sfm(7,afen); write_(0x80+0x40+7); } //键盘扫描函数 void keyscan() { if(K1==0) { delay(5); if(K1==0) { TR0=0; while(!K1); di(); k1num++; } } if(k1num!=0) { write_(0x80); for(num=0;num<13;num++) { write_date(table1[num]); delay(5); } SetNowTime(); } else { if(K2==0) { delay(5); if(K2==0) { while(!K2); di(); k2num++; } } if(k2num==1) { EA=0; DisplayAlarmTime(); k2num=2; } if(k2num==3) { k2num=0; EA=1; TimeInit(); } else { if(K3==0) { delay(5); if(K3==0) { while(!K3); di(); k3num++; write_(0x01); } } if(k3num==1) { EA=0; write_(0x80); for(num=0;num<15;num++) { write_date(table2[num]); delay(5); } write_(0x80+0x40+6); write_date(':'); delay(5); write_sfm(4,ashi); write_(0x80+0x40+4); write_sfm(7,afen); write_(0x80+0x40+7); SetAlarmTime(); } else { if(K4==0) { delay(5); if(K4==0) { while(!K4); di(); k4num++; } } if(k4num==1) { di(); k4num=2; flag=0; } if(k4num==3) { k4num=0; di(); delay(500); di(); delay(500); di(); flag=1; } } } } if(flag==1&&shi==ashi&&fen==afen) { beep=~beep; delay(500); } if(K4==0&&flag==1) { delay(5); if(K4==0&&flag==1) { while(!K4); di(); flag=0; k4num=0; } } } //lcd1602初始化 void init() { lcden=0; shi=0; fen=0; miao=0; ashi=0; afen=0; count=0; k1num=0; init_24c08(); write_(0x38); //设置16X2显示,5X7点阵,8位数据接口 write_(0x0c); //设置开显示,不显示光标 write_(0x06); //写一个字符后地址指针加1 write_(0x01); //显示清0,数据指针清0 miao=read_add(1); //首次上电从AT24C08中读取出存储的数据 fen=read_add(2); shi=read_add(3); ashi=read_add(4); afen=read_add(5); TimeInit(); TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } //主函数 void main() { init(); write_(0x80); while(1) { keyscan(); } } //中断效劳子程序 void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } write_sfm(4,shi); write_add(3,shi); } write_sfm(7,fen); write_add(2,fen); } write_sfm(10,miao); write_add(1,miao); } } 设计总结 这一次的单片机课程设计,使我考虑的很多东西,通过一个礼拜的学习与实践,使我对所学的知识进展了系统的复习与稳固,在以前的学习中不够清晰的概念得到了更好地理解。同时,通过课设,培养和锻炼了我的动手能力,这一点非常重要不仅对我以后的学习有帮助,还可以为以后的工作打下一定的根底。这段时间的学习,使我了解到了理论和实际之间的差异,第一次真正接触到了实际中的问题,并通过和教师,同学交流,加强了自身的分析问题,解决问题的能力。同时,我也发现了自己在某写方面的缺乏,这是我以后要加以改良的方面。 这一次的课设对我的帮助很大,是我真正的认识到了理论与实际的区别,这将成为我学习目标和动力,更进一步的挖掘自己的能力,是自己获得进一步的提高。 完 成 期 限: 2021-12-27 指导教师签名: 陈晓雷 课程负责人签名: 2021年 12 月 16 日 . .word..- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 带有 LCD 定时 闹钟
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文