基于流水灯的“微控制器应用”课程项目教学设计

2018-03-12 00:44彭远芳,张静,黄晓峰
求知导刊 2018年36期

彭远芳,张静,黄晓峰

摘 要:“微控制器應用”课程是高职应用电子技术专业核心课程,对培养学生的分析问题、解决问题能力,以及创新能力都具有十分重要的作用。但由于课程逻辑性强,与其他课程的关联度大,加之高职学生专业基础较弱、主动学习意愿不够强烈,随着课程内容的逐步加深,许多学生会逐渐失去学习兴趣,教学效果不甚理想。如何让多数学生掌握课程的主要内容并保持学习的兴趣与动力,在项目教学设计中,基础项目设计的重要性不容小觑。文章以流水灯控制为主线,以最大范围涵盖课程主要内容为目的,设计了若干个基础教学项目,项目功能简单具体、可操作性强,在课程教学实施中避免了学生的畏难情绪,满足了学生对“微控制器应用”课程的基础要求,为进一步学习打下了基础。

关键词:流水灯;微控制器应用;基础项目设计

中图分类号:G712

文献标识码:A

收稿日期:2018-11-14

基金项目:上海工程技术大学教学研究项目“微控制器应用课程建设”(k201716003)。

作者简介:彭远芳(1968—),女,重庆人,副教授,硕士,主要从事C语言程序设计、微控制器应用以及电子线路板设计等课程的教学工作。

一、高职“微控制器应用”课程

高职“微控制器应用”课程以电子电路的分析与实践能力、电子线路板的设计能力为基础,学习以单片机为微控制器的典型小系统调试与开发的全过程,该课程涉及模拟电子技术、数字电子技术、集成电路应用、传感器应用技术以及C语言程序设计的相关知识,并为后续课程如CPLD/FPGA应用技术、嵌入式系统应用等课程的学习奠定基础,更为学生毕业后从事智能仪表、汽车电子及其他消费类电子产品的调试、设计与制造,以及继续学习与职业能力的提升起支撑作用,因此该课程对应用电子技术专业的学生显得尤为重要。

笔者提出通过项目教学法引导学生学习,为此设计了基础、提高、拓展项目以适应不同学习需求的学生,在教学实践中,由于学生学习基础、接受能力、主观能动性迥异,加之课程内容多学时少,之前设计的提高及拓展项目不能为多数学生所接受,为改变曲高和寡的处境?以流水灯控制为主线,以最大范围涵盖课程主要内容为目的,设计了若干个基础教学项目,在极少改变硬件组成的前提下,通过不同的控制方式将教学内容蕴涵于项目中,克服了学生在遭遇新知识点时的畏难情绪,使得多数学生能够跟着教师的思路学习,在经历这样一个慢热的过程后,基本掌握了课程基础内容,学习兴趣也由此被激发出来。

二、教学设计

图1为典型流水灯硬件电路(晶振电路和复位电路略),其中P1口作为外接独立式按键,P2口输出低电平点亮发光二极管。以该电路为基础,采用不同的控制方式,体现课程中最基础最重要的内容,具体设计如下。

(一)I/O口的基本应用

1.项目1-无键控制的流水灯

暂不考虑按键控制,I/O口的输出从1位发光二极管(如D0)的闪烁→(D0~D7)左移流水/右移流水→花样流水灯图案设计与实现。在项目功能实现的过程中,先要理解“闪烁”“流水”的原理,分别掌握利用左移/右移运算符、字符串循环左移/右移函数实现左右移流水的方法;对于花样流水灯,如设置从八路LED闪烁→左移流水→右移流水→两个亮点从中间向两侧舒展→两个亮点从两侧向中间收缩→八路LED闪烁为1次循环,掌握采用子函数调用实现花样流水效果,以及利用一维数组存储和输出花样流水图形数据表这两种方法。

2.项目2-通用I/0口键控流水灯

(1)单键控制的流水灯。为方便起见(如K0),KO未动作记为KO+0,按下/释放n次记为KO+n动作,项目设计中可设置K0+0为八路LED闪烁,K0+1左移流水,K0+2右移流水,K0+3两个亮点从中间向两侧舒展,K0+4两个亮点从两侧向中间收缩,K0+5隔路左移流水,K0+6隔路右移流水,K0+7左四路和右四路交替亮灭,K0+8则回到K0+0。

程序设计中,通过引入一次键动作的判断(包括按下/释放及键抖动处理)、按键动作次数的计数,掌握用两种分支结构(if-else if语句和switch-case语句)对按键动作次数进行相应的处理,并比较这两种分支结构的异同。

(2)多键控制的流水灯。依据图1,在功能设计上由简单到复杂,如基本功能可设计为Ki键动作(i=1~8),发光二极管Di被点亮;进一步可将上述花样流水图案进行分解,设计为Ki键动作,实现图案中的第i个流水动作(动作时长可自定义)。

通过项目1-2,学生掌握了通用I/O口的输入输出特性、程序基本结构和编程方法。

(二)外中断及定时器/计数器中断的应用

中断系统是单片机最重要的资源,包括外部中断、定时器/计数器中断以及串行口中断。中断系统的应用是重点也是难点,通过单片机外中断及定时器/计数器中断控制流水灯的运行。如图2,保留K2-K5并分别与INT0/INT1、T0/T1接口,项目具体内容如下。

1.项目3-利用外部中断控制流水灯

先引入INT0/INT1(K2/K3作为中断源),暂不考虑K4/K5,如设置无键按下为左移流水→右移流水的循环,K2动作则8路闪烁持续5S报警,K3动作则完成上述项目2中单键控制的花样流水灯功能(持续10S),INT0/INT1选用边沿触发。

该项目功能虽简单,但实现过程中涉及的知识点却很多也相当重要。如通用I/O口外接按键的软件去抖动和INT0/INT1外接按键的软件去抖动有何异同?如何实现?采用中断方式为何多选用边沿触发而不是电平触发?为何中断函数一般要求尽可能短?INT0中断函数如何设计,才能实现8路闪烁报警持续5s(INT1亦如此即完成花样流水灯持续10s的功能),需知多数学生均会将5s或10s延时放在中断服务函数中,这显然是不合理的,启发学生可以为INT0/INT1各设置一个标志位flag0/flag1,以及增设两个计数变量C0/C1,通过调用1s延时函数分别实现5s/10s延时,在此基础上将项目需要实现的功能通过逻辑关系加以详细描述,再利用编程语言实现,学生会发现这是一个无比奇妙的过程。

2.項目4-利用计数器控制流水灯

忽略K2-K4,为方便起见,K5未动作记为K5+0,按下/释放m次记为K5+m。项目设计为在K5按下m次完成花样流水灯的第m个动作(m=1~8),且持续ms(通过定时器T0实现)。

为此T1为8位自动重装初值的计数器,初值设置为0XFF,工作于查询方式;T0为定时器方式1,工作于中断控制方式(50ms溢出一次),另设置两个计数变量C0/C1,其中C0用以对K5动作次数进行计数,C1对T0溢出次数进行计数,实现1s-8s的延时。在程序结构上,选用switch-case结构,实现花样流水动作的分解与延时时长的配合。

(三)串口典型应用

串口是单片机最重要的资源之一,也是学生比较难以理解的内容。通过串口资源来控制流水灯,项目内容简单直观,学生易于理解。具体设计如下。

1.项目5-通过串口方式0控制流水灯

图3给出了利用串口方式0控制流水灯的电路,可以设计为Ki键按下发光二极管Di闪烁(闪烁间隔1s由T0或采用调用延时子函数实现)。此时串口用作同步移位寄存器,单片机的P1口每读入一组按键信息,RXD端作为数据移位的出口(设置为查询工作方式),在TXD所提供移位脉冲的控制下,低位在前、高位在后将按键信息逐位移出。

需要着重强调的是74LS164的输出QA~QH应与发光二极管Q7~Q0依此相连,以避免数据传输完成后出现“头朝地”的现象,并通过流水灯运行效果加以印证。

2.项目6-双机通信控制流水灯

图4则给出了利用串行通信控制流水灯(闪烁间隔1s仍需由T0或采用调用延时子函数实现)。可以看到,这是一个简单的双机通信系统,甲机向乙机发送8位数据,乙机将接收到的数据在其连接的数码管上显示。

串口的工作方式可以设置为方式1~方式3中的任意一种(设置为中断工作方式)。由于是双机通信,因此对甲乙两个单片机均需进行编程,通过这个简单的项目,学生更加容易理解串口发送和接收数据的典型流程,何时可增加奇偶校验位,何时可修改波特率以改变传输速度,并通过流水灯加以验证。

三、结语

以上通过流水灯涵盖了I/O端口典型应用、外部中断、定时器/计数器以及串行口应用,项目设计中也可将流水灯用于人机接口及其程序设计,如通过4只发光二极管、以四位二进制代码的形式显示4×4矩阵式键盘的键号,从实际应用出发,有关人机接口应用的项目选用显示器主要是LED数码管、点阵电子显示屏、LCD1602液晶显示器等。

教学实践表明:将课程主要内容蕴含于简单项目中,在课程教学中项目的硬件组成只有些许改动,更多的是通过更改控制方式,将课程内容有机地嵌入其中,采取灵活多变的方式激发学生的学习兴趣,同时增强了教学内容的系统性,使多数学生能够掌握课程的基础内容。

当然,对课程的深入学习是一定要通过深入研究具体、实用的典型单片机小系统而获得的,但不可否认课程基础知识的学习和掌握是提高与拓展的第一步。

参考文献:

[1]蔡燕玲.基于多知识点的单片机单一项目教学设计[J].信息技术与信息化,2016(5).

[2]纪艺娟.利用Keil与Proteus联调改进单片机实验课程教学[J].电子技术,2017(12).

[3]王可宁,王 伟,王青松.以专业认证为导向的单片机教学改革方法探索[J].教育现代化,2017(6).

[4]郑秋梅,王风华.“问题驱动”的研究性教学改革研究与实践[J].中国成人教育,2015(20).

[5]刘 平.深入浅出玩转51单片机[M].北京:北京航空航天大学出版社,2014.