APP下载

基于自研硬件设备编程的程序设计基础课程教学改革探索

2014-03-26商新娜张宝森孙连英杨继萍

实验技术与管理 2014年7期
关键词:显示器程序设计编程

商新娜,张宝森,孙连英,杨继萍

(1.北京联合大学 信息学院,北京 100101;2.北京林业大学 信息学院,北京 100083;3.北京联合大学 北京市信息服务工程重点实验室,北京 100101)

1 程序设计基础课程教学现状

程序设计基础课程是计算机科学与技术、软件工程、通信工程、电子信息工程等相关专业学生的专业基础课程,是学生在大学阶段接触的第一门程序设计课程。

程序设计基础课程的目标,从狭义上来讲,是让学生掌握一门编程语言,能够运用该语言解决简单的问题,但更深层的目标应当是培养学生程序设计的思想、描述客观事物的方法、确定解决问题的方案,并用正确的程序设计语言表达,最终调试出正确的程序。

很多文献都指出程序设计基础课程教学有很多困难,并进行了多方面的改革。在教学计划方面,采用明确教学目标、精选教材[1-2]、进行分层教学、采用甲乙类教学方案等[3];在教授方面,采用案例驱动[4]、项目驱动[5];在实验方面,精选实验题目、增加答辩环节等[6];在考核方面,采用上机考试、网络考试平台[7]等。

程序设计课程难度大的深层的原因有两个:

(1) 学生计算机基础知识薄弱。虽然学生能够上网,拥有手机、平板电脑,但学生对信息的存储与表达一无所知,几乎仍然是计算机盲。在《高等学校计算机科学与技术专业核心课程教学实施方案》[12]中关于程序设计课程有明确的建议:学生应该先修过或已经掌握计算机导论或计算机基础主要内容,了解计算机的发展过程,理解信息的存储与表达方法,理解计算机的基本构成和工作原理,并能够熟练地操作计算机。这个要求与学生的现状有明显差距。

(2) 与其他课程相比,程序设计课程有它独特的鲜明特色。在学习过程中,学生的角色已经发生了变化,不再是被动的知识接受者,而是运用知识进行富于创造性工作的人。学生就应该像一个电影导演,要自己选择演员(选择变量)、设计演员的动作和戏剧情节场景(过程与算法),还要实地拍摄(调试修改)。学生从惯性的被动接受知识,转变为进行能动的创造劳动。角色的转变,是程序设计课程面临很多困难的重要因素。

2 教改思路

教改的目标是为了在有限的学时内完成程序设计基础课程的教学目标,激发学生的学习热情,让学生主动学习程序设计知识。结合近年来社会上对于软硬件结合开发旺盛的发展和需求,课题组自主研发了硬件设备CCX-M256点阵显示器,通过对硬件设备的控制编程,让学生了解软硬件结合开发的思路,体会C语言的应用情况,也为后续的操作系统、硬件控制、移动应用开发等课程的学习打下基础。

教学实施中,仍然以传统的知识点贯穿整个教学过程。将实践环节分为2个部分,前半部分为基础知识点练习和应用,通过减少验证性实验、增加设计性实验来增强学生运用知识的能力。后半部分为软硬件结合实验,经过精心设计实验过程和内容,由浅入深,综合应用前面学到的知识点,在硬件设备上调试应用。

3 教改设计及实施

3.1 设计开发硬件设备

自主设计硬件编程设备CCX-M256点阵显示器(见图1),由USB接口芯片、列寄存器、行译码和点阵显示模块组成。其硬件结构如图2所示。运行原理是将某一行的列数据(16位)发送给列寄存器,将行的序数发给行序寄存器以选择控制某行。采用逐行扫描的方式,控制点阵进行工作,即显示文字、图案和动画。CCX-M256点阵显示器简单小巧,与计算机连接只需USB口,可以在多种编程环境下工作,如Visual C++等。

图1 CCX—M256点阵显示器外观

图2 CCX-M256点阵显示器硬件框图

3.2 设备操控

为了屏蔽复杂的硬件知识和电路原理,让学生把注意力集中在软硬件结合开发的应用上,自研设备提供了很多API接口函数,学生了解函数功能和调用方式后,就可以进行编程控制硬件设备。

3.2.1 单行显示原理

控制一行中一个或某几个LED亮,需要将相应的编码一次性输出。例如,如果要点亮显示器第3行的第5个LED,则行数据应当为2,该行各列的编码为00001000 00000000,表示为16进制为0x08和0x00。定义数组msg存储行数据,输出代码应当是:

unsigned char msg[4];

msg[0]=0x08;

msg[1]=0x00;

msg[2]=2;

msg[3]=0; // 附加一个无符号数据,为电路需要

然后调用API函数将数组msg发给目标设备。

3.2.2 汉字或画面显示原理

针对显示器的硬件特点,汉字与图形的编码都有16行。每行的16位点阵码对应个2字节,可用2个无符号字符型数据存储。若每行的字节数据中用0表示LED不亮,用1表示LED亮,则需2个无符号字符型数据,可以用C语言的16进制数据存储。例如汉字的“计”字,通过点阵换算,形成16×2的二维无符号数组,unsigned char data[32] ={0×00,0×40,0×40,0×40,0×20,0×40,0×20,0×40,0×00,0×40,0×00,0×44,0×F7,0×FE,0×10,0×40,0×10,0×40,0×10,0×40,0×10,0×40,0×12,0×40,0×14,0×40,0×18,0×40,0×10,0×40,0×00,0×40}将这个数组利用循环逐行发送给硬件设备,就可显示汉字,如图3所示。

图3 汉字显示效果

实际上,可以借助EXCEL和WORD快速实现字符编码。例如对于汉字的“王”字,编码过程见图4所示。

图4 汉字编码

3.2.3 循环稳定与速度控制

良好的循环可以对软件的稳定性和速度进行控制,也可以结合定时器完成速度控制,关于定时器的使用,可以参考有关著作[13]。CCX—M256点阵显示器采用三重循环进行稳定性和速度控制,其原理为:内层循环完成汉字或一幅画面的16行点阵输出,中间层循环的循环次数完成画面稳定性或速度控制,循环次数越少速度越快。外层循环用于切换不同汉字或画面的点阵数据。

3.3 典型教学案例

3.3.1 字符滚动和切换

通过循环结构,控制多个字符和汉字的切换和滚动显示,如显示“北京欢迎你”这5个汉字,切换显示的效果为5个字逐个显示,中间有一定的时间间隔。滚动显示分为垂直滚动和水平滚动,垂直滚动通过循环控制点阵数组按行滚动、送到缓冲区的次序不变实现,而水平滚动通过循环控制全部16行数据按位循环移动一次移动1位的方法实现。

3.3.2 简单动画

通过设计2—n幅“画面”的轮流显示,实现简单动画显示,如显示一个海鸥飞翔的画面,可以设计4幅图画,程序控制轮流显示出来如图5所示。

图5 简单动画设计过程

3.3.3 图形旋转

通过循环控制数据矩阵,实现图形的按“环”旋转,如图6所示。

图6 图形旋转

3.3.4 贪吃蛇

这是一个综合应用的案例,通过程序控制,实现贪吃蛇的运动、食物的随机出现、计分、蛇身长度变化等控制,如图7所示。

4 对编程基础的强化

通过对硬件设备编程,强化了学生的编程基础,主要体现在以下几个方面:

(1) 对数据类型的强化。通过对汉字和图形的编码输出,学生自然地理解了无符号数据类型,并由此理解了其他类型数据。

图7 贪吃蛇游戏设计及效果

(2) 对循环的强化。通过对汉字稳定控制和动画控制,学生掌握了三层循环结构,理解了循环的作用及循环要素对程序的控制。

(3) 对数组变换的强化。通过对16×16到16×2矩阵的转换,学生理解了不同维度数据之间的关系,并对使用二进制表示事物的方法有所了解。

(4) 对函数的强化。采用模块编程方法,学生体会函数的设计和使用,并对团队协作开发过程有所了解。

(5) 对指针的强化。通过数组的变换和指针的移动,理解指针的奇妙和强大作用。在传统教学中,这一直是难度很大的一个知识点。

(6) 对文件使用的强化。通过对汉字点阵库的使用,使学生理解了二进制文件的操作及其便利。

5 教学效果及评价

该教学改革分别在2010级和2011级本科生的程序设计基础课程中实施,取得了较好的教学反馈和效果。所有学生都在完成传统实验要求的基础上参与软硬件结合实验。学生对于能通过C语言编程,在点阵显示器上显示出自己的名字并使它们动起来很有成就感。超过60%的学生完成了中等难度的软硬件结合实验,20%的学生对硬件编程产生了浓厚的兴趣,根据自己的想法试探更高难度、更为复杂的软硬件编程。

我院根据学生的学习和反馈情况,举办程序设计基础大赛,以点阵显示器为硬件载体,以软硬件结合开发为主题,学生参与踊跃,作品形式和内容都非常丰富,提高了程序设计基础课程的影响力,激发了学生的学习兴趣,活跃了学生的业余生活。

6 结束语

实践教学是程序设计基础课程的重要环节,通过软硬件结合开发的教学改革,提高了该课程的趣味性和实用性,对于提高学生的学习兴趣、动手能力以及学习的自主性和创新性都发挥了积极的促进作用,是一项有益的教学改革。

[1] 李龙淼.《C 语言程序设计》教学改革实践与探索[J].海南广播电视大学学报,2012(2):138-142.

[2] 何雪芳.独立学院计算机专业C 语言程序设计实践教学的探索[J].科教文汇,2012(4):59-61.

[3] 章品正.“程序设计实践环节”课程的教学改革[J].电气电子教学学报,2012,34(3):66-68.

[4] 王继东,赵瑞斌,陈桂林.计算机专业C语言程序设计课程教学改革探索[J].计算机时代,2012(2):54-57.

[5] 朱旻如,郭剑,朱立华.程序设计实践课程教学改革探索[J].计算机教育,2010(22):109-115.

[6] 林勇.C语言课程设计的实践教学探讨[J].电脑知识与技术,2010(29):8274-8276.

[7] 林震.高校C 语言程序设计实验教学的改革与探索[J].科技信息,2011(27):581-582.

[8] 孙慧然,刘刚,孙静波.“程序设计基础课”理论与实验教学的改革与实践[J].实验技术与管理,2012,29(4):299-230.

[9] 彭海云,马占欣.基于PBL+竞争机制的“程序设计基础”课程教学模式探究[J].实验技术与管理,2012,29(6):174-177.

[10] 杨锋英.程序设计基础课程教学探索[J].计算机教育,2013(4):25-29.

[11] 耿国华.程序设计能力培养模式的探索与实践[J].中国大学教学,2009(3):30-32.

[12] 教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2009.

[13] 张宝森.C语言程序设计习题解答和实训指导[M].北京:机械工业出版社,2010.

猜你喜欢

显示器程序设计编程
把显示器“穿”在身上
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
IDC发布《2018年PC显示器市场跟踪报告》
从细节入手,谈PLC程序设计技巧
一种新型点阵显示器的设计
高职高专院校C语言程序设计教学改革探索