单片机电子教案(定时器部分)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序清单
#include<reg51.h> sbit led=P1^0; unsigned char i; void main() { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) { if(TF0) { TF0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; i++; if(i==20) { led=!led; i=0; } } } }
1位秒表程序清单
#include<reg51.h> unsigned char m,j; unsigned char ledtable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main() { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; P1=ledtable[j]; while(1) { if (TF0==1) { TF0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; m++; if(m==20) { m=0; j++; if(j>9) { j=0; } P1=ledtable[j]; } }
4.定时器/计数器控制寄存器TCON
控制寄存器TCOD
用于中断
5.定时/计数器初始化
① 确定工作方式—对TMOD赋值。如“TMOD = 0X10”,表明定时 器1工作在方式1,且工作在定时器方式。 ② 预置定时或计数的初值—直接将初值写入TH0、TL0或TH1、 TL1。 ③启动定时/计数器工作—将TR0或TR1置“1”。 ④查询TF0=1?,若为,表明定时时间到,做相应处理。
6.单片机定时器/计数器的结构
二、MCS-51单片机定时器/计数器系统
1.定时器/计数器工作原理
当定时/计数器设置为定时工作方式时,计数器对内部机器周 期计数,每过一个机器周期,计数器增1,直至计满溢出。 定时器的定时时间与系统的振荡频率紧密相关,因MCS-51 单片机的一个机器周期由12个振荡脉冲组成,所以,计数频 率为时钟周期的十二分之一。如果单片机系统采用12M晶振, 则计数周期为1us。
6.定时器/计数器的编程和应用
例1利用T0产生1ms的定时,在P1.0端口上输出周期为2ms的方波。设晶振
频率为12MHz。
解:因方式1采用16位计数器,其最大定时时间为:65536×1s = 65.536ms,因此,可选择方式1实现1ms定时,确定计数值为1000, 则定时器的初值为: X = M−计数值=65536 − 1000 TH0=(65536 − 1000)/256 TL0=(65536 − 1000)%256 又因采用方式1定时,故TMOD = 0X01。
3. 定时
一个钟表,秒针走60次,就是1分钟,所以时间就转化为秒 针走的次数,也就是计数的次数,可见,计数的次数和时间 有关。只要计数脉冲的间隔相等,则计数值就代表了时间, 即可实现定时。秒针每一次走动的时间是1秒,所以秒针走 60次,就是60秒,即1分钟。 因此,单片机中的定时器和计数器是一个东西,定时用时, 是由单片机提供一个非常稳定的计数源。 这个计数源叫机器周期,为12倍的品质周期。 晶振为12M,则品质周期为1/12(微秒),机器周期就是1 微秒。
例2 若在P1.0端口上输出周期为2s的方波呢?设晶振频率为12MHz。
解:要在P1.0得到周期为2s的方波,只要使P1.0端口每隔1s取反一次 即可。 ① 设置T0的方式字。T0,定时,工作于方式1,最长定时才65.536ms, 要实现1S定时,属于超长定时情况。 TMOD=0X01 选取一次定时50ms,20次才达到1S。 ② 计算50ms定时T0的初值。晶振频率为12MHz,则机器周期为1μs,设 T0的初值为X=(65536-50000)。 ③ 编程。
程序清单
#include<reg51.h> sbit led=P1^0; void main() { TMOD=0X01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; TR0=1; while(1) { if(TF0) { TF0=0; TH0=(65536-1000)/256; TL0=(65536-1000)%256; led=!led; } } }
}
}
2.定时器/计数器的方式控制字
TMOD位 位名称
D7 GATE
D6 C/T
D5 M1
D4 M0
D3 GATE
D2 C/T
D1 M1
D0 M0
功能
门控位
定时/计 数方式选 择
工作方式选择
门控位
定时/计 数方式选 择
工作方式选择
高4位控制定时器/计数器1
ቤተ መጻሕፍቲ ባይዱ
低4位控制定时器/计数器0
3.定时器/计数器的四种工作方式
4. 溢出
上面我们举的例子,水滴满瓶子后,再滴就会溢出,流到桌 面上。单片机计数器溢出后将使得TF0变为“1”。因此可以 通过查TF0是否为1,知道溢出没有。
5. 任意定时及计数的方法
计数器的容量是16位,也就是最大的计数值到65536,计数 计到65536就会产生溢出。如果计数值要小于65536,怎么 办呢?一个空的瓶子,要1万滴水滴进去才会满,我们在开 始滴水之前就先放入一些水,就不需要10000滴了。比如先 放入2000滴,再滴8000滴就可以把瓶子滴满。在单片机中, 我们也采用类似的方法,称为“预置数”的方法,我们要计 1000,那就先放进64536,再来1000个脉冲,不就到了 65536了吗?定时也是如此。
① 工作方式0。 定时/计数器的工作方式0称为13位定时/计数方式。它由TL的低5位 和TH的8位构成13位的计数器,TL的高3位未用。 ② 工作方式1。 工作方式1是16位的定时/计数方式,M1M0为01,其他特性与工作 方式0相同。 ③ 工作方式2。 工作方式2是16位加法计数器,TH0和TL0具有不同功能,其中, TL0是8位计数器,TH0是重置初值的8位缓冲器。方式2具有初值 自动装入功能,每当计数溢出,就会打开高、低8位之间的开关, 预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。 ④ 工作方式3。 定时/计数器工作于方式3时,定时器T0被分解成两个独立的8位计 数器TL0和TH0。
制作数字时钟
MCS-51单片机定时器/计数器系统
一、定时器/计数器简介 1.计数概念
同学们选班长时,要投票,然后统计选票,常用的方法是画 “正”,每个“正”号五划,代表五票,最后统计“正”号 的个数即可,这就是计数。单片机有两个定时/计数器T0和 T1,都可对脉冲进行计数。
2.计数器的容量
我们用一个瓶子盛水,水一滴滴地滴入瓶中,水滴不断落下, 瓶的容量是有限的,过一段时间之后,水就会逐渐变满,再 滴就会溢出。单片机中的计数器也一样,T0和T1这两个计数 器分别是由两个8位的RAM单元组成的,即每个计数器都是 16位的计数器,最大的计数量是65536。