单片机教学案例.doc
- 文档编号:18821635
- 上传时间:2023-12-20
- 格式:DOC
- 页数:5
- 大小:34.50KB
单片机教学案例.doc
《单片机教学案例.doc》由会员分享,可在线阅读,更多相关《单片机教学案例.doc(5页珍藏版)》请在冰点文库上搜索。
《单片机定时器/计数器》教学案例
—邢栋华
一.案例背景
单片机是一门综合性、实践性极强的课程,通常分为理论教学与实践教学两部分。
由于单片机的概念多、专有名词多,内容抽象,指令丰富,且软、硬件发展很快,新器件不断,故相当多数量的学生在学习单片机时感到郁闷,实际使用不知如何下手,不能真正掌握单片机技术。
因此,如何安排教学内容,使学生既能了解新技术又能对单片机的应用技术融会贯通;如何设计教学方法,激发学生的学习兴趣,真正理解和掌握单片机技术,是在单片机教学中需要解决的问题。
针对教学对象的特点和课程特点,我想出了“边学边干、边干边学、理论指导实践、实践带动理论”的教学理念,以达到“精理论、重实验、会设计”的人才培养效果。
下面以单片机定时器一节为例,介绍我如何安排教学以体现所提倡的教学理念,并达到所期望的教学效果。
二.案例过程
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来完成是最妙不过了。
师:
工作方式3仅用于定时/计数器0,此时定时/计数器0被拆成2个独立的定时/计数器来用。
其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。
(课件显示工作方式2的逻辑结构图)。
师:
我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及溢出标记了,从何而来呢?
TL0还是用原来的T0的标记,而TH0则借用T1的标记,因此T1没有这种工作方式。
师:
学习了单片机的计数器/定时器的基础知识后,我们更关心的是在实际应用中如何使用它,下面我们以八只彩灯依次循环点亮为例加以说明。
5.应用举例
师:
我手中所拿的就是能实现彩灯依次循环点亮功能的实验板,(实物展示,并接通电源运行),功能要求及电路简图如课件所示。
(课件显示)
师:
根据题目要求,大家想想应该如何编写程序实现?
引导:
首先应该考虑有时间要求应该用那种方法?
生:
用定时器。
师:
不错。
使用单片机的定时器,就像我们使用别人的东西要告知主人一样,使用单片机的定时器也要告诉单片机,我要用你那一个定时器(T0还是T1),那种工作方式(方式0~方式3中的哪一种),那种功能(定时还是计数),以及门控位的状态,这些要通过谁来告诉呢?
生:
专用寄存器TMOD。
师:
对,要对TMOD进行初始化。
我们使用T0,采用方式1工作,用于定时,定时器的运行仅有TR0控制,即GATE位为0,所以TMOD的值为00H。
(板书)
1)TMOD初始化
GATE=0,M1=0,M0=0,∴TMOD=00000000B=00H
师:
接下来我们要告诉单片机定时时间,怎么告诉它啊?
生:
通过给计数器TH0、TL0附初值。
师:
不错。
就是要给TH0、TL0预置数。
预置多少呢,根据我们前面讲的公式,一起来计算一下。
(板书)
2)计算计数初值
X=M-定时时间/T,T=12÷晶振频率
?
根据题意:
T=12÷6MHz=2μs,
∴X=216-0.1s/2μs=15536=11110010110000B=3CB0H
∴TH0=3CH,TL0=0B0H
师:
完成了这些事情,就可以启动定时器开始工作了。
定时时间到了我们要做什么呢?
生:
让第一个灯点亮,然后再隔0.1秒钟让第二个等点亮,以此类推。
师:
对。
那我们用程序如何实现呢,请看课件。
(课件显示)
(将上面的程序调入软件运行环境进行编译并下载到实验板中单片机里,进行实物演示。
)
师:
请大家思考,上面的例题,如果改变定时时间为0.5秒钟,这时超出了定时器/计数器的最大计数容量,但仍要求使用定时器来完成定时,如何实现呢?
(留作课后作业,要求学生将编好的程序下载到实验板上进行验证)
三.案例反思
若教师就书本传统去教授的话,学生上课会觉得非常枯燥无聊,不能非常清晰的明白教学内容,通过讲练结合,这样学生不仅能够清晰明白何为定时,怎么定时以及主要事项,然后通过课堂编程及输入实验板看现象,这样学生就能很好的理解,学习兴趣也会相应提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教学 案例