问题驱动教学法在单片机应用教学中的应用研究
2014-07-02高娟田鑫鑫吴思
高娟 田鑫鑫 吴思
摘 要:问题驱动教学法是以问题为牵引,将提出问题、分析问题、解决问题作为主要内容和手段的教学法。本文通過单片机教学中的“流水灯”案例,浅谈“问题驱动法”在单片机应用课程教学中的应用。
关键词:问题驱动教学法;单片机应用;流水灯
问题驱动教学法是以问题为牵引,将提出问题、分析问题、解决问题作为主要内容和手段的教学法。它的突出特征是以提出问题方式引导学生主动学习和思考,因此如何在课堂教学中设计问题无疑是该教学模式的关键。
笔者从事单片机应用课程教学多年,在教学过程中多次尝试将“问题驱动教学法”应用其中,教学效果显著。该文通过单片机教学中的“流水灯”案例,浅谈“问题驱动教学法”在单片机应用课程教学中的应用。
1 问题驱动教学法应用实例分析
1.1 编写流水灯程序
为了引入流水灯,首先设计如下问题:在上一任务中已经实现用单片机控制8个发光二极管亮灭闪烁的任务,但是8个灯是同时亮灭的。那么我们能不能控制8个灯按照流水作业的形式一个一个的轮流点亮呢?由此引出流水灯的实现方法。
学生根据以前学过的知识,很快可以编写出程序,并将程序下载到单片机中,可以看到实现了我们预期的效果,8个灯依次轮流点亮了。
为了使学生熟练掌握流水灯程序的编写方法,可以引入趣味性的问题,从而达到吸引学生和增强他们的发散思维。可以提出一个新的问题:除了这一种流水显示方式外,还有没有别的显示方式呢?
大家经过思考得出还可以让8个灯依次全部点亮、双灯流水点亮、双灯相向点亮等,实现的方法就是控制P1口输出相应的数据即可。这时可以让学员自己编写程序,观察效果。
通过编写程序,实现各种各样的流水灯效果,学生有了较浓学习兴趣。接下来趁热打,又提出如下问题:看了刚才的流水灯效果,大家可以发现灯闪烁得太快,也即延时时间太短,那么怎样修改延时,增长延时时间呢?
1.2 增长延时时间
要增长延时时间首先要计算延时子程序的延时时间,由此引出延时时间的计算。
在12MHZ晶振频率下,前三条单周期指令的执行时间是1us,后两条双周期指令的执行时间为2us。因此:
内循环的延时时间是:255*(1+2)=765?S
外循环一次的时间是:765?S+1?S+2?S=768?S
外循环的执行时间是768*255=195840?S
粗略的计算:765*255=195075?S≈195ms≈0.2S
知道了原来延时子程序的执行时间是0.2s后,怎样增长延时时间呢?例如要增加延时时间为1s。
学员经过思考得出通过增加一层循环从而增长延时时间,修改后的1s延时程序如下:
DELAY1S:MOV R3,#100;延时1s的循环次数
DEL2:MOV R4,#10;延时10s的循环次数
DEL1:MOV R5,#250;延时1ms的循环次数
DEL0: NOP
NOP
DJNZ R5, DEL0
DJNZ R4, DEL1
DJNZ R3, DEL2
RET
将1s延时程序下载后,观察到流水灯闪烁变慢了。接下来又提出如下问题:MOV P1,#XXXXXXXXB和ACALL DELAY在以上程序中被引用了8次,而8个数据之间是有规律的,显然程序重复太多,能否使其简化?由此引出利用循环程序实现流水灯。
1.3 简化程序结构
循环程序的关键要用到循环左移指令RL A,首先设置循环次数和循环初值, 显示模式字送P1端口, 显示模式字左移1位,判断循环次数-1是否等于0,跳转到不同的地方。具体程序如下:
START:MOV R2,#08H
MOV A, #0FEH
NEXT:MOV P1,A
ACALL DELAY1s
RL A
DJNZ R2,NEXT
SJMP START
接下来又提出如下问题:上面这种方法只能简化流水灯程序,如果要让8个灯变幻出很多花样的闪烁方式,那程序还是要编写很长的,有没有什么方法用短一点程序可以实现多一些花样的闪烁效果呢?由此引出万能闪烁灯的程序。
1.4 万能闪烁灯
万能闪烁灯是利用查表程序来实现的。将要输出的数据都放在一个表格中,利用循环程序依次查表输出每一个数据,直到所有的数据都输出一遍再从头开始。
2 结语
以上就是问题驱动教学法在“流水灯”教学中的整个应用过程。在这个过程中,始终以问题引出新知识,且问题的设计由易到难、层层递进,符合人们对事物的认知规律。我们多年在单片机课程教学中运用问题驱动教学法,设计了一系列的问题引导学生学习,而学生通过观察、思考、联想,感受到成功的喜悦,也认识到学习这门课的意义,从而变被动学习为主动学习,提高了学习的兴趣。
此外,由于单片机应用是一门实践性很强的课程,因此,“问题驱动教学法”还应注重引导学生在实践中主动发现并解决问题。这一应用还需要更深入地探索和研究。该文仅做初步探讨,以期能抛砖引玉。
[参考文献]
[1]张广群,汪杭军,王保平.问题驱动模式在VB教学中的应用研究[J].计算机教育,2008(22).