张婧婧 张静
摘要:在《单片机》课程教学中,利用思维脑图,采用项目驱动、互动建构、讲练结合三者交叉融合的翻转课堂教学模式,解决了电子专业学生利用软件代码控制硬件的理解问题。讲:51控制LED的项目为例,练:硬件控制LED;讲:P0P1口控制LED的原理、C语言实现;练:编程控制8路LED闪烁流水。课程考核结果表明教学有效解决了学生学习单片机编程的难点。
关键词:LED;三极管;译码器;缓冲器;P0P1口
电子类学生学习《单片机》课程前,已经学习了《模拟电路》、《数字电路》、《C语言》,但是许多同学对如何利用C语言代码控制硬件的问题理解不清,影响进一步的学习和应用。
我院19级电工专业的单片机课程教学改革以单片机控制LED为例,从LED发光原理出发,利用三极管、译码器、缓冲器、51单片机的P0P1口等硬件控制,说明如何定义硬件管脚、如何通过C赋值语句控制单片机P0P1口输出,进而控制8路LED明灭;左移语句实现8路LED流水。利用软件代码控制硬件点亮二极管过程的思维脑图如图1所示。
翻转课堂教学设计如下:
1、教师布置任务
网上教师发布任务,要求学生完成点亮LED的项目。学生要阅读单片机、LED及驱动电路原理图,用面包板搭建电路直接点
亮共阳极的8路LED,再利用三极管、译码器、缓冲器等硬件,通过译码器和三极管控制8路LED的阳极、缓冲器控制8路LED的阴极。
2学生自主学习
学生自学8路LED发光原理和138译码器245缓冲器工作原理,完成相关线上作业,该部分成绩占15%。
驱动LED发光必须加合适的VCC、地,以及限流电阻,如图3(a)。把地信号换成P0.0,如图3(b)所示,显然LED发光条件是P0.0为低电平,即p0.0=0。再把VCC换成图3(c), LED若要发光Q16需导通,条件是P1.0为低电平且 Q16的c极为高电平,Q16导通后LED阳极即为高电平。
3师生互动建构
该环节主要在线下课堂上完成,将全班58人分为10组实施教学和开展练习。
3.1第一步:“练”,15分钟
要求每位同学现场用面包板(1)搭建电路直接点亮共阳极的8路LED;
(2)利用三极管、译码器、缓冲器硬件,通过译码器和三极管控制8路LED的阳极、缓冲器控制阴极点亮共阳极的8路LED;
随机请学生说明硬件工作原理。该部分成绩占15%。
3.2第二步:“讲”,30分钟
教师和学生互动,讨论讲解51单片机P0P1口等知识点和硬件原理图,说明P0口作为缓冲器输入控制LED阴极,P1口控制通过译码器控制LED阳极;说明如何定义硬件管脚、如何通过C赋值语句控制单片机P0P1口输出。主要是教师提问,每组派代表回答。代表成绩是全组的成绩,该部分成绩占20%。
(1)单片机的相关原理图:
74HC245是缓冲器,功能是右侧输出=左侧输入,即DB0=DB_0,......,DB7=DB_7。
图知:DB_0是p0.0,.......,DB_7是p0.7;
DB0是LED2阴极,......., DB7是LED9阴极。
8路LED共阳极接法。所以8路LED均发光条件是:阳极:LEDS6=0
阴极: DB7DB6DB5DB4DB3DB2DB1DB0=00000000=0x00,即P0=0X00
如图可知,LEDS6是U3的38译码器输出Y6。
LEDS6=0条件是:
138译码器使能:ENLED=0, ADDR3=1;
输入: A2 A1 A0= ADDR2ADDR1ADDR0=110,即 P1.2 P1.1 P1.0=110。
(2)C语言说明语句定义硬件管脚
图知:ADDR2、ADDR1、ADDR0接P1.2 P1.1 P1.0,ADDR3、ENLED分别接P1.3 P1.4;
因此在程序中必须用sbit 说明;而P0、P1在reg52.h文件中已经定义:
sfr P0=0x80; sfr P1=0x90;
因此不必再说明,但是必须加包含特殊功能寄存器定义的头文件,说明以后,语句中就可以直接使用。具体如下:
#include <reg52.h>
sbit ADDR0= P1^0;
sbit ADDR1= P1^1;
sbit ADDR2= P1^2;
sbit ADDR3= P1^3;
sbit ENLED = P1^4;
(3)C赋值语句控制单片机P0P1口输出
8路LED 闪烁关键代码:
ENLED =0; /使能U3
ADDR3=1;
ADDR2=1; //经U3的Y6输出开启三极管Q16
ADDR1=1;
ADDR0=0;
while (1)
{ //循环点亮和熄灭即得到闪烁效果
P0=0x00; //点亮8路小灯 for (i=0; i<30000; i++);//延时一段时间
P0=0xff;//熄灭8路小灯
for (i=0; i<30000; i++);//延时一段时间}
思考:左移语句实现8路LED流水
若依次点亮一个LED则出现流水效果,考虑到左移后原位置补0,所以令点亮的LED为1,再取反即可。
3.3第三步:“练”,45分钟
要求学生现场编程控制8路LED闪烁、8路LED流水。根據实验结果和答辩给考核成绩,具体操作是教师负责各组组长考核,10组组长随机选组,考核该组考核。该考核成绩占40%。
3.4课后作业和效果调查
课后布置了线上课后作业,要求完成课堂课程相关考核内容。另外有1道调查题,请学生评价通过本次课程是否清楚的理解了软件控制硬件的概念和方法。
结果表明100%的学生能够清楚理解了软件控制硬件概念和方法,能够理解如何从过去的硬件控制方式转换到软件控制硬件方式。
4、小结
本文阐述了《单片机》课程中利用思维脑图,采用“项目驱动、互动建构、讲练结合”的翻转课堂教学模式开展教学的过程,解决了电子专业学生利用软件代码控制硬件的理解问题。
通过发布任务、自主学习、“练—讲—练”课堂组织形式及考核,实现了单片机系统编程控制8路LED闪烁、左移语句实现8路LED流水,有效解决了学生学习单片机技术的难点问题,有效提升了学生综合应用能力。
参考文献:
[1]宋雪松.手把手教你学51单片机-C 语言版[M],清华大学出版社,2014.
电子信息科学与技术专业2019年湖北省省级一流本科建设点项目、教育部产学研项目编号201801193002、201801275003。