Proteus在单片机项目式教学中的应用
2021-12-17田萍果
田萍果
(西安工商学院,陕西西安,710200)
0 引言
为进一步深化课堂教学改革,提高人才培养质量,从“灌输知识为主”转向“能力和知识并重”的课程内容设计,要有利于培养学生分析和解决问题的能力,激励学生善于独立思考、敢于质疑并大胆创新。
单片机的应用和上手实践正是这门课的学习要求和学习价值所在,但以往的单片机教学很难提起学生学习兴趣,注意力容易转移,更不用说提高学生的自主思考能力了。
所以结合以上课程改革要求和单片机课程自身实践性强的特点,笔者在授课过程中将课程以项目的形式划分为五大模块——彩灯的设计与实现,电子钟的设计与实现,温度测控系统的设计与实现,电子秤的设计与实现以及远程通信系统的设计与实现。同时,为了使项目式教学的效果发挥到最大化,学生吸收、掌握和运用最大化,笔者把Proteus引入课堂教学和实验教学当中,取得了较之以往理论灌输更好的效果。下面以本学期讲授的五大项目中电子钟的设计与实现为例来说明。
1 Proteus在电子钟设计中的贯穿应用
电子钟的设计包含数码管显示、定时器设置、按键输入以及蜂鸣器提示四个部分。在进行各功能设计之前,在Proteus中仿真、演示电子钟所实现的功能,给学生一个整体的印象,激发学生的好奇心,然后再做拆解。电子钟的组成和知识点拓展如图1所示。
图1 电子钟设计功能和知识点拆解图
■1.1 数码管显示
在这个系统的介绍中,先以人机交流、互动比较好的数码管显示模块来切入,以便讲述其他功能电路时,能在显示电路的基础上来观察、调试和实现。
由简入难,课堂上先讲解静态数码管显示原理及其编程方法,用Proteus仿真实现静态数码管显示0~9,如图2所示。还可以拓展性地提问学生如何显示0~F;如何改变每一个数码显示的时长;当改变数码管共阴/共阳极时电路和程序分别如何更改等等问题。学生可以在课堂上讨论,也可以在课下自行用Proteus拓展思路,试着实现功能,以大作业的形式提交,最终教师给予最终解答,形成闭环,促进知识点的掌握。
图2 共阳极数码管静态显示电路
然后再讲述动态数码管的显示,介绍完动态显示原理、硬件电路实现和程序设计后,可以在Proteus中搭建2位一体数码管的显示电路,并编写相应的程序。课堂中逐步深入,再设计8位一体数码管的动态显示电路,修改程序,让学生深入理解电路设计和程序编写中段选和位选的概念和控制方法。具体电路如图3、4所示。
图3 2位一体数码管显示电路
■1.2 时、分、秒信号的产生
1s信号的产生有两种方式,一是通过延时实现,这种方法占用CPU工作效率,而且不够精准,所以选用第二种方式,用定时器实现。课堂先讲述定时器内部电路组成、工作原理和工作方式,在Proteus中仿真简单的例子——如何实现200μs定时,如何在某个IO端口输出周期为400μs的方波,又如何实现20ms的定时时间。
图4 8位一体数码管显示电路
在仿真实现以上三个例子后,提问学生电子钟的1s基准时间如何实现。学生在认识到由于定时时间较长,具有最大定时时间的方式1也不能直接实现1s时,可用定时/计数器先产生20ms的定时,然后用一个寄存器R2对20ms计数50次便可实现秒信号。在keil5开发环境中对上述实现20ms定时的程序进行补充编写,进而启发学生60s定时又如何实现,60s定时的程序如何与前面8位一体数码管的动态扫描显示程序综合起来实现在8位一体的数码管电路上实现60s的秒计时呢?学生可以提出自己的想法,在keil中整合程序,并在软件Proteus中仿真,来验证自己的编程思想是否实现了60s计时并且得以正常显示,或者观察仿真出现了哪些现象,这些现象又是为何产生的,怎么样得到解决和改善。如此引导学生,一步步实现秒的60s计时和显示,如图5所示。学生在此基础上进一步编程实现60分和24时的计时和显示,如图6所示。
图5 在8位一体的数码管电路上实现60s计时
图6 实现电子钟计时并显示
在完成温度测控系统的设计与实现这个项目后,启发学生如何通过液晶显示器来显示电子钟的计时时间,以扩展学生的设计能力。
■1.3 按键输入
在电子钟的设计中,按键输入可以使用独立式按键,也可以矩阵键盘来实现时钟的启动、停止、复位以及调整时间。
先以独立式按键来实现时钟启动和停止,这种情况仅需要一个按键。笔者在课上先讲述了按键处理的步骤,然后提出了分别以查询方式和中断方式如何来实现启停功能,让学生思考在前面设计的电路基础上怎么进行硬件电路的设计和软件程序的编写,最终在Proteus中设计出了按键电路与系统的两种连接方式,并在程序中以查询方式和中断处理方式实现了启停功能,如图7、8所示。
图7 查询方式对应的电路图
进一步拓展设计,让同学们修改程序在图8的中断方式电路上实现时钟启动、停止和复位,掌握一个按键有三种功能时程序应该如何编写。
图8 中断方式对应的电路图
在上述中断方式电路设计基础上,再进一步实现按键调时的功能,以独立式按键结构实现时需要两个按键,其中一个按键控制时、分、秒的哪一位需要调整,另一个按键控制需要调整的具体时间点。此时的情况是单片机只有两个外部中断引脚,但有三个按键要以中断方式来响应,硬件电路上中断要如何扩展。笔者在课上普及了中断扩展的方法,并最后引导学生在Proteus中设计出了,具有启动、停止、复位和调时功能的硬件电路图,如图9所示。
图9 三个按键以中断扩展方式接入电路
以矩阵按键来实现上述功能,可以在笔者介绍了矩阵按键的工作原理和识别方法后,由同学自行结合Proteus和keil软件进行电路设计和程序编写。
■1.4 蜂鸣器提示
蜂鸣器的分类及其驱动方法比较简单,布置给学生自行学习和仿真,课堂总结学生做得好的地方以及不足之处。
2 总结
这种在Proteus中灵活化、逐渐递进式深入地讲授方式,使得学生很容易理解各个知识点,建立直观的仿真思想,并很有动力进行创新,让学生不再畏难而却步,也慢慢明白了仿真出现的现象和电路、程序编制的之间对应关系,同样也有了一个实际功能可以由硬件实现,也可用软件实现的体验。在本学期的科创大赛中,学习单片机课程的整个年级学生踊跃报名,从在Proteus中仿真去实现设计功能,到绘制电路原理图,搭建硬件电路图调试,进而实现题目规定功能,比往届同学对于本课程的实践水平高出了很多,对教学产生了积极的影响。这样的学习方式也为学生参加全国电子设计大赛奠定了牢固的基础。