单片机课设--定时闹钟.doc
《单片机课设--定时闹钟.doc》由会员分享,可在线阅读,更多相关《单片机课设--定时闹钟.doc(34页珍藏版)》请在咨信网上搜索。
- - 专业 XX 学号 指导教师 完成时间 单片机课程设计报告 定时闹钟 目 录 摘要1 关键字 1 正文 一、系统设计2 1.1设计目标2 1.2硬件设计2 1.3软件设计 4 1.4三个模式间状态图 5 1.5键盘控制程序走向流程图 6 1.6 串口通信图 8 二、实验结果与讨论 9 三、结论 9 参考文献 附录 11 1、程序源代码 11 2、实物图20 - word.zl - - 摘要 本设计采用ATMEL AT89C52MCU作为处理器核心,用数码管作为数据显示工具,蜂鸣器实现响铃功能,独立式键盘K20-K27控制时钟,串口用于设置时钟和闹钟时间来制作一个定时闹钟。秒数走位由MCU部11.0592MHz的晶振提供准确定时实现,并循环扫描,在数码管上显示。 本设计的关键是键盘的动态扫描和按键消抖,难点是串口数据的传送和处理。 本设计运用C51编程,由于C语言具有语法简单、代码简洁且执行效率高等优点,使得C语言广泛运用于各种程序设计的代码编辑工具中。运用C语言编程,增强了程序可读性;使得开发人员能够将精力用在如何设计程序上来,提高了开发效率。 关键字: 单片机 动态扫描 按键消抖 C51编程 正文 一、 系统设计 1.1设计目标 利用动态数码管作为显示器,K20-K27作为输入按键,蜂鸣器作为声音输出制作一个定时闹钟。要求:1、正确显示时分。2、可以利用按钮调整时间和设定闹钟时间。3、当时间到达设定的闹钟时间时,蜂鸣器发出嘀、嘀、嘀的报警声。 提示:利用定时器作为时间的基准。 提高:通过串口在PC上设定时间和闹钟 1.2硬件设计 本设计中涉及到的硬件模块有C52、独立键盘、数码管、PC〔含keil软件、烧写工具、串口调试工具等〕 1.2.1 C52 核心处理器。对传送的各个指令和数据进展处理。供其他模块用到的主要引脚有:P0:送码值;P2:送位选信号,连接键盘;TXD、RXD:串口通信;P3.7:蜂鸣器 1.2.2 独立键盘K20-K27 键盘分为独立键盘和矩阵式键盘。扫描方法有逐行扫描法和行列翻转法。在本设计中用到的键盘是独立式键盘K20-K27,分别连接到MCU C52的P2口,采用逐行扫描法,又由于只有一行,故只需扫描一次即可。在键盘按键时,需要考虑到键盘消抖问题。键盘消抖分为硬件消抖和软件消抖。在本设计中,直接采用软件延时delay2(),到达消抖功能,代码不长,又节省硬件资源。 独立键盘K20-K27连接到C52管脚P2和数码管。各键功能: K20:编辑时间,以递增方式控制时针数值,包括时钟和闹钟 K21:编辑时间,以递增方式控制分针数值,包括时钟和闹钟 K22:时钟模式切换到闹钟模式 K23:退出闹钟模式,并保存闹钟时间,开启闹钟 K24:时钟模式和秒数显示模式切换 K25:未用到,供功能扩大使用 K26:开闹钟 K27:关闹钟 1.2.3 数码管 数码管用于显示当前时间,闹钟时间和秒数。 数码管显示分为静态显示和动态显示。静态显示时,各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。静态显示需借助C52串口完成。动态显示时,各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的。在动态显示过程中,数码管常亮是通过循环扫描送显信号实现。 本设计中用到的数码管为共阴极接法,阴极接位选信号,即C52 P2口,阳极接P0口,承受码值。 时钟和闹钟模式下,显示时针数值和分针数值。秒数显示模式下,只有两个数码管亮,显示当前时间秒值。 1.2.4 PC 在PC端除了编辑软件Keil和烧写工具外,另一个很重要的工具就是串口调试工具。串口工具通过串口线与C52通信。PC端到C52传送数据,控制写当前时间和设置闹钟。C52到PC端传送数据,提示PC送到C52的数据有误,并在串口界面上显示字符串“error! 〞,供以提示。在PC端的串口工具选项设置与代码中串口设计参数匹配。波特率为9600,数据位8位,停顿位1位。采用十六进制Hex发送。 根据上述硬件设计,有如下硬件间系统框图1。 P2 RXD TXD P3.7 P0 C52 串口工具 数码管 键盘 蜂鸣器 图1 系统框图 1.3软件设计 1.3.1时钟 时钟设计有两个方案,一:利用程序计数延时定时;二:利用定时器定时。考虑到,程序定时不准确,误差大,而定时器c52部晶振提供的时钟,能够准确定时,所以,本设计采用定时器给各模块提供准确时钟。对于时钟,主要用在走秒,即定时器定时时间为1s,考虑到,设计中需要用到串口进展数据传送,而且对用C52,1s属于长定时,所以定时器采用定时器timer0。timer0工作在方式1,定时设置为50ms,即初始值为TH0=0x4c,TL0=0x01,再通过一个标志位flag来控制次数,初始值为20,那么定时时间刚好为1s。 1.3.2 时间显示模式 从设计要求看,本设计至少要涉及到两个模式:〔1〕时钟模式;〔2〕闹钟模式。时钟模式下,数码管实时显示当前时间,闹钟模式下,显示设置的闹钟时间,并且闹钟模式下,数码管显示的值闪烁,以区别于时钟模式,这样更易于区分这两种模式。这两个模式通过K22和K23来切换,K22从时钟模式进入闹钟模式,K23退出闹钟模式,并保存当前设置的闹钟时间,并置位闹钟状态位flag1=0〔flag1=0,开闹钟;flag1=1,关闹钟〕,此外,时钟、闹钟模式下均为可编辑状态,K20、K21分别控制时针数值和分针数值。为了更接近现实的时钟,本设计提供第三种模式--秒数显示模式。这个模式下,4个数码管只有两个亮,用来显示秒数值,通过键K24切换到此模式,和退出此模式,对于秒数,其控制权在定时器timer0,不提供编辑功能。 1.3.3振铃 此功能的实现主要依靠实验箱上的蜂鸣器,当当前时间到达闹钟时间时,RD=0,开场振铃,蜂鸣器响。本设计中,在振铃状态,提供关闹铃功能,通过K27关闹钟,置闹钟状态位flag1=1,关闹钟;假设是需要翻开闹钟,那么可按键K26,置flag1=0。 1.3.4 串口 此功能用于,在PC上通过串口工具,传送数据到C52,进而控制数码管值,即设置时间和闹钟。在实现串口功能,搭配用了定时器timer2,timer2工作于方式2,即8位自动重装。timer2作为波特率发生器,给串口提供数据传送速率。本设计中,波特率为9600,故timer2初始值为TH1=0xfd,TL1=0xfd。 在本设计中,在时钟模式和闹钟模式下,串口数据逐位传送,分别传给时针数值和分针数值。更具人性化的是,本设计提供错误提。当传送时针数值时,数据大于23,或传送分针数值时,数据大于59时,C52通过串口向PC传送错误提示“error! 〞,提示数据传送错误。 1.3.5键盘扫描 本设计中键盘采用独立键盘K20-K27。读取键盘值通过:P2=0xff;key_pressed=P2;key_pressed那么为读取到的键盘值,再匹配从而知道按了哪个键。在键盘扫描设计中,一个关键技术是键盘消抖。这里通过延时程序delay2()延时一段时间,再读取键盘值,判断是键盘抖动还是正常按下的值。 1.4 三个模式间状态图 K24 K22 秒显示状态 闹钟模式 时钟模式 程序烧入 RST 复位 K22 K24 图2 三个模式间转换状态图 1.5 键盘控制程序走向流程图 ① K23? ② K20? K21? otherValue? count_h=count_h+1 count_m=count_m+1 main()) init() 1 clockModel value1=getKeyPressed() value2=getKeyPressed() Delay() value1=value2 K26? Flag1=0 K22? Delay() alarmClockModel ② value1=getKeyPressed() value2=getKeyPressed() value1=value2 K24? Delay() secondModel ③ value1=getKeyPressed() value2=getKeyPressed() value1=value2 ① ③ K24? Y N ① ① ① K25? K21? count_m=count_m+1 K20? K23? count_h=count_h+1 ① K27? Flag1=1 图3 键盘控制程序走向流程图 图3中为表达的功能及操作有以下几点: 1.5.1计数模块count() 计数功能依靠定时器timer0的中断,定时1s,当前时间走1秒。 1.5.2振铃模块music() 该功能由蜂鸣器完成。置RD=0时,蜂鸣器响。此外蜂鸣器响有一个前提条件:振铃处于开状态,即标志flag1=0。 1.5.3显示模块display() 该功能显示当前时间或闹钟时间或秒数。控制条件有: 标志CS:CS=0:显示当前时间时、分;CS=1:显示当前时间秒;CS=2:闹钟状态; 标志flag2:控制闹钟状态下闪烁显示。 1.6串口通信图 送错误提示信息 送时针、分针数值 串口工具 MCU 显示 数码管 图4 串口通信图 1.5.1串口向MCU送数据 送时针值时,数值大小小于24,送分针数值,数值小于60。 1.5.2MCU向串口送错误提示信息 串口向MCU送数据不满足上述条件时,送“error! 〞提示信息。 1.5.3数据显示 假设串口传送的数据满足上述条件,那么在数码管上显示,否那么保持不变。 2 实验结果与讨论 2.1程序烧写 通过烧写程序将源码烧到单片机中。数码管初始显示为00.00,与程序设置count_m,count_h吻合。 2.2程序调试 2.2.1按键K20和K21,时、分值分别增加,一直按着,那么时间持续变化。但不是很稳定,有待改良。 2.2.2 按键K22,数码管进入闹钟编辑状态,并且显示数值交替闪烁。与程序设置 if(flag2<=10 && CS==2){P2=0xff;} else{if(flag2>=20){flag2=0;} 一致〔flag2在定时器中断中改变〕。 2.2.3按键K23,退出闹钟编辑状态。保存当前闹钟设置值count_m_alarm=count_x; count_h_alarm=count_y,开启闹钟flag1=0。 2.2.4按键K24,切换到秒显示状态。再按一次切回时钟模式。 2.2.5按键K26,关闭闹钟;按键K27,开启闹钟。在当前时间时、分值与闹钟设置值匹配时,这两个键的功能吻合。 2.3串口发送。 翻开串口调试工具,选择端口,设置其它选项,分两次传送,如两次均发送十六进制数09,数码管显示值如附图6。假设设置时针值大于23,设置分针值大于59,那么提示错误,显示结果如附图7。 3 结论 3.1 综合上述所有描述,本设计完成了闹钟根本的功能。此外,添加了其他功能。如,本闹钟不仅可以显示时间时、分值,闹钟值,还可以显示秒数。具有闹钟开、关功能。对提高局部做了扩大,可以提示是否有数据设置错误。 3.2 本设计很好地完成了闹钟设计,具有自己的特色。美中缺乏的是,通过键盘设置时钟时,数值不易把握;闹钟响时,声音比拟怪。 3.3自我体会 本次课程设计,加深了对理论知识的实践,学到了很多课堂上没有学到的知识。对单片机的了解和应用更深一层。课程设计往往具有一定的趣味性,更能激起大家的兴趣,对知识的深入理解只会是有百利而无一害。与课堂上讲的理论知识不同的是,课堂上都是采用汇编语言,而到了真正设计时,更多的是采用C语言编程,这样更加的简单,提高了开发的效率。 参考文献 [1]田希晖 薛亮儒.C51单片机技术教程[M].,人民邮电.2007 [2]友德 志英 涂时亮.单片微型机原理、应用与实验(第五版)[M],复旦大学.2006 附录 1、程序源代码 #include<reg52.h> unsigned char count_s,count_m,count_h;//秒、分、时时间 unsigned char count_x,count_y,count_m_alarm=0,count_h_alarm=23;//count_x,count_y记录当前时间; count_m_alarm=0,count_h_alarm=23:预置闹钟时间,同时用于保存闹钟设置 unsigned char flag=0,flag1=0,flag2=0;//flag0: 中断时间=timer0初始值*flag;flag2: 控制闹钟状态下闪烁,区别于正常时钟模式 unsigned char dis_duanma[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴码表 unsigned char CS;//当前显示的计数段;CS=0:显示时、分,时钟状态; CS=1:显示秒数; CS=2:闹钟编辑状态; unsigned char tag=0;//串口输入数据,区别时、分 unsigned char ERROR[] = "error! ";//串口输入出错,提示字符串 void display(); void delay() //动态扫描延时 { unsigned int count_delay; for(count_delay=0;count_delay<=1000;count_delay++); } void delay2() //按键消抖延迟 { unsigned int count_delay; for(count_delay=0;count_delay<=10000;count_delay++); } void music() //蜂鸣器发声 { if(flag1==0) RD=0; } void count() //计数模块 { if(count_s>=59) { count_s=0; if(count_m>=59)//>=:由于进位的原因 { count_m=0; if(count_h>=23) { count_h=0; } else count_h++; } else count_m++; } else { count_s++; } } void IntT0()interrupt 1 //定时器T0中断,计数 { TH0=0x4c;//重置初始值 TL0=0x01; flag++; flag2++; if(flag==20)//timer0中断时间被乘数 { //中断次数,即中断时间到达,重置中断次数 flag=0; count(); } else if(count_m!=count_m_alarm | count_h!=count_h_alarm) { //当前时间与闹钟时间不匹配,表示不在闹钟状态,关闭蜂鸣器 RD=1; } else if(count_m==count_m_alarm && count_h==count_h_alarm) { //当前时间与闹钟时间匹配,表示在闹钟状态,开启蜂鸣器 music(); } } void sendError() { unsigned char i = 0; ES=0; for(i=0;i<7;i++) { SBUF=ERROR[i]; while(!TI); TI=0; } ES=1; } void IntS() interrupt 4 { unsigned char serialData; if(RI==1) { serialData = SBUF; if(tag==0)//时 { if(serialData > 23) { sendError(); goto loop2; } } else if(tag==1)//分 { if(serialData > 59) { sendError(); goto loop2; } } if(CS==2)//闹钟状态 { if(tag==0)//时 { count_y = SBUF; tag++; } else if(tag==1)//分 { count_x = SBUF; tag = 0; } } else if(CS==0)//时钟状态 { if(tag==0)//时 { count_h = SBUF; tag++; } else if(tag==1)//分 { count_m = SBUF; tag = 0; } } loop2: display(); RI=0; } } void display() //显示译码;P0送码值;P2送位选信号(高四位P24-P27) { if(flag2<=10 && CS==2) P2=0xff; else { if(flag2>=20) flag2=0; else if(CS==1)//显示秒状态,送秒数 { //下1 P0=dis_duanma[count_x%10]; P2=0x7f; delay(); //下2 P0=dis_duanma[count_x/10]; P2=0xbf; delay(); } else//显示时分状态,送时、分 { //送分 //下1 P0=dis_duanma[count_x%10]; P2=0x7f; delay(); //下2 P0=dis_duanma[count_x/10]; P2=0xbf; delay(); //送时 //上2 P0=dis_duanma[count_y%10]+0x80; P2=0xdf; delay(); //上1 P0=dis_duanma[count_y/10]; P2=0xef; delay(); } } } void main() //主函数 { unsigned char key_pressed; //检测按键是否按下 TMOD=0x21;//定时器方式存放器,timer1:工作方式2,配合串口;timer0工作方式1,16定时 PS=0;//中断优先级存放器IP, PT0=1;//timer0中断优先级高于串口中断 TH0=0x4c;//初始化方式1初始值,T=(12/fosc)*(2^16-a)us, TL0=0x01;//a=0x4501=19457d, T=0.05s TH1=0xfd;//初始化方式2,8位自动重装,初始值X=2^n-(2^SMOD*fosc/(32*波特率*12)); TL1=0xfd;//波特率=9600 SCON=0x50;//串口控制存放器,方式1,〔1+8+1〕位 PCON=0x00;//电源控制存放器,SMOD=0,波特率不加倍 EA=1;//中断允许存放器,允许中断 ES=1;//串口中断允许 ET0=1;//timer0中断允许 TR0=1;//定时器控制存放器(TCON),启动timer0 TR1=1;//启动timer1 while(1) { RD=1;//关闭蜂鸣器 loop1: if(CS==1) //CS当前状态是显示秒还是时、分 { count_x=count_s;//将秒送给显示存放器 count_y=0; } else { count_x=count_m; //送分给显示存放器(时钟状态模式) count_y=count_h; //送时给显示存放器 } display(); //调用显示子函数 P2=0xff; //先写一再读取 key_pressed=P2;//读取键盘值 if((key_pressed & 0x01 )==0x00&& CS==0)//判断按下的按键是否为编辑时,如果正在显示秒,那么不予以回应 { delay2();//消抖 P2=0xff; key_pressed=P2;//再判断 if((key_pressed & 0x01)==0x00) { if(count_h>=23) count_h=0; else count_h++; } } else if((key_pressed & 0x02 )==0x00 && CS==0)// 判断是否按下时编辑按键,如果正在显示秒,那么不予以回应 { delay2(); //延时消抖 P2=0xff; key_pressed=P2; if((key_pressed & 0x02)==0x00) { if(count_m>=59) count_m=0; else count_m++; } } else if((key_pressed & 0x04)==0x00) //按下闹钟调节按键 { delay2();//延时消抖 P2=0xff; if((key_pressed & 0x04)==0x00) { CS=2; count_x=count_m_alarm; //读取闹钟设置 count_y=count_h_alarm; //读取闹钟设置 loop: display();//显示闹钟设置时间 P2=0xff; key_pressed=P2; if((key_pressed & 0x01)==0)//按下编辑时按键 { delay2(); P2=0xff; key_pressed=P2; if((key_pressed & 0x01)==0) { if(count_y>=23) count_y=0; else count_y++; } } else if((key_pressed & 0x02)==0)//编辑分按键 { delay2(); P2=0xff; key_pressed=P2; if((key_pressed & 0x02)==0) { if(count_x>=59) count_x=0; else count_x++; } } else if((key_pressed & 0x08)==0x00) //退出设置按键 { delay2(); P2=0xff; key_pressed=P2; if((key_pressed & 0x08)==0x00) { count_m_alarm=count_x; //保存闹钟设置 count_h_alarm=count_y; //保存闹钟设置 CS=0; //撤销编辑状态 if(flag1==1) { flag1=0; } goto loop1;//跳出闹钟编辑设置 } } goto loop;//处于闹钟编辑状态,刷新设置的闹钟时间 } } else if((key_pressed & 0x10)==0)//按下显示状态按键〔显示时分或者显示秒〕 { delay2(); P2=0xff; key_pressed=P2; if((key_pressed & 0x10)==0) { if(CS>=1) CS=0; else CS++; } } else if((key_pressed & 0x40)==0) { delay2(); P2=0xff; key_pressed=P2; if((key_pressed & 0x40)==0) { flag1=0;//开闹钟 } } else if((key_pressed & 0x80)==0) { delay2(); P2=0xff; key_pressed=P2; if((key_pressed & 0x80)==0) { flag1=1;//停顿闹钟 } } } } 2、实物图 图5 秒显示状态下数码管显示值 图6 串口设置时间值 图7 串口传送界面及错误信息 - word.zl- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 定时 闹钟
咨信网温馨提示:
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。
关于本文