基于单片机任务导向的C语言课程强化教学改革与实践
作者: 张程 李小民 张延生 曲志鹏
摘 要:C语言和单片机是高等院校电子类专业本科阶段开设的两门非常重要的专业基础课和专业课,两者应是前后承接,是基础与应用的课程接续关系。但是,在传统教学过程中,由于两门课程衔接的不连贯,使得学生对于C语言的编程应用,特别是单片机方向的C51编程存在很大问题。该文针对这两门课程开展研究,重点在于“架起一座桥”,使得C语言与单片机课程的衔接更加连贯,学习效果更加完整。通过分析C语言课程教学现状,设计并实施基于单片机任务导向的C语言课程强化教学改革,改革课程评价指标,实施并总结教学经验,持续推进后续改革计划。该文所研究内容,无论是对于学生在校阶段的课程学习、毕业设计,还是对于其毕业后从事研究工作或者学业深造,都有极其重要的意义。
关键词:应用型本科;C语言课程;单片机任务导向;教学改革;课程改革
中图分类号:G642 文献标志码:A 文章编号:2096-000X(2024)11-0125-04
Abstract: C Programming and Microcontroller are two very important basic and specialized courses in the undergraduate stage of electronics majors in colleges and universities, and both of them should be the successive relationship between basic and applied courses. However, in the traditional teaching process, due to the incoherence of the two courses, students have great problems in the application of C Programming, especially in the direction of microcontroller C51 programming. This paper focuses on the research of these two courses, focusing on "building a bridge", so that the C Programming and Microcontroller courses are more coherent and the learning effect is more complete. By analyzing the current teaching situation of C Programming course, designing and implementing the enhanced teaching reform of C Programming course based on Microcontroller task-oriented, reforming the course evaluation index, implementing and summarizing the teaching experience, and continuously promoting the follow-up reform plan. The research content of this paper is of great significance for students' course learning and graduation design in school, as well as for their post-graduation research work or further study.
Keywords: applied undergraduate colleges and universities; C Programming; SCM task orientation; teaching reform; curriculum reform
在高等院校电子类专业本科阶段人才培养方案中,C语言程序设计和单片机原理及接口技术是非常核心的两门课程。其中,C语言是编程入门的基础课程,也是后续众多专业课程的前导课程,例如自动化专业开设的可编程控制器原理及应用、单片机原理及接口技术、DSP原理及应用、ARM嵌入式原理及应用等课程[1-3]。通过学习C语言,要求学生掌握编程的基本规范和技巧,掌握软件编程的必要技能。与此同时,作为电子类专业本科阶段的另一门重要课程——单片机原理及接口技术,则要求学生在掌握软件编程的基础上,结合单片机硬件进行一定功能的编程训练,使得学生具有单片机控制系统独立编程的能力,能够设计并实现小型的单片机控制系统[4]。C语言和单片机课程为电子类专业的学生提供了重要的基础知识和专业技能[5-6]。通过学习这些课程,学生能够掌握程序设计的基本思想和方法,具备软、硬件开发能力,并且能够独立完成电路设计和系统调试等任务。
综上,C语言和单片机是前后承接,是基础与应用的课程接续关系。但是,在多年授课过程中,教师感受到学生对于C语言的编程应用,特别是单片机方向的C51编程存在很大问题。学生在学习C语言课程时,很难想象或理解C语言在单片机课程中的作用,而在学习单片机课程时,又容易遗忘C语言语法,造成了两门课程衔接的不连贯。本文针对两门课程开展研究,重点在于“架起一座桥”,使得C语言与单片机课程的衔接更加连贯,学习效果更加完整。
掌握C语言编程方法和单片机编程技能,这对于电子类学生而言,是本科学业的重点学习内容之一。本项目所研究内容,无论是对于学生在校阶段的课程学习、毕业设计,还是对于其毕业后从事研究工作或者学业深造,都有极其重要的意义。
一 C语言课程教学现状分析
通过分析传统C语言课程的教学现状,总结主要问题如下。
教学目标和内容与专业需求的不匹配。传统的C语言教学往往没有明确的专业针对性,无法满足不同专业的需求。这导致学生在实际应用中无法将所学的C语言知识与后续专业知识有效结合,缺乏实际应用能力。
缺乏针对后续课程应用的过渡性教学环节。传统的C语言教学往往没有为学生提供过渡性、引导性的教学环节,帮助他们逐步将C语言知识应用到专业设计中。这导致学生在后续实际项目中无法灵活运用C语言,造成学习效果不佳。
跨学期开设后续课程导致C语言知识遗忘。在单片机课程教学中,学生可能会遗忘或储备不足之前所学习的C语言知识。这导致他们在学习单片机课程时需要花费额外的时间来复习和补充之前的知识,从而降低了学习效率。
综上所述,传统的C语言教学缺乏对特定专业的教学目标和教学内容的强调,缺少课程间教学的过渡和引导,以便于更有效率地使用C语言工具进行专业设计[7-8]。在单片机课程的教学中,存在着对C语言知识的遗忘普遍问题,导致学习效率下降。由此,需要进行C语言课程改革以提高学习效果[9-10]。
二 课程教学方案改革
基于上述分析,具体设计并实施的教学改革方案如下。
(一) 理论教学改革设计
为了达到两门课程的“桥梁”连结作用,在C语言的课程设计方面融入了单片机知识点。分为理论教学设计和实验教学设计。其中,C语言的理论教学中,在数组、函数章节融入单片机对于数组的应用、模块化编程的思想和训练目标。相应的C语言实验课程也同步加强单片机编程的实操训练,进一步培养学生软件、硬件综合调试的能力。具体的课程实施方案设计详见表1。
根据表1,教师可以根据每个章节的教学内容设定更有针对性的理论教学目标,并采用“将单片机应用渗透于C语言编程”的教学方法进行教学。在C程序结构设计融合单片机环节,将C语言课程中的“顺序结构”“循环结构”和“分支结构”与单片机编程的程序功能结合,让学生理解无论多复杂的程序,都需要由上述基本结构进行有效组合,以实现程序功能。在数组融合单片机环节,将C语言课程中的“数组”与单片机编程时的数码管段选编码字库结合,让学生理解数组在多个同种类型变量的定义、计算及引用方面的便捷和高效。在函数融合单片机环节,将C语言课程中的“函数”与单片机编程时的程序架构结合,让学生理解实际编程中,需要使用“模块化”编程的思想,利用函数的定义和调用,更加高效、合理地使用功能模块,以提高编程效率。通过讲解、示例演示和练习题等方式,帮助学生理解C语言的基本概念、语法规则以及数据类型和运算符在单片机任务中的实际使用,以便于学生更直观地理解C语言程序编写的方法和意义。
表1 课程实施方案设计
(二) 实验教学改革设计
根据单片机课程的基础实验内容,设计与C语言相关的单片机融合实验项目,帮助学生将C语言理论知识应用到硬件实物系统中。实验项目包括流水灯、定时器、按键及外部中断部分的简单程序编写、程序调试和特定功能实现等。通过实验项目的实践,学生可以巩固并应用所学的C语言知识,培养其实际操作的能力。单片机融合实验教学具体内容见表2。
根据表2,教师可以利用三次实验的时间,在实验环节将单片机知识直观地融合到C语言实验中,给学生提供更加明确的学习目的。
在“点亮第一盏灯”实验中,教师第一次引入单片机的实验操作,首先需要向学生介绍单片机Keil开发环境,并与C语言编程开发环境对比,让学生有意识地区分、归纳两种开发环境在操作步骤上的异同,不要混淆;其次,教师需要引导学生对单片机电路原理图进行认知,如图1所示。由于该实验中LED灯发光二极管的电路原理知识在模拟电子线路课程中已学过,故将学生从理论引到实际为讲解的重点,实验具体内容为:用P1.7口做输出口,接1只发光二极管,编写程序,使发光二极管不停地闪烁,闪烁周期为0.4秒,可以利用软件延时完成。通过上述教学过程,让学生实际体验通过C语言编程实现单片机功能,有助于促进学生的学习兴趣。
在第二阶段的“让灯循环点亮”实验中,从点亮一盏灯扩展为点亮多盏灯,实验具体内容为:用P1.7、P1.6、P4.7和P4.6口做输出口,各自接1只发光二极管,编写程序,使4只发光二极管不停地闪烁,闪烁周期为0.4秒,可以利用软件延时完成。让学生实际操作并思考如下问题:Keil运行和Visual C++ 6.0运行的异同,注意区分,不要混淆;单片机的例程中,是否理解main()函数的内容;是否理解while(1)循环函数的作用;Delay200ms()函数是在何处被调用的。通过上述教学过程,让学生理解while循环的重要作用,并看懂函数调用与被调用的关系。
在第三阶段的“按键控制点灯”实验中,提出人机交互的概念并利用按键触发实现对于单片机的控制。实验具体内容为:利用两个按键控制LED灯,其中key1控制led1的亮灭,key2控制led2的亮灭,也可以自行设计按键功能,例如对于多盏灯循环点亮的控制等。让学生理解单片机独立按键原理及编程方法,如图2所示。让学生实际操作并思考如下问题:GPIO()函数是在何处被调用的;为什么主程序通常使用while循环而不使用for循环。通过上述教学过程,帮助学生从实际需求入手,分析C语言语法的理论原理及实际应用。
(三) 持续改进和优化教学内容
教师需要定期评估和反思教学内容的效果,不断改进和优化教学内容。在教学实施过程中,通过听取学生的反馈意见、观察学生的学习情况和成绩表现等方式,了解教学内容改进的不足之处,并进行相应的改善和调整,更新教学内容,使课程改革更贴近实际应用和学生的需求。