基于xmlschema的数据存储方案.doc_第1页
基于xmlschema的数据存储方案.doc_第2页
基于xmlschema的数据存储方案.doc_第3页
基于xmlschema的数据存储方案.doc_第4页
基于xmlschema的数据存储方案.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2009 年 3 月 26 日对于一些小型项目,需要存储的数据字段和数据量可能都比较小,为了降低项目成本,提高项目的独立性,开发人员希望能不依赖数据库进行开发。本文提供了一种替代数据库进行数据存储的解决方案,该方案是应用 XML Schema 技术加以实现,本文会对实现的方法和细节进行详细的讲解。引言对于一些小型的项目,需要存储的数据字段和数据量可能都比较小,为了降低项目成本,或提高项目的独立性,开发人员希望能不依赖数据库进行开发。此时,利用 XML Schema 进行数据存储便是一个非常好的解决方案。利用此方法可以直接把数据存储在 xml 文件中,然后把 xml 文件存放在磁盘的某个位置,这样会使得项目的部署与运行非常的方便。本文会详细的介绍如何基于 xml schema 进行数据的存储,如何以面象对象的方式对 xml 文件进行操作,以提高项目的开发速度和准确度。 文中还提供了一些详细的代码示例来帮助读者了解开发的技术细节。回页首Schema 数据存储概述利用 XML Schema 存储数据的原理就是将数据存储在 schema 所定义的 xml 文档中, 但本文中所讲述的实现方法不会直接面对 xml,而是通过一些类以面象对象的方式实现存取操作,这些类是利用开发工具自动的生成的。本文会以 WID (Websphere Integration Development) 为参考,详细介绍如何构建一个 XML Schema,如何根据 schema 生成 Java 类,以及如何应用这些类进行数据的存取操作。总体来说,应用 schema 进行数据存储大致分为以下几个步骤:1. 创建一个合适的 schema 文件,来满足数据的存储需求 2. 根据 schema 生成 Java 类,应用这些类以面象对象的方式对 xml 文件进行操作 3. 对 xml 文件的保存。 本文会对上述三个步骤来进行详细的讲解。回页首Schema 的构建原则应用 schema 存储数据首先要创建一个 schema 文件,schema 中要包含所有需要存储的数据字段。那么在创建 schema 的时候要考虑这些字段的组织结构,要使得这些字段的结构更为合理,使得后续的操作更为方便。对数据字段应加以分类,然后针对每类数据创建一个结构化对象,就象在数据库中设计表一样,需要决定把哪些字段放在一个表中。在 schema 中,与数据库表相对应的对象是“ Type ”,每个“ Type ”中封装了一类数据字段。以一个简单的库存管理系统为例,为了实现这个系统,大概有五类数据需要存储:货物类别,每日售货记录,供应商信息,送货信息,退货信息。在设计 schema 的时候,要针对每类数据创建一种 Type,以更加清晰的管理每种数据。回页首Schema 的创建方法Schema 的创建可以有多种方式,既可以用文本工具手工编写, 也可以借助开发工具更快捷的创建。 WID 当中有一个创建 schema 的功能,可以应用它很方便的创建一个 schema 。在 WID 菜单中选择 : new other,在出现的对话框中,选择 : XML XML Schema,根据图中所示的步骤可以创建一个 schema 文件。下图所示为一个已经创建完成的 schema 文件,该 schema 中包含了上文提到的库存管理系统的五类数据(本文后续部分会以此 schema 为例进行讲解)。图 1. schema 编辑器上图所示为 WID 中的 schema 编辑器,它有左右两个编辑域:Elements 和 Types 。1. Types 域是用来定义结构化对象的,把一些数据字段封装在其中。在编辑域中点击右键可以选择增加或删除一个 Type 。双击一个已经创建的 Type 会进入到 Type 的编辑器来对 Type 进行编辑。如下图所示:图 2. type 编辑器在此编辑器中可以为一个 Type 添加或删除字段,修改字段类型。字段类型可以是基本类型,如 string,date ;也可以是已经定义的其他 Type 类型,如 Category 对象中的 supplier 元素的类型就是一个已定义的 Type 类型。 Type 编辑器提供了一个 Properties 域,可以利用它对字段方便的设置多种属性。在图 1 所示的 Type 中有一个叫 StorageInfo 的 Type,它与其他五个 Type 有所不同,其他五个 Type 是用来封装数据字段的结构化对象,而 StorageInfo 是用来封装这五个 Type 的,而且 StorageInfo 这个对象是必不可少的。在封装这五个 Type 的时候要结合实际情况对他们组织一个合适的结构。可能只是简单的把它们放在第一层,也可能按照引用关系来排列一个多层次的结构。下图所示为 StorageInfo 的组织结构,本例中是把五个 Type 放在了第一层:图 3. 对象组织结构2.Elements 域是用来为 schema 定义一个根对象,其他的对象是通过这个根对象来获取的,但 Elements 域中的根对象只是一个简单简单的接口,需要为它指定一定 Types 域中的对象。图 1 中所示的 StorageInfo 对象便是供 Elements 域中的 StorageInfo 使用的。根对象的定义如下图所示:图 4. 根对象组织结构回页首Java 类的生成为了实现以面象对象的方式操作 XML,需要根据 schema 来生成 Java 类。在 WID 中,根据 Schema 生成 Java 类非常简单,右健单击 schema 文件,在出现的菜单中选择 Generate - Java,之后会出现一个对话窗口,如下图所示:图 5. Java 类生成器点击图中的 Next,会提示选择用来存放生成 Java 类的位置,之后点击 Finish,这样 Java 类便生成了。下图所示便为生成的所有的 Java 类。在 script 目录下面的类,以及 impl 和 util 两个目录中包含了这些类,应用这些类可以轻松的操作 XML 文件。图 6. Java 类结构由 WID 所生的类看起来似乎比较复杂,但它们有各自的用途,知道了它们的用途后便可以对它清晰的分类:1. Type 所对应的 Bean 类 WID 会为图 1 中所示的每个 Type 定义一个相应的 JavaBean,例如:Catetory.java,DailyRecord.java,DeliverInfo.java 分别对应 schema 中的 Catetory,DailyRecord,DeliverInfo 。但这些类都只是接口,其中只有 getter,setter 方法的定义,并无具体实现。2. Bean 的实现类 Impl 目录中放的是 Bean 的实现类,对每一个接口都会有一个具体的实现。3. DocumentRoot 它表示 schema 的根对象,通过这个类可以得到 schema 中所有其它的对象,如 Category,DeliverInfo 等。4. ScriptFactory 用来创建所有的 Bean 对象,如 createStorageInfo(),createDeliverInfo().5. Util 类 Util 目录中有六个类,但只有其中的 ScriptResourceUtil.java 类会被经常应用,其他的五个类很少会用,所以不必太在意他们。 ScriptResourceUtil 是一个比较重要的类,会用它进行把 xml 文件加载到内存并转化成 Java 对象,同是也要用它把 Java 对象保存到 Xml 文件中。回页首应用讲解1. 获取根对象在本文开头已阐述过,被保存的数据最终是存放在一个 xml 文件中,而且对 xml 文件的操作可以应用面象对象的方式进行。要实现以面象对象的方式操作 xml,首先要对 xml 文件加载并加以转换,然后获取根对象,这样便可取得所有其他的对象,对它们进行修改、删除或创建。获取根对象的代码示例如下,附件中包含了完整的代码,可以下载以供参考:清单 1. 获取文档根对象public StorageInfo loadStorageInfo() StorageInfo storageInfo = null; try / 文件输入流指定到存储数据的 xml 文件 InputStream is = new FileInputStream (D:/storageInfo/storageInfo.xml); / 利用 ScriptResourceUtil 来从输入流中加载 xml 文件, / 它会自动的 把 xml 文件转换为 DocumentRoot 对象 DocumentRoot root = ScriptResourceUtil.getInstance().load(is); / 从 DocumentRoot 中可以得到根对象,也就是 :StorageInfo storageInfo = root.getStorageInfo(); catch (Exception e) e.printStackTrace(); return storageInfo; 得到 StorageInfo 对象之后,便可以以面象对象的方式进行数据的添加,删除,修改等操作。2. 数据的操作得到了根对象之后便可以进行数据的增删改等操作。下面的示例讲解了具体的应用。添加一个 Category 记录清单 2. 增加对象public void addCatetory(StorageInfo storage) / 首先获取 ScriptFactory,它是用来生成各种对象的工厂类 ScriptFactory factory = ScriptFactory.eINSTANCE; / 利用工厂类创建一个新的 Category 对象 Category category = factory.createCategory(); / 为对象中的字段赋值 category.setCostPrice(500); category.setDiscountPrice(400); category.setGoodsAmount(10000); category.setName(Clothes); / 将新 Category 对象添加到根对象 StorageInfo 中 storage.getCategory().add(category); 修改对象根据某个条件修改对象。例如想要修改名称为“ Clothes ”的一个 Category 记录,可以按如下示例进行操作:清单 3. 修改对象public void modifyCatetory(StorageInfo storage) / 得到所有的 Category 对象 List categories = storage.getCategory(); / 应用循环得到指定的 Category 对象 for(int i=0; icategories.size(); i+) Category category = (Category)categories.get(i); if(Clothes.equals(category.getName() / 对 Category 进行修改 category.setCostPrice(450); category.setDiscountPrice(260); 删除对象根据某个条件删除一个对象。例如想要删除名称为“ Clothes ”的一个 Category 记录,可以按如下示例进行操作:清单 4. 删除对象public void deleteCatetory(StorageInfo storage) / 得到所有的 Category 对象 List categories = storage.getCategory(); Category category = null; / 应用循环得到指定的 Category 对象 for(int i=0; icategories.size(); i+) category = (Category)categories.get(i); if(Clothes.equals(category.getName() break; / 删除对象 categories.remove(category); 3. 对象存储在对根对象 StorageInfo 对象操作完成后,需要对其进行持久化,以免数据的丢失。数据的持久化也就是将 StorageInfo 转换为 xml 并加以保存,这个步骤同样是应用 ScriptResourceUtil 这个类加以实现,见如下示例:清单 5. 对象存储public void saveStorageInfo(StorageInfo storageInfo) try / 创建一个 DocumentRoot 对象 DocumentRoot docRoot = ScriptFactory.eINSTANCE.createDocumentRoot(); / 将需要保存的 StorageInfo 设定在 DocumentRoot 中 docRoot.setStorageInfo(storageInfo); / 定义一个输出流 ,ScriptResourceUtil 会把 StorageInfo 写到输出 流中 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ScriptResourceUtil.getInstance().save(docRoot,baos); / 通过 FileOutputStream 把 StorageInfo 写到 xml 文件中 FileOutputStream fos = new FileOutputStream( D:/storageInfo/storageInfo.xml); fos.write(baos.toByteArray(); catch (Exception e) e.printStackTrace(); 回页首XML 文件的加密前面的示例中是把数据的内容直接存放到了 xml 文件中,这个文件是可读的,如果这不慎外泄可能会造成机密数据的泄露,可能会给公司造成一定的损失。所以避免这种情况,需要把 xml 文件进行加密,别人即使得到了 xml 文件,也无法理解其中的内容。在加密 xml 文件时,可以采用 base64 的方式,如下示例是经过修改的代码,它在保存和加载时都是针对一个已加密的 xml 文件。1. 从加密的 Xml 文件获取根对象因为 xml 文件在保存的时候已经应用 Base64 对其进行了加密,所以在加载文件的时候需要对其进行解密。清单 6. 从加密的 XML 文件获取根对象public static StorageInfo loadStorageInfo() StorageInfo storageInfo = null; try InputStream is = new FileInputStream(D:storageInfostorageInfo.xml); / 应用 Base64 对加密过的内容进行解密 byte contents = new BASE64Decoder().decodeBuffer(is); ByteArrayInputStream bais = new ByteArrayInputStream(contents); DocumentRoot docRoot = ScriptResourceUtil.getInstance().load(bais); storageInfo = docRoot.getStorageInfo(); catch (Exception e) e.printStackTrace(); return storageInfo; 2. 将对象保存到加密的 XML 文件中保存的时候用 Base64 对内容进行加密清单 7. 将对象保存在加密的 XML 文件中public static void saveStorageInfo(StorageInfo storageInfo) try DocumentRoot docRoot = ScriptFactory.eINSTANCE.createDocumentRoot(); docRoot.setStorageInfo(storageInfo); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ScriptResourceUtil.getInstance().save(docRoot,baos); / 应用 Base64 对内容进行加密 byte encryptContents = new BASE64Encoder().encode(baos.toByteArray().getBytes(); FileOutputStream fos = new FileOutputStream( D:/storageInfo/storageInfo.xml); fos.write(encryptContents); catch (Exception e) e.printStackTrace(); 回页首历史数据的归档应用程序在运行一段时间后,保存的数据会越来越多,保存数据的 xml 文件也会随之越来越大。如果 xml 文件过大会影响程序的执行效率,延长程序的响应时间,因此每隔一定的时间应该对一些历史数据进行归档。比如本文中的“每日售货记录”。这个记录每天都会产生几百甚至几千条数据,那么隔一段时间应该对这些数据进行归档。对这些数据进行归档比较简单,通过写一段代码便可以实现。如下是代码示例:清单 8. 归档历史数据public void archiveHistoryData(StorageInfo storageInfo) try List historyData = new ArrayList(); / 根据销售时间找到需要归档的 DailyRecord 对象 List dailyRecords = storageInfo.getDailyRecord(); for(int i=0; idailyRecords.size(); i+) DailyRecord record = (DailyRecord)dailyRecords.get(i); if(Date)record.getSaleDate().getTime() System.currentTimeMillis() historyData.add(record); / 从当前的 xml 中删除需要被归档的 DailyRecord 记录 dailyRecords.removeAll(historyData); / 创建新的 StorageInfo 来保存历史数据,然后将历史数据进行保存 storageInfo = ScriptFactory.eINSTANCE.createStorageInfo(); storageInfo.getDailyRecord().addAll(historyData); DocumentRoot docRoot = ScriptFactory.eINSTANCE.createDocumentRoot(); docRoot.setStorageInfo(storageInfo); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ScriptResourceUtil.getInstance().save(docRoot,baos); byte encryptContents = new BASE64Encoder().encode(baos.toByteArray().getBytes(); FileOutputStream fos = new FileOutputStream( D:/storageInfo/archive.xml); fos.write(encryptContents); catch (Exception e) e.printStackTrace(); 回页首注意事项XML 文件的存储位置不是一程不变的,因此在程序开发时,不要把 xml 文件存储路径直接写在代码中,而是应该把它放到配置文件中,这样当变更 xml 存储位置时,只需要改变一下配置文件中的路径就可以了,不必修改代码。在设计 schema 时应尽量保持 schema 的简结,不要设计太深的层次,否则在操作时会带来不必要的麻烦。应该定期做一下历史数据的归档,以减小 xml 文件大小,来提高程序的执行效率。回页首结束语在一些情况下适当利用 schema 存储方案不但能使项目更加独立,不必依赖数据库的支持,也可以提高程序的执行效率。 虽然利用 XML 存储数据并不是一个新颖的方法,但是本文中所讲的内容会让读者了解到一个新的 xml 存储数据的实现方法。39参考:毕业论文(设计)工作记录及成绩评定册题 目: 学生姓名: 学 号: 专 业: 班 级: 指 导 教 师: 职称: 助理指导教师: 职称: 年 月 日实验中心制使 用 说 明一、此册中各项内容为对学生毕业论文(设计)的工作和成绩评定记录,请各环节记录人用黑色或蓝色钢笔(签字笔)认真填写(建议填写前先写出相应草稿,以避免填错),并妥善保存。二、此册于学院组织对各专业题目审查完成后,各教研室汇编选题指南,经学生自由选题后,由实验中心组织发给学生。三、学生如实填好本册封面上的各项内容和选题审批表的相应内容,经指导教师和学院领导小组批准后,交指导教师;指导老师填好毕业论文(设计)任务书的各项内容,经教研室审核后交学生签名确认其毕业论文(设计)工作任务。四、学生在指导老师的指导下填好毕业论文(设计)开题报告各项内容,由指导教师和教研室审核通过后,确定其开题,并将此册交指导老师保存。五、指导老师原则上每周至少保证一次对学生的指导,如实按时填好毕业论文(设计)指导教师工作记录,并请学生签字确认。六、中期检查时,指导老师将此册交学生填写前期工作小结,指导教师对其任务完成情况进行评价,学院中期检查领导小组对师生中期工作进行核查,并对未完成者提出整改意见,后将此册交指导老师保存。七、毕业论文(设计)定稿后,根据学院工作安排,学生把论文(打印件)交指导老师评阅。指导老师应认真按毕业论文(设计)指导教师成绩评审表对学生的论文进行评审并写出评语,然后把论文和此册一同交教研室。八、教研室将学生的论文和此册分别交两位评阅人评阅后交回教研室保存。九、学院答辩委员会审核学生答辩资格,确定答辩学生名单,把具有答辩资格学生的论文连同此册交各答辩小组。十、学生答辩后由答辩小组记录人填好毕业论文(设计)答辩记录表中各项内容,然后把学生的论文和此册一同交所在答辩小组,答辩小组对其答辩进行评审并填写评语后交教研室。十一、学院答辩委员会进行成绩总评定,填好毕业论文(设计)成绩评定表中各项内容,然后把论文(印刷版和电子版(另传)和此册等资料装入专用档案袋中,教教研室后由实验中心统一保存。目 录1毕业论文(设计)选题审批表2. 毕业论文(设计)任务书3毕业论文(设计)开题报告4. 学生毕业论文(设计)题目更改申请表5毕业论文(设计)指导老师工作记录6毕业论文(设计)中期检查记录7毕业论文(设计)指导教师成绩评审表8毕业论文(设计)评阅人成绩评审表9. 毕业论文(设计)答辩申请表10毕业论文(设计)答辩记录表11毕业论文(设计)答辩成绩评审表12毕业论文(设计)成绩评定表毕业设计(论文)选题审批表题目名称 基于单片机的超声波测距题目性质工程设计理论研究实验研究计算机软件综合论文其它题目来源科研题目 生产现场教学 其它自拟题目选题理由:由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,精度也能达到使用要求,超声波测距应用于各种工业领域,如工业自动控制,建筑工程测量和机器人视觉识别等方面。超声波作为一种检测技术,采用的是非接触式测量,由于它具有不受外界因素影响,对环境有一定的适应能力,且操作简单、测量精度高等优点而被广泛应用。这些特点可使测量仪器不受被测介质的影响,大大解决了传统测量仪器存在的问题,比如,在粉尘多情况下对人引起的身体接触伤害,腐蚀性质的被测物对测量仪器腐蚀,触电接触不良造成的误测等。此外该技术对被测元件无磨损,使测量仪器牢固耐用,使用寿命加长,而且还降低了能量耗损,节省人力和劳动的强度。因此,利用超声波检测既迅速、方便、计算简单,又易于实时控制,在测量精度方面能达到工业实用的要求。 指导教师意见: 签名: 年 月 日院(系)领导小组意见: 签名: 年 月 日注:此表由学生填写毕业论文(设计)任务书1、毕业论文(设计)应达到的目的:(1)能对学生在学期间所学知识的检验与总结,培养和提高学生独立分析问题和解决问题的能力,使学生受到科学研究、工程设计和撰写技术报告等方面的基本训练。(2)提高学生对工作认真负责、一丝不苟,对事物能潜心观察、用于开拓、用于实践的基本素质;(3)培养学生综合运用所学知识,结合实际独立完成课题的工作能力。(4)对学生的知识面、掌握知识的深度、运用理论结合实际去处理问题的能力、实践能力、计算机运用水平、书面及口头表达能力进行考核。2、毕业论文(设计)的内容和要求(包括原始数据、技术要求、工作要求等):以单片机为核心设计了基于激光测距的防撞预警系统,采用TDC-GP2芯片作为激光飞行计时单元,给出激光发射及回波接收放大电路,基于模块化思想设计、完成系统软件设计流程;最后通过实验测试,系统要能很好测出前方车辆距离及运行状态,并能及时发出报警,利用Matlab对其测试结果进行验证,修正。3、对毕业论文(设计)成果的要求包括图表、实物等硬件要求:设计完成后,要提供电路图,实验电路版,控制原始程序,实验要保存大量的原始数据。完成设计论文。4、毕业论文(设计)工作进度计划:序号论文(设计)工作进度日期(起止周数)1根据所出题目,结合自身所学知识,选择合适课题,确定毕业设计论文题目。13-14-1第16周止2根据所定题目,全面搜集素材,列出各种设计方案,并一一比较,选择出最好的设计方案。13-14-1第18周止3联系指导老师,将自己的设计方案与老师沟通、交流,得到指导老师的认同与指点,开始设计。13-14-1第19周止4根据方案,确定所要用的器材。设计总体框架结构,分出各大的模块,并将其展开,以得到比较细的设计模式。13-14-2第1周止5 根据所列框图,结合自己所学知识,开始各分支电路模块的设计。13-14-2第2周止6完成初稿,将所做的模块给指导老师查阅,看是否有不当之处,再进行改进。并将大电路的设计方案告之老师,得到老师更好的建议。13-14-2第3周止7大胆进行设计,将每一个小的电路,大的模块,都精心设计好,完成整个硬件和软件部分的设计过程。13-14-2第6周止8将所有设计整理结合,形成设计论文,交与指导老师检查,并经老师指点,做进一步的改进工作。13-14-2第7周止9改进毕业设计论文,得到自己及老师认为满意的论文。13-14-2第10周止指导教师日期年 月 日教研室审查意见:签字: 年 月 日学院负责人意见:签字: 年 月 日学生签字: 接受任务时间: 年 月 日注:任务书由指导教师填写。 毕业论文(设计)开题报告题目基于单片机的超声波测距1、本课题的研究意义,国内外研究现状、水平和发展趋势 近年来,随着电子测量技术的发展,运用超声波作出精确测量已成可能。随着经济发展,电子测量技术应用越来越广泛,而超声波测量精确高,成本低,性能稳定则备受青睐。超声波是指频率在20kHz以上的声波,它属于机械波的范畴。超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。正是因为具有这些性质,使得超声波可以用于距离的测量中。随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。一般的超声波测距仪可用于固定物位或液位的测量,适用于建筑物内部、液位高度的测量等。 随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。2、本课题的基本内容,预计可能遇到的困难,提出解决问题的方法和措施 利用单片机控制超声波测距,发射器发出的超声波以速度在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由即可算出被测物体的距离。预计可能遇到的问题是受温度的影响,测量精度不高,则应通过温度补偿的方法加以校正。报告人签名: 2015年 3 月 20 日3、本课题拟采用的研究手段(途径)和可行性分析 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到农业生产等自动化的使用要求。 超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率、和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面常用的是压电式超声波换能器。根据设计要求并综合各方面因素,本文采用AT89C51 单片机作为控制器,用动态扫描法实现LED 数字显示,超声波驱动信号用单片机的定时器。4、进度计划序号日期进度安排113-14-1第16周止根据所出题目,结合自身所学知识,选择合适课题,确定毕业设计论文题目。213-14-1第18周止联系指导老师,将自己的设计方案与老师沟通、交流,得到指导老师的认同与指点,开始设计。313-14-1第19周止联系指导老师,将自己的设计方案与老师沟通、交流,得到指导老师的认同与指点,开始设计。413-14-2第1周止根据方案,确定所要用的器材。设计总体框架结构,分出各模块,并将其展开,以得到比较细的设计模式。513-14-2第2周止根据所列框图,结合自己所学知识,开始各分支电路模块的设计。613-14-2第3周止完成初稿,将所做的模块给指导老师查阅,看是否有不当之处,再进行改进。并将大电路的设计方案告之老师,得到老师更好的建议。713-14-2第6周止大胆进行设计,将每一个小的电路,大的模块,都精心设计好,完成整个硬件和软件部分的设计过程。813-14-2第7周止将所有设计整理结合,形成设计论文,交与指导老师检查,并经老师指点,做进一步的改进工作。913-14-2第10周止改进毕业设计论文,得到自己及老师认为满意的论文。10115、指导教师意见(对本课题的深度、广度及工作量的意见和对设计结果的预测)指导教师(签字): 年 月 日6、教研室意见教研室主任(签字): 年 月 日说明:开题报告应根据教师下发的毕业设计(论文)任务书,在教师的指导下由学生独立撰写,在毕业设计开始后两周内完成。学生毕业论文(设计)题目更改申请表原毕业论文(设计)题目基于单片机的激光测距现毕业论文(设计)题目基于单片机的超声波测距更改原因理由 首先激光测距仪成本较高,且制作的难度大,测量距离较短,需要注意人体安全,光学系统需要保持干净,否则影响测量精度。而且单片机与激光测距仪的连接很复杂,我主要是利用单片机控制测距仪器,目的是对单片机的知识进行巩固和进一步学习,从而完成毕业设计。 学生签名: 日期:2015.3.2指导教师意见 指导教师签名: 日期:教研室意见 教研室主任签名: 日期:院系意见 论文负责人签名: 日期:毕业论文(设计)指导教师工作记录(由指导老师填写与学生见面、电话、网上指导的主要内容,原则上一周填写一次。)指导记录: 到中国知网和西南财经大学图书馆查阅资料,学习关于超声波的知识,弄清楚超声波测距的原理,然后搞懂各个模块的电路。填写时间:2015 年 2 月28 日教师签名学生签名指导记录: 大概弄懂各个模块的电路图及工作原理, 选出一个最好的方案进行设计,有问题赶快问,不能等,在毕业设计中学到知识。填写时间: 2015 年3 月 8 日教师签名学生签名指导记录: 根据自己设计的方案,完成毕业论文的初稿。填写时间: 2015 年 3月 18 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名毕业论文(设计)指导教师工作记录(由指导老师填写与学生见面、电话、网上指导的主要内容,原则上一周填写一次。)指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名毕业论文(设计)指导教师工作记录(由指导老师填写与学生见面、电话、网上指导的主要内容,原则上一周填写一次。)指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名毕业论文(设计)指导教师工作记录(由指导老师填写与学生见面、电话、网上指导的主要内容,原则上一周填写一次。)指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名指导记录:填写时间: 年 月 日教师签名学生签名毕业论文(设计)中期检查记录学生填写前期工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论