徐伟业 马湘蓉 杨会军 冯琤
南京工程学院信息与通信工程学院 南京 211167
“教师的最高境界是唤醒学生的兴趣”--爱因斯坦语录中的原话。实际教学过程中,经过数年的综合电子系统设计教学实践发现,激发学生的程序控制兴趣的确可以收获到意想不到的教学效果。本文从一线的理论教学和实践教学出发,对激发学生程控兴趣的教学思路做了总结与思考,希望对这门课程的教学与实践提供可借鉴经验。
综合电子系统设计课程是电子信息专业学生必修课程,是在学生学完语言类和电子类等课程后所设的一门综合类的实践课程,课程设置的目标是将学生所学过的知识运用于构建一个规模较大的、数模混合的、可以自动控制的电子系统。在展开时要求具有较好的综合性,实践性,检验性与可扩展性。要求学生具有综合的、灵活的运用知识的能力,能够用以往学过的知识,创新性地完成一定规模的电子系统设计和对应的微芯片的智能控制。同时该课程也是后续课程电子类实训的一个先期实践课程,为后续的电子类实训以及毕业设计打下一个坚实的基础,因此,该课程在电子专业的培养体系里具有承上启下的中坚作用。
这门课程一开始的培养目标定得比较高,是因为这门课开始之前有较多的先修课程打底,所以,理论上认为学生基础比较好,自然教学起点放得比较高。但是实际实施的过程中,发现还是存在一些问题的,主要总结为以下两条。
在学习综合电子系统设计课程之前,学生学过相关的编程课程有2 门,一门是高级C 语言设计,在大一的第二学期展开,该课学时较多,还要参与计算机等级考试,但是,学生对总体的程序控制能力并不佳,具体可参考每届大二学生的二级通过率。另外一门单片机原理与设计既涉及电子电路,又涉及程序编制与控制,但是因为这是第一次设计微控制,涉及内容较多,特别是系统结构和系统控制部分占比较大,这样实际的语言控制的锻炼机会大大缩水。因此,在学习电子系统设计的时候,除少数学生的系统控制能力不错外,大多数学生的程控能力比预期来的要差了一截,不但设计兴趣不浓,甚至还具有畏难情绪。
综合电子系统设计之前的先修相关电路课程有电路分析、模拟电子技术、数字电子技术与EDA、高频电子线路、单片机原理、嵌入式系统等。如果按照中等学生的正常发挥,大多数学生其实已经储备相当的电路设计理论知识,具备一般的电路设计能力(包括一般的资料查阅与电路规划、模块组合等能力),但是因为涉及的科目比较多,内容的交互性比较强,学生的软硬软迁移与转换的能力不顺畅、不自如,特别是当系统比较庞大复杂的时候,学生的这种设计与调试能力明显跟不上。
鉴于综合电子系统设计课程的重要性,针对教学中存在的问题,采取相应的应对策略,激发学生的设计兴趣,提高课程学习效率和学习效果。文中采用如下方法进行教学改进与实践。
大家都知道,简单的知识很容易理解与掌握,并且大多数人都有避难就易的心理趋同,因此,笔者在这门课程的最初采取简单原则。一切从最简单开始,降低起点。首先在程序驱动上不再抛开C 语言的编制结构,之前以为学生学过了,就应该会,实际上,入门和熟练的差距还是有点距离的。大多数学生有基本的入门知识和深入研究的素养,但是要想一开始没有铺垫直入主题,学生多少有点功力不济,因此,采用例题的形式将语言编程的基本知识进行一次组合,如数组、数表、函数、变量、寄存器、时隙与时延、存储空间与位置等等,再来一次演练,熟悉又陌生,温故又知新。其次在硬件设计与实现上也从最简单的电路开始,采用可视化器件,讲究电路设计与连接,并且每个通路借助仿真平台实时操作演示电平和逻辑值,体现流水操作,所控即所见,虽然原理简单,但也是一气呵成。最后在微电脑的中控环节也不从内部脑回路结构开始,先避免繁复,仅仅从外围的接口开始,将前端的程序和后端的硬件借助中控MCU 有机组合。因为是按步骤完成,又是从最底端开始设计,因此最简单的程控就完成了。实际控制过程中,先让学生装好环境,带了电脑到教室,现场只采用一句程序,驱动微单片机任意一个P 口,点亮外围电路一个7段数码管,好多人会说这也太简单了吧,单片机原理已经学过了。不错是很简单,但是让学生再次温习了之前的知识。C 语言赋值,会不会?端口选择会不会?数码管驱动会不会?都会,都是以前学过的,那好,可以变化吗?数码管可以变化显示各种数值?个数由1 个变为8 个,静态变为动态,人眼视觉停留多少?延时怎样准确?和晶振的关系?微单片机定时器如何用?同样的电路结构只是提高了一点要求,教师先做好讲解与示范,包括C 语言里的相关程序,学生先理解再做好程序调试,因为简单,都能跟得上节奏,连那些平时不怎么喜欢编程的学生也都能适应。
依然是同一电路结构,要求逐渐增加,模块也逐渐累积,程序也已经由最初的一行加码到数百行。整个设计过程比较简单,但是连续性很强,大多数学生并没有因为简单而无聊,反而是学习的过程觉得轻松,饶有兴趣。还认为自己可以开发系统,适应变化,很有成就感。
当然,这里的简单不是简化,而是分解,教学中采用迁移原理,将信号与线性系统课程里复杂信号分解为简单信号进行求解的原理迁移过来,将系统设计也进行分解,分解原则除了简单还是简单。实践表明这个方法确实可行,消除了学生的畏难情绪,引起学生的设计兴趣,为电子系统设计涂上最初的底色。
综合电子系统设计课程综合性、实践性很强,课程内容比较广泛,无论你的教学设计多么简单,学习起来仍然是有一定难度的,这就需要教师不但要在整体上把控有力,知识交互上也要讲究方法。如何引导学生从底层开始,逐步学习软件与硬件的点对点对接,完成学生的这种迁移与转换是关键问题。本课程按照系统结构分为底层,中层和顶层,共三层来引导。
1)底层的线路转换与数据转换:上述的七段数码管显示案例就是最典型的硬件线路与软件的控制对接,几条电路线可以转换为简单几句语句,而且这种转换从最基本最底层的电路已经开始,只是在转换过程中软件的控制一定要遵循硬件的逻辑结构,底层设计包含线路转换,基本数据输入输出的逻辑变换以及函数块的构建与移植等。掌握这种最基本的转换,在程控中实现程序语句与线路连接的等价代换。只要多做几个练习,经过这种底层的软硬件链接和强化,基础会得到非常大的固化,而且这种思维还会迁移到其他的课程学习中。
2)中层的芯片级封装与控制:当底层的线路能够按照基本要求转换或者对接完毕,就可以将芯片按照函数或者模块的形式进行封装,在封装时,特别注重每一个芯片在工作原理的学习和功能的使用,这个要很细致,不能操之过急,因此在功能描述时,依然采用底层的转换逻辑,将时序与功能表用程控语言进行点对点的迁移与转换,然后借助可视化等手段调试成功后封装,外挂微控制器外。中层设计比底层设计整体性强,但是按照芯片接口分类时,依然遵循简单原则,将分类后的接口按照底层的迁移逻辑进行函数设计,软件描述服从硬件的构造,实现软硬件与芯片级的接口链接与知识迁移,设计好的函数逐层累加,最后完成功能模块。
3)顶层的系统设计:当所需的芯片级模块已经封装好之后,顶层的系统设计就变得比较简单了,只要辨别清楚主函数里逻辑控制和时序控制就可以了。顶层的主函数设计要求以简洁为主,因为任何具体的功能要求在中层级完成,只要顺着正常调用逻辑,少量程序就可以实现。但是顶层的逻辑控制需要显示模块配合,达到调试目的。
经过这种三层迁移与转换,软件与硬件之间原理简单明了,切换机制自如,软件可以当作硬件,硬件可以当做软件,从底层到顶层,逐步拾级而上,不再畏惧设计难度和系统复杂性。当学生掌握了钥匙,自信心再上一层楼,设计兴趣也再次提升。
可视化教学不是一般意义上的可视化编程,可视化编程在语法的控制与检测方面要求比较严格,消耗学生很大一部分精力。而可视化教学是在已有的开发环境中添加可视化硬件设计,在学习中注重解决电路的实现问题上。在上述的软件与硬件的联调过程中,借助开发环境和仿真平台,加入可视化器件,比如并口的LED、LCD 显示器以及设置的寄存器和RAM 存储器等,随时将调试过程的中间值显示出来以帮助验证。这些可视化器件并非仅仅只是一个中间验证环节或者终端显示界面,而是与前面的入门案例和知识迁移相结合,一边做着显示与提示,一遍还需要复杂的程序编制来驱动显示器本身。另外,在驱动显示的同时还有函数调用,又因为显示器本身还是一块硬件芯片,编写驱动函数时还涉及软件上的接口与硬件的对应和封装。所以,在展开可视化教学时,除了显示与验证的功能外,还存有开发与设计的成分在里面。
引入可视化教学,使程控调试变得直观易行。学生可以充分利用时间碎片自学自检地完成设计项目,好像系统开发变成了生活的一部分,不知不觉,兴趣就培养出来了。
按照上述的教学方式与思路,进行教学效果检验。首先提前布置3 ~4 个综合系统设计题目,有难有易,自由选择,然后抛出诱饵,以作品的完美度作为成绩评判标准。学生在选题时进行人员组合,有的一个宿舍选一个题目的,也有一个宿舍四个人特意选两个课题的,四个人两两讨论,再互相讨论;也有几个要好的学生选一个题目的,便于交流;还有就是学生根据兴趣或者难易程度,分散的,自由的任意选题。
课程调试中也会有各种问题出现,但是学生基本可以解决语法、变量、接口和一般的功能问题,遇到算法和逻辑性问题会热烈讨论,也会大胆提出自己的见解。基础好的学生不但在功能上有所翻新,而且在算法上也会寻求简洁程序编制,做出与众不同的作品来。总的来说,学生经过前期的教学引导与实践训练,在方法、思路和系统的软硬件设计的独立性已经很强,在学习的积极性方面也表现活跃,可以完成该有的设计任务。甚至有的学生对当时的作品不太满意,经过不断琢磨与改进,还会重新提交更加完美的作品。事实证明,当有足够的设计兴趣和设计信心,再加上充裕的时间,每一届学生都有很特别的创新性作品,可以用百花齐放、百家争鸣来形容。
课程结束后,许多学生反馈说这门课容量大、负担重,但是可以学到很多的东西,特别是程控方面得到很好的锻炼;有的学生说可以多开这样接地气的设计课;部分学生说离教师一万行程序开发的目标较远,过后会继续补齐(因为在开课之前,要求学生至少编写一万行左右的控制代码)。总之,经过系列的教学方法与思路的改进,大大提高了学生的学习积极性。
综合系统设计课程不但需要学生掌握硬件设计,更重要的是能够程序编制,自动控制,因此需要在教学中不断改进教学思路,完善教学方法,努力提高学生程控的兴趣与能力。首先,从简单的理念入手,提起学生的入门兴趣,再以可视化与知识迁移为手段,强化学生的学习技能,再以课题目标为引领,深入电子系统设计的精髓。
目前来说,学生对这门课设计兴趣浓郁,比较认可目前的教学方法,普遍认为可以巩固和学习到较多的专业知识。
实践是检验真理的唯一标准,经过实践的检验,舍弃不恰当的方法,推广有价值的方法,只要这种教学尊重学生发展的规律、尊重认知发生的过程,最终肯定会有所收益。综合电子系统设计课程在程控教学时,基于学生的入门基础和兴趣培养,不断探索、取舍与改进,取得了较好的教学效果。