IO口输出控制实验设计
2018-03-15叶希梅
叶希梅
(武夷学院 机电工程学院,福建 武夷山 354300)
嵌入式系统在各行各业中广泛应用,与之对应的教学实验内容、方法、设备等研究工作也开展的非常激烈。漆强[1]介绍了嵌入式口袋实验室的设计过程,李杜蕾等[2]针对传统教学中存在专业课实验时间迟、与工程实践脱节等问题,然后以物联网智能家居系统为例开展嵌入式系统教学与实验的改革,曹俊武等[3]为了理顺嵌入式系统教学、实验、实践等关系,创建了嵌入式实验创新平台,整合嵌入式系统基础实验、操作系统实验、工程训练项目等内容,郭国法等[4]引入CDIO工程教育理念开展嵌入式系统教学与实验,使嵌入式系统的实验项目与工程应用结合度更高。郑宁汉等[5]讨论了如何设计一个适应现代学生的实验,主要从完整性、开放性、可升级性、灵活性角度进行设计,较好的激发学生学习兴趣。综上所述,目前的嵌入式系统实验教学研究主要以体系、方法、系统方面的研究居多,而具体实验项目设计方面的研究较少。本文以常见的IO口输出控制实验设计为例,分析实验内容设计如何将理论知识与工程应用相结合。
1 常见IO口输出控制实验
常见的IO口输出控制实验有LED灯控制、蜂鸣器、流水灯等,其中流水灯实验电路如图1所示。实验程序通常是用程序控制LED从左到右逐个点亮或多个灯点亮。对应的实验程序简单明了、直观易懂,如图2所示。该实验内容简单,基本实现了IO口控制方式的验证。学生实验时可操作和调整的内容少、实验过程简单、实验不充实。因此,有必要重新设计实验程序,引导学生深入理解IO口的工作原理和控制方法,以便更好的进行后续学习。
图1 单片机流水灯实验电路Figure 1 Experimental Circuit of Single Chip Microcomputer Pipeline Lamp
图2 两种LED流水灯控制程序Figure 2 Two control crocedures of LED Pipeline Lamp
2 参数化IO口输出控制实验设计
上述实验程序的数据以常数的方式给定,虽然实现了所需的功能,但却很难与其它程序共享程序。若将实验程序的各种数据参数化,就可以更好进行程序共用。我们可以把LED显示的数据和LED的亮暗时间当作参数,把LED控制功能用函数包装起来。实验时,只要用不同的参数代入参数化IO控制程序,就可以得到LED显示内容与亮暗时间各不相同的实验现象。图3左侧程序为参数化IO口输出控制基本程序,右侧程序调用左侧基本程序,代入合适的数据,实现了流水灯功能。通过调整时间,还可以给流水灯的每一阶段不同的时间。
图3 LED控制功能函数与流水灯应用程序Figure 3 LED Control Function and Pipeline Lamp Application Program
3 数据化IO口输出控制实验设计
参数化的IO控制函数让简单的LED电路有更加丰富的功能。若将上文中的LED控制功能函数的参数以变量形式代入,再添加一些辅助程序,则可以设计出更加有意思的功能程序,如LED摇摇棒,LED点阵显示器,闪光莫尔斯码发送器等。下面以闪光莫尔斯码发送器设计为例说明IO口输出控制函数的数据化实现过程。
在设计闪光莫尔斯码发送器时,首先需要了解莫尔斯码的特点和发送方法,然后设计基本莫尔斯码发生程序和莫尔斯编码表。例如ABC的莫尔斯码分别是:点划,划点点点,划点划点。用16位数的高8位表示码数,低8位表示编码内容(0为点,1为划),ABC的编码分别为0x202,0x401,0x405。根据编码规则和莫尔斯码发送时间规率,设计出莫尔斯码发生器程序如图4所示。下面的函数以参数化IO口输出控制函数为基础,根据莫尔斯码的信息,将LED的亮暗的时间信息用变量代入,实现了莫尔码的输出功能。
图4 莫尔斯码发生器程序Figure 4 Morse code generator program
4 IO口输出控制实验数据记录
原有IO口输出控制实验基本实现了IO口功能的演示与训练,实验数据方面几乎没有什么可记录的内容,而实验数据的分析对于理解实验原理、灵活应用实验原理都有很重要的作用。加入参数化和数据化之后,IO口输出控制实验的数据包含了实验现象、LED亮暗时间,LED亮暗情况、LED控制数据、不同时间与数据的实验现象差异等内容,数据记录表格如表1,2所示。通过这些表格,建立起数据与实验现象的对应关系,分析实验数据与实验现象之间的对应关系和不同行数据对应的实验现象差异,可以更好的理解IO口输出控制功能和应用。
表1 IO口输出参数化控制实验程序测试Table 1 Test of Parametric Control Experiment Program for IO Port Output
表2 莫尔斯码发送程序功能测试Table 2 Functional Test of Morse Code Sender
通过对数据和实验现象的分析,较好的实现了IO口功能与结构化程序设计知识的融会贯通。
5 结论
本文针对常见的IO输出控制实验存在的实验过程简单、不充实、不方便调整等问题,设计了参数化IO输出控制程序和数据化IO输出控制程序,在原先验证性实验程的基础上加入有效的实验量化数据和设计性实验内容,将程序设计基础知识与硬件电路进行有效结合。该实验设计丰富了实验内容和实验现象。经过3轮实验教学,学生实验后对IO口控制功能的应用更加熟练,学习兴趣也有较大提高。