网页设计与编程(共12篇)
网页设计与编程 篇1
随着计算机技术和计算机辅助设计制造软件的不断发展, 零件的三维设计与仿真加工技术越来越受到企业的重视。为适应社会对机械设计与数控编程技术人员的需求, 培养应用型高级数控技术人员, 在此对机械工程及自动化专业的专业基础课程和专业课程进行课程群分类并设置综合性试验, 学生独立完成综合实验后, 设计、动手能力明显提高, 收到了良好的教学效果。
1 课程群的分类
机械工程及自动化专业是我校机械工程学院的骨干专业之一。目前的培养计划是按模块划分, 如:通识模块、基础模块、专业基础模块和专业方向模块等。教师在授课中各负其责, 认真教给学生关于本课程的知识。但是, 学生在学完四年的大学课程后, 各模块间课程是如何衔接的, 如何能够将一年级到四年级所学的课程综合运用起来, 心中不是很清楚。学生也不会在各门课程的学系过程中去思考课程之间的联系, 如何使学生在学习各门课程的过程中做到有的放矢。我们按课程群将基础课程、专业基础课程和专业课程分组, 每个课程群中至少设置两个综合性的试验项目, 通过完成综合性试验项目, 学生就能把课程群中的各门课程所讲知识串联起来。如将机械工程及自动化专业的课程分为机械设计课程群、机械制造课程群和电子电气课程群等。机械设计课程群包含机械原理、机械设计、工程材料和互换性与测量技术基础等课程;机械制造课程群包含机械制图、计算机辅助绘图、机械制造技术基础、数控技术等课程;电子电气课程群包含电工电子技术、微机原理及应用、液压与气动和机电传动等课程。
2 数控自动编程综合实验
在机械制造课程群中, 我们设置两个综合性实验项目, 其一为数控自动编程实验项目。如图1所示, 将不标注任何尺寸的泵体二维CAD图给一组学生 (2~3名) , 同时给学生讲清楚该零件的具体用途以及该零件的安装方式和工作方式。让学生根据零件的功能要求和所学的知识完成以下任务:
(1) 标注尺寸及公差, 根据零件的具体应用及装配关系, 结合所学互换性与测量技术课程, 重点搞清楚公差的设计问题;
(2) 运用Solid Works软件绘制零件的3D图[1];
(3) 运用数控技术课程中所学的专业知识完成该零件的数控加工工艺分析 (包含机床选择、装夹方案、工艺路线和选择刀具等) ;
(4) 运用Cimatron E7.0软件, 完成数控加工仿真过程并最后自动生成数控加工程序[2]。
2.1 零件3D造型
在二维CAD图的基础上, 结合数控加工时零件坐标系的选择原则之一[3]:圆周对称的零件, 以对称中心点为X坐标轴和Y坐标轴的原点, 以工件的上表面为Z坐标轴的原点。用Solid Works软件建立如图2所示的零件3D模型。
2.2 数控加工仿真与自动编程
在零件3D模型的基础上, 应用Cimatron E7.0软件进行泵体的数控仿真加工并最终用软件生成该零件的数控加工程序。具体过程如下:
2.2.1 数控工艺分析
根据学校现有数控加工设备, 选择SV48立式加工中心加工该零件, 以零件的底面为定位基准, 用专用夹具夹紧固定。用直径为10mm的立铣刀先进行外轮廓的成型粗加工, 再进行双耳的粗加工、外轮廓的精加工等。
2.2.2 软件中加工流程设置
进入Cimatron E软件, 调入模型并设置零件编程原点, 如图2中坐标系所示。之后, 根据上步确定的工艺过程, 在软件中设置工件的加工过程, 如图3所示。
2.2.3 加工仿真
在完成软件加工过程设置的基础上, 可以对每一步进行加工过程进行模拟并显示刀具轨迹, 也可以连续模拟全部的加工过程并显示全部的刀具轨迹, 如图4所示。
2.2.4 自动生成加工程序
在模拟加工无误的基础上, 可以进行最后一步, 生成零件的加工程序。设置好输出数控代码文件的名称、格式和保存位置, 即可输出加工程序。可以输出每一步的加工程序, 也可以输出全部的加工程序。图5所示为输出全部加工程序的一部分。
3 零件的实际加工
最后, 用SV48立式加工中心加工该零件, 选用Φ110×60mm的铝质棒料作为毛坯, 用专用夹具将毛坯固定并加紧在工作台上。
3.1 加工前的准备工作
首先, 将毛坯固定在工作台上后, 用巡边仪测量出工件坐标系原点在机床坐标系中的坐标值 (机械坐标值) 并记录, 用以确定工件在机床中的位置。其次, 用对刀仪测量出加工该零件所用刀具的直径值和长度值, 用以确定程序中刀具半径和长度的补偿值。
3.2 数控程序的修正
由Cimatron E软件自动生成的数控程序还不能够直接用来加工零件, 需要根据加工时的实际情况, 对自动生成的程序进行修订。如零件在数控机床的的实际位置, 加工时实际所用刀具的长度和直径等参数。将自动生成的程序拷贝到加工中心的存储装置中, 并根据上一步测量的结果, 修订程序中相应的参数, 为零件的实际加工做好准备工作。
3.3 零件加工
最后, 用SV48立式加工中心对零件进行实际加工, 如图6所示。
4 结论
将机械工程及自动化专业的课程按照课程内容的衔接关系和课程性质进行课程群分类, 并设置综合性试验。通过实验, 学生既能完成试验规定的各项内容, 又能了解相关课程之间的关系, 试验教学质量明显提高。
参考文献
[1]叶修梓, 陈超祥.Solidworks高级零件教程[M].北京:机械工业出版社, 2009.
[2]王卫兵.Cimatron E6.0数控编程实用教程[M].北京:清华大学出版社, 2006.
[3]林亨, 严京滨.数控加工技术[M].北京:清华大学出版社, 2005.
网页设计与编程 篇2
心得体会
学院: 班级: 学号:
姓名:
课程设计心得体会
时间过的真快,一晃眼的功夫,C++实习就要结束了,虽然只是短短的10天,但带给我的却很多。
首先,我先简单回顾一下自己在这一段时间的经历。实习是从31号开始的,经过短短的一上午的辅导,我就开始了自己的任务,每个人必做的第一题最优直线平差、自己选的第六题秩亏网平差和一个临时加的水准路线与三角高程相对定权问题的处理。说实话,虽说自己利用空闲的时间看了一本C++的教程,对书本上的知识有所补充,对一些知识点相对理解加深了一些,但是如果真正上机编程的话,还是有点小心虚。俗话说:熟能生巧;在老师的激励下,我对自己的本次实习充满信心与期待。
我的实习的真正开始算是第二天吧,也就是元旦放假第一天,因为天气比较冷所以就呆在宿舍在自己的电脑上先小试身手,不管做什么东西,都要有一个好的基础,MAT类和adj类算是测绘程序设计的一个非常重要的辅助工具吧,几乎每个程序都要涉及,于是我就用了一天的时间将“MAT.h”头文件读了一遍,尽管求逆inverse()函数和求矩阵的秩R()函数没有看懂,但其具体在什么地方用,和其他的一些程序算是有一定的掌握,然后就分析题目,慢慢做吧。
万事开头难,古人真是睿智。最优直线的问题,题目看了好几遍,相关的一些老师的程序也读了几次,感觉还是没法下手,也许感觉这东西不靠谱,它有时候会挡住你前进的路,而你只能靠着这种感觉原地踏步,重要的是摒弃它,踏出你的第一步。算了,硬着头皮踏出犹豫的第一步,先建个Myline的类,然后把能想到的数据成员与成员函数加进去,然后在做定义。就这样磕磕绊绊地、边写边参考老师的程序,我的程序算是有了几个大块了,file_in_Myline(char *),file_out_Myline(char *),Myline_adj(),为了实现文件能够成功的调用,我又尝试着加入了Creat_Myline_file(char *)函数,通过屏幕上提示创建自己的文件,然后有直接调用file_in_Myline(char *)函数直接应用,为了尽量减少在main()函数中的处理,最后有加入了联系file_in_Myline(char *)和file_out_Myline(char *)的file_Myline(char *,char*)函数,然后其他数据成员根据需要往类中添加。就这些东西,我做了一天,还没有去调试,没有建立其函数之间的传递,效率真够低的,然后2号晚上开始调试,好多错误,看的懂的,看不懂的,我极力调试着,但我的脑子也越来越混乱,烦躁开始侵蚀我的理智。。算了,休息会吧,再跟其他同学交流一下,宿舍小憩了一会,然后请来了编程不错的一个同学,他因为对这方面感兴趣,就提前好几天开始编程了,他给我指导了一些问题,期间,我们也交流了好多关于课题任务的一些知识点、注意点,晚上,11点左右,我的最优直线算是孕育而生了,程序的运行结果跟预期结果一样,真的,在结果显示在屏幕上的那一刻,我真的感觉好友成就感,今天就到这吧,有些累了,虽然程序在整体上看起来有点混乱、有的粗糙,但我可以安逸的睡了,明天再做整体修正吧,总体来说,这个开头在有心人面前算是开的有点崎岖但还算顺利。
然后第二天修改了下我的最优直线,再考虑了下我的第六题,那天晚上也算是曲折的做了出来,第十题老师说是很简单,而且就光当时的讲解讲了好几遍,所以有目的的去看定权的那一部分程序,没花多长时间就把它搞定了,元旦三天时间,别人玩的时候,我做了我的程序,有好多同学的程序还没有开始呢,哈哈,我感觉好幸福!
4号算是实习的第二天,但我的任务可以接近尾声了,但前提是我这样想的话。因为我知道班里的一些同学也同样做完了自己的任务,都开始涉及其他的课题,大家都极力的充实自己,我怎么可能落下呢?所以我不会就此停下,我要好好利用本次实习,让它充实而有意义。
在接下来的几天里,我积极的接触其他课题,在自己的努力和老师的帮助下,效果很理想!
本次实习,我做了7个课题,第九个平面网最小二乘法的实现,因为涉及的程序太多,一时半会做不完,所有以后有时间再去考虑它吧,总体来说还是达到了自己的期望,。从某种程度上来说我是超额完成自己的任务,但是我知道,这个结果除了自己的努力外还有其他几方面非常重要的原因,而这几方面也让我成长了不少。
实践出真知,实习前,我的C++知识只是停留在理论水平,而且就算理论水平,也存在很多漏洞。有时,在做课题的时候,理论的漏洞冒了出来,我就只能在看着课本慢慢的再学习一遍,像做导线程序有涉及到数字测图的知识,还有好多数据处理都涉及到平差原理的知识,因为当时有些东西就没有搞懂,所以现在就又翻出课本,看着课本编程,也算是将旧的东西复习了一遍。同时,有的理论在实习操作过程中印象更加深刻。有趣的是,做完导线程序,用课本上的数据演算了一遍,结果发现课本上有一个数据是错误的(可能是吧),其他有做导线的同学也有相同的反应,总之,感觉挺好,不错!
成功=勤奋+合作。我暂且将我的实习成果用成功来代替,虽然离成功差的还很远。在实习接近尾声的时候,有的同学跟我聊得时候,说我怎么交这次实习的成果,我说做了的课题都交啊。同学有些羡慕的恭喜我,我挺愉快的,但我也知道,我付出了,回报跟付出是成正比的,我从31号起就开始了自己的实习,我也放弃了好多休息的时间,我笨拙的读着老师给的相关的程序,发现有什么不懂得,先是一个人自主的思考,实在解决不了的就和其他同学讨论,有时别的同学会很清晰的给我说明一些课题的思路,但大多数,其他同学也不懂、或者也在这方面存在疑问,于是,大家发表各自的看法、思路,然后就讨论了起来,最后,在大家的共同努力之下,问题的答案逐渐浮出水面,大家为了庆祝一下,有时还去外面吃一顿。交流与合作在实习过程中给我很大的帮助,我得到了很多,每次看到解决一道问题后大家的愉悦,我想大家应该与我一样收获很大吧。说真的,我挺喜欢这种讨论的氛围,它也让实习过程变得趣味横生,不再只是呆滞的盯着屏幕写程序。
我是班长,我有义务去帮助其他同学,而实习给了我一次很好的机会,也让我成长了好多。在这几天的上机过程中,有同学问我问题,我积极的对待每一个问题,我会的,耐心的为他讲解,每一次讲解,也是我的知识巩固的一个过程,所以我也乐此不疲,每次给别的同学讲完后,我挺有成就感的,这种成就感不会让我沾沾自喜,而会成为我不断向上的动力;毕竟我也算是新手,有一些问题自己也是无能为力,我们或是讨论,或是问老师,老师耐心讲解让我们甚是感动,有时候被老师那种责任心所折服,大家都说有这样的老师真好!好的,我也要向老师学习,对同学负责,做好我的角色,真正做到为了同学的利益而牺牲自己的时间。
本次实习的缺陷,对我来说就是,所有程序的原始数据都来自老师给的数据或者是测量平差和数字测图书上的例题数据,跟其他同学会有所重复,但所有的程序都是自己独立完成。
这次实习总体来说,每天我的过的挺累,但累是值得的,这个值得不仅仅是课题成果上,更重要的让我成长好多,也许这就是我在这短短的十天左右的时间里最好的回报吧。
网页设计与编程 篇3
【摘要】本系统主要研究C语言编程题目中“编译运行结果对比”、“编译错误原因恢复与评阅”、“得分点分割正则动态测试”三种手段,将研究内容运用到自动阅卷系统中,实现对编程题目的自动评分,并实现基于J2EE技术的具有在线考试、自动评分等功能的C语言编程题目自动阅卷考试系统,提高阅卷的准确度的同时能够节省大量的人力物力财力。
【关键词】C语言;编程题;自动评分
随着计算机技术的发展以及互联网的普及,办公自动化已无处不在。作为一门基础课程,C语言考试应用系统也给批阅试卷的工作人员带来了很大的工作量,自上世纪六十年代起,国内外就陆续出现了许多关于语言类课程考试的软件系统,虽然很多已具有基本的随机答卷、上机考试及自动评阅等功能,但只针对客观题,因自然语言的刻画、人工智能、模式识别等核心技术发展缓慢,制约了编程题目阅卷系统研究发展。所以,本系统针对C语言编程题目进行整体规划,致力于做出更精确的C语言编程题自动阅卷的方法,填补自动阅卷软件开发空白,减少人工操作的资源浪费。
1.系统运行环境
智能C语言考试系统、自动评分系统的运行环境是根据我校现有的教学机房的硬件环境(每个机房有70台学生机和一台教师机)规划的,教师端和学生端都采用window 7操作系统,每个机房都采用校园公共网络提供的局域网,运用Myeclipse开发环境、MySQL数据库建立一套具有在线考试、自动评分等功能的C语言编程题目自动阅卷系统,并辅以AJAX技术,确定了用FreeMarker表现层技术增强用户与系统间的交互,加快系统运行效率,同时,尽可能细化评分点,增加准确性。
2.系统运行模式的选择
系统采用B/S三层架构模式,系统的用户可通过Internet网络,客户端不需要手动安装软件,只要有浏览器就可以对系统进行访问和一般操作,本次对阅卷系统主要分析了的C语言编程题目评分功能,充分考虑到系统对灵活性和准确性的要求,并保证安全性的前提下,本系统采用B/S结构以达到轻客户端需求。
3.系统研究内容
通过研究C语言程序结构,从编译原理角度设计评价模型,通过内部运行编译器对比动态运行结果,并且本课题创造性提出利用关键字对比、控制结构判断和正则表达式匹配三种静态测试技术作为结果比对方案的补充,既保证了程序判断的正确性,又确保了相对公正性。
编译结果对比要实现程序内部对C语言编译器的动态调用技术,通过比对测试结果和标准答案进行评分,对于不能编译部分,研究关键字库建立、控制结构规范化和正则表达式建立的具体方案。
其中重点研究C语言编程题目评分标准的两个方面:一是如何检验运行结果的正确性,二是如何评价程序代码包含的分点。
为突出本系统对主观题的评分机制,在试题主观题程序可运行以及不可运行的情况下分别给出了相应的评分策略,以此来一步步细化评分机制。
4.评分核心模块设计
详细设计自动阅卷系统中的关键技术——程序题评分。系统首先采用动态测试技术,编译运行待评价程序,和标准答案进行对比给出分数;需要数值型输入参数的程序,通过均匀分布随机数给出随机输入;需要字符型输入参数的程序,首先在数据库中保存预选文字段,然后随机选取其中的一部分给出随机输入。对于编译运行报错的程序代码,课题会采取错误恢复技术,通过编译信息给出的错误位置尝试以标准答案修复代码,从而给出扣分点。最后对于不能编译运行的代码片段,系统提出关键字对比、控制结构标准化和提取、正则表达式规则匹配相结合的静态测试方法,加入权重处理,分析得分点给出更全面客观的评分结果。
通过对软件模式的对比和分层架构模型的研究,系统拟采用B/S结构,方便用户在线答题和管理操作;在具体实现技术方面,拟采用J2EE技术和SSH开源框架——利用Java语言提供的公开接口开发调用C语言编译器模块和正则表达式匹配模块,利用MySQL数据库完成题库和答案库的建立和开发工作,利用Ajax技术提高系统的整体响应速率,利用FreeMarker表现层技术增强用户与系统之间的交互。
建立计算机矫正机制和完善的评价方案,并对试题多次进行人工阅卷与机器阅卷的对比测试。
5.数据库设计
因需要评测本系统自动阅卷功能和人工阅卷的准确度,给出测评结果,并对仍存在的问题和不足提出进一步改进方案;特别是对系统不能正常评分的特殊题目,建立特例题库,以便在今后的工作进行研究并从中提出新的解决方案。
考生提交试卷首先由c语言编译器自动编译后生成可执行文件并运行输出结果,进行评阅步骤校验结果时,通过试题编号(id)调用试题表数据,对比答案进行准确性校对,调用纠错参考库数据,比对出错原因并根据错因扣除相应分数,通过模糊匹配替代出错关键字,迭代匹配错因至无错,若迭代五次还未改正视为崩溃性错误,不可弥补,判定本段分数为零崩溃性错误,不可弥补,判定本段分数为零,通过题目编号获取相应评分关键点库,通过正则表达式匹配得分点,通过得分点数量给出相应分数,完成试卷评阅。
当程序不能正常编译运行时,系统判定进入系统纠错,系统自动运行修复性算法,代码中个别关键字错误,为此我们把c语言中所有的关键字整理出来,建立关键字库,对错误的关键字进行模糊匹配,通过字符的顺序、相同字符的数量、键盘键位的keycode尽可能的匹配出相似度最高的的关键字替换错误的关键字。
纠错主要是语句拼写错误,我们分了下面三种情况:
1)测试用例由测试输入数据和与之对应的预期输出结果组成,人们常用白盒法和黑盒法设计测试用例,其中白盒法主要是为了检查是否有数据结构或外部数据库访问错误等,对比通过单元测试的模块或组件、编程规范、集成测试来检查测试的准确性。
通过正误判断匹配正误判断表进行结果判定,判定结果是否符合题目,若是则给分,否则进行结果范围判断及结果属性判断,比对结果是否适用本题范围,并进行分数评估。
2)本表主要有三个主要信息id、name、keyword。分别用来存储错误的id、错误的名称、题目中的关键字。Id的数据类型为int(整型),name的数据类型为varchar(字符型),keyword的数据类型为varchar(字符型),id需要主键非空自增,name与keyword非空。通过建立本数据库表可以实现对错误信息的收集归类,同时可以实现判断系统中出现的错误的功能。
定位捕捉错误点,抛出错误原因并与数据库进行比对,并根据错因给予相应分数,运用模糊匹配寻找替代关键词,进行替代继续检查错误,若连续替代五次后仍然不能进行下一步骤视为程序崩溃行错误,不可弥补,判定本段分数为零。
3)正则表达式,又称正规表示法、常规表示法(英语:RegularExpression,在代码中常简写为regex、regexp或RE),正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在本字段里,正则表达式通常被用来检索、替换那些符合模式的程序段,进行分步得分。
本数据库包含关键字类库,通过正则表达式匹配关键词多寡,大概率的确定了答题者的思路范围及答题思路的正确与否,给以步骤分,极大的提高了批卷的人性化,拉近了机器阅卷与人工阅卷的阅卷水平,更有说明行的体现了机器阅卷更好的使用性。
C语言考试系统已普遍在各高校使用,对于客观题方面,有了相对完善公平的系统,但是在自动评分方面,还有很多不足之处,有待改善,本系统就是针对这一空白区域,设计公平而相对更准确的算法,主要对C语言考试系统中的编程题部分进行得分点分割,对考生的程序一步步细致分析,做到该得分的地方给考生相应的分数,这样避免了某一点小错误导致的大幅度扣分的不公平性,同时,将系统应用到学生的日常学习中后,能够更好地检验教师的教学成果,查找教学过程中需要注意的地方,对于学生,也能够更好地发现自己的错误,及时改正,这样,在学习的过程中,在保证公平的前提下,培养学生注意细节的习惯,最重要的是,应用到高校的二级C语言考试后,能够更好的给考生更公平更合理的考试成绩,同时也使得阅卷更加节约、方便、快捷,这也顺应了如今社会计算机行业的飞速发展,提高办公自动化的程度及效率。
参考文献
[1]K.A.Redish,W.F.Smyth.Pragram style analysis:a natural by-product of prograrn compilation[J].Cornnnunications of the ACM,1986.(3):126-133.
[2]Yasuhiro Ajiro,KazunoriUeda.Kima:An Automated Error Correction System for Concurrent Logic Progrrams.Automated Software Engineering 2002.9(2):67-94.
[3]王甜甜,基于语义相似度的编程题自动评分方法的研究,哈尔滨工业大学硕士论文,2001;1-52.
[4]李永浩,居于程序理解的编程题自动评分系统愤愤研究与应用,哈尔滨工业大学硕士论文,2001:1-60
[5]王华东.刘国柱.基于局域网下C语言考试系统的设计与实现[J].计算机与信息技术,2006.
网页设计与编程 篇4
Freescale公司于2000年前后开始推出HC08系列微控制器,具有速度快、功能强、功耗小、价格低、型号多、Flash编程及内含编程调试接口等优点,在业界得到了广泛的应用[1,2]。目前,HC08有近20个系列一百多种型号的芯片可供用户根据不同的需求进行选择。进行HC08系列MCU的应用设计,要求配有相应的编程调试器及配套软件。国内用户使用的编程调试器及开发环境主要依赖进口,价格昂贵,且编程调试器编程速度慢。苏州大学飞思卡尔单片机实验室从2001年开始开发针对Freescale MCUs 的集成开发环境,经过6年多的努力,已陆续开发出多种针对不同系列芯片的集成开发环境。MT-IDE for HC08 是专门为HC08系列开发的集成开发环境,具有编辑、编译、USB下载和调试的功能。与其配套的编程调试器具有编程速度快、写入稳定和通用性强等特点。作者作为此项目组的主要成员,针对在使用Mon08实现编程调试器时通信速度慢的问题,经过分析研究,发现了Mon08与目标芯片通信速度慢的主要原因,提出了一种提高编程速度的新的通信方法,并成功地运用到实际的编程调试器中。本文将较详细地阐述有关技术。为了使读者对HC08编程调试器有整体了解,下面给出编程调试器的特点及硬件解决方案。
1编程调试器的硬件电路设计
在编程调试器的硬件电路设计方面,主要考虑通用、方便、稳定等因素。为了方便用户使用,编程调试器采用了USB接口与PC机连接;为了适用于不同芯片的频率需要,采用了可控频率芯片产生目标芯片进入监控所需要的频率;为了适应与不同目标芯片的连接,设计了一个10芯控制接口,控制目标MCU进入监控所需要的特定端口电平,从而使编程调试器可以适用于所有HC08系列芯片。根据这些设计思路,编程调试器的硬件电路设计见图1。
其主要由以下模块组成:
(1) 主控芯片及其支撑电路 采用含有USB模块的MC68HC908JB8[3]作为主控芯片。
(2) USB接口电路 提供PC机与编程调试器的通信接口,它们之间的通信符合USB1.1协议;同时,通过PC机的USB端口取得5V工作电压。
(3) 可变频率产生电路 采用一片可编程晶振产生芯片LTC6903,可以在PC端设定目标芯片所需的频率,从而可以解决不同芯片对晶振频率的需求。
(4) 9V高电压产生电路 目标芯片进入监控模式需要在其IRQ引脚加一高电压。本设计利用MAX232的电器特性产生这一电压[4]。
(5) 可控5V电压产生电路 可控地给目标芯片供电,以保持编程调试稳定、可靠。
(6) 和目标芯片连接的Mon08接口电路(10芯) 通过该接口可以连接所有HC08系列目标芯片,不同芯片进入监控状态的特定电平数据存放在PC机的数据库中。
2Mon08通信机理剖析
Mon08是Freescale公司HC08系列芯片的编程调试接口,是固化在芯片内部的一段监控程序[5]。Mon08可以通过单线接收外部命令,利用这些命令可以实现对目标芯片内存的读写及执行内存里的程序。目标芯片在复位后,编程调试器会使其进入监控模式,即芯片运行Mon08程序。在实现编程时,主要用到的监控命令是WRITE和IWRITE。WRITE和IWRITE都可以实现对内存的写入,不过WRITE每次都必须发送要写入的地址,而IWRITE只需要发送要写入的数据,它会接着上次写入的地址继续写入。
在写入之前,编程调试器首先通过Mon08把Flash写入子程序和要写入的一页数据发送到目标芯片的内存,然后执行Flash写入子程序,即可完成对一页数据的编程。如果还有数据要写入,只要替换掉原来的数据后,继续执行Flash写入程序即可。如此反复,便可以实现对整个Flash的编程。采用这种方法,可以实现编程调试器的功能,本编程调试器的第一版就是根据这种思想实现的。在实际的使用过程中,如果程序稍微大些,就会感觉速度很慢,一个10K左右的代码要写一分多钟。后来通过分析Mon08通信时的特点,找出了编程调试器速度慢的主要原因。图2给出了Mon08在执行IWRITE命令的时序图。
说明:1=等待回复延时,2位的延时时间2=取消命令延时,11位的延时时间3=发送下一个字节前的1位延时时间
1位延时的计算方法如下所述:
1位延时是指以某种数据传输率传输1位所需要的时间[2]。
假如用9600bps的速率进行数据传输,则1位延时=1/9600 秒。
如果总线频率2.4576MHz,则一个指令周期的时间是1/(2.4576×106) 秒。则1位延时需要的指令周期数是:
根据图2可以得出主机通过IWRITE命令向目标芯片的内存写一个字节数据(8个数据位+1个起始位+1个停止位)需要花费的位时间为:
1位时间(发送下一字节前的延时)+10位写命令时间+2位时间(等待回复延时)+10位写命令回复时间+1位时间+10位数据时间+2位时间+10位回复数据时间+11位时间(取消命令延时)+1位时间=58位时间
所以,Mon08的通信效率是很低的,尤其是在进行大批量数据写入时。在实现编程调试器时,需要连续地写目标芯片内存,在这种情况下,不宜使用Mon08所提供的通信算法,其原因如下:
(1) Mon08每收一个字节后,会返回一个回应字节,发送方可以据此判断通信是否正确。这种方式虽然可以保证通信的正确性,但并不能保证编程调试器写入数据的正确性。
(2) Mon08在每收到一个字节后,都要有一定的延时,而且在两次命令之间,也要有一段长时间的延时。
(3) 利用Mon08对一个内存块写入时,每次都要发送写命令字。
(4) Mon08使用固定的通信波特率,用户不能设定。
由以上的分析可以看出,当对一段连续的内存区域写入时,Mon08的效率很低。要想提高编程调试器的编程速度,就必须改进Mon08通信算法。
3通信算法改进及高速编程调试器的实现
由于Mon08采用单线串行方式通信,因此,可以在硬件不改动的条件下,编写一段模拟串行通信的程序,在进行数据写入时,使用这段自定义的通信子程序来和编程调试器通信,从而提高通信速度。由于这段代码的通信协议是自定义的,因此可以避免使用Mon08时存在的不足,减少数据传输过程中所消耗的不必要时间。
如图3所示,目标芯片进入监控后,会自动执行⑤区中的监控程序,进入等待监控命令的状态。利用监控命令WRITE和IWRITE,将自定义的通信子程序的S19代码发送到图3中的①区,再将Flash写入子程序的S19代码发送到图3中的②区;然后发送RUN命令[6],使目标芯片执行①中的程序。①中的程序首先等待接收要写入的页大小,然后开始接收要写入Flash中的第一页的数据、页首址和页标志字节,并放入③中,接收完成后,①中的程序会自动调用②中的Flash写入子程序将③中的数据写入到页首址所指向的Flash中。一页写入完毕后,自定义通信子程序会根据页标志判断刚写入的是否是最后一页,如果还有要写入的页,则继续处于接收数据状态;如果所有页均已写入完毕,则返回到⑤中的监控程序。
改进后的编程算法只有自定义的通信子程序和Flash写入子程序是通过监控命令写入的,由于这部分的代码比较小(150字节左右),因此这部分用的时间很少。
自定义的通信子程序不需要其他不必要的延时及命令字节,因此发送一个字节的时间为10个位时间。下面给出了部分主要子程序的实现代码。
串行接收一位的汇编程序如下:
为了保证通信及写入的正确性,在写入一页数据之后,计算该页的异或校验和,并发送到主机供校验使用。如果校验正确,不仅说明通信是正常,而且也确保了Flash写入成功。
4性能分析及测试
如果采用Mon08通信方式,对目标芯片MC68HC908GP32(以下简称GP32)进行写入操作,当写入10KB的代码量时,理论上所需要的最少时间(GP32的总线频率为2.4576MHz,通信波特率为9600bps)等于总的数据传输时间及总的Flash编程时间之和。
总的发送字节=Flash写入子程序(约80字节) +10KB的代码(80页)+160B的页首址=10480字节
总的数据传输时间=总的发送字节×58位时间=10480×58×1/9600≈63.3秒
总的Flash编程时间=总页数×写入一页Flash的执行时间=80×6.5us≈0.52秒
总时间=63.3+0.52≈64秒
在实际写入过程中,因为通信过程的连续性问题,数据传输时间要比理论传输时间长,写入10K的Flash时间约为80秒。
由于通信子程序是自定义的,所以通信波特率也不必局限于9600bps或7200bps。通信双方只要协调好,就可以提高通信的波特率,从而加快写入的速度。本编程调试器一般使用19200bps的波特率,并允许用户根据实际需要进行修改。
采用自定义的通信协议而不采用Mon08所提供的通信方式,在相同串行通信波特率的条件下,传送速度可提高5.8倍(58位时间/10位时间)。改进后,在9600bps的通信波特率下,对GP32写入10K的Flash时间约为13秒。如果采用19200bps的通信波特率,则仅需要9秒。
编程调试器在对目标芯片编程前,应先将Flash写入子程序和要写入的一页数据发送到目标芯片的内存,因此,如果目标芯片的RAM太小,那么每次写入的数据数就会受到限制,要分多次写入,这就增加了编程调试器和目标芯片以及编程调试器和PC机之间的通信次数,从而影响编程的速度。为了适应不同RAM大小的芯片,本编程调试器可以由用户设定每次写入的页大小,从而使具有不同大小RAM、Flash的芯片都能达到比较满意的写入速度。
GP32内存有512字节,是比较通用的一款MCU,写入时每次可以写入128字节;而QY4内存仅有128字节,相对较小,每次写入的数据为16字节。实验中选取了这两款比较典型的芯片,表1和表2分别给出了GP32和QY4采用不同通信程序时所需编程时间的实验数据。
综合表1、表2可以看出,使用自定义的通信算法可以明显地提高编程调试器的编程速度。对于机器码在2K左右的程序,若自定义通信波特率与Mon08使用的波特率一致(9600bps),则写入时间从20秒左右降到5秒左右。若把波特率提高到19200bps,则可降到2秒左右,方便了用户修改、调试程序。对于更大的程序,速度提高更明显。
5结束语
编程调试器的编程速度是衡量编程调试器好坏的重要指标之一。在项目开发过程中,需要不断地修改程序,调试程序,程序的下载就会频繁发生,写入的速度也就显得尤为重要。本文给出的编程调试器,在硬件和软件方面采用了多项技术措施,达到了通用、方便、稳定的目的。本文介绍的编程调试器,以及本文并未介绍的PC机集成开发环境,作为一个整体开发套件,已在国内众多高校及研发单位使用,其稳定的性能、快捷的编程调试,受到了用户的好评。文中重点给出的Mon08通信改进算法,可以供开发类似工具或嵌入式应用产品时借鉴。
参考文献
[1]王宜怀.MC68HC908GP32单片机编程器的设计与实现.计算机工程,2004.
[2]王宜怀,刘晓升.嵌入式应用技术基础教程.清华大学出版社,2005.
[3]MC68HC908JB8 Technical Data.Motorola Inc.2002.
[4]戴晓静,王宜怀.Motorola新型单片机MC68HC908JL3编程器的设计与实现.计算机工程与应用,2004.
[5]宫辉,邵贝贝.MC68HC908LJ12监控ROM中的子程序调用.单片机与嵌入式系统应用,2002.
网页设计与编程 篇5
#TRS_AUToADD_1257211039132{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132P{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132TD{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132DIV{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132LI{mARGIN-ToP:0px;mARGIN-BoTTom:0px}/**---jSoN--{“":{”margin-top“:”0“,”margin-bottom“:”0“},”p“:{”margin-top“:”0“,”margin-bottom“:”0“},”td“:{”margin-top“:”0“,”margin-bottom“:”0“},”div“:{”margin-top“:”0“,”margin-bottom“:”0“},”li“:{”margin-top“:”0“,”margin-bottom“:”0“}}--**/DIV.myFav_1256697668270P.msoNormal{TEXT-jUSTIFy:inter-ideograph;FoNT-SIZE:10.5pt;mARGIN:0cm0cm0pt;FoNT-FAmILy:”TimesNewRoman“;TEXT-ALIGN:justify}DIV.myFav_1256697668270LI.msoNormal{TEXT-jUSTIFy:inter-ideograph;FoNT-SIZE:10.5pt;mARGIN:0cm0cm0pt;FoNT-FAmILy:”TimesNewRoman“;TEXT-ALIGN:justify}DIV.myFav_1256697668270DIV.msoNormal{TEXT-jUSTIFy:inter-ideograph;FoNT-SIZE:10.5pt;mARGIN:0cm0cm0pt;FoNT-FAmILy:”TimesNewRoman“;TEXT-ALIGN:justify}DIV.myFav_1256697668270P.msoFooter{FoNT-SIZE:9pt;mARGIN:0cm0cm0pt;LAyoUT-GRID-moDE:char;FoNT-FAmILy:”TimesNewRoman“}DIV.myFav_1256697668270LI.msoFooter{FoNT-SIZE:9pt;mARGIN:0cm0cm0pt;LAyoUT-GRID-moDE:char;FoNT-FAmILy:”TimesNewRoman“}DIV.myFav_1256697668270DIV.msoFooter{FoNT-SIZE:9pt;mARGIN:0cm0cm0pt;LAyoUT-GRID-moDE:char;FoNT-FAmILy:”TimesNewRoman"}DIV.myFav_1256697668270DIV.Section1{page:Section1}DIV.myFav_1256697668270oL{mARGIN-BoTTom:0cm}DIV.myFav_1256697668270UL{mARGIN-BoTTom:0cm}
一、教学指导思想与理论依据
依据新课标中提出“强调问题解决,倡导运用信息技术进行创新实践活动”的理念。以学生为主体,结合高中学生的生活和学习实际设计问题,让学生在感受与体验的过程中构建知识结构,掌握程序设计中的概念;并将所学的知识积极地应用到解决学习、生活等实际问题中。
二、教学背景分析
1.教材内容分析
本课使用的教材是广东教育出版社出版的《算法与程序设计信息技术(选修1)》。
本节内容为该书的第三章第一节课,主要内容是对可视化编程中的对象、属性、方法事件等概念的讲解。本节课为一节起始课,在学习了这些概念后学生不仅在上课时知道了这些专业术语,同时也能够知道了代码的书写位置和书写格式。为后面的教学奠定坚实的基础。
本节课将通过身边熟悉的事物手机,把枯燥难懂的概念进行简单的诠释,并通过VB本身的“所见即所得”的编程环境,让学生在模仿教师完成任务的过程中获得小小成功的喜悦,激发他们进一步学习的兴趣。
2.学生情况分析
本课教学对象为高一学生。在学习本课之前,学生已经对程序代码的编写有一定体验,并熟悉visualbasic6.0的环境界面。
高一年级的学生思维活跃,想象力丰富,求知欲强,所以在教学中应抓住学生这一生理特点,采用问题解决的教学策略。由学生自主发现问题、解决问题,在问题的解决过程中熟悉并掌握VB的可视化编程的概念与方法。
3.教学方法
任务驱动、演示法、讲解法。
4.教学资源
教学演示文稿(PPT),记事本小程序(EXE)和源代码。
三、教学目标框架设计
1.教学目标
知识与技能目标:
1)能够结合日常生活中的具体事例分析说出它的属性、方法、事件,从而加深对属性、方法、事件概念的理解;
2)能够利用控件工具在窗体上创建按钮、文本框等对象,并学会通过属性窗口修改对象的caption、text属性值;
3)通过分析简单笔记本小程序,能够判断出鼠标单击事件是作用在那个对象上,并且事件过程是什么;
4)通过编写程序代码,加深对对象的属性、事件、方法的语法格式的记忆。
过程与方法:
1)以生活中的手机为例,理解对象的属性、方法、事件概念的含义;
2)通过制作简单记事本小程序,加深对对象的属性、方法、事件概念的理解,进一步体会三者之间的关系。
情感态度与价值观:
1)由生活中的事例讲解,提高学生知识迁移的能力;
1)通过制作简单记事本实例,体验VB语言带来的成就感,激发学生学习VB编程的兴趣。
2.教学重点
1)对象、属性、方法、事件等概念。
2)代码的语法格式和书写方法。
3.教学难点
代码的语法格式和书写方法。
四、教学流程图
五、教学过程设计
环节一
引入环节 教师活动 学生活动 设计意图
引入:大家都用过word进行编辑,它具有很强大的功能。我们可以利用VB平台也可以编写出类似word这样的文字编辑器。
认真听讲。
展示:教师已经编写好的小的文本编辑器。
过渡:为完成这个任务我们需要了解对象、属性、事件、方法等概念。
认真听讲。
观看小文本编辑器所具有的功能。
用一个学生看似很神奇的软件引入,并告诉他们我们自己也可以编写出来,激发学生学习的兴趣,并能够满足学生的自豪感。
并引出了本节课的任务。环节二
讲解对象的属性、方法、事件概念 提问:
生活中我们把这种看得见摸得着的物体叫做什么? ──引出对象的概念。
1.对象──实体
根据对象的概念,同学们判断出教师展示的两个手机分别是两个对象。
提问:
这两个对象(手机),他们从外观上看有什么不同?
引出手机的颜色、重量、形状、样式是手机的属性。
2.属性──性质
过渡:我们在购买手机时,不仅关心它的外观还会关注它所具有的功能,引出对象的方法概念。
3.方法──本领或技能
过渡:教师用其中的一部手机给另外一个手机大电话,另外一个手机在“来电”事情的刺激下,做出了响铃的反应。
引出“来电”事情称之为对象的事件。
4.事件──事情
举例:
1)教师从背后拍一名学生肩膀,学生回头。
提问:在这个过程中,谁受到了刺激,谁作出了反应?
2)提问:“开关被按下去了,灯亮了”在这个过程中,谁受到了刺激,谁作出了反应?
归纳为:有可能受到刺激和作出反应的是同一个对象,还有可能是一个对象受到刺激,另一个对象作出反应。
思考教师提出的问题,回答问题。
认真听讲。
仔细观察手机外观上的不同,回答问题。
注意观察其中一个手机的变化。
回答教师提问。引出对象概念。
学生从手机的颜色、形状等方面说出手机的不同,引出属性的概念。
考察学生对事件的理解。强化学生对概念的理解。环节三
结合小程序理解概念
过渡:理解了对象、属性、方法、事件这些概念以后,如何运用VB来实现我们的小任务呢?我们将在任务的完成过程中,进一步加深对这几个概念的理解。
1.对象
除了窗体对象外,我们还可以利用控件工具箱中控件创建新的对象。
教师根据任务的需要,带领学生创建了一个textbox对象和三个commandbutton对象。
2.属性
过渡:我们都知道对象是有属性的,我们有两种方法来修改对象的属性值。
通过属性窗口来修改对象的属性值。
讲解1:属性窗口与对象之间的对应关系。
讲解2:如何修改对象显示的文字(修改caption、text属性)。
①带领学生修改按钮的caption属性(显示的文字对使用者提示作用)。
②学生自己尝试修改text1的中显示的文字,知道是修改text属性。
过渡:现在已经完成了界面的设计,我们来运行下看看,能否达到我们预期的效果(不能)还需要来添加代码?──引出如何添加代码。
3.带领学生分析程序,并完成任务。
铺垫:每个对象都是有名字的,知道他们的名字很重要。选中每个对象,属性窗口中的<名称>项后的值是对象的名字。带领学生将每个对象的名称熟记一遍。)分析得出:command1被鼠标单击后,text1中的字作出了反应。
2)带领学生将代码完成。
PrivateSubcommand1_click
Text1.FontBold=True
EndSub
3)学生自己完成command2被单击后字体变倾斜这个过程的代码。
PrivateSubcommand2_click
Text1.FontItalic=True
EndSub
过渡:commmand3被鼠标单击后弹出了颜色对话框。目前我们所拥有的对象都不具备这个功能,我们需要创建另外一个对象,它具有打开颜色对话框的功能。
4.带领学生添加commondialog1对象
1)在工具控件箱中添加microsoftcommondialogcontrol6.0控件。
2)创建commondialog1对象。
5.告诉学生commondialog1的showcolor方法可以实现打开颜色对话框
6.学生自己运行程序,发现文字的颜色并不能改变。带领学生分析原因。
commondialog1的showcolor方法只是实现了打开对话框的功能,而要想text1中文字颜色的改变,还需要修改text1的forecolor属性值
PrivateSubcommand3_click
commondialog1.showcolor
text1.forecolor=commondialog1.showcolor
EndSub
和老师一起创建四个对象。
在老师的带领下修改对象的caption属性值。
并独立发现修改text属性值可以改变文本框中显示的内容。
认真听讲。
运行程序发现并不能实现预期的效果。
和老师一起牢记每个对象的名字。
和老师一起分析程序。
自己写代码。
认真听讲。
听教师讲解,逐步完善自己的程序
提高学生的动手操作能力。
提高学生的模仿能力。
知道对象名称的重要性。
使学生对方法有了更深刻的认识。小结
结合VB总结
1.对象。在VB中除了窗体对象外,我们还可以通过控件工具箱创建新的对象。
2.属性。我们可以在属性窗口中修改对象的属性,也可以在编写代码后程序运行后修改属性值格式为:对象名.属性名=属性值(提问:用什么方法来修改对象的属性值?)。
3.事件。一般就是指鼠标或键盘等事件,我们可个在过程的下拉按钮中找到。格式为:对象名_事件名。
4.方法。指对象所具有的功能。语法格式为:对象名.方法名[参数]
六、课后反思
本节课紧紧围绕记事本小程序展开,以手机为例使学生对对象、属性、方式、事件等概念有了感性的认识,然后在进入到VB的世界,进一步加深对这些概念的理解。
本节课上我最满意的地方是例子的选取,本节课一开始就给学生展示了一个记事本小程序,在展示完程序所具有的“神奇”后告诉学生我们也能自己自作一个文本编辑器,学生产生了浓厚的学习兴趣。通过教学实践来看,本节课上学生表现出了很强的求知欲。写完一个事件过程的代码后,不用教师多说学生就开始思考写下个过程代码,尤其是更改文本框字体颜色这部分代码,动作快的学生主动尝试代码的编写,并在课堂上就要求老师快点讲,快点讲。本节课上体现了学生的自主学习,由被动变为了主动。
另外一点就是对对象的caption属性和名称属性的讲解有了小小的尝试。由于它们默认的属性值是相同的,为了将它们加以区别,在以往上课时我总是对比着讲这两个属性,结果事与愿违,学生反而将这两个属性混淆起来了。而这次我做了小小的改进:首先在界面设计时,我强调一般按钮上会显示一些提示性文字,我们可以通过修改它的caption属性来修改这些提示性文字。然后,在写代码前的分析时我问到“鼠标单击那个按钮„„”学生一般会用按钮上显示的文字来称呼这个按钮,这时我紧紧的抓住他们的回答反问到“这个按钮上显示的文字是‘B’,那它就叫B吗?每个对象都有自己的名字,„„”通过这样的改进不仅将名称属性和caption属性的含义表述清楚了,而且很容易将两者区分出来了。
在本次课中我忽视了一个重要环节,就是让学生来展示自己的操作过程。这节课上学生积极踊跃,而我却没有能够给学生搭建一个平台来表现他们的表现欲望,没能给学生及时的鼓舞,不免会打消学生的积极性。
网页设计与编程 篇6
关键词:IEC61131-3标准;结构化文本语言;可编程控制器;Lex;Yacc
基于IEC61131-3标准的结构化文本语言(简称ST语言)作为可编程控制器(简称PLC)编程语言中的一种高级文本语言,其在IEC61131-3标准中的位置如图1中蓝色标记所示。它可以像其它高级语言一样用来描述功能、功能块和程序的行为,还可在顺序功能流程图(简称SFC)中描述步、动作和转变的行为。
结构化文本语言在形式上和BASIC、PASCAL或C语言很相似,它作为一种专门为工业控制应用开发的编程语言,具有很强的编程能力,编程格式自由,程序紧凑具有很强的数据处理能力,对于熟悉计算机高级语言开发的人员来说更容易理解和使用,因此其非常适合运用在具有复杂计算的应用中,可移植性好。
结构化文本语言由一系列具有逻辑结构的表达式语句构成,表达式由操作数和操作符组成,其基本的语句有赋值语句、功能块调用语句、IF结构语句、CASE结构语句、FOR结构语句、WHILE结构语句、REPEAT结构语句、RETURN结构语句、EXIT结构语句、空语句等。一个典型的求和运算的FOR语句程序如下所示:
使用结构化文本语言编写的控制程序变成PLC系统的CPU可以识别的目标语言,必须经过编译或者交叉编译程序才能完成,其所对应的PLC编程系统的结构如图2所示。本文所研究的是如何设计与实现一个可跨平台的PLC编译系统的前端程序,将结构化文本语言编写的控制程序编译成一种中间代码结构,该中间代码可以根据不同PLC系统的CPU生成其对应的汇编代码或机器语言。
1 系统分析与设计
一个完整的结构化文本语言编译系统主要包括词法分析、语法分析、语义分析及中间代码生成、目标代码生成、目标代码优化等几个主要阶段,其各个阶段的关系如图3所示。本系统的主要目标是将结构化文本语言编写的控制程序经过词法分析、语法分析及语义分析、中间代码生成这几个阶段将其转换成一种自定义的中间代码结构,而该中间代码可以根据不同的运行环境所对应的CPU指令生成目标代码。
1.1 词法分析
词法分析阶段就是将结构化文本语言编写的控制程序源程序识别成若干个单词符号,并将这些识别出来的单词符号连同其对应的相关属性一起存储到符号表中,以作为语法分析阶段的输入。一般地,词法分析阶段的第一步是将输入的源程序放在一个输入缓冲区中,进行预处理,将源程序中的注释、空格、制表符、回车符及换行符删除,而本编译系统则将预处理阶段和单词符号的识别阶段合并在一起进行处理。
(1)词法分析工具LEX简介
本编译系统的词法分析程序将利用词法分析工具LEX自动生成。LEX是Lexcial Compiler的缩写,是UNIX环境下非常著名的工具,主要功能是生成一个词法分析器(Scanner)的C源代码。LEX是一个将包含了正则表达式的文本文件作为其输入的程序,此外还包括每一个表达式被匹配时所采取的动作。描述词法分析器信息的描述文件*.L,经过LEX编译后,生成一个lex.yy.c的C源代码文件,然后由C编译器将其编译生成一个词法分析器,其执行过程如图4所示。
(2)符号表的设计
在词法分析阶段识别出来的单词符号及其对应的相关属性必须存储到一个称为符号表的存储结构中,以作为语法分析、语义分析等后续阶段的输入来源,同时在后续各个阶段也必须对其进行修改或交换信息,因此设计一个结构合理、性能稳定、高效率的符号表在整个编译过程中起到非常重要的作用。
在结构化文本语言中可将需要识别的单词符号分为关键字、标识符、常量、操作符及其它单个字符等五大类,本系统将符号表设计成一个单向链表的形式,其中单向链表中每一个节点的数据结构如下所示:
typedef struct tagSymbolNode
{
char chContent[128];//单词符号内容
int nTokenType; //单词符号的类型
int nSubType; //单词符号的子类型
int nLine; //在源程序中的行号
}SymbolNode;
因此单向链表的数据结构可设计成如下所示:
typedef struct tagSymbolList
{
SymbolNode symbolNode;//符号节点信息
tagSymbolList *pNext; //指向下一个节点
}SymbolList;
在上述所设计的符号节点结构中,单词符号的类型nTokenType则标识该单词符号属于关键字、标识符、常量、操作符等类中的哪一类。而当单词符号的类型nTokenType属于常量时,则用单词符号的子类型nSubType标识其具体属于哪一种类型的常量,如整型类型、实数类型、时间类型等。
1.2 语法分析
语法分析阶段是以经过词法分析程序所解析出来的单词符号串作为输入或分析对象,其主要任务是:根据结构化文本语言的语法规则,分析源程序的语法结构,即分析如何由这些单词符号组成各种语法范畴(如下标变量、各种表达式、各种语句、程序段或分程序等),并在分析的过程中,对源程序进行语法检查,一旦发现源程序中含有不符合语法规则的表达式或语句,则输出错误信息,提示用户进行修改。一般地,语法分析程序的输出形式有多种,通常以某种方法表示的语法树形式作为输出。
根据语法树产生方向的不同,语法分析主要分为自顶向下和自底向上两种方法。本编译系统利用语法分析工具YACC、使用自底向上方法中的LALR(1)分析法来产生语法分析的状态转换表,然后根据其状态转换表中的各种状态转换方向来进行语法检查。
(1)语法分析工具YACC简介
YACC是yet another compiler-compiler的缩写,也称之为分析程序生成器(parser generator),它主要和词法分析工具LEX一起使用生成相应的C代码,经C编译器编译后生成语法分析程序。YACC采用LALR(1)分析算法来进行语言的语法分析,它以一个包含巴克斯范式(简称BNF)表达的语法规则(也即语法产生式)和与该语法规则相匹配的动作的语法描述文件(其后缀名为*.Y)作为输入,并为该语言产生分析过程以作为它的输出的程序。YACC根据其编译时选项命令的不同而产生多种不同的输出文件,其主要有对应语法规则的语法分析程序y.tab.c和包含状态转换信息的y.output两种文件(或类似名称的文件)。
本编译系统主要利用y.output文件中的由结构化文本语言语法规则所产生的状态转换信息来指示状态的转换方向,即根据当前的状态信息来决定下一步是进行“移进”还是“规约”动作。YACC输入的结构化文本语言的部分语法规则及产生的部分状态转换信息如下所示:
① 部分语法规则
statement_start -> statement_list
statement_list -> statement_list statement
statement_list -> statement
statement -> ';'
② 部分状态转换信息
IDENTIFIER shift,and go to state 1
DIRECTVAR shift,and go to state 2
IF shift,and go to state 3
statement_start go to state 169
statement_list go to state 11
statement go to state 12
assignment_statement go to state 13
(2)语法分析中的主要数据结构
由于本系统是利用语法分析工具YACC所产生的状态转换信息来进行语法分析及语法检查的,而YACC所使用的LALR(1)分析算法必须要有一个状态栈和一个符号栈来实现,因此在本系统也需要设计一个状态栈StateStack及一个符号栈SymbolStack。其中状态栈StateStack存储下一步将要转换的状态,符号栈SymbolStack用来存储状态转换过程中所涉及到的结构化文本语言语法规则的非终结符及终结符。
1.3 语义分析及中间代码生成
控制源程序经过语法分析及检查后已经符合结构化文本语言的语法规则,但还必须对其上下文有关性质、类型等方面进行检查,即进行语义分析,例如数组的下标必须为整型,赋值语句的左右两边类型必须匹配等语言规范要求。语义分析主要包括程序编译时进行语义检查的静态语义分析和目标程序运行时进行语义检查的动态语义分析,而本节所述的主要指静态语义分析,如标识符未声明,对于除零溢出等动态语义错误则主要利用保护措施进行处理。
在语义分析的过程中如果发现不符合语言规范要求时则输出错误信息,提示用户进行修改。控制源程序经过语法及语义分析后,如果没有错误则将其转换成一种自定义的中间代码结构。
(1)语义分析中的两个栈
在语义分析的过程中由于需要与语法分析并列进行,且如果出现语义错误则需要向用户输出错误提示信息,所以必须设计一个语义信息栈结构SemanticStack用来存储语义信息,其中栈中的数据结构可以设计成如下所示:
typedef struct tagSemanticInfo
{
string strIdentifier; //标识符名称
DWORD dwBaseType; //基本数据类型
string strComplexType; //复杂数据类型
unsigned int uiDimension;//数组维数
bool bConstant; //标识常量
bool bWrite; //标识可写属性
}SemanticInfo;
另外在语义分析结束后需要将源控制程序转换成一种中间代码结构,因此还需要一个存储中间代码信息的语法树栈结构SyntaxTreeStack,其中栈中的数据结构见下一小节所示。
(2)中间代码生成及中间代码结构
经过语法及语义分析后,需要将源控制程序转换成一种中间代码结构,该中间代码可以根据不同的CPU指令生成对应的汇编代码或机器语言。本系统的中间代码设计成一种抽象语法树形式,其中每个树节点的结构如下所示:
struct TreeNode
{
int Op; //操作类型
Type NodeType; //节点类型
TreeNode Kids[2]; //子节点
union
{
Value Cnst; //常量值
Symbol Sym; //符号
}LeafNode;
};
每个节点的形式如图5所示,均代表一种基本运算,其ASGN表示当前操作类型赋值,I表示节点类型为整型。
例如赋值语句a := b + 0.5 经过转换后所对应的抽象语法树如图6所示,其中a,b均为整型。具体运算过程如下:首先节点(ADDRG+P)取得变量b的地址,节点(INDIR+I)从变量b的地址(&b)中取得b的值,由于常量0.5默认为双精度型,所以节点(CVD+I)将变量b中的值由整型转换成双精度型;节点(CSNT+D)取得常量0.5,节点(ADD+D)进行加法运算,其结果为双精度型,由于赋值语句的左值a为整型类型,所以在赋值运算之前将结果转换为整型;左边节点(ADDRG+P)取得变量a的地址,最后将b+0.5的结果赋值给变量a。
2 总结与展望
2.1 总结
针对基于IEC61131-3标准的结构化文本语言在可编程控制器中的重要应用,本文论述了如何运用词法分析工具LEX及语法分析工具YACC来设计与实现其编译前端的词法分析与语法分析程序,并介绍了整个编译前端所用到的主要数据结构、算法及一种可针对不同PLC运行环境的中间代码结构。应用该设计方案实现的结构化文本语言编译前端程序,可根据不同的CPU指令编写相应的编译后端即可方便地运用到各种运行环境中,实现跨平台性。
2.2 展望
尽管应用本设计方案可以实现一种具有跨平台性的结构化文本语言编译前端程序,但该方案仍然有许多需要优化的地方,比如符号表的优化关系到整个编译程序的质量和效率,而本文并没有论述这一主题。同时本文也并没有论述如何将中间代码结构转换成可以实际运行的机器语言代码及相关的地址分配方案,这些工作需要在后续阶段继续完成,以实现成一个完整的编译程序。
参考文献
[1] 王文义. 可编程控制器(PLC)原理与应用[M]. 北京: 科学出版社,2010.
[2] 吴丽. 可编程控制器基础与应用[M] 北京: 机械工业出版社,2009.
[3] 陈火旺,刘春林等. 程序设计语言编译原理[M]. 第3版. 北京:国防工业出版社,2004.
[4] Alfred V. Aho,Monica S. Lam,Ravi Sethi,Jeffrey D. Ullman著,赵建华等译. 编译原理[M]. 第2版. 北京: 机械工业出版社,2009.
[5] Jobn R. Levine,Tony Mason,Doug Brown著,杨作梅等译. lex与yacc[M]. 第二版. 北京: 机械工业出版社,2003.
作者简介
网页设计与编程 篇7
关键词:EEPROM,FPGA,RS-232,VHDL
EEPROM(Electrically Erasable Programmable Read Only Memory)作为电可擦除存贮器具有可多次擦写且掉电不掉数据的巨大优势,很多硬件系统都需要EEPROM来存放一些关键的硬件数据或者配置信息。例如事先在EEPROM中特定的地址存入几百上千数据以供后续处理调用,但是由于需要存入的数据数量太多且会因为其他模块的参数调整进行修改,所以需要烧写和修改EEPROM数据时操作非常繁琐且效率极低。
本文所采用的方法操作方便明了,利用串口调试工具软件控制电脑的RS-232串口发送含有待烧写数据信息的TXT文档便可以一次性完成对EEPROM的编程,效率大大提高。整个方案的系统框图如图1。
1 RS-232接口
RS-232是美国电子工业协会(EIA)代表推荐(Recommend Standard)的一种标识为232接口标准。例如,目前一般PC机的COM口就是RS-232接口。本文也是采用PC机的COM口。
RS-232接口的电平标准是以正负电压来表示逻辑状态,正电压(+3V~+15V)表示信号有效,负电压(-15V~-3V)表示信号无效,此外的电压范围均无意义。本文实现的硬件平台里采用的是Xilinx的FPGA XC3S100E,在RS-232与TTL电平之间需要加上232(MAX3232)电平转换芯片(MAX3232)实现电平和逻辑关系的变换。
通过串口以一定的波特率来发送的数据结构是以8bit为数据长度,在每个字节的数据之间会插入一个停止位,所以在通过MAX3232转换成TTL电平进入FPGA后,需要将这个停止位从数据帧中去掉。另外,FPGA处理串口数据时要保持和RS-232设置的波特率一致,如果要改变波特率,那么在FPGA内部可以根据外部的晶振输入时钟和内部分频处理来实现(本文采用的波特率为38400)。一般选取可以通过整数倍分频来实现RS-232标准波特率的晶振频率,比如18.432MHz或者19.2MHz等。
2 协议处理模块
在FPGA处理与EEPROM时序之前,有一个关键问题就是协议处理的问题。本文采用的协议是一种自定义的帧协议(每个字节均为十六进制)。
在帧结构中的头尾字节'5A'作为帧头和帧尾;而第二和第三字节'55 51'作为控制字来确保接收到的协议不易重复不易掉包。那么第四和第五字节作为即将进行烧写操作所对应EEPROM中的物理地址。下面是整个协议处理流程,如图3所示。
在FPGA内部处理经RS-232发送的协议数据后,协议数据进入FPGA内部的一个数据缓冲区等待处理。当数据缓冲区连续检测到帧头'5A'和控制字'55 51'后,记下帧头标志进入等待帧尾的状态。如果再次出现'5A',就暂且记下作为帧尾到来的标志。之前记下帧头标志时开始对此后收到的数据字节进行计数,当帧尾的标志到达且字节计数器为3时就认定此帧为有效数据帧,将数据帧中的有效地址信息和数据信息提取后输出给时序控制端口,协议处理完毕。
4 写时序控制模块
4.1 EEPROM写时序
本文采用的AT28BV64B为ATMEL公司的高性能EEPROM,+3.3V供电,具有高可靠性的CMOS工艺,10万个周期耐久度,10年数据保持力,64K(8KBytes×8bits)存储空间。AT28BV64B的写时序可以选择两种控制模式:1./WE写使能信号控制;2./CE片选信号控制。在进行写操作时,由于两种控制时序只是/WE和/CE先后顺序上的区别,这里只给出/WE控制信号的时序图4(/OE是输出使能信号)。
从图4可以看出,AT28BV64B的写时序非常简单,用FPGA很容易实现,具体实现在下面的写时序控制模块中介绍。
4.2 写时序控制模块的实现
FPGA对时序的控制是非常精准和方便的。本模块中,13位的地址信息以及8位的数据信息都从协议处理模块中解析得到,在每一个烧写时序进行时,都会将地址信息和数据信息包含在时序控制中,EEPROM获得相应的时序命令时就会执行烧写操作,特定的地址中就会存入特定的数据。整个写时序操作模块由VHDL语言完成,再由ISE软件编译环境下生成Symbol,最后在顶层原路图中调用Symbol(见图5)。
PARSE_ADDR和PARSE_DATA分别是协议中解析的13位地址和8位数据,由协议处理模块处理传输到本模块;EEPROM_ADDR和EEPROM_DATA则分别是协议处理模块传输来由本模块转送至EEPROM地址和数据端口的。
4.3 EEPROM的编程操作
硬件平台和软件设计都完成后,就需要准备待编程的TXT文档了。TXT文档的格式很简单,只需按协议帧的格式单独放在一行便于查阅和修改即可,如图6所示。
接下来就是设置计算机串口,波特率为38400,8位数据,停止位1,无起始位和流控制,打开串口后在‘HEX发送’处打‘√’,最后选择待编程TXT文档的路径就可以开始EEPROM的编程了(见图7)。
这样点击‘发送文件’后,在示波器上可以测量到EEPROM芯片的/WE管脚有连续的拉低脉冲信号,这表明EEPROM按照TXT文档中的信息在进行不断的编程操作。
5结论
采用FPGA设计技术对计算机串口发送的数据进行解析处理,取出需要的地址信息和数据信息,再配以EEPROM严格的写时序就可以完全模拟EEPROM编程器的功能。另外,通过计算机串口发送TXT文档的形式使得编程方法变得非常简单和方便,且可以进行大量的数据编程工作。本设计还可以配置自己编写的应用程序来方便生成TXT文档和修改文档中的数据,那样会使得本方法更加方便。
本文的设计方法还可以通过修改写时序和协议帧结构来推广至任何一款EEPROM(包括串行EEPROM),成为通用型的EEP-ROM编程器,可以不必再为是否要为特定的一款EEPROM选配专用编程器而大费周章。
参考文献
[1]孙洪军,孙秀云,王连军.串行EEPROM读写器的设计[J].计算机应用研究,1997(1).
前端编程与数据库设计的合理运用 篇8
关键词:软件开发,数据库设计,前端编程,合理运用
常见的信息管理软件 (MIS) 通常由应用程序和数据库两部分组成, 这里通常涉及的数据库是关系数据库, 数据信息在其中被存储和处理。产品的开发过程中, 同时需要程序语言和数据库的设计。这就涉及到一个彼此份量的搭配问题, 亦即是程序设计多一些, 还是数据库设计多一些。
相信很多计算机软件工作者都有这样的经历, 上学时学习了各种程序设计语言和数据库设计。那时觉得数据库就是“select”, 程序语言就是流程和变量, 似乎二者没有必然联系, 当正式为用户开发产品时, 才发现原来这才是我们需要做的。于是写一些程序, 做一些表, 就成了最初带有数据库的应用软件。随着学习和实践的发展, 慢慢的技术熟练了, 但很多时候把握不好程序设计与数据库的搭配比例。
具体看两个案例:一个程序设计娴熟的软件开发工程师更善于用程序语言来实现功能, 结果他设计的数据库非常简单, 只是一些没有深度关联的表, 数据库在他手里就变成了一个纯粹的存储器, 而前端的程序设计才是他的重头戏!所以他采用了典型的微软组合VB+access, 结果一旦用户需求有更改, 就需要修改并重新编译和发布程序, 更严重的是用户数据量变大时, 该软件的运行效率急剧下降。另一个开发者或者意识到了数据库的优势, 于是数据库系统采用了sqlserver, 大规模进行了数据库的开发, 哪怕一个查询也要写成存储过程或者函数, 最后搞的产品还没有发布, 自己的维护人员却累个半死, 因为维护程序的人根本看不懂他写的程序, 数据库中也存在了太多的存储过程和函数, 查找起来非常繁琐。以上两种极端表现显然是不可取的。
软件的开发, 需要根据具体情况来设计。数据库的发明为软件业带来了很大好处, 很多数据的处理在数据库内部都是经过优化的, 因此适当地应用好数据库的设计可以简化前端程序的开发, 并且是便于维护和高效的。例如数据库的索引可以提高查询效率;一个复杂的查询可以用视图来实现, 这样在数据表变更时只需要调整视图而不用修改前端程序设计;约束可以帮助捕获运行中的异常和避免设计缺陷……然而不是说数据库是万能的, 数据库也不可能完全取代前端的程序设计。程序是可以做得很细, 从原理上是可以完成任何需要的合理的逻辑, 但是如果任何内容都用程序设计实现, 那么最后的应用程序会很庞大, 运行效率也不会很高甚至是累赘的。适当合理地利用数据库实现, 即可以保证处理速度, 又可以减少程序与数据库的交互次数, 从而整体上设计更合理, 效率也更高。
再看一个VB+access的简单例子, 我们需要在access中插入主键信息是整数的信息, 插入时前端程序需要知道当前插入信息的主键值, 所以要插入的信息的主键需要在应用程序中生成。在access中自动生成整形主键值有自增长和随机数两种方式, 显然这样的生成速度很快, 但是应用程序在插入数据时无法获得主键值, 因此在应用程序中可以模拟数据库自增长方式, 亦即查询出最大值然后加一再作为主键插入。但是这种自增长的方式会造成一个问题, 那就是整数资源的浪费, 例如数据库中有10条记录, 主键分别是1到10, 如果删除了中间几条, 再插入时新的主键会是11, 那么中间删除的几条的主键值便不可以再利用了, 这样的后果是将来数据量太大时, 主键值有超出计算机整数运算能力的范围。所以我们曾为了节约资源, 在前端应用程序中用了所谓“智能”的方法来充分利用闲置的整数资源, 这种方法需要遍历已存记录, 所以记录多时效率异常低下, 因为这样遍历交互次数太多了。最后解决的方法是, 第一, 把数据库中相应的字段类型更改为长整型尽量避免溢出;第二, 在应用程序端依然采用最大值加一的方式生成主键, 但是提供一个整体刷新的方法, 就是在一定时期后整体整理数据库中的主键, 使之从小到大重新更新并排序, 例如如果数据库中存在1、3、4、6、7, 我们使之整理成为1、2、3、4、5。如此即利用了数据库管理和批量集中整理的思想解决了这一问题。合理的利用不仅仅是直接使用, 还可以借鉴思想。
网页设计与编程 篇9
嵌入式单片机是单片机的一种表现,计算机是由于单片机的诞生给予历史上一个发展机遇且具是一个重要的里程碑,单片机是通过计算机大量的数据是智能化控制实现的,相对于其它主要具有比较主要的优点,即(1)体积小(2)功能强大(3)具有安全性高(4)成本价格低(5)便于操作(6)稳性能稳定等。
所谓的智能控制单元是指将单片机应用系统的某个单片机加入到操作环境或者是结构以及体系中,由各种电路的嵌入式应用程序。所有硬件和应用软件都是单片机应用系统,主要是通过满足目标需求;单片机、单片机系统和微机应用系统主要是单片机应用系统架构。
单片机系统应用领域范围很广泛,而且被广泛应用于国家军事配置以及导航仪器和家用电器等相关的电子信息产品;由于自动化技术应用是通过工业生产的,因此无论是通过应用过程控制、信息采集和传送控制技术以及应用机器人生产线技术的发展,都离不开单片机的应用,通过利用数字仪表的智能化以及多功能和灵活性的面向开发:(1)汽车安全系统(2)计算机网络通信(3)数据传输(4)各种仪器控制(5)导航设备(6)其他飞机导弹装置通过微控制器发挥巨大的作用。因此要学习以及开发与应用掌握单片机的技术是一件非常重要的过程。
2 单片机研究状况
如今,在信息高速发展的现状,单片机在各行各业都已经倍受的关注,显示应用前景是非常广泛;许多大公司有一个专业的设计,开发和生产的单片机编程器,提供仿真器和单片机培训以及研究实验仿真和个人学习平台。
仿真实验系统特别受当今的单片机编程仿真系统的青睐,通常都是将编程和仿真以及实验合为一体来体现在一个高度集成的功能;举例说明,例如WS系列单片机综合学习系统是在泉州开发的,福建联盟强大科技有限公司是一个单片机由ATMEL和优质系列单片机实验板完全支持的开发应用综合学习系统,故能够提供集开发程器,仿真器,ISP在线下载功能发展称作为四个学习系统。深圳市学林电子有限公司能够应用集成XLl000单片机仿真实验仪开发一个全面的多功能8051平台并且兼容AVR/PIC单片机编程实验部分特性有着多年的经验。MCS8051系列单片机电路仿真器是新一代的DUCK-IV仿真器。DP-51proc单片机仿真仪器是基于一系列的单片机仿真仪器集成开发环境之下由广州志远电子公司设计实现的,单片机应用程序以及调试是一个巨大的技术学习开发工具以及实验平台,集成主要的四个功能实现:(1)ISP(2)EDA(3)仿真(4)实验仪器,通常来说,大多数都是利用互联网的形式设计和开发实验教学仪器的单片机个人网站。
3 单片机编程仿真实验系统设计思路
3.1 编程仿真实验系统的单片机选型
在单片机中,具有表现优越与其它的单片机系列即是非80c51系列所属了,例如设计公司主要具有代表性的为飞利浦以及NEC和Atmel和华邦电子等,因此这些公司改进了80c51许多功能的特性是在保持兼容80c51单片机的前提上进行。故由此可知单片机进一步迈向几个比较主要的方向发展,即通过它们的性能价格方面可以大致的了解具有(1)低功耗(2)体积小(3)大容量(4)高性能(5)低价格(6)外围电路内装化等特点,所以,单片机仿真产品所具有的高性能单片机和更多品种的出现越来越多。故需要良好的单片机编程与仿真系统必须具有合适的单片机实验板,实验系统主要是基于单片机的ISP设计细节功能,将程序下载到目标单片机的实验板和直接操作,该系统由Atmel选定的AT89S51单片机且具有ISP功能。
3.2 编程控制软件设计
单片机编程仿真系统模块是基于PC机与单片机之间的这一原理,根据在PC以及单片机中的编程通讯来实现单片机编程控制软件的整个过程。
通过单片机子程序的各种要素按照一定的规则存在数据库中的的仿真系统是由单片机编程中子程序的查询模块来实现的过程,数据库查询功能一般都是由以Delphi实现,能够应用标号程序和子程序功能单片机查询领域实现查询。编写单片机开发源代码,建设低成本、易于使用单片机编程仿真系统的科研领域并且能够具有卓越性的单片机微控制器的研究实现是具有重要的科研意义。它不仅可以大大降低实验设备的投资,并将培养研究人员的创新精神和探索的精神,给单片机实验研究带来革命性的变化;单片机是具有多年的发展历史,其在各种性能上都有很大的成就,并且在单片机发展中有成千上万的种类型号模型,单片机在人类社会生活中已经普遍应用于的各个领域;单片机在各行业中深受青睐,其中有些行业都是与单片机息息相关的,单片机是具有理论和实践性很强的专业知识,在科研实践过程中,科研理论基础知识和实验操作应该融合应用;研究人员除了掌握理论知识。
4 总结语
在本次单片机编程仿真实验系统的设计与实现中,经过大量的研究性实验,大多数单片机编程知识模拟系统涉及单片机原理、单片机接口技术和单片机编程学习的一个非常重要的组成部分和基本原则。总的来说其硬件和软件开发,在此过程中,通过研究实验,虽然在实验过程中工作量很多,但是通过查阅资料,认真弥补不足,使得自己在这一学习方面上收益匪浅,因此在过程中积累了相关经验。简而言之,虽然自己在各方面上不是实现的很完善,不过总体上来说提高了自己分析问题的能力以及解决问题能力,故还自学单片机和单片机应用开发实现等相关的资料,使得更深入的探索和研究。
参考文献
[1]马刚,李向仓.用Proteus与Keil整合构建单片机虚拟仿真平台阴[J].现代电子技术,2006,239(24):129.
[2]郇玉龙.单片机实验教学仿真系统的设计与开发[D].济南:山东师范大学,2008.
[3]张丽云.计算机接口实验平台的研制与开发[D].北京:北京交通大学,2007.3:5.
网页设计与编程 篇10
一、网络教学的特点
1. 教学资源丰富多样。
网络能够为学习者提供形式多样的信息包括文字、图片、动画、音频、视频等, 丰富多样的资料引人入胜。网络课程教学设计时应该充分利用这些特点和技术, 将课堂教学中欠缺的表现方式加入到网页中来, 使学生通过这些形象的、动态的、交互性强的媒体形式加深对新知识的领悟。
2. 学习过程的自主性。
在网络环境下学习, 学习者身边没有教师和各种规章制度的监督, 学习过程完全在自身的管理和制约下进行, 学生可在任何时间、任何地点根据自己的水平、以自己喜欢的方式学习, 这就要求学习者具有高度的自主性。教学设计中应充分考虑学习者的学习过程自主性特点, 教学设计中注意情景设计、任务驱动、逻辑演绎等能激发和维持学习动机的教学方法以加强学生的学习动力和兴趣。
3. 学习活动的多样性。
网络学习的学习活动是多种多样的, 学生可在聊天室里以文字形式与同学讨论问题、向老师请教, 可通过学习资源的获取, 链接内存、下载信息等方式学习, 还可以利用网络技术进行师生、生生间学习交流、学习讨论的交流活动如留言板、BBS、邮件、讨论区、在线记录等方式, 教学设计要充分体现以学生为主体、以教师为主导的思想, 设计尽可能多的适于网络自主学习的学习活动。
4. 评价方式多元化。
在网络环境下的教学设计中, 考虑到学生学习的方式多样, 在教学设计过程中的学习评价方式也出现了多元化, 除了通常所用的最终评价外, 更加重视过程评价、学习跟踪评价等。
二、网络课程教学设计的原则
1. 重视资源设计的原则。
学习资源是网络课程的重要组成部分, 是学习者的学习活动的基础和依据, 包括数字化、多媒体化、网络化的各种资源, 重视资源设计主要在于学习资源的加工与组织、学习工具的利用两个方面。学习资源的加工与组织, 是指根据教学内容、教学对象的特点, 选择合适的多媒体表达方式并进行科学的组织, 为学习者提供最佳的学习环境。学习工具的利用是指教学设计时为学习者提供多样的认知工具, 如Explorer浏览器、E-mail、BBS论坛、聊天室等以适应不同学生的不同学习需求。
2. 利于自主学习的原则。
首先, 学习者可以自由选择学习主题、学习工具、选择与学习内容相关的网站, 选择自己感兴趣的讨论专题等, 从而促进自主学习活动的高效。其次, 利用激发和维持学习动机的策略和自我监控策略等, 激发学生的动力, 使自主学习能够有效进行。最后, 教师适度介入辅导, 对学生的学习活动给予适当的帮助、适时的调控。
3. 便于交流互动协作学习的原则。
利用网络进行自主学习时, 学习者极容易产生孤独感, 学习效果将受到影响。因此, 为学习者创造协作学习环境, “在线讨论”“主题论坛”等使学习者在合作、互助的气氛中进行学习。
4. 符合课程特点的原则。
根据课程性质的不同, 选用符合课程特点的教学设计方法, 特别是对于职业教育课程, 强调职业能力的培养, 因此往往采用以工作任务为核心组织教学内容, 并以工作过程为导向实施教学过程。
三、《数控编程与加工》网络课程教学设计
1. 课程定位与学习者分析。
根据职业培养要求, 该课程是培养学生的数控加工工艺设计、数控加工程序编制、数控机床与刀具及工装选用、数控机床操作等职业核心能力, 其前修课程为数控加工工艺、后续课程为CAD/CAM技术。该课程的使用对象为数控技术、数控设备应用与维护两个专业的大二学生, 学习者主要表现为学习动机由外部动机转向内部动机, 自学意识较强, 学习目的较为明确。经过一年的大学生活, 学习方法已经掌握, 加上自身逐渐成熟, 深知专业课程的重要性和对未来职业知识的渴求, 学生的自学能力较强。
2. 教学内容和目标设计。
根据《数控编程与加工》课程性质, 在内容选取上参照《数控机床操作工 (Ⅲ级) 国家职业标准》, 确定核心职业能力, 对应核心职业能力的培养安排了5个典型模块, 并细化开发出23个学习项目。课程内容通过任若干工作任务的实施、完成, 让学生掌握数控车工、数控铣工、加工中心操作工的编程知识和数控机床操作技能。课程建议课时说明学习《数控编程与加工》所需的时间, 学习者可在建议课时的基础上对自己的学习时间进行安排和调整, 以便学习者在自主学习过程中合理安排时间。教学内容中的各任务是由简单零件的编程加工到复杂零件的编程加工, 直到数控职业技能考核训练, 这符合学生学习的认知规律, 学生最终能达到数控中级工的水平。
以模块3“数控铣削编程与加工”为例, 建立模块内容与目标的关系, 见表1-1。
同时对每一模块中的单个任务与学习目标之间同样建立关系, 以任务3.4为例, 如表1-2。
3. 教学方法设计。
(1) 问题探究式教学法。在知识的应用教学部分, 学生在学习概念及原理时, 老师只对学习者提出问题, 学生自己通过阅读、观察、实验、思考、讨论等去独立探究, 自行发现并掌握相应的原理和结论的一种教学方法。教学过程分三步走:提出要解决的问题;找出与问题相关的因素;应用已有知识和经验解决问题。 (2) 案例教学法。在学习指令的应用、规律和技巧部分, 采用案例教学法。由于零件加工的数控指令学习单调枯燥, 采用该方法适于通过特例分析找出各指令的用法和规律。实施过程分四步走:导入已完成的工艺方案;分析具体工序的关系与要求;介绍各工序可以使用的相关指令及指令格式;归纳不同指令的使用情况、使用方法、使用技巧。 (3) 行为导向教学法。从职业教育特征以“行动导向”理念、“工作过程为主线”来实施教学, 以任务导入将学生的学习目的建立在“做什么”的基础上, 在完成任务的过程中是学习知识和培养技能, 学生在任务实施过程中逐步知道“怎样做”, 并逐渐积累工作经验, 知道“怎样做更好”。数控加工职业岗位的工作内容及工作过程如下:拿到图纸→读图并进行工艺分析, 要求能够看懂零件的形状和加工技术要求→制订工艺规程, 要求能够拟定工艺路线, 并选择加工设备、刀具、夹具、量具以及加工参数→编制加工程序, 能手工编制或者利用CAD/CAM软件进行自动编程→工艺验证, 能够操作机床进行零件首件加工, 验证加工工艺和加工程序→改进最终确定工艺规程以及加工程序并形成工艺文件。对于该课程的学习过程是任务导入 (零件图纸) →任务分析→必备知识学习 (工艺知识和编程指令) →任务实施 (编程与仿真、加工、检测) 。 (4) 真实与虚拟相结合的方法。在课程教学任务实施过程中, 机床操作零件加工部分采用了三维仿真虚拟加工, 增加了学生学习的真实感, 有利于学生对指令的掌握。
4. 教学效果评价设计教学评价设计是教学设计中不可缺少的一部分, 也是教学设计趋向完善的调控环节, 它不仅仅是对学习结果的估计和测量, 更重要的是对今后教育工作的一种暗示和导向。
主要包括学习态度评价、学习质量评价、参加协作学习评价、自我评价以及学习者之间的互评, 教师可利用所管理的日志, 观察每个学习者的学习行为状态, 再结合其他评价, 可以非常容易地了解学习成长记录, 并对学习者进行评价。
网络课程教学设计, 对推进课堂教学改革的作用, 是显而易见和不容置疑的。基于网络的课程教学设计充分利用现代信息技术和信息资源, 科学合理安排教学过程的各个环节和要素, 采用必要的手段对教学过程进行有效地控制, 从而使网络课程的教学发挥应有的作用。最终实现培养学生的信息素养、创新精神和自主学习能力的目标。
摘要:从网络教学的特点、网络学习的自主性及职业教育的特殊性出发, 利用网络及多媒体的优势, 对高职课程数控编程及加工进行网络课程教学设计。
关键词:项目化教学,网络课程,教学设计
参考文献
[1]张伟.自主式学习的网络课程设计探讨[J].教育理论与实践, 2002, (10) .
[2]苏娜, 张莉莉.网络课程的教学设计策略初探[J].教学研究, 2009, (3) :86.
网页设计与编程 篇11
关键词:信息技术;VB;神州飞船
中图分类号:G427 文献标识码:A 文章编号:1992-7711(2014)22-094-1
一、教学设想
VB编程为八年级《信息技术》教学中的重要内容,重点为培养学生运用程序解决实际问题的能力。以前本章节内容为九年级的选修内容,一般情况下大多数学校都不教授,2013年江苏省《信息技术》课程教学大纲把这个章节内容列为必修内容,同时放在八年级教授。但本章节内容对于八年级的学生来说比较难,因此如何把这个章节教好也比较困难。笔者紧扣教学大纲,从现实生活出发,以科学、数学知识为基础,用“神舟飞船”运行七个阶段中的发射、变轨、回收三个阶段来作为课堂教学的线索,选用当前发生的事件、学生较感兴趣,与现实生活密切联系。用“飞船发射”体现程序的魅力;“飞船的变轨”使用掌握飞船的运行轨迹、程序代码的认识、程序的运行和修改、调试;“飞船的回收”让学生自已分析程序(抛物线)、运行、保存。整堂课通过VB对程序进行简单修改、程序代码的初步认识,体验利用计算机完成某一特定任务,领悟程序设计的简单原理和方法,体验程序设计运行过程,培养学生科学态度,做事的严谨性。
二、教学过程设计
(一)课程导入——回顾神九与天宫的交汇对接
引出课题;用程序来模拟神州飞船的发射、运行、回收三个过程。
(二)课程演示——模拟火箭发射的程序运行
演示发射程序,模拟演示中国航天发射情况,介绍程序的用法。
让学生试着运行程序,体验程序运行过程。
(三)课程内容剖析——VB源程序的认识、运行,完成”飞船变轨”源代码参数调整
1.介绍窗体的打开、运行、停止。
2.剖析程序。
(1)对程序中的源代码每行进行剖析,同时后面有注释。
(2)程序的设计原理(算法)是椭圆的运行;分析a,b在程序的中作用;当a=b时,运行的轨道是圆。
(3)按钮的代码修改、程序的运行。
3.演示“飞船变轨”程序的修改、运行。
4.让学生体验过程(相互讨论、交流)。
任务:神九上天后,前5圈是椭圆轨道,以后是圆形轨道。请你把飞船先调整到红色的椭圆轨道,然后再调整到圆形轨道。
(运行程序,看运行结果,亲身感受计算机程序解决问题的过程,懂得计算机程序设计的基本流程,能修改源程序,并运行出结果)
(四)知识拓展训练——神州飞船的回收
打开“回收飞船”的程序,分析飞船的回收是一个抛物线运动。让学生自己分析,找到飞船回收最佳着落位置。(检查学生程序修改运行的情况、自主学习和互帮互助的情况)。
(五)教学点评
1.利用多媒体教学软件,收取学生的作品。
2.交流评讲学生的回收飞船的作品。
3.让学生回顾设计回收的程序的步骤。
(教师提示:分析问题,设计算法,编写程序 调试运行 检测结果)
(六)课程总结
让学生认识到生活中很多问题都可以用计算机程序来解决,同时还能够结合其他课程的知识,感受程序解决问题的魅力。学生分小组交流讨论:
1.谈谈你对VB编程的认识?
2.对未来的中国航天事业发表你的见解?
最后老师提出希望:你们中会有人将来设计的软件在千家万户的电脑中使用;联系实际,让他们懂得中国航天技术与俄美的差距,通过大家的努力,有一天你们当中有人能登上月球或者火星。
三、教学反思
(一)以航天知识与程序设计紧密结合,培养学生热爱科学、了解科学的能力
编程序写在学生眼里是高深莫测,是非常聪明的人或程序员才写的东西,一般都认为程序比较难学,有畏惧感。为给他们有感性的认识,联系实际,用神州飞船的发射、变轨、回收三个阶段写成程序贯穿本堂课;既有科学知识、又有简单初步的程序思想内容。变轨当中渗透了实际运行的轨迹、飞行圈数、飞船的重量,从前几圈椭圆到圆的变轨;飞船降落中渗透了抛物线的应用。在教学中,让学生主动探究飞船回收的程序,让学生了解程序模拟实际实验的过程。培养学生科学发展观,了解中国航天的成就,让学生有为中国航天事业添砖加瓦的愿望。
(二)利用学生之间的资源差异,培养学生相互间的共同学习能力
在进行飞船调轨操作时,需要用到VB软件、程序代码的修改、椭圆方程的认识,最终实现飞船的轨道的调整。以小组为单位,把信息技术操作能力较强的学生分散安排到各个小组,遇到学习问题首先在组内研究解决,其次才求助于别的小组。使学生之间形成互教互学,不但学习效果好而且培养了团队协作精神,学生之间通过交流、协作、对知识认识的表述等活动,使学习得到进一步的深化、扩展,创造了与他人的协作化和知识共享的条件,实现了学习者的形成性学习。
(三)运用信息技术拓展思维空间,培养学生的创新精神
网页设计与编程 篇12
关键词:系统芯片,通用可编程接口,IP核,数据传输
0 引言
在现代数据通信与传输领域, 系统芯片 (System-ona-Chip, So C) 与不同外设间的数据交换越来越频繁, 交换的数据量越来越大, 而且不同外设采用的数据通信协议和接口形式也各不相同。So C与外设间连接的要求越来越高, 主要表现在: (1) 高带宽, 要求通信传输速度越来越高; (2) 通用性, 要求接口具有对多种标准通信协议有一定的广适性; (3) 可再配置, 要求通信系统具有用户根据实际需要进行二次配置的特性。
另一方面, 外设接口往往采用一定的协议或标准, 典型的有UART接口、IIC接口、SPI接口等。芯片实现时, 通常将外设接口的逻辑功能固化在芯片内部, 但由于芯片资源有限, 不可能把所有的协议都集成在片上[1]。为了实现可编程的外设接口, 传统的方法是利用通用输入输出 (General Purpose Input/Output, GPIO) , 通过编程方式设置GPIO寄存器的高/低电平, 从而控制数据的读写和时钟的生成。但是, GPIO模块采用CPU内核直接控制, 模拟外设接口的读写过程会占用大量CPU运行周期, 影响系统中其他任务的实现, 所以一般只用于低速协议或接口的实现[2]。
本文针对So C与外围设备多种接口的连接问题, 设计了一种通用可编程接口IP核, 实现了So C与外围设备接口间的可编程特性, 并以增强型8051内核为基础构建了仿真验证平台, 验证了设计的正确性和有效性。
1 通用可编程接口IP的原理
通用可编程接口的工作方式采用主控方式, 可通过配置CPU实现对外设接口读写波形的编程, 从而完成外设接口的读写。
为了使数据在与外围设备交换过程中不需要CPU的控制, 利用通用可编程接口的高速带宽设计了一套FIFO缓存架构, 其工作机制使得数据以包的形式被提交到端点FIFO, 而不是每次一个字节, 并可设置多级缓存[3,4]。
通用可编程接口IP的本质是一个可编程状态机, 用户通过编写波形描述符控制状态机。通用可编程接口可生成4个用户定义波形描述符, 每个波形描述符最多可定义7个状态, 这7个状态通常情况下用于批量读、批量写、单字读、单字写。
2 通用可编程接口IP核设计
2.1 通用可编程接口IP架构
通用可编程接口模块的内部结构如图1所示, 主要由4个模块组成。
(1) 端点控制模块
端点控制模块 (CONTROL) 产生控制信号 (CTL) 控制外部设备, CTL信号可通过编程组合使用, 实现复杂的逻辑功能;接收外部准备信号 (RDY) 触发事件;接收/发送时钟信号 (IFCLK) ;输出状态信号 (STATE) , 显示状态机目前工作状态。时钟信号可选内部产生或外部输入, 其他控制信号也可设置为高有效或低有效。
(2) 端点缓存模块
端点缓存模块由4个相互重叠的FIFO端点缓存组成, 存储与外设通信过程中接收/发送的数据。其读信号 (RD) 、写信号 (WR) 、输出使能信号 (OE) 及时钟信号 (CLK) 控制数据总线 (FD[15:0]) 的读写, 并输出空信号 (EF) 、满信号 (FF) 。
(3) 波形存储器模块
波形存储器用于存储用户设计的波形描述符。通用可编程接口通过波形描述符控制数据的输入输出, 最多可存储4个波形描述符, 分别为WF0、WF1、WF3、WF4。
(4) 地址生成模块
地址生成器 (ADDR_GEN) 用于输出地址总线 (GPI-FADR[8:0]) , 由控制模块控制。
2.2 波形描述符设计
波形描述符是通用可编程接口的核心, 用于描述数据传输的时序。通用可编程接口可以存储4个波形描述符: (1) 单字读:从外设中读取1字节/字的数据; (2) 单字写:向外设中写入1字节/字的数据; (3) 批量读:从外设中读取一个长数据流; (4) 批量写, 往外设中写入一个长数据流。这些描述符可以动态地配置给任何一个端点FIFO。配置后, 通用可编程接口将依据波形描述符产生相应的控制逻辑和握手信号给外界接口, 满足向FIFO读写数据的需要。
图2为一种批量写模式下的波形描述符状态转移图。批量写状态机共定义了5个状态, 分别是IDLE、State1、State2、State3、State4, 每个状态的意义描述如下。
(1) IDLE:当写事件发生, 转移到State (1) ;
(2) State1:将SRAM写信号和使能信号置为有效, 触发写事件, 转移到State (2) ;
(3) State2:若外部SRAM模型的“满”标志为真 (FF=1) , 则停留在State (2) , 否则转移到State (3) ;
(4) State3:通用可编程接口采样数据线, 将内部端点FIFO数据写入外部SRAM模型, 转移到State (4) ;
(5) State4:如有更多数据需要传输, 则转移到State (2) , 否则转移到步骤 (1) 。
2.3 端点FIFO缓存设计
通用可编程接口内部包含4重端点FIFO缓存, 对内部总线端来说, 只要有1个FIFO为“半满”, 就可以继续发送数据。当前操作的FIFO写“满”时, 自动将其转换到外部接口端, 排队等候读取;并将队列中下一个为“空”的FIFO转移到So C内部总线接口上, 供其继续写数据。图3为FIFO缓存架构的传输原理图, 此时通用可编程接口内部总线接口执行OUT传输, FIFO端点被设置为512 B四重缓存。
3 仿真平台设计
为验证设计的接口IP核, 构建了一个以8051 CPU为内核的So C仿真平台, 利用设计的接口IP核访问外部设备。为了充分利用通用可编程接口地址总线、数据总线及控制信号, 外设采用SRAM芯片的Verilog模型, 并加以改进, 添加握手信号, 使通用可编程接口能读取该信号并控制数据传输。通过设计波形描述符, So C控制接口IP向外部存储器执行写/读操作, 仿真平台对两次的数据进行比较并报告设计的正确性。
该仿真平台在Linux操作系统下开发, 平台系统结构如图4所示。仿真器采用Synopsys公司的VCS仿真器。组成系统的各个模块可以按照需要加入仿真环境中, 仿真结果由环境产生、检查并输出到指定目录结构下的文件中。
仿真平台包括Verilog编写的Testbench、So C模型、外部程序存储器 (EXT PROGRAM ROM) 、SRAM Verilog模型。SRAM包括地址线 (A8~A0) 、数据线 (I/O15~I/O0) 、芯片使能、握手信号E_RDY (“1”表示SRAM未写入数据, “0”代表已写入数据) 、F_RDY (“1”表示SRAM存满数据, “0”代表未满) 。
仿真平台工作时, 由Testbench产生时钟 (CLK) 和通用可编程接口IP时钟 (IFCLK) 。
4 仿真结果分析
通用可编程接口单字节写的仿真结果如图5所示, 其中IFCLK为内部48 MHz时钟, 数据宽度为8 bit。当拉低时, 外部SRAM有效;当有效, 且RDY1 (F_RDY) 为低时, 数据 (5A) 被放入数据总线, 并经数据总线写入外部SRAM。状态总线STATE (PE[2:0]) 显示通用可编程接口引擎在每一操作期间循环经过的状态。
通用可编程接口单字读模式与单字写模式类似, 仿真结果如图6所示。
图7为通用可编程接口批量写传输的仿真结果, 数据宽度为16 bit。当被拉低, 且F_RDY为低时, 接口开始执行批量写程序, 从内部的FIFO缓存向外部SRAM写入512 B (00-FF, FF-00) 。
通用可编程接口批量读传输的仿真结果与批量写类似, 仿真结果如图8所示。
由上述仿真波形可看出, 通用可编程接口读写数据时, 时钟周期为20.8 ns, 数据总线宽度为16 bit, 对应数据传输速率为96 Mb/s。相比之下, UART的传输速率为1.5 Mb/s, IIC总线为400 Kb/s~3.4 Mb/s, SPI总线为18 Mb/s, GPIO总线的传输速率最高为50 Mb/s[5]。可见, 通用可编程接口的传输速率最快, 更适合当前大容量存储器之间的数据传输要求。
5 结束语
本方案实现了通用可编程接口与外围设备接口连接的可配性, 并通过设计验证了该方案的可行性与准确性。在数据传输过程中, 通用可编程接口无需CPU的干预, 只需对其进行正确设置就可以正常工作。通用可编程接口的强大功能使其不仅可以与外部SRAM连接, 还可以与更复杂的接口 (例如ATA接口) 实现无缝连接, 加快了产品的开发速度, 降低了开发成本和提高了产品的可靠性。
参考文献
[1]王占领, 张登福, 李云杰, 等.便携式ARINC429总线通信接口的设计与实现[J].微电子学与计算机, 2013, 30 (7) :133-136.
[2]HASAMNIS M A, LIMAYE S S.Custom hardware interface using NIOS II processor through GPIO[C].The 7th Conference on Industrial Electronics and Applications (ICIEA′12) .Singapore, 2012:1381-1385.
[3]刘志华, 郭付才, 彭新伟, 等.基于CY7C68013A的FPGA配置和通信接口设计[J].电子技术应用, 2013, 39 (2) :18-21.
[4]赵林, 孟令军, 于磊, 等.基于CY7C68013A的USB2.0高速接口设计[J].电子技术应用, 2014, 40 (1) :131-133.
【网页设计与编程】推荐阅读:
网页设计与编程实训(课程设计)报告10-18
动态网页编程11-03
网页设计与平面设计11-28
网页设计与制作12-04
静态网页设计与制作06-20
网页设计与制作实训10-11
网页设计与制作课标11-19
网站设计与网页制作09-01
网页设计与制作课程的研究与应用论文09-02
网页设计与制作 自考课程复习题01-02