“单片机原理”课程逐步启发式的课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“单片机原理”课程逐步启发式的课程设计
徐朝农
【摘要】本文针对“单片机原理”的教学要求,设计了一个启发式的课程设计,通过在单片机平台上的一个计算器程序的逐步实现,在调试中让学生掌握单片机的硬件资源编程方法、领悟软硬件的统一性、理解图灵机计算的本质和图灵计算的限制。

最为重要的,课程启发了学生们从学科体系的高度去理解课程的内容。

%To meet the teaching requirement of Microcontroller Principle course,a hearistic course design is de-signed in this paper. By gradually realizing the function of a calculator based on microcontroller,students not only master the programming method for hardware resource in microcontroller,but also realize the unity between hard-ware and software. They also understand the essence of Turning machine and the restriction of Turning computing. The most important of all,they are enlightened that the contents of courses should be mastered from the height of disciplinary organization afterward.
【期刊名称】《电气电子教学学报》
【年(卷),期】2016(038)001
【总页数】3页(P115-117)
【关键词】单片机;图灵机;计算器
【作者】徐朝农
【作者单位】中国石油大学计算机科学与技术系,北京102249
【正文语种】中文
【中图分类】G712;TP368.1-4
“单片机原理”课程是大学信息类专业的重要课程之一,它属于实践性非常强的课程。

由于课程的内容不仅直观明了,而且易于促进学生进一步加深理解已学的专业课程,因此非常容易带动学生的学习兴趣。

目前,国内的“单片机原理”课程内容都以经典的MCS-51核为核心,介绍其处
理器核以及外部IO端口、定时器、串口等外部资源的开发,其配套实验也重点集中在如何对片内资源的使用,侧重点放在系统开发上。

对于计算机专业的学生来说,学生在学习以后,普遍感觉课程内容虽然还不错,但和计算机相关理论之间并无太大联系,有不少学生认为:即使不学习任何计算机的理论课程,只要熟悉了汇编语言,掌握了对片内硬件资源的开发,就已经达到了课程学习的目的。

为了纠正这种片面的认识,让学生从计算机学科体系的高度来认识这门课程的作用,我们除了正常的授课内容外,还专门面向计算机专业的学生开设了一个逐步启发式的课程设计,通过这个课程设计,让他们在设计过程中理解图灵机计算的本质,从而学习编写“健壮”的程序;更为重要的是:通过对课程训练内容的反思和深化,让他们逐步理解多门相关课程之间的关联[1,2]。

整个课程设计安排一周的时间,通过连续的高强度训练,学生普遍反映收获很大,尤其是对计算机专业的知识体系开始有了一定的认识,为以后的专业学习指明了方向。

作为一个逐步启发式课程设计的例子,我们要求学生设计一个基于图灵机的计算器。

1.1 简单计算器的设计
这项课程设计的开始部分,先要求学生基于单片机实验箱的键盘和液晶硬件,设计一个只支持10以内数的、单次运算的计算器。

可以想象,由于只支持单次运算,
数又限于10之内,因而很容易实现。

这个设计的目的在于让学生通过一个简单但完整的实例,熟悉单片机开发流程,尤其是调试流程。

1.2 设计任务的拓展
下一步,我们拓展该课程设计的深度,要求学生实现一个支持任意10进制数的混合四则运算(不支持括弧)。

很多学生仍然按照上一节简单计算器的方法进行设计,完全采用顺序型思维来组织程序逻辑。

很快他们就发现由于分支之间的组合太多,如果还按照以前的思路进行编程,很容易出现顾此失彼的问题,因此设计出现了“不健壮”的问题。

此外,由于程序结构不科学,不能有效支持功能的按需扩展,每加入或删除一个功能,都需要对程序进行大幅度修改,从而又引发了新的错误。

学生们感觉陷入了困惑中。

1.3 基于状态机的设计方法
在学生经过思考却得不到解答的时候,我们及时讲述了用有限状态自动机的方式进行程序设计的思路,并要求学生暂停写程序,而首先花费一定的时间画出状态机,并对每个状态下的输入的合法性进行检查。

随后,再让学生按照已画出的状态机重新编程。

由于涉及状态太多,用状态图难以清楚表达,因此采用状态转移表来表达该状态机,如表1所示。

表中也明确表达了状态S0-S21的具体含义。

对表1中的内容进行必要的说明:N,M,X均表示操作数;DI为数字入栈、DO为数字出栈、SI为符号入栈、SO为符号出栈、C为计算、RI为结果入栈。

单元格分为两部分,分别为下一个状态和本状态转移过程中的动作(两者之间间隔一个“/”,如为空则无动作)。

单元格里的“/”表示在当前状态下,相应的输入是不合法的。

表中第一列为当前状态,里面的括弧表示堆栈中当前存的运算数和运算符的情况。

由于在画状态机时,已经主动引导了学生进行独立思考,另一方面,学生对基本的键盘、串口硬件资源的编程已经非常熟悉,因此他们无需再将精力停留在这些硬件
资源的编程以及对程序的辅助调试上,而着重于在逻辑层面上基于switch case语句实现状态机,因此很快地就实现了状态机的功能。

经过实验指导教师的验证,发现此时学生的程序都很“健壮”,能够有效应对乱按键的情况。

1.4 学生的感受
我们又进一步地引入了RTX51嵌入式操作系统,让学生们将程序移植到RTX51
平台上[4]。

其目的就是让学生们感受一下在裸机上编程和在嵌入式操作系统下编
程的区别。

经过询问,学生普遍认为设计思想的严谨性是导致程序健壮性的根本原因。

简单计算器设计由于程序结构很简单,所以编写程序时不易出现明显的错误,基于状态面的计算器课程设计则复杂得多[5]。

这项课程设计使学生明白,如果没有科学的设
计方法指导,完全按照常规的顺序思维来写程序,结果必定是错误百出。

课程设计即将结束时,我们又专门安排一节课介绍图灵机的思想[6]。

由于已经过
了思考和实践,学生们都能明白图灵机的本质,认为图灵机对计算过程的描述太准确了。

我们早已料想到学生们会产生这样的认识,因此在紧接的下一节课上,我们又对图灵机计算模型进行了批判,介绍了图灵机存在不可计算性以及产生该性质的根本原因,并引入了对NPC问题的介绍,重在说明图灵机的缺点。

我们又进一步介绍了量子计算[7]、DNA计算这些新型的计算模型的实质,以及当前这些非图灵计算模型面临的主要问题,从计算模型的发展这个角度来引导学生要以辩证的思维方式来看科学事业的发展。

很多学生课下和教师交流时都说:学了快四年的计算机课程了,至今才发现计算是如此的深奥和有趣,才发现哲学原理也是很实际的理论。

至此,大部分学生们都已经认识到,从专业体系的高度来看,单片机仅仅是个平台,这个平台为什么这样设计?如何在这样的平台上进行科学的程序设计?如何超越这个平台?这正是专业教育应该着重解决的问题,也是专业人才需要理解的问题。

通过逐步启发式课程设计的引入,教学效果很好。

这说明,课程内容并不在于授课
内容的多少,而主要在于如何科学地引导学生积极主动思考。

从实践入手,打通实践和理论之间的环节,让学生不仅理解教学内容,而且能从这些内容中深受启发,对专业体系有深入的认识,对于学生有方向、有目的的学习后续课程,有很大的帮助。

而对于教师来说,仔细琢磨学生在学习过程中的心理变化,分阶段地、有针对性地开展及时准确的指导,将会直接决定教学效果。

相关文档
最新文档