基于Arduino和Ardu Block的单片机教学研究

2018-01-16 02:43燕哲
职业·中旬 2018年9期
关键词:图形化数码管子程序

燕哲

摘要:随着电子技术的不断发展,单片机技术显得越来越重要,很多技工学校都把单片机技术作为电子专业或者自动化控制专业的一门必修课程。但是在单片机的教学中,也存在着很多困难,尤其是对于技工类学校,学生多为初中毕业生,英文基础较为薄弱,学习起来难度较大,老师教起来也颇为费劲,教学效果不是很理想。Arduino作为一款开源软件,简单灵活,使用方便,配合ArduBlock的图形化编程,可以极大地降低单片机学习的难度。本文以七段数码管的显示为例,结合技工院校学生的实际情况,探索单片机教学的新思路,仅供大家参考。

关键词:单片机教学 Arduino ArduBlock ArduBlock图形化编程

一、技工院校中单片机教学的现状

笔者是一名技工院校教师,从事单片机教学也有几年时间。单片机作为电子或者自动化控制专业的一门必修课程,在很多学校都有开设。在多数技工院校,生源多为初中毕业生,且经过优秀普通高中的筛选后,进入到学校就读的学生基础并不扎实,学习主动性也不是很高,而单片机作为一门需要语言编程,需要英文基础又需要逻辑思维能力的课程,在实际教学中学生学习起来颇有难度。学生即便刚开始有兴趣,但是碰到编程就不会,看到英文就头疼,久而久之,对学生的学习积极性造成很大影响,教学效果也不尽如人意。

以笔者的实际教学效果为例,笔者学校学生多为初中毕业生,根据专业方向的区别一般在二年级或者三年级开设单片机课程。学生在刚开始流水灯教学时基本上都能熟练掌握;当加入定时器,进入数码管学习后,只有一半学生能够掌握;继续进行到中断,点阵液晶显示后只能有四分之一的学生能够跟上了;到了后期的各种传感器控制、双机通信等学生更是一头雾水,只有极少数学生能够跟上进度。因此越往后进行就越难教学,多数学生只是机械地把老师给出的程序敲进去进行验证,并不理解。课程学完后,学生只能说是了解了单片机,并不能够掌握。因此,在多数技工院校中,单片机课程变成了极少数精英学生才愿意学、学得懂的课程,多数老师也不愿意承担该课程的教学工作。

二、Arduino和ArduBlock图形化编程软件介绍

1.Arduino介绍

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它是由一个欧洲开发团队于2005年冬季开发的,目前可以说还处于起步阶段,市场上的应用还不是很多。Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,计算机中的程序开发环境。

2.ArduBlook图形化编程软件

ArduBlock是一款专门为Arduino设计的图形化编程软件,由上海新车间创客开发。ArduBlock软件是一款Arduino官方编程环境的第三方软件,目前必须依附于Arduino软件下运行,区别于Arduino传统的文本式编程环境。ArduBlock是以图形化积木搭建的方式编程的。这样的方式会使编程的可视化和交互性加强,编程门槛大大降低,即使没有编程经验的人也可以轻松尝试给Arduino控制器编写程序。具体的软件界面在后面应用实例中大家会看到。

Arduino结合ArduBlock可以让教师非常方便地完成程序编写,下载调试,对于没有语言基础的技工院校学生是非常方便的。因为免去了传统单片机的C语言或者汇编语言的学习,不需要英文基础,同时加入了图形化编程,学生学习起来会非常直观,也可以大大激发学生的学习兴趣。下面本人通过实际教学中的案例(七段数码管的控制)来为大家介绍下这两款软件的使用。

三、教学实例:控制七段数码管显示器

在此例子中,教师选用的是Arduino Uno。这是一款基于ATmega328P芯片的单片机开发板,ATmega328P具有32KB闪存(其中0.5KB被启动加载器占用),它还具有2KB SRAM和1KB EEPROM(可以利用EEPROM库读取和写入)。该开发板由14路数字输入/输出引脚(其中6路可以用作PWM输出)、6路模拟输入、1个16MHz的石英晶体振荡器、一个USB接口、1个电源接头、1个ICSP数据头以及1个复位按钮组成。Arduino Uno包含了单片机运行所需的所有要素,只需要用USB连接线将其连接到计算机,或利用AC-DC适配器或者电池供电后即可启动。Arduino Uno的特色在于将Atmega16U2编程为一个USB-to-serial转换器,以便能简单、轻松和自由地安装驱动程序。目前,Arduino Uno已成为Arduino主推的产品。

七段数码管显示器是人们生活中常用的显示器件,也是单片机教学中非常重要的一部分,具体原理我们在此就不再介绍。在此教学案例中教师选用单个七段共阳型数码管(不控制小数点)。分析电路图可知我们需要用到Arduino的6个数字引脚,在此我们使用引脚3-8。因为七段数码管显示器也是LED显示的一种,因此我们需要加上1kΩ的限流电阻。

因為选用的数码管为共阳型,根据数码管显示原理,只有当Arduino的引脚输出低电位时,对应的LED才会点亮。因此,教师需要在程序的初始化中将每个针脚都输出高电平,然后再将需要的引脚降低为低电平,以便确保数码管能够稳定显示。在此先尝试显示单个数字6,然后再扩展0到9循环显示。根据数码管的显示原理可知,教师要将数码管的a、c、d、e、f、g置为低电平,对应的需要将Arduino的3-8脚改变为低(初始化为高)。在此因为印刷问题,图不再此文显示。

在ArduBlock软件中,各个函数命令被做成了一个个的功能方块,需要什么命令教师只需要从左边找到对应的方块拖到右边编辑区即可。若是想要移除某个功能,直接拖到左半边即可,使用起来非常方便。数字6的数码管显示程序编辑完成后点击界面上方的“上载到Arduino”按钮,程序便会被上传到Arduino开发板中,同时软件会自动生成对应的程序代码,不需要手动编写。上传后自动生成的程序代码如下图所示。

从图中可以看出,即便是语言编程,Arduino也并不复杂,看起来也是简单明了。以上例子是单独显示一个数字6的程序,那么如果要显示0到9,是不是程序会很长效率又很低呢?当然不是,C语言中教师经常会用到子程序来简化程序,主程序中我们只需要调用相应的子程序即可。在ArduBlock软件中,教师同样可以引入子程序,该功能模块也在“控制”中,名称即为“子程序”,点击该模块教师可以对它进行重命名。在此教师将刚刚设置好的初始化程序命名为reset子程序,数字6的函数命名为set6子程序。以此类推,我们分别写出数字0到9的子程序,分别命名为set0到set9。因为是0到9循环显示,还需要用到延迟函数。ArduBlock也把延迟函数做成了功能模块,只需要拖出来,修改好后面的时间即可,不像传统单片机还需要计算延时时间。引入子程序后整个程序看起来就简单多了,也很容易理解。这些子程序的模块只需要摆放到右侧空余地方即可,堆叠起来也没有关系。在此因为印刷问题,图不再此文显示。

通过这样一个实际教学案例,相信大家对Arduino和ArduBlock都已经有了一个初步的认识。可以看出,在ArduBlock软件中,没有了传统的c语言出现,各种命令都被做成了小模块,而且可以汉化过来变成全中文界面,看起来非常直观,搭积木的形式也可以很清楚的理清程序的流程,让学生更加容易理解。实际教学中利用ArduBlock图形化编程软件配合Arduino开发板使用,可以让学生真正做到零基础学习程序控制,降低单片机学习难度,大大激发学生的学习兴趣。

四、小结

笔者在经过一个学期两个班级的实际教学后,将教学效果总结如下:对于流水灯相关的程序,所有学生都能熟练掌握,而且可以自主变化;对于串口通信、马达控制、传感器驱动等相关的程序,绝大多数学生也可以熟练掌握。最为重要的是,学生觉得单片机不再高深莫测,而是触手可及的东西,稍微动动脑子就可以完成很多有意思的试验,极大地提高了学生学习单片机的兴趣。

当然,Arduino在目前来说也有一定的局限性,笔者认为更适合做一些小型的项目,市场应用也不是很广泛,可以作为单片机学习的入门,如果要真正深入学习单片机,可能还是要去學习AVR、ARM嵌入式等。但是对于零基础的技校生来说刚刚合适,当然在实际教学中教师也可以让学生先接触Arduino,当学生有了学习兴趣和一定的程序基础后再去学习AVR、ARM等,让学生也有一个循序渐进的过程,以后接受语言编程相对也会更加容易一些。正所谓师傅领进门,修行在个人,作为老师,需要做的也就是帮学生打开单片机学习的大门,剩下的就是靠兴趣去引导学生不断探索学习。

猜你喜欢
图形化数码管子程序
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
LKJ自动化测试系统图形化技术研究
运用图形化听写式复习,构建高效地理课堂
浅谈子程序在数控车编程中的应用
图形化地区电网无功优化软件开发与应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序