微课教学设计之“数码管动态显示”
2021-01-02沙爱军郭丽红
沙爱军 郭丽红
(南京工程学院信息与通信工程学院 江苏·南京 211167)
0 引言
“微课”是“微型教学视频课”的缩写,是指通过精心的教学设计和组织[1],在5-10分钟左右时间内,为讲解具有重难点的某个知识点等而开展的微型的视频课程,其具有时间短小、内容精悍等特征,且得益于移动互联网和智能手机的发展,便于授课对象可以更好地利用碎片化时间,实现随时、随地的学习。
“单片机原理及应用”是通信、电子等专业的一门重要的专业基础课。单片机课程具有知识点多,内容细碎、原理抽象,需要理论联系实践等特点,将微课运用于“单片机原理及应用”教学中,将课程划分为一系列的小的专题和任务,通过讲解和讨论,在较短的时间内更好地帮助学生掌握重难点。本次以单片机原理及应用课程中的一个重难点:多个数码管的动态显示微课教学设计为例,做相关介绍。
1 数码管动态显示的教学内容和教学目标
由于数码管的动态显示以单个数码管显示为基础,所以将此次任务分解成2个子任务:(1)单个数码管的显示;(2)多个数码管的动态显示。
教学目标主要有:
(1)学习掌握单个数码管的显示原理及实现;
(2)学习掌握多个数码管的动态显示原理及实现;
(3)掌握相关的思政元素:引导学生学习科学的研究问题,以及课程涉及的相关的哲学知识。
本次微课采用项目驱动,从问题引入→任务分解:单个数码管的显示,多个数码管的动态显示→两个子任务的实现→进行拓展:讨论和思考[2]。在此过程中,引导学生循序渐进,不断深入问题,利用对比、动画展示、理论联系实际(keil和proteus仿真)等多种教学方法,帮助学生掌握数码管的显示相关知识点,并培养学生的思考问题的能力,提高科研、哲学素养。
2 教学设计
2.1 问题引入和任务分解
首先以2幅多个数码管的使用的图片引入,描述数码管在生活中得到广泛的使用,经常用于设备和仪表的显示,提出如何实现多个数码管显示?引出多个数码管的显示方法:静态显示和动态显示,以及本次课的重要内容:动态显示。然后将任务分解成2个子任务:任务1,单个数码管的显示;任务2,多个数码管的动态显示。前者是后者的基础。
2.2 任务1:单个数码管的显示
首先,以共阴数码管为例,讲解单个数码管的显示原理。从数码管的外观有a,b,c,d,e,f,g,dp等8个段、10个引脚开始,进而指出共阴数码管名称的由来,以求出字符0的段码为例,讲解了如何根据要显示的字符,在段选端加不同的电平,以控制数码管的不同的段的亮灭,并可由此得出显示字符对应的段码0x3f,用上面的求段码的方法得出了0-f常见字符的段码,并把它们依次存入一个数组ucharsegcode[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}中。归纳出数码管显示的原理:①公共端必须有效;②段选端必须送相应的字符的段码。
然后,实现单个数码管的显示电路和编程。将单片机P2口连接了数码管的段选端,数码管公共端接地。程序中,要显示字符0,只需要把字符0的段码通过segcode[0]送给P2即可。
并点出:单个数码管显示实质是静态显示,特点:①公共端固定接地(对共阴极数码管);②1个数码管单独需要一组段选线。
2.3 任务2:多个数码管的动态显示
首先,讲解数码管动态显示的含义。通过2个演示:(1)演示8个数码管显示的视觉效果:看起来好像所有数码管都同时在显示;(2)演示单步运行的数码管动态显示视觉效果,得出数码管显示的本质:多个数码管动态显示,实际上是逐个轮流点亮数码管,一个时间里面只有一个数码管显示,当1秒循环24次以上,由于人眼的视觉暂留效应,看起来所有数码管都同时在显示。
并以此抛出一个问题:眼见是否为实?启发学生思考,点出一个重要的思政元素:眼见未必为实。要学会探究事物的本质,要去伪存真,不被表象所迷惑。
然后,讲解了多个数码管动态显示的控制过程[3]。主要从段选端和位选端的设置角度,并采用和单个数码管静态显示对比的方法来讲解。两个不同点:①8个数码管的段选端并接,用一个端口I/O(1)共同控制,而不是1个数码管一组段选线;②8个数码管的公共端L0-L7,并没有固定接地,而是由另一个端口I/O(2)控制,称为位选线。
如何搭配位码和段码,实现数码管的轮流点亮,是此处重点讲解的内容。
讲解中,采用了动画展示如何实现8个数码管从左到右轮流显示0-7。以先让最左边数码管显示0为例,要显示0,可先把0的段码0x3f发送到段选线,由于是共阴数码管,可以先让最左边数码管的公共端L0为低电平,其余数码管公共端L1~L7为高电平,对应位码为0xfe,就能实现最左边数码管显示0。其它数码管显示也类似。这样就实现了一轮显示,添加循环就可以实现一直显示。并将获得的8个位码依次存到一个数组ucharposcode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}中。接着,结合电路和关键程序代码,讲解如何实现多个数码管的动态显示,并对数码管的延时时间长短对显示的影响进行了探讨。
数码管动态显示的仿真电路主要由51单片机和8个数码管组成。单片机的P0口控制数码管的段选线,P2口控制数码管的位选线。
程序结合disbuffer[8]={0,1,2,3,4,5,6,7,8}数组存放要显示的内容。数组segcode[8]和poscode[16]分别存放段码表和位码表,用程序中用变量i控制当前工作的数码管,调用语句 P0=codevalue[disbuffer[i]],P2=chocode[i],delay()等。当i=0时取显示内容disbuffer[0],得到显示内容0,通过segcode[0]查到对应的段码0x3f送给P0,再通过poscode[0]查到位码0xfe送给P2,控制只有第0个数码管工作,就可以实现在第0个数码管上显示0。然后再调用延时函数delay,让数码管延时显示1ms。当i从0变化到7,就可以实现一轮的显示,将display函数放入1个死循环中就可以实现循环显示。由于单片机运行速度很快,所以看起来就是所有数码管一直在显示。
对电路和程序Proteus和keilC仿真进行演示,并说明结果和上述分析完全吻合。
2.4 拓展
安排两个思考和讨论:(1)delay函数延时时间太多和太少对显示有什么影响?(2)多个数码管动态显示有什么优点和缺点?前者可以让学生更深刻地理解动态,后者可以让学生更好地总结相对于静态显示缺点,并为引出串行口扩充实现静态显示打下基础。
3 教学方法与手段
(1)利用逐步深入法:将整体分解成2个小任务,每次完成一个小项目,循序渐进,不断探索,逐步深入;
(2)运用视频和动画教学展示、解释重点难点:如动态显示概念和控制;
(3)运用对比的方法:讲解单个和多个数码管显示对段选端和公共端要求的不同;
(4)理论联系实际:运用Proteus和keilC的联合仿真来展示相关理论描述;
(5)教学中采用启发式教学:抛出问题,引导思考,得出正确结论。
4 总结
通过对单片机原理及应用课程重难点录制微课,并利用现代化的教学手段和方法,可以极大地方便学生利用课后时间自由、反复地观看,提升对知识点的掌握,成为课堂教学外的有效补充甚至替代传统教学。