单片机课程教学案例单片机是一门综合性、实践性极强的课程,通常分为理论教学与实践教学两部分。
由于单片机的概念多、专有名词多,内容抽象,指令丰富,且软、硬件发展很快,新器件不断,故相当多数量的学生在学习单片机时感到郁闷,实际使用不知如何下手,不能真正掌握单片机技术。
因此,如何安排教学内容,使学生既能了解新技术又能对单片机的应用技术融会贯通;如何设计教学方法,激发学生的学习兴趣,真正理解和掌握单片机技术,是在单片机教学中需要解决的问题。
针对教学对象的特点和课程特点,我们提出了“边学边干、边干边学、理论指导实践、实践带动理论”的教学理念,以达到“精理论、重实验、会设计”的人才培养效果。
“精理论”,精化理论教学内容。
从职业能力分析入手,确定教学的要求和知识点、突出课程的基本内容,精选、精讲、精练基础理论、基本概念、基本分析方法。
在保证“必需、够用、管用”的原则下,坚决砍掉那些陈旧,与其他相关课程有重复或过于繁琐数学推导部分。
吸收一些代表现代水平的新观点、新理论、新技术、新器件、新方法等内容,真正实现“厚基础”、“宽口径”的教学要求。
“重实验”,建立“干中学”的思路,以任务驱动学生学习潜能和兴趣,改进实验内容和方法,变单一验证性实验为多类型实验,即有仿真型又有验证型、设计型和综合型。
使学生在实验课上由被动转为主动,不再是依葫芦画瓢,培养他们严谨的科学作风,在最大程度上掌握所学知识,并学以致用。
“会设计”,增设单片机课程设计,以选题的综合性和先进性为出发点。
训练和提高学生综合素质,学会设计思路和方法。
借鉴电子设计竞赛的经验,引入一定数量的综合性较强的电子综合系统设计的内容。
下面以单片机定时器一节为例,介绍如何安排教学以体现我们所提倡的教学理念,并达到所期望的教学效果。
授课题目:第五章单片机定时器/计数器与中断系统第一节单片机的定时器/计数器课时安排:1学时授课类型:理论课教学方式:讲授、讨论教学资源:多媒体、实物、黑板教学目的:知识目标--理解51单片机的计数功能、定时功能,预置数的意义;掌握计数初值的计算方法,定时器/计数器的工作方式以及相关的寄存器。
能力培养目标--培养学生学习单片机的主动性,提高动手能力,发展分析和解决利用单片机计数器/定时器进行应用设计过程中出现的问题的能力。
情感目标—激发学生强烈的求知欲,培养学生的积极探索、勇于创新的精神和工程意识。
教学内容:基本内容--常用的定时方法,定时器/计数器的定时和计数功能,定时器/计数器的控制寄存器,定时器的应用。
重点--与中断控制相关的寄存器(TCON、SCON等)。
难点—定时中断。
参考资料:《MCS-51/96系列单片机原理及应用》孙涵芳编,北航出版社教学过程设计:1.情景导入师:从选票的统计谈起:画“正”。
这就是计数,生活中计数的例子处处可见。
例如:家里面用的电度表、汽车上的里程表等等。
师:举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。
师:单片机中的计数器的计数功能与此类似,不同的是例子中计的是轮子转的圈数,而单片机的计数器计的是从单片机P3.4、P3.5引脚进入的脉冲的个数。
我们今天就来学习一下单片机的计数器/定时器及其应用。
(板书课题:51单片机的计数器/定时器)师:说到容器,我们都知道它有一定的容量。
比如从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。
水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满,装满水盆需要的水滴数量就是水盆的计数容量。
那么单片机中的计数器有多大的容量呢?(课件显示,引出计数器的容量)2.计数器的容量MCS-51单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是216=65536。
师:计时器计满了会怎么样呢?让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。
这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。
水溢出是流到地上,而计数器溢出后将使得TF0位变为“1”,此时单片机自动将计数器清零。
至于TF0位是什么我们稍后再谈。
师:拿出一个闹钟。
(实物)请大家思考,我将它定时在1个小时后闹响,请问秒针动了多少次?生:回答3600次。
师:也就是说,秒针走了3600下的时间正好是1个小时。
换言之,时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。
那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。
请大家想一想,如果计数器所计的脉冲的间隔相等,那么计数值是不是就代表了时间的流逝?(课件显示,引出定时器)3.定时师:单片机中的定时器和计数器是一个东西,只不过计数器是记录的从单片机P3.4、P3.5引脚进入的脉冲的个数,这些脉冲的周期可能是未知的,也可能不是等间隔的,因此单片机只能在脉冲的下降沿进行记录,每遇到一个下降沿记录一个数,因此只能记录脉冲的个数,不能确定时间;而定时器则是由单片机提供一个非常稳定的计数源。
那么提供定时器的计数源是什么呢?看图所示。
(课件显示)师:原来就是由单片机的晶振经过12分频后获得的一个脉冲源。
晶振的频率当然很准,所以这个计数脉冲的时间间隔也很准。
问题:一个12M的晶振,它提供给计数器的脉冲时间间隔是多少呢?生:12M/12=1M,T=1/f=1/106s,就是1个微秒。
师:我们得出这样的结论:单片机的定时的本质就是计数,但计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。
师:前面我们提到,计数器计满了就会溢出,溢出后将使得TF0位变为“1”,就象定时的时间一到,闹钟就会响一样。
现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。
生:65536个。
师:不错。
我们刚刚研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。
这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,怎么实现?提示:如果是一个空的盆要1万滴水滴进去才会满,在开始滴水之前先放入一勺水,还需要10000滴吗?生:不需要。
师:对了,采用预置数的方法可以解决这个问题。
(课件显示)师:通过上面的学习,我们知道单片机中的定时/计数器都可以有多种用途,那么怎样才能让它们工作于我们所需要的用途呢?这就要通过定时/计数器的方式控制字来设置。
(课件显示)4.计数器/定时器的方式和控制寄存器师:在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。
TMOD和TCON是名称,我们在写程序时就可以直接用这个名称来指定它们。
师:从图中我们可以看出,TCON被分成两部份,高4位用于定时/计数器,低4位则用于中断(上节课学习过)。
而TF1(0)我们已经提到了,当计数溢出后,TF1(0)就由0变为1。
原来TF1(0)在这儿!那么TR0、TR1又是什么呢?TR0(1)称之为运行控制位,可用指令SETB来置位以启动计数器/定时器运行,用指令CLR来关闭定时/计数器的工作,一切尽在自已的掌握中。
(课件显示)师:从图中我们可以看出,TMOD也被分成两部分,每部分4位,分别用于控制T1和T0。
其中,GATE位为定时器/计数器运行门控标志位。
(课件显示定时器/计数器逻辑结构图)师:看图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况。
GATE位=0,分析一下逻辑,GATE位经非门后是变为1,进入或门,或门总是输出1,和或门的另一个输入端无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。
GATE位=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到引脚的电平状态来控制,只有TR1为1,且引脚也是高电平,开关才合上,计数脉冲才得以通过。
这个特性可以用来测量一个信号的高电平的宽度,想想看,怎么测?(留作思考题)师:--前面我们说过,定时/计数器既可作定时用也可作计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在编程者。
如果为位0,就是用作定时器(开关往下打),如果C/T为1就是用作计数器(开关往下打)。
(结合课件显示的逻辑结构图说明)。
顺便提一下,一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的,这一点教材没有提到,但很多初学者却会有此困惑。
师:M1M0--定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合,对应方式0~方式3。
(课件显示)师:定时器/计数器的工作方式0称之为13位定时/计数方式,它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用,计数容量为213。
(课件显示工作方式0的逻辑结构图)为什么在这种模式下只用13位呢?干吗不用16位,这是为了和51机的前辈48系列兼容而设的一种工作方式。
工作方式1是16位的定时/计数方式,除了计数容量变为216外,其它特性与工作方式0相同。
师:我们知道,每当定时器/计数器计满时会溢出,然后单片机自动将计数器清零,如果用户要计100个数,则计满后要重新给计数器设置初值,否则计数器将从0开始计,再次溢出时单片机计的不再是100个数,所以采用工作方式0或1都要在溢出后做一个重置预置数的工作,做工作当然就得要时间,一般来说这点时间不算什么,可是有一些场合我们还是要计较的,所以就有了第三种工作方式,即工作方式2,这是一个自动重装入初值的8位定时/计数方式,只有低8位参与计数,而高8位不参与计数,用作预置数的存放。
(课件显示工作方式2的逻辑结构图)。
师:如图所示,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,预置数进入低8位。
这是由硬件自动完成的,不需要由人工干预。
通常这种式作方式用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。
计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最妙不过了。