嵌入式课程设计报告1.doc
《嵌入式课程设计报告1.doc》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告1.doc(22页珍藏版)》请在咨信网上搜索。
湖北汽车工业学院 Hubei Automotive Industrise institute 课程设计说明书 课程名称: 嵌入式系统 设计题目: 数字相框 班号:T623-1 学号:20060230116 专业: 计算机科学与技术 学生姓名 姜李阳 指导老师(签字) 起止日期 2009 年 12 月 28 日 — 2010 年 1 月 10 日 一.嵌入式课程设计概述 1.1 课程设计实验平台简介 1、硬件:UP-TECHPXA270-S嵌入式实验平台、PC机Pentiumn500以上, 硬盘10G以上。 2、软件:PC机windows平台+虚拟机+REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境 3、嵌入式Linux开发平台UP-TECHPXA270-S实验仪器介绍。 a、硬件配置 UP-TECHPXA270的硬件配置如下表1所示: 表1 UP-TECHPXA270-S的硬件配置 配置名称 型号 规格 主CPU Intel XScale结构芯片PXA270 工作频率520MHz 辅CPU LPC2119 ARM7TDMI-S 扩展AD,CAN功能,扩展IO口 以太网 DM9000 支持IEEE802.3的10M/100bps模式 NOR FLASH Intel E28F128J3A 16位,16M NAND FLASH K9F1208 64M 内存SDRAM HY561620 32x2=64M LCD SHARP LQ080 TFT 8寸真彩液晶屏,640X480分辨率 触摸屏 GK80 Burr Brown ADS7846 USB主从接口 飞利浦ISP1161 四个USB主接口,一个USB从接口 串口 RS232 2个通用串口 视频口 VGA 外接符合VGA标准的视频输出 irDA红外线 HSDL3600 双向Agilent 兼容SIR和FIR协议 调试接口 JTAG JTAG烧写Flash 音频编解码器 Cirrus Logic Crystal CS4201 20位数模转换,18位立体声模数转换 32位扩展总线接口 GPIO 和UP-TECHARM2410-S平台兼容 CF卡接口 PCMCIA总线支持 SD卡接口 MMC控制器支持 IDE硬盘接口 PCMCIA卡接口 b、UP-TECHPXA270-S开发平台逻辑框图如下图1所示: 图1 UP-TECHPXA270-S开发平台逻辑框图 二.课程设计目的 开设本课程设计的目的是,通过本课程设计,提高学生的分析问题、解决问题的能力,巩固嵌入式系统的基本理论知识,进一步了解和掌握课程中所讲授的概念,方法。同时通过本课程设计,全面综合应用所学过的基础知识,建立一个完整的嵌入式系统的开发过程的概念,并掌握其中的主要原理和方法 本课程设计的目的是通过开发一个消费类电子产品——数字相框,了解嵌入式产品开发的主要步骤,包括需求分析、系统结构设计、图形界面设计、驱动程序、功能优化、系统测试等,从而培养学生独立完成比较复杂的实际系统设计的能力。 三.课程设计内容和要求 3.1设计的内容 作为一个消费类电子产品,数码相框整个系统要完成的基本功能大致如下: 1、用户界面友好,操作简便。由于该产品的使用者大多是非专业人士,用户界面是否清晰明了、操作是否简捷方便成为用户是否能迅速接受此产品的重要因素。 2、数字相框的功能应包括以下方面: (1)在LCD屏上全屏循环显示多幅图像文件; (2)根据设定的时间间隔更新图像; (3)显示时间、日期; (4)通过按钮进行操作; 3.2 要求 本课程设计要求学生根据实际应用的特点对产品进行完整的需求分析,形成比较完善的总体设计方案。同时,要求学生具备Linux操作系统下简单的设备驱动程序开发、图形用户接口设计的能力。此外,还要求读者掌握基本的系统功能及性能测试技术,从而具备比较全面的嵌入式应用系统开发能力。 四.总体设计 主要步骤和方法 根据数字相框的主要特点和设计功能那个要求,我们将课设分为以下几个步骤: 4.1、数字相框软硬件平台的选择 性能方面,由于数字图像的解码算法比较复杂,而且大量图片需要从外部Flash存储器中读取,所以对嵌入式微处理器的性能要求比较高。外部接口方面,该芯片最好能在外围直接支持CF卡的Compact Flash接口,还应提供按钮、LCD显示屏、触摸屏、声音输出通道等。在本课程设计中,采用了Intel的PXA270作为微处理器,完全能满足上述硬件平台的要求。 数字相框属于消费类电子产品,对价格比较敏感,而嵌入式Linux操作系统上有比较丰富的软件资源、驱动程序和开发工具,因此本课程设计采用嵌入式Linux作为软件开发平台。在Linux操作系统平台上有多种嵌入式图形界面开发工具可供使用,主要包括MicroWindows、MuniGUI、TinyX和Qt/Embedded等几种。本课程设计将集中讨论在Qt/Embedded系统上数字相框的实现技术,当然也可以通过其他图形开发界面工具实现数字相框功能。 4.2、数字相框的软件总体设计 数字相框软件系统功能可以划分为三个模块: 1)图片浏览模块,可以通过按键控制选定某个图像或更新图像页(上一页、下一页)。 2)播放模块,对浏览界面选定的图片进行循环播放。 3)系统设置模块,可设置循环播放更换频率等。 4.2.1、功能模块组织架构图 功能模块 图片浏览模块 图片播放模块 系统设置模块 图片浏览模块 上一张图片 下一张图片 缩 小 图 片 扩 放 图 片 图片播放模块 系统设置模块 快速播放图片 中速播放图片 慢速播放图片 4.3、基于Qt的图形界面程序设计 本设计中包括了浏览、循环播放和配置三个界面模块。这些模块之间需要进行通信,利用Qt提供的信号/槽机制很好地解决了这几问题,每个模块中都有自己定义的一些信号和槽,已发送给其他模块或者从其他模块接受到对应信号后作出响应。 数字相框在初始化时会扫描指定目录下(包括子目录)的所有支持图片文件,并将其存放在列表中,以备之后的浏览界面生成缩略图。本系统使用Qt提供的QDir类实现遍历目录的功能,在遍历目录的同时通过设置文件类型过滤位来获得指定文件,并使用一个双向的字符串指针链表来记录扫描得到的结果。 五.详细设计 根据以上的分析,将程序分为2个部分:一部分为用户界面层、一部分为功能模块层。 5.1用户界面层代码设计如下 定义头文件库window.h作用于:该类中的函数、用于实现用户界面层的工作按钮添加信号触发槽 #ifndef WINDOW_H #define WINDOW_H #include <QPixmap> #include <QWidget> class RenderArea; class Window : public QWidget { Q_OBJECT public: Window(); RenderArea *renderArea; // RenderArea对象用于显示图片 private: protected: void keyPressEvent(QKeyEvent *event); private slots: void start(); void start1(); void start2(); void predisplay(); void nextdisplay(); void big(); void small(); }; #endif 用户层图形界面与按钮信号槽功能实现代码: #include "window.h" #include <QtGui> #include "renderarea.h" Window::Window() { renderArea = new RenderArea; QPushButton *frontbutton=new QPushButton("pre"); //“上一张图片”按钮 QPushButton *nextbutton=new QPushButton("next"); //“下一张图片”按钮 QPushButton *startbutton=new QPushButton("Fstart"); //“快速播放”按钮 QPushButton *startbutton1=new QPushButton("Mstart"); //“中速播放”按钮 QPushButton *startbutton2=new QPushButton("Sstart"); //“慢速播放”按钮 QPushButton *b=new QPushButton("big"); //“扩放图片”按钮 QPushButton *s=new QPushButton("small"); //“缩小图片”按钮 QPushButton *exitbutton=new QPushButton("exit"); //“退出”按钮 QHBoxLayout *belowlayout=new QHBoxLayout; //水平布局 QHBoxLayout *belowlayout1=new QHBoxLayout; QVBoxLayout *mainlayout=new QVBoxLayout; //垂直布局 belowlayout->addStretch(); belowlayout->addWidget(frontbutton); belowlayout->addWidget(nextbutton); belowlayout->addStretch(); belowlayout->addWidget(startbutton); belowlayout->addWidget(startbutton1); belowlayout->addWidget(startbutton2); belowlayout->addStretch(); belowlayout->addWidget(b); belowlayout->addWidget(s); belowlayout->addStretch(); belowlayout->addWidget(exitbutton); belowlayout1->addWidget(renderArea); mainlayout->addLayout(belowlayout1); mainlayout->addLayout(belowlayout); this->setFocusPolicy(Qt::ClickFocus); frontbutton->setFocusPolicy(Qt::NoFocus); nextbutton->setFocusPolicy(Qt::NoFocus); startbutton->setFocusPolicy(Qt::NoFocus); startbutton1->setFocusPolicy(Qt::NoFocus); startbutton2->setFocusPolicy(Qt::NoFocus); b->setFocusPolicy(Qt::NoFocus); s->setFocusPolicy(Qt::NoFocus); this->setFocusPolicy(Qt::ClickFocus); exitbutton->setFocusPolicy(Qt::NoFocus); setLayout(mainlayout); setWindowTitle(tr("Digital photo frame")); connect(frontbutton,SIGNAL(clicked()), this,SLOT( predisplay() )); //单击按钮触发函数 connect(nextbutton,SIGNAL(clicked()), this,SLOT(nextdisplay())); connect(startbutton,SIGNAL(clicked()), this,SLOT(start())); connect(startbutton1,SIGNAL(clicked()), this,SLOT(start1())); connect(startbutton2,SIGNAL(clicked()), this,SLOT(start2())); connect(b,SIGNAL(clicked()), this,SLOT(big())); connect(s,SIGNAL(clicked()), this,SLOT(small())); connect(exitbutton,SIGNAL(clicked()),this,SLOT(close())); } void Window::predisplay() { renderArea->pre_area(); } void Window::nextdisplay() { renderArea->fun_area(); } void Window::start() { renderArea->Start(1); } void Window::start1() { renderArea->Start(2); } void Window::start2() { renderArea->Start(3); } void Window::big() { renderArea->Big(); } void Window::small() { renderArea->Small(); } void Window::keyPressEvent(QKeyEvent *event) { if ( event->key() == Qt::Key_Right) { predisplay(); } if ( event->key() == Qt::Key_Left) { nextdisplay(); } } 效果图如下: 5.2.功能模块实现代码: #include <QtGui> #include <qvariant.h> #include <QLabel> #include <qwhatsthis.h> #include <qpainter.h> #include "renderarea.h" RenderArea::RenderArea(QWidget *parent) : QWidget(parent) { i=0; //指针 dir="/home/Katrina/wisdom/fxy1/photo"; //设置图片默认路径 QDir DIR; if(!DIR.exists(dir)) { return ; } QDir picdir(dir); QStringList filters; filters << "*.bmp" << "*.jpg" << "*.png"<<"*.gif"; //支持显示图片的格式 picdir.setNameFilters(filters); list = picdir.entryInfoList(); h=1; //图片的高度比例 w=1; //图片的水平比例 update(); //触发paintEvent画图函数将图片显示 } QSize RenderArea::minimumSizeHint() const { return QSize(10,10); } QSize RenderArea::sizeHint() const { return QSize(10000, 10000); } void RenderArea::paintEvent(QPaintEvent *) { QPainter painter(this); QFileInfo fileInfo = list.at(i); //通过指针i获取该图片的文件名 QString path=fileInfo.filePath(); //通过文件名获得图片的绝对路径 QPixmap pixmap; pixmap.load(path); //加载图片的绝对路径 qDebug("\n pi=%d\n",i); qDebug(path.toLatin1().data()); int x=( size().width()-(int)(pixmap.width()*w))/2; int y=( size().height()-(int)( pixmap.height()*h))/2; //x、y坐标控制显示位置 painter.drawPixmap(x,y,(int)(pixmap.width()*w),(int)(pixmap.height()*h),pixmap,0,0,0,0); //通过图片的路径画出该图片用于显示 qDebug("update %d,%d",pixmap.width(),pixmap.height()); } void RenderArea::fun_area(){ //下一张图片功能实现 w=1; h=1; if( (list.size()==0)|| list.size()==1){ //判断是否有图片用于显示 return ; } if( ( (i>0) || (i==0) ) && ( (i<list.size()-1) ) ){ //单击按钮则向下显示一张图片 i++; } else if(i==(list.size()-1)){ //当图片显示到最后一张将指针指导第一张 i=0; } update(); } void RenderArea::pre_area(){ //上一张图片功能实现 w=1; h=1; if( (list.size()==0)|| list.size()==1){ return; } if( (i<list.size() ) && (i>0) ){ i--; } else if(i==0){ i=list.size()-1; } update(); } void RenderArea::Start(int p){ //循环播放图片功能 int sum=0; //控制速度 if(p==1){ sum=1000; //快速播放 } else if(p==2){ sum=2000; //中速播放 } else sum=3000; //慢速播放 QTime t; bool b=true; bool a=true; if(i==(list.size()-1)){ i=0; repaint(); } while(b){ if(i!=(list.size()-1)){ while(a){ if(t.elapsed()%sum== 0){ //Qtime控制时间 break; } } i++; } else { b=false; } w=1; h=1; repaint(); } } void RenderArea::Big(){ //扩放图片功能 if(w<4) //最大比例 { w=w*1.1; //每单击按钮图片扩大比例1.1 h=h*1.1; update(); } } void RenderArea::Small(){ //图片缩小功能 if(w>0.1) //最小比例 { w=w*0.9; h=h*0.9; update(); } } 效果图: 六.测试与调试 程序的功能实现部分是使用Qt 中QDir、 QPixmap类实现的。通过QDir来获得图片的路径, 通过QPixmap使用QDir得到的路径来显示图片。所以在程序调试过程中出现了2个问题 6.1.文件路径加载问题: QPixmap pixmap; //全局变量 QFileInfoList list; //全局变量 QString dir="/home/Katrina/wisdom/fxy1/photo"; QDir picdir(dir); QStringList filters; filters << "*.bmp" << "*.jpg" << "*.png"<<"*.gif"; picdir.setNameFilters(filters); list = picdir.entryInfoList(); QFileInfo fileInfo = list.at(i); QString path=fileInfo.filePath(); pixmap.load(path); 问题如下: 问题:当图片显示最后一张图片继续点下一张图片按钮的时候,图片路劲是正确的,但窗口显示的仍是最后一张图片 分析原因:因为QPixmap pixmap为全局变量,在图片浏览功能时 pixmap.load(path)将所有的图片路径都加载进去,虽然指针i QFileInfo fileInfo = list.at(i) 控制图片的路径,用qDebug打印路径是正确的,但QPixmap pixmap 一直取的是所有图片中的最后一张图片的路径。 解决的方案是:将QPixmap pixmap设置为局部变量,位置位于 void RenderArea::paintEvent(QPaintEvent *)画图函数的作用域。 void RenderArea::paintEvent(QPaintEvent *) { QPainter painter(this); QFileInfo fileInfo = list.at(i); QString path=fileInfo.filePath(); QPixmap pixmap; pixmap.load(path); } 6.2.循环控制播放的问题 QPixmap pixmap是通过触发调用void RenderArea::paintEvent(QPaintEvent *)来将图片显示的,其中有2个函数方法可以:一个是update()、另一个是repaint();我用的是前者。出现问题如下: 问题是:当图片循环时指针i一直处于递加的,但图片的显示是循环结束图片由第一张直接显示最后一张图片 分析原因:update()函数在循环控制的时候不管次数的多少,只在最后一次调用paintEvent所以当循环结束的时候update()才调用paintEvent显示最后一张。 解决方案:在循环控制的时候repaint()有多少次调用多少次,所以用repaint()代替update() 6.3. 在PXA270-S 上的移植 【交叉编译器】:cross-3.4.1 编译前的一些准备工作: /usr/local/qt (源码包存放的目录) 在终端中执行: #mkdir /usr/local/arm qt-embedded-linux-opensource-src-4.6.tar.gz 解压cross-3.4.1.tar.bz2 #cd /usr/local/arm 等待解压完成。解压完成之后会在这个目录下生成一个usr目录,进入该目录,直到要进入3.4.1目录时,把里面的3.4.1目录剪切到/usr/local/arm下,删除usr目录 由于刚才是在/usr/local/arm的目录下安装的cross-3.4.1,所以设置路径为:PATH=/usr/local/arm/3.4.1/bin:$PATH,然后可以查看arm-linux-gcc的版本情况。 在Linux里设置环境变量的方法(export PATH)然后在终端中进行以下操作: #arm-linux-gcc -v 查看arm-linux-gcc的版本情况 编译及安装qt-embedded-linux-opensource-src-4.6 1. 解压文件 将qt-embedded-linux-opensource-src-4.6.tar.gz复制到/root/local/qt目录下进行解压,解压完成后,得到/usr/local/qt/qt-embedded-linux-opensource-src-4.6目录。将qt-embedded-linux-opensource-src-4.6 重命名为 qt-embedded-linux-opensource-src-4.6-x86。 再解压一下 qt-embedded-linux-opensource-src-4.6.tar.gz, 并重命名为qt-embedded-linux-opensource-src-4.6-arm,在终端中进行操作: #cd /root/local/qt #tar zxvf qt-embedded-linux-opensource-src.tar.gz #mv qt-embedded-linux-opensource-src-4.6 qt-embedded-linux-opensource-src-4.6-x86 #tar zxvf qt-embedded-linux-opensource-src.tar.gz #mv qt-embedded-linux-opensource-src-4.6 qt-embedded-linux-opensource-src-4.6-arm (这里,qt-embedded需要解压两次,一个重命名为 qt-embedded-linux-opensource-src-4.6-x86, 另一个为qt-embedded-linux-opensource-src-4.6-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm架构的。) 2. 编译及安装qt-embedded-linux-opensource-src-4.6-x86 进入/usr/local/qt/qt-embedded-linux-opensource-src-4.6-x86目录,进行编译安装。在终端中进行如下操作: #cd /usr/local/qt/qt-embedded-linux-opensource-src-4.6-x86 #./configure #make(或qmake) #make install(或qmake install) 打开/etc/profile文件,在该文件的末尾加上以下语句: export PATH=/usr/local/Trolltech/QtEmbedded-4.6-arm/bin:$PATH export QTDIR=/usr/local/Trolltech/QtEmbedded-4.6-arm export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 保存后重启。 OK,qt-embedded-linux-opensource-src-4.6-arm也编译好了。 注意:如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。 现在搭建的环境是交叉编译的,如果不用交叉编译,则环境变量那里都设成QT4.6的,而不用QTE的。 七.课程设计总结与体会 本次课程设计,在QT4的环境下编写程序,然后把程序向试验箱进行移植,比起以往的单一编程,还是有些难度的在课设伊始,单是熟悉QT4的调试环境就用去了我们3天的时间,但事实证明磨刀不误砍柴工,这三天的努力使得我们后面的工作变得容易了许多,主要的困难还是度图形用户界面的控制,单是在黄老师和同组同学的帮助下,最终我们还是攻克了难题!课设中我们遇到很多的难题,很多东西都是第一次接触,很多用到的技术网上根本没有资料,完全凭借自己去摸索尝试。其中的困难可想而知。然而坚持就是胜利,牙一咬眼一闭坚持做下去,而通过本次课设,我感觉收获还是蛮多的。可能我对于嵌入式的知识学习的还是不太多,但是这之外的东西收获颇丰。它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓“一份耕耘,一份收获。”没有付出,何谈回报呢?再者,通过本次课设,我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学习的过程。当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。 当然,在这其中,我也发现自己的许多不足之处,由于学期伊始我没有好好学习,才落到如此地步,这也可以说是一个教训吧!我相信在以后的学习工作中,我一定会端正自己的学习态度,一丝不苟的去对待每一件事。只有做好足够的准备,才能事半功倍! 八.参考文献 1、石秀民,魏洪兴主编. 嵌入式系统原理与应用——基于XScale与Linux. 北京航空航天大学出版社,2007. 2、陈虎,吴涛等著. 嵌入式系统课程设计. 机械工业出版社,2008 3、北京博创兴业科技有限公司. UP-TECHPXA270-S_LINUX实验指导书[M]. 2007 4、Jonathan Corbet. Linux设备驱动程序[M]. 魏永明,等译. 中国电力出版社,2006. 目录 一.嵌入式课程设计概述 2 1.1 课程设计实验平台简介 2 二.课程设计目的 4 三.课程设计内容和要求 4 3.1设计的内容 4 3.2 要求 5 四.总体设计 5 主要步骤和方法 5 4.1、数字相框软硬件平台的选择 5 4.2、数字相框的软件总体设计 5 4.2.1、功能模块组织架构图 6 4.3、基于Qt的图形界面程序设计 7 五.详细设计 8 5.1用户界面层代码设计如下 8 5.2.功能模块实现代码: 12 六.测试与调试 16 6.1.文件路径加载问题: 16 6.2.循环控制播放的问题 17 6.3. 在PXA270-S 上的移植 18 七.课程设计总结与体会 20 八.参考文献 21 22- 配套讲稿:
如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。
关于本文