首页 多闹点数字钟的设计毕业设计

多闹点数字钟的设计毕业设计

举报
开通vip

多闹点数字钟的设计毕业设计陕西理工学院毕业设计 毕业设计 题 目: 多闹点数字钟的设计 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 ...

多闹点数字钟的设计毕业设计
陕西理工学院毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 毕业设计 题 目: 多闹点数字钟的设计 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 注 意 事 项 1.设计(论文)的内容包括: 1)封面(按教务处制定的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 封面格式制作) 2)原创性声明 3)中文摘要(300字左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入) 6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时) 2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。 3.附件包括:任务书、开题报告、外文译文、译文 原文 少年中国说原文俱舍论原文大医精诚原文注音大学原文和译文对照归藏易原文 (复印件)。 4.文字、图表要求: 1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写 2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画 3)毕业论文须用A4单面打印,论文50页以上的双面打印 4)图表应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序 1)设计(论文) 2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订 多闹点数字钟的设计 [摘要] 多闹点数字钟是由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。本设计是以单片机STC89C52为核心元件同时采用LCD显示器动态显示“时”、“分”、“秒”、“年”、“月”、“日”的现代计时装置。更重要的是具有闹钟功能,至少可设置两个时间闹点,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。 [关键词] 多闹点、STC89C52、LCD Make more the design of the digital clock zhuxu (Grade11,Class3,Major Electronic Information Science and Technology,Physics Dept.,Shaanxi University of Technology,Hanzhong 723000,Shaanxi) Tutor: Songweixing Abstract : Make more digital clock is very common, by single chip microcomputer as the core of the digital clock controller, through its function of timing clock signal, the time data by the MCU output, using the monitor display. This design has the functions of digital clock timing, when the school, is based on single chip microcomputer AT89C52 as the core element and USES the dynamic display of the LCD display "when", "points" and "second", "year", "month", "day" modern timing devices. Also has alarm clock function, using the singlechip microcomputer digital clock has a flexible programming, function expansion conveviently. Key words : Make more alarm clock 、STC89C52、LCD 目 录 引言 1 1 设计要求及目的 1 1.1 设计要求 1 1.2 设计思想 1 1.3 总体设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 1 2 硬件设计 2 2.1 单片机简介 2 2.2 复位电路设计 2 2.3 蜂鸣器电路设计 3 2.4 按键电路设计 3 2.5 晶振电路设计 3 2.6 时钟电路设计 4 2.7 LCD显示部分 5 3 程序设计 5 3.1 程序设计概述 5 3.2 多闹点的实现 5 4 多闹点数字钟的Protues软件仿真 6 4.1 Protues软件的概述 6 4.2 Protues软件的特点 7 4.3 Protues软件具有四大功能模块 7 4.4 多闹点数字钟的Protues仿真 8 4.4.1. Protuse软件仿真 8 4.4.2. 电路功能仿真 8 5 系统的调试和安装 10 6 结束语和展望 11 致谢 11 参考文献 11 附录 12 引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品渗透进了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时使现代电子产品的性能进一步提高,产品换代更新的节奏也越来越快。数字钟已经成为人们日常生活中必不可少的,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。 电子钟是人们日常生活中常用的计时工具,而数字电子钟又具备体积小、重量轻、精确走时、结构简单、耗电量少等优点而在生活中被人们广泛应用。 用单片机制作数字钟是单片机的一个非常典型的应用。数字钟采用数字电路实现对“时、分、秒” 数字显示及控制的计时装置,普遍应用于个人家庭及车站、码头、办公室等一系列公共场所,已经成为人们日常生活工作中不可缺少的必需品。近年来由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精确度远远超过旧式钟表,钟表的数字化给人们生活生产带来了极大的便利。利用单片机设计一个电子时钟,单片和LCD 显示器组合用来显示秒、分、时计数单元中的值,可以非常准确地显示标准时间,也可以设置多个闹点。 1 设计要求及目的 1.1 设计要求 在日常工作、学习、生活中常常需要多时点提醒或对电气设备的工作程序进行控制。现要求利用模拟、数字电子技术或单片机技术设计一数字钟,至少可设置2个时间闹点。 1.2 设计思想 使用整个单片机作为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。时钟芯片产生时钟信号,利用单片机的I/O口传输给单片机;并通过I/O口实现LCD的显示。系统设有4个按键可以对时、分、秒、进行调整。 1.3 总体设计方案 本设计是以单片机及外围接口电路为核心硬件,辅以其他硬件电路,用汇编语言设计的程序来实现的。根据C52单片机的外围接口特点扩展相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件执行一定的程序来实现数字钟的功能。由于采用集成芯片的单片机来设计并制作电子钟,这样设计制作简单而且功能多、精确度高,也可以方便扩充其他功能,实现也比较简单。本设计是利用STC89C52单片机为主控芯片,由LCD、晶振、电阻、电容、开关、蜂鸣器等元件组成硬件电路,通过编写软件程序来实现和控制的多闹点数字钟[1]。系统设计框图如图1.1所示。 LCD 片选 代码 喇叭 振荡电路 STC89C52 调时电路 图1.1 系统设计思路 2 硬件设计 2.1 单片机简介 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案[2]。 具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 单片机是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。 STC89C52是一款单片封装的微控制器,适合于许多要求高集成度、低成本的场合。可以满足多方面的性能要求。采用了高性能的处理器结构,指令执行时间只需2 到4 个时钟周期(6倍于标准51单片机器件)[3]。 STC89C52 提供以下标准功能:8k 字节Flash 闪速存储器,256 字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,STC89C52 可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。其引脚图如图2.1所示。 图2.1 STC89C52引脚排列 2.2 复位电路设计 复位操作有上电自动复位和按键手动复位两种方式,上电自动复位是在加电瞬间电容通过充电来实现的,在通电瞬间,电容通过电阻充电RST端出现正脉冲,用以复位。只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位。关于参数的选定,在振荡稳定后应保证复位高电平持续时间时间大于两个机器周期[4]。本设计采用的复位电路如图2.2所示。 图2.2 复位电路图 2.3 蜂鸣器电路设计 蜂鸣器是种一体化结构的电子讯响器,用直流电压供电,普遍的应用于打印机和复印机、计算机、报警器、电子玩具、汽车电子设备、电话机及定时器等各类电子产品中作信号发声器件[5]。 蜂鸣器分为有源和无源两种,此处源值得是振荡源,而非电源。两者的区别是:有源蜂鸣器只要给一个电源,就能发声,所以程序控制方便,但由于多了一个振荡电路,价格上相对较高;无源蜂鸣器给直流信号无法使其发声,须通高低电平才能使其发声,显然高低电平的频率不能太低,但是频率也不能太高,否则蜂鸣器的响应速度跟不上,由此可知无源蜂鸣器控制较为复杂。但是其价格便宜。本设计采用无源蜂鸣器,串联一个1k的电阻到单片机I/O口,这里的三极管接法为射极跟随器,和普通的开关工作的三极管工作(e极接地,c极输出)有所不同。射极跟随器的输出电压是跟随基极电压变化而变化的(Ue=Ub+0.7V),尽管当基极电压很高(Ub>Ue-0.7V)时,三极管确实是截止了(因为这时基极没有电流);而基极低电平最低的时候(输入端为0),三极管工作只能是接近于饱和状态,仍然属于放大状态(因为Ue=Ub+0.7V)。基极低电平的时候,电流是从e极b极和e极流向c极,符合Ic=βIb,Ie=Ib+Ic,如图2.3所示。 图2.3 蜂鸣器电路设计 2.4 按键电路设计 按键电路的闭合状态通过相应的电路转换为高、低电平状态。按键闭合的过程在对应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定。这一过程是处于高、低电平之间的一种不稳定状态,这种不稳定的状态称为抖动[6]。抖动的持续时间长短与开关的机械特性有关,一般在5—10ms之间。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生相互影响。P1.0表示设置键,可设置年月日时分秒,P1.1表示调整键,P1.2表示保存键,P1.3表示闹钟模式键,可设置两个闹点。按键设计如图2.4所示。 2.5 晶振电路设计 STC89C52系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内部。时钟电路在计算机系统中扮演着相当重要的角色,是保证系统正常工作的基础[7]。在一个单片机的应用系统中,时钟含有两方面的作用:一是指为保障系统可以顺利工作的基准振荡定时信号,主要由晶振及外围电路组成,晶振频率的高低决定了单片机工作系统的性能;二是指单片机系统中的标准定时时钟,即定时时间。 图2.4 按键电路设计 本设计是采用用一个11.0592MHz晶振和两个30Pf瓷片电容组成,为单片机提供脉冲信号,其中两个瓷片电容起微调作用。常用波特率通常按规范取为1200,2400,4800,9600等等,若采用12MHz或6MHz,由公式:波特率=(2SMOD/32)*(T1溢出率)得出的T1定时初值将不是一个整数,这样通信时便会积累误差,进而产生波特率误差,影响串行通信的同步性能。所以我们这儿采用11.0592MHz的晶振,因为它能够非常准确的计算出T1的定时初值[8]。 之所以采用高性能的振荡电路,因为: 1)单片机电子钟的计时脉冲基准是由外部晶振的频率经过12分频后提供,采用内部的定时/计数器来实现计时功能。所以,外接晶振频率精确度直接影响电子钟计时的准确性。 2)单片机电子钟利用内部定时/计数器溢出产生中断再乘以相应的倍率来实现秒、分、时的转换。大家都知道从定时/计数器产生中断请求到响应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子程序也要占用一定的机器周期。晶振电路图如图2.6所示。 图2.6 晶振电路设计 2.6 时钟电路设计 时钟电路用DS1302,DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。设计的时候Vcc1接地,Vcc2接电源,X1和X2是振荡源,外接32KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送[9]。时钟电路设计如图2.7所示。 图2.7 时钟电路图 2.7 LCD显示部分 为了获得更好的效果本设计采用了型号为1602的 LCD。LCD有LED数码显示更好的更的直观效果,也更加经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚). 该模块也可只用D4-D7作为四位数据分两次传送[9]。这样的话可以节省MCU的I/O口资源。 引脚说明如图2.8所示。 图2.8 LCD1602引脚分布 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时不仅可以写入指令还可以显示地址,当RS为低电平、R/W是高电平时可以读忙信号,当RS为高电平和R/W为低电平时就能写入数据。 第6脚:E端是使能端,当E端由高电平变为低电平时,液晶模块执行相应的命令。 第7~14脚:D0~D7为8位双向数据线[10]。 综合以上设计得图2.9所示的多闹点数字钟设计电路。 3 程序设计 3.1 程序设计概述 这里用汇编的单片机程序构成了本设计的软件系统。该程序实现时间及定时(时间以0点0分0秒为基准计算,闹铃定时以0时0分为基准计算)的显示,有外中断0和五个开关实现校时,闹钟功能。其中程序的晶振频率为12MHz,最小计时单位为1/20秒。 主芯片P0.1-P 0.7输出数据到LCD数据总线,P2.5-P2.7输出LCD控制信号,P3.6输出声音信号,P1.0-P1.3输入外部控制信号,整个软件系统也是根据这个关系连接成一个完整的系统。 本设计中主程序主要实现显示的初始化和调用各子程序工作的功能,读取时间的子程序主要实现初始化,时间信息的采集和显示段码的码的存取。分别对各个器件的功能进行编程设计,根据主程序流程图(如下)进行全面的分析。设计中计时主要以定时器T0中断完成,定点闹铃使用峰鸣器来完成。当端口有开关按下时,转入相应的功能程序。其主程序执行流程如图3.1所示。 3.2 多闹点的实现 闹点功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别[11]。程序如附录所示。 图2.9 多闹点数字钟设计 图3.1 主程序执行流程 4 多闹点数字钟的Protues软件仿真 4.1 Protues软件的概述 Protues软件是英国Labcenter electronics公司出版EDA工具软件。它不仅仅具有其他的EDA工具软件的仿真功能,还可以仿真单片机和它的外围器件。它是当下最好的仿真单片机和其外围器件的软件工具。虽然现在国内推广刚刚开始,还不是很成熟,但已经受到单片机爱好者和从事单片机工作教学的教师及致力于单片机开发应用的广大科技工作者的青睐。Proteus是世界上闻名的EDA仿真软件工具,从原理图布图和代码的调试到单片机与其外围电路协同仿真,一键转换到PCB设计,从真正意义上达到了从概念到产品的完整设计。是现在世界上唯一能将电路仿真软件和PCB设计软件及虚拟模型仿真软件三个合一体的设计平台,他的处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、8086和MSP430等,2010年即将增加Cortex和DSP等一系列处理器,并陆续增添其他型号处理器模型。在软件编译方面,它也支持IAR和MPLAB等好多种类编译[12]。 4.2 Protues软件的特点 Protues仿真软件有其它EDA工具软件(例:multisim)的功能。具有的功能主要是: 1)原理的布图 2)PCB自动及人工布线 3)SPICE电路仿真  创新性的特点: 1)具有互动电路仿真。用户可以便利的采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 2)仿真处理器和它的外围电路。能仿真51系列、AVR、PIC、ARM等常用的主流单片机。也能直接在基于原理图设计的虚拟原型上进行编程,再配合上显示模块及输出模块,可以清楚地看到仿真运行后输入输出的各种效果。配合系统中配置的虚拟逻辑分析仪和示波器等外围电路,Protues建立了相当完善的电子电路设计开发环境。 4.3 Protues软件具有四大功能模块 1)智能原理图设计(ISIS) 丰富的器件库:超过27000种元器件,可方便地创建新元件。 智能的器件搜索:通过模糊的搜索可以很快的定位电路所需的元器件。 智能化的自动连线功能:自动连线功能让连接导线更加简单快捷,大大的缩短了绘图时间。 配备总线结构:用总线器件和总线布线可以让电路设计更加简明清晰。 能输出高质量的图纸:通过个性化的设置,能生成印刷高质量BMP图纸,可以便利的让WORD、POWERPOINT等多种文档软件使用。 2)完善的电路仿真功能(Prospice) Prospice仿真:基于工业的标准SPICE3F5,实现数字和模拟电路混合仿真;超过27000多个仿真元器件:能通过内部的原型或者使用厂家的SPICE文件自己设计仿真的元器件,Labcenter也在陆续地发布新的仿真元器件,并且导入第三方发布的仿真元器件。 多种的激励源:包括直流和正弦和脉冲和分段线性脉冲及音频(使用wav文件)和指数信号和单频FM和数字时钟,并且还支持文件形式信号输入。 多种多样的虚拟仪器:13种虚拟的仪器,面板的操作形象逼真,如示波器和逻辑分析仪和信号发生器和直流电压/电流表和交流电压/电流表和数字图案发生器和频率计/计数器和逻辑探头和虚拟终端和SPI调试器及I2C调试器等。 栩栩如生的仿真显示:色点用来显示各个引脚的数字电平,用来连接的导线用不同的颜色表示对地电压的大小,结合每个动态器件)的使用可以使仿真更加的直观和形象。 高级的图形仿真功能:基准于图标的分析能精确的分析电路的各种指标,具体有工作点和瞬态特性和频率特性和传输特性和噪声和失真及傅立叶频谱分析等,还能进行一致性的分析。 (3)不同的单片机互相协同仿真功能(VSM) 支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器。 支持通用外设模型:如字符LCD模块和图形LCD模块和LED点阵和LED七段显示模块和键盘/按键和直流/步进/伺服电机和RS232虚拟终端及电子温度计等,其种COMPIM还能让仿真电路通过PC机串口、外部电路来实现双向异步的串行通信。 实时的仿真:支持UART、USART、EUSARTs仿真和中断仿真和SPI/I2C仿真和MSSP仿真和PSP仿真和RTC仿真和ADC仿真及CCP/ECCP仿真。 编译及调试:支持单片机汇编语言编辑/编译/源码级的仿真,内置8051和AVR和PIC的汇编的编译器,还能与第三方集成编译软件(如IAR和Keil及Hitech)相结合,实现高级语言之间的源码级仿真及调试。 (4)切合实际的PCB设计平台 原理图到PCB的快速结合:原理图完成设计后,一键就能直接得进入ARES的PCB设计模块,实现概念到产品的一体设计。  领先的自动布局/布线功能:支持器件的自动/人工布局;支持无网格人工布线和自动布线;支持引脚交换/门交换功能让PCB设计的更加合理。 齐全的PCB设计功能:最多能设计高达16个铜箔层,还有2个丝印层,还有4个机械层(含板边),多种多样的布线方法可以让用户设置,自动规则设计检查,还有3D 可视化预览功能。 多种多样的输出格式的支持:可以输出不同的格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工[13]。 4.4 多闹点数字钟的Protues仿真 4.4.1 Protuse软件仿真 支持当前的主流单片机,像51系列V48系列和PIC12系列和PIC16系列和PIC18系列和Z80系列和HC11系列和68000系列等。 (1)提供了软件调试的功能。 (2)提供了丰富的外围接口器件和其仿真.RAM.ROM键盘,马达,LED,LCD,AD/DA,部分器件,部分的IIC器件。这就很接近实际。在教导学生时,可以选择多种方案,这样更加利于教导学生。 (3)提供多种虚拟仪器,利用虚拟的仪器在仿真的过程中能测量外围电路的相应特性,培养学生实际硬件的调试能力。 (4)具有完善的原理图绘制功。 4.4.2 电路功能仿真 首先打开proteus软件中的ISIS Professional ,然后进入ISIS Professional的编辑界面,然后对此软件的界面进行简单的介绍下。 点击工具栏的“保存”按钮,在G盘毕业设计文件夹中创建一个名字为proteus仿真的子文件夹,将文件命名为“lcd”,点击保存,路径为G: \毕业设计\proteus仿真\lcd。 接下来,就按照要求,在原理图编辑窗口,添加需要的元件。双击“库管理按钮DEVICES”,出现新的界面“pick devices”,选择左边的“category”中“Microprocessor ICs”,进入库中,再找到“STC89C52”,最后点击右下角的“ok”按钮,返回到原理图编辑窗口,点击左键,将该MCU“STC89C52”放置到原理图上。 按照上面的步骤,再添加4个“BUTTON”按键,并分别右键,修改名称为“设置K1”,“调时K2”,“保存K3”,“闹钟K4”;再添加“LM016L”1602液晶仿真元件。Proteus中的1602液晶确实是LM016L,有14个管脚。而实物1602有16个管脚是因为多了2个用于调节液晶背光亮度的接口(A,K),前14个管脚和LM016L的功能定义是一样的,即兼容LM016L。这个不影响仿真效果,反正调背光是手动的,不用编程控制。由于proteus软件适用于仿真数字逻辑的,复位也没有必要,因此,在原理图中,不需要画出复位电路及晶振模块。最后添加上相应的“接地VDD”,大致上的元件添加完毕[14]。 接下来,该为这些元器件接线了。按照设计要求,1602液晶的D0.0—D0.7端口对应单片机的P0.0—P0.7端口,LCD的VSS、VDD、VEE、不需要连接。“设置K1键”按钮对应单片机的P1.0端口,“调时K2键”按钮对应单片机的P1.1端口,“保存K3键”对应单片机的P1.2端口,“闹钟K4键”按钮对应单片机的P1.3端口。最后将4个按钮的公共端接地。这样,原理图已经完成,点击保存。原理图如图4.1所示。 图4.1 多闹点数字钟仿真原理图 在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,出现程序所实现的结果。如图4.2所示。 图4.2 多闹点数字钟加载程序 调整设置键K1可以进入到修改时分秒、年月日界面,加1键K2,K4为进入调整闹钟模式,K3为保存键,通过这四个键可以设置时间和两个不同的闹铃。 PROTEUS 是单片机课堂教学的先进助手。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES也能茯得愈来愈广泛的应用[15]。 5 系统的调试和安装 本多闹点数字钟的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有封皮的导线,使电路造成短路现象。 另外,买来的元器件要先进行检测,如果有坏的器件要进行更换,还有就是要注间元器件的正确放置与安装以及布线的合理,便于成品电路的检测与维护。 硬件焊接好后需要测试是否都连接好了,本设计采用的测试方法是用万用表来测量,用万用表的两个表笔分别接连线的两端,测试是否电阻为零,如果电阻为零说明连接正确,如果有电阻说明没有连接好。由于实验板上的有些焊点离的比较近,在焊接时可能由于不小心将焊锡滴落在两个焊点之间造成短路,短路是对电路板最大的危害之一,因此要细心的检查每两个相邻的焊点之间是否有短路发生。 本系统所说的调试是指在实验室里,对已知的标准量进行测试和比较,以验证电路设计的是否正确和合理。对本电路来说,所需的器件如表4.1所示。 表4.1 元器件清单 名称 参数 数量 单片机芯片 STC89C52 1 万能板 9*16 1 时钟芯片 DS1302 1 显示器 LCD1602 1 蜂鸣器 S8550 1 三极管 9013 1 晶体振荡器 11.0592MHz 1 晶体振荡器 32KHz 1 按钮开关 6*6 4 瓷片电容 30pF 2 电解电容 20pF 1 电阻 1k 2 电阻 1Ok 9 硬件实际安装如图4.2所示。 图4.2 硬件实际安装图 6 结束语和展望 本多闹点数字钟的设计已经通过了软件仿真和硬件调试,并且基本实现了各项指标要求。而且价格低廉,体积小,方便携带。我所学的知识比较浅薄,电路的布局各方面可能还有不足之处需要加以改进,如果用别的单片机可能会更方便,性能也会稳定些。 致谢 在本设计的写作和制作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下渡过了。尤其要强烈感谢我的论文指导老师宋卫星老师,他对我进行了无私的指导和帮助,帮助我进行论文的修改和改进,一遍又一遍地指出每稿中的具体问题,严格把关,认真细心,循循善诱,不仅让我学到了知识,更让我感受到了老师的学识渊博。在此我向宋老师致以最真挚的感谢,感谢老师对我的关心,在此我也要感谢给予我硬件设计部分帮助的张文强同学,对我关于整个电路的布局提供了巨大的帮助。同时也感谢大学四年来的各位老师的教导和同学们的帮助,正因为有了各位老师和同学的陪伴,这四年的生活才能如此多姿多彩,让我终身受益。 参考文献 [1] 李玉梅.基于MCS-51系列单片机原理的应用设计[M].北京:国防工业出版社,2006.7:15-48. [2] 徐惠民.单片微型计算机原理接口与应用[M].北京:北京邮电大学出版社,1996.6:83-92. [3] 余发山.单片机原理及接口技术[M].徐州:中国矿业大学出版社,2003.4:36-58. [4] 夏继强.单片机实验与实践教程[M].北京:北京航空航天大学出版社, 2001.9:78-113. [5] 赵晓安.MCS-51单片机原理及应用[M].天津:天津大学出版社,2001.3:65-87. [6] 杨建成.基于AT89C51单片机的数字钟设计[J].电子技术,2007,(4):35-42 . [7] 石悦.多功能数字钟设计[J].华中科技报,2003,(5):54-65. [8] 刘宁.单片机多功能时钟的设计[J].浙江海洋学院报,2009,(3):25-35. [9] 汪文,陈林.单片机原理及应用[M].湖北:华中科技大学出版社,2007.11:54-67. [10]康华光.电子技术基础数字部分[M].北京:高等教育出版社,2008.2:89-115. [11]邢小杰.单片机电子时钟设计[J].中国科技博览,2009,(9):53-67. [12] Mt. Prospect.MCS 51 Family of Microcontrollers Architectural Overview. September [D].1993. [13]V. Yu. Teplov,A. V. Anisimov. ThermostattingSystem Using a Single-Chip Microcomputer and Thermoelectric Modules Based on the Peltier Effect[D].2002. [14] 何伦昌.给交流数字钟加装自动调时电路[J].电子报,2002,(8):57~58. [15] 关心.数字钟标准60Hz时基电路[J].电子报,1991,(4):92~105. 附录 #include//52单片机头文件,规定了52单片机的寄存器和IO口等 #include//_nop_空指令及左右循环移位子函数库 #define uchar unsigned char//宏定义 #define uint unsigned int//宏定义 sbit lcden=P2^7;//定义下面通过lcden来操作P2^7口,1602液晶使能控制端 sbit lcdwr=P2^6;//定义下面通过lcdrw来操作P2^5口,1602读写选择端 sbit lcdrs=P2^5;//定义选数据寄存器选指令寄存器控制端 sbit sda=P2^1;//定义DS1302数据总线 sbit rst=P2^0;//DS1320复位 sbit sck=P2^2;//定义时钟总线 sbit s1=P1^0;//定义设置按钮 sbit s2=P1^1;//定义调时按钮 sbit s3=P1^2;//定义确定按钮 sbit s4=P1^3;//定义闹钟 sbit ACC0=ACC^0; sbit ACC7=ACC^7; sbit BELL=P3^6; char fen,shi,miao,ri,yue,nian,zhou,s1num,s2num,s4num,flag1,flag2,lshi,lfen,naoz1,naoz,lshi1,lfen1; uchar code table[]={" 15- - : "};//要写入1602液晶的数据 uchar code table1[]={" : : : "};//字库中的字可直接以外加""号的形式直接写入 uchar code table2[]={" Welcome To Lcd!"};//欢迎界面 uchar code table3[]={"Happy Every Day!"}; //欢迎界面 /******************************************************************************* 时函数,z的取值为这个函数的延时ms数,delay(200);大约延时200ms. delay(500);大约延时500ms *******************************************************************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*********************蜂鸣器函数************************************************/ void didi() { uchar i; for(i=0;i<60;i++) { BELL = 0; delay(1); BELL = 1; delay(1); } } void beep(int x){ while(x--) { BELL=0; delay(100); BELL=1; delay(100); } } /*******************向1602液晶中写一个指令**************************************/ void write_com(uchar com) { lcdwr=0; //lcdwr为读写控制端,lcdwr=0,这里可不写 lcdrs=0; //液晶rs接口为0时,写指令,rs为1时写数据 P0=com; //将要写的指令赋给P0口, delay(5); //由1602读写操作时序图,先将指令赋给P0口,延时后将使能 lcden=1; // 端lcden置高,再延时一段时间,然后将lcden置低,这样指令 delay(5); // 就写入到LCD了 lcden=0; } /****************************向液晶写数据***************************************/ void write_data(uchar date)//与写指令类似,这里lcdrs设为1 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } /*****************************初使化1602液晶************************************/ void init_1602() { lcdwr=0; lcden=0; write_com(0x38);//设置LCD为16*2显示、5*7点阵、8位数据接口模式 write_com(0x0c);//开显示、不显示光标 write_com(0x06);//写一个字符后,地址指针加1 write_com(0x01);//显示清0 } /*******************************************************************************/ void gudingtime_1602() { uchar num; write_com(0x80);//将指针指向初始位置 for(num=0;num<16;num++)//循环函数,用于将" 2012- - "写入液晶 write_data(table[num]); write_com(0x80+0x40);//将指针指向1602液晶的第二行 for(num=0;num<16;num++)//功能与上同,用于将" : : : "写入 write_data(table1[num]); } /**************************显示欢迎界面函数*************************************/ void displaystar(void) { uchar i; write_com(0x80); for(i=0;i<16;i++) write_data(table2[i]); write_com(0x80+0x40); for(i=0;i<16;i++) write_data(table3[i]); } /***************************显示时间、日期子函数*********************************/ void write_sfm(uchar add,uchar time)//用于在1602上显示年、月、日、时、分、秒。Add为显示位置,time为要显示的内容 { uchar shiwei,gewei; shiwei=time/16; //将从DS1302中读取的BCD码数据转化成10进制个位和10 gewei=time%16; //进制十位 write_com(add+0x80);//定义显示在液晶的什么位置 write_data(0x30+shiwei);//由1602液晶字库可知,0~9的数据码分别对应0x30~0x39 write_data(0x30+gewei); //初使化中设定了写一个字符后,地址指针加1,因此这里 } // 不用重新光标写位 /**************************显示闹钟子函数*****************************************/ /**************************显示周子函数**************************************** void write_naoz1(uchar time1)//用于在1602上显示周信息,与显示 { //时间日期子函数类似 uchar gewei; gewei=time1%16;//一周七天,因此只需个位 write_com(0x80+13); write_data(0x30+gewei); } /***************************写数据字节子函数************************************/ void Input_1byte(uchar TD)//写一字节数据 { uchar i; ACC=TD; for(i=8;i>0;i--) { sda=ACC0; sck=1; sck=0; ACC=ACC>>1; } } /*************************读数据字节子函数**************************************/ uchar Output_1byte(void)//读一字节数据 { uchar i; for(i=8;i>0;i--) { ACC=ACC>>1; ACC7=sda; sck=1; sck=0; } return(ACC); } /***************************写DS1302数据函数***********************************/ void write_1302(uchar DS_ADD,uchar DS_DAT)//写操作 { rst=0; sck=0; rst=1; Input_1byte(DS_ADD); Input_1byte(DS_DAT); sck=1; rst=0; } /***************************读DS1302数据函数***********************************/ uchar read_1302(uchar DS_ADD)//读操作 { uchar DS_INF; rst=0; sck=0; rst=1; Input_1byte(DS_ADD); DS_INF=Output_1byte(); sck=1; rst=0; return(DS_INF); } /*************************初始化DS1302子函数***********************************/ void inital_1302() { write_1302(0x8e,0x00);//禁止写保护 write_1302(0x90,0xaa);//定义充电 write_1302(0x80,0x00);//秒 write_1302(0x84,0x00);//时 write_1302(0x82,0x00);//分 write_1302(0x8c,0x15);//年 write_1302(0x88,0x05);//月 write_1302(0x86,0x01);//日 write_1302(0x8a,0x05);//星期 write_1302(0xc0,0x06);//闹钟1小时初始化 write_1302(0xc2,0x00);//闹钟1分钟初始化 write_1302(0xc4,0x08);//闹钟1小时初始化 write_1302(0xc6,0x00);//闹钟1分钟初始化 write_1302(0x8e,0x80);//开保护 } /******************************************************************************** 扫描函数 ********************************************************************************/ void keyscan() { if(s1==0&&s4num==0) //按键1按下且s4在此之前未曾按过 { delay(5); if(s1==0&&s4num==0) { flag1=1; s1num++; while(!s1);didi(); if(s1num==1) { write_com(0x80+0x40+14);//光标移动到**位置 write_1302(0x8e,0x00);//禁止写保护 write_1302(0x80,miao);//写入秒信息 write_1302(0x8e,0x80);//开写保护 write_com(0x80+0x40+8); write_com(0x0f); } if(s1num==2) { write_1302(0x8e,0x00);//禁止写保护 write_1302(0x82,fen);//写入分信息 write_1302(0x8e,0x80);//开写保护 write_com(0x80+0x40+5); } if(s1num==3) { write_1302(0x8e,0x00); write_1302(0x84,shi); write_1302(0x8e,0x80); write_com(0x80+0x40+2); } if(s1num==4) { write_1302(0x8e,0x00); write_1302(0x86,ri); write_1302(0x8e,0x80); write_com(0x80+8); } if(s1num==5) { write_1302(0x8e,0x00); write_1302(0x88,yue); write_1302(0x8e,0x80); write_com(0x80+5); } if(s1num==6) { write_1302(0x8e,0x00); write_1302(0x8c,nian); write_1302(0x8e,0x80); write_com(0x80+2); } if(s1num==7) { flag1=0; s1num=0; write_com(0x0c);//不显示光标 } } } /*******************************************************************************/ if(s1num!=0&&s4num==0)//按键1按下*次且s4再次之前未曾按过 { if(s2==0) { delay(5); if(s2==0) { while(!s2);didi(); if(s1num==1) { int x1,x2; x1=miao%16; x2=miao/16; x1++; if(x1==10) { x1=0; x2++; if(x2>=6) x2=0; } miao=x1+x2*16; write_sfm(7+0x40,miao);//将修改的数送到1602显示 write_com(0x80+0x40+8);//挪回光标 } if(s1num==2) { int x3,x4; x3=fen%16; x4=fen/16; x3++; if(x3==10) { x3=0; x4++; if(x4>=6) x4=0; } fen=x3+x4*16; write_sfm(4+0x40,fen); write_com(0x80+0x40+5); } if(s1num==3) { int x5,x6; x5=shi%16; x6=shi/16; x5++; if(x6>=2&&x5>=4) { x5=0; x6=0; } if(x5==10) { x5=0; x6++; } shi=x5+x6*16; write_sfm(1+0x40,shi); write_com(0x80+0x40+2); } if(s1num==4) { int x5,x6; x5=ri%16; x6=ri/16; x5++; if(x6>=3&&x5>=1) { x5=1; x6=0; } if(x5==10) { x5=0; x6++; } ri=x5+x6*16; write_sfm(7,ri); write_com(0x80+8); } if(s1num==5) { int x5,x6; x5=yue%16; x6=yue/16; x5++; if(x6>=1&&x5>=3) { x5=1; x6=0; } if(x5==10) { x5=0; x6++; } yue=x5+x6*16; write_sfm(4,yue); write_com(0x80+5); } if(s1num==6) { int x5,x6; x5=nian%16; x6=nian/16; x5++; if(x6>=2&&x5>=1) { x5=1; x6=0; } if(x5==10) { x5=0; x6++; } nian=x5+x6*16; write_sfm(1,nian); write_com(0x80+2); } } } } /*******************************************************************************/ if(s1num!=0||s4num!=0)// 在调整模式下 { if(s3==0)//如果确定键按下 { delay(5); if(s3==0) //延时并重新检测S3是否按下,用于差小误差 { if(s1num!=0) { while(!s3);didi();//在松手时将调整后的时间、日期及周信息写入DS1302,退出调整模式并隐藏光标,按键次数清0 write_1302(0x8e,0x00); write_1302(0x80,miao); write_1302(0x82,fen); write_1302(0x84,shi); write_1302(0x8c,nian);//年 write_1302(0x88,yue);//月 write_1302(0x86,ri); write_1302(0x8e,0x80); flag1=0; write_com(0x0c); s1num=0; } if(s4num!=0) { while(!s3);didi();//在松手时将调整后的时间、日期及周信息写入DS1302,退出调整模式并隐藏光标,按键次数清0 write_1302(0x8e,0x00); write_1302(0xc0,lshi); write_1302(0xc2,lfen); write_1302(0xc4,lshi1); write_1302(0xc6,lfen1); write_1302(0x8e,0x80); flag2=0; s4num=0; write_com(0x0c); } } } } if(s4==0&&s1num==0)//按键4按下*次且s1再次之前未曾按过 { delay(5); if(s4==0&&s1num==0) { s4num++; flag2=1; while(!s4);didi(); if(s4num==1) { write_com(0x80+0x40+14);//光标移动到**位置 write_1302(0x8e,0x00);//禁止写保护 write_1302(0xc6,lfen1); write_1302(0x8e,0x80); write_com(0x0f);//显示光标 } if(s4num==2) { write_com(0x80+0x40+11);//光标移动到**位置 write_1302(0x8e,0x00); write_1302(0xc4,lshi1); write_1302(0x8e,0x80); } if(s4num==3) { write_1302(0x8e,0x00); write_1302(0xc2,lfen); write_1302(0x8e,0x80); write_com(0x80+14); } if(s4num==4) { write_1302(0x8e,0x00); write_1302(0xc0,lshi); write_1302(0x8e,0x80); write_com(0x80+11); } if(s4num==5) { s4num=0; flag2=0; write_com(0x0c);//不显示光标 } } } if(s4num!=0&&s1num==0) { if(s2==0) { delay(5); if(s2==0) { while(!s2);didi(); if(s4num==1) { int x1,x2; x1=lfen1%16; x2=lfen1/16; x1++; if(x1==10) { x1=0; x2++; if(x2>=6) x2=0; } lfen1=x1+x2*16; write_sfm(13+0x40,lfen1); write_com(0x80+0x40+14); } if(s4num==2) { int x5,x6; x5=lshi1%16; x6=lshi1/16; x5++; if(x6>=2&&x5>=4) { x5=0; x6=0; } if(x5==10) { x5=0; x6++; } lshi1=x5+x6*16; write_sfm(10+0x40,lshi1); write_com(0x80+0x40+11); } if(s4num==3) { int x1,x2; x1=lfen%16; x2=lfen/16; x1++; if(x1==10) { x1=0; x2++; if(x2>=6) x2=0; } lfen=x1+x2*16; write_sfm(13,lfen);//将修改的数送到1602显示 write_com(0x80+14);//挪回光标 } if(s4num==4) { int x5,x6; x5=lshi%16; x6=lshi/16; x5++; if(x6>=2&&x5>=4) { x5=0; x6=0; } if(x5==10) { x5=0; x6++; } lshi=x5+x6*16; write_sfm(10,lshi); write_com(0x80+11); } } } } } void laba() { if((shi==lshi)&&(fen==lfen)&&(miao<=5&&miao>=0))//当闹钟1的时和分分别与时钟的时和分相等时,闹钟时间到,蜂鸣器鸣响,鸣响10s { beep(5); } if((shi==lshi1)&&(fen==lfen1)&&(miao<=10&&miao>=0))//当闹钟2的时和分分别与时钟的时和分相等时,闹钟时间到,蜂鸣器鸣响,鸣响10s { beep(5); } } void main() { init_1602(); delay(5); displaystar();//初始化1602后马上显示欢迎语句 delay(500);//让欢迎界面停留一段时间 gudingtime_1602();//显示液晶固定不变部分 inital_1302(); lshi=read_1302(0xc1);//从ds1302里面的RAM读取闹钟时,此处不放在while(1)大循环里面是因为ds1302里面的RAM里的数据是不变的只需读取一次 lfen=read_1302(0xc3);//从ds1302里面的RAM读取闹钟分 lshi1=read_1302(0xc5);//从ds1302里面的RAM读取闹钟时,此处不放在while(1)大循环里面是因为ds1302里面的RAM里的数据是不变的只需读取一次 lfen1=read_1302(0xc7);//从ds1302里面的RAM读取闹钟分 write_sfm(0x40+10,lshi1);//将闹钟1时送到1602显示 write_sfm(0x40+13,lfen1);//将闹钟1分送到1602显示 write_sfm(10,lshi);//将闹钟时送到1602显示 write_sfm(13,lfen);//将闹钟分送到1602显示 while(1) { keyscan(); laba(); if(flag1==0&&flag2==0)//只有当不在调整的时候才从DS1302里面读取数据并且送到1602上显示 { miao=read_1302(0x81);//先读出,再送到1602显示,不断循环操作,使1602动态显示时间的走动 fen=read_1302(0x83); shi=read_1302(0x85); ri=read_1302(0x87); yue=read_1302(0x89); zhou=read_1302(0x8b); nian=read_1302(0x8d); write_sfm(7+0x40,miao); write_sfm(4+0x40,fen); write_sfm(1+0x40,shi); write_sfm(7,ri); write_sfm(4,yue); write_sfm(1,nian); } } } 开 始 初始化 显示 按键 闹钟时间 蜂鸣器 调时 保存闹钟钟 设置闹钟时间
本文档为【多闹点数字钟的设计毕业设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
北溟愚鱼
暂无简介~
格式:doc
大小:6MB
软件:Word
页数:0
分类:工学
上传时间:2018-09-23
浏览量:8