单片机课定时器
单片机定时器实验报告
一、实验目的1. 理解单片机定时器的工作原理和功能。
2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。
3. 学会使用定时器实现定时功能,并通过实验验证其效果。
二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。
51单片机内部有两个定时器,分别为定时器0和定时器1。
定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。
定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。
四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。
2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。
3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。
4. 编写定时器中断服务函数,用于处理定时器溢出事件。
5. 编写主函数,设置定时器中断,并启动定时器。
6. 编译并下载程序到单片机实验板。
7. 使用示波器观察定时器0的溢出信号。
五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。
单片机 第五章2 单片机的定时器计数器
若晶振频率为6MHz,1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为:[213 –(213 -1)]x2μs=2μs 最大定时时间为:[213 –0] x2μs=16384μs =16.384ms
2、 方式1 (T1,T0) 当M1M0两位为 01时,定时 /计数器被选为工作方式 1,16位计数器,其逻辑结构 如图 所示。
8FH TCON TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
TF1(TCON.7, 8FH位)----定时器T1中断请求溢出标志位。 TF0(TCON.5, 8DH位)----定时器T0中断请求溢出标志位。 TR1(TCON.6, 8EH位)----T1运行控制位。 0:关闭T1;1:启动T1运行。只由软件置位或清零。 TR0(TCON.4, 8CH位)----T0运行控制位。 0:关闭T0;1:启动T0运行。只由软件置位或清零。
1、 方式0 (T1,T0)
当 M1M0两位为 00时,定时 /计数器被选为工作方式 0, 13位计数器,其逻辑结 构如图所示。
振荡器 ÷12 C/ T = 0 TL0 低5位 C/ T = 1 控制 T0 端 TR0 GATE INT0 端 TH0 高8 位 TF0 中断
+
在方式0下,计数工作方式时,计数值的范围是: 1~8192(213 ) 定时工作方式时,定时时间的计算公式为: (213一计数初值)×晶振周期×12 或(213一计数初值)×机器周期
例4:用定时器l 以工作方式2计数,每计100次进行累计器加1操作.
(1)计算计数初值. 28—100=156D=9CH TH1=9CH,TL1=9CH TMOD寄存器初始化:MlM0=10,C/T=1,GATE=0 因此 TMOD=60H (2)程序设计序设计
单片机第六章定时器
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;
•
•
特殊功能寄存器TMOD、TCON;
时钟分频器;
•
输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。
认识单片机的定时器计数器
void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。
单片机定时器 计数器
单片机定时器计数器单片机定时器/计数器在单片机的世界里,定时器/计数器就像是一个精准的小管家,默默地为系统的各种操作提供着精确的时间控制和计数服务。
无论是在简单的电子时钟、还是复杂的通信系统中,都能看到它们忙碌的身影。
那什么是单片机的定时器/计数器呢?简单来说,定时器就是能够按照设定的时间间隔产生中断或者触发事件的模块;而计数器则是用于对外部脉冲或者内部事件进行计数的功能单元。
我们先来看看定时器的工作原理。
想象一下,单片机内部有一个像小闹钟一样的东西,我们可以给它设定一个时间值,比如说 1 毫秒。
当单片机开始工作后,这个小闹钟就会以一个固定的频率开始倒计时,当倒计时结束,也就是 1 毫秒到了,它就会发出一个信号,告诉单片机“时间到啦”!这个信号可以用来触发各种操作,比如更新显示、读取传感器数据等等。
定时器的核心在于它的时钟源。
就好比小闹钟的动力来源,时钟源决定了定时器倒计时的速度。
常见的时钟源有单片机的内部时钟和外部时钟。
内部时钟一般比较稳定,但精度可能会受到一些限制;而外部时钟则可以提供更高的精度,但需要额外的电路支持。
再来说说计数器。
计数器就像是一个勤劳的小会计,不停地数着外面进来的“豆子”。
这些“豆子”可以是外部的脉冲信号,也可以是单片机内部产生的事件。
比如,我们可以用计数器来统计电机旋转的圈数,或者计算按键被按下的次数。
计数器的工作方式也有多种。
可以是向上计数,就是从 0 开始,不断增加,直到达到设定的最大值;也可以是向下计数,从设定的最大值开始,逐渐减少到 0。
还有一种更灵活的方式是双向计数,根据需要在向上和向下之间切换。
那么,定时器/计数器在实际应用中有哪些用处呢?比如说,在一个智能温度控制系统中,我们可以用定时器每隔一段时间读取一次温度传感器的数据,然后根据温度的变化来控制加热或者制冷设备的工作。
而计数器则可以用来统计设备运行的次数,以便进行维护和保养。
在电子时钟的设计中,定时器更是发挥了关键作用。
单片机定时器的原理及应用
单片机定时器的原理及应用概述单片机定时器是单片机的一种重要功能模块,它能够实现精确的时间计量和控制,广泛应用于各种自动化设备和工业控制系统中。
本文将详细介绍单片机定时器的原理和应用。
单片机定时器的原理单片机定时器的原理主要基于计数器的工作原理。
计数器是一种能够按照一定规律自动加(或减)1的电子装置。
单片机定时器通常使用定时/计数器模块来实现。
在单片机中,定时器模块通常由一个或多个8位或16位的寄存器组成,用于保存计数值。
定时器模块还包含一组控制寄存器,用于配置定时器的工作模式、计数方式等。
单片机的定时器工作过程如下: 1. 初始化定时器:配置定时器的工作模式、计数方式等参数。
2. 启动定时器:将定时器的计数值清零,并开始计数。
3. 定时器计数:根据设定的计数方式和工作模式,定时器将自动进行计数,并根据计数规则更新计数值。
4. 定时器溢出:当定时器的计数值达到设定的最大值时,定时器将溢出并触发相应的中断或事件。
5. 定时器复位:定时器溢出后,可以选择自动清零计数值或保持当前计数值不变,然后重新开始计数。
单片机定时器通常支持多种工作模式,如定时模式、计数模式、PWM模式等。
具体的工作模式和计数方式根据不同的单片机型号而有所差异。
单片机定时器的应用单片机定时器的应用非常广泛,以下是一些常见的应用场景:实时时钟单片机定时器可以用于实现实时时钟功能。
通过定时器的计数功能,可以精确地测量经过的时间,并能够提供秒、分、时、日期等各种时间单位的计量。
实时时钟广泛应用于各种计时、计量和时间戳等场景。
脉冲产生定时器可以用来产生各种脉冲信号,例如方波、矩形波、脉冲串等。
通过定时器的计数规则和工作模式设置,可以控制脉冲的频率、占空比等参数,实现精确的波形生成。
周期性任务调度单片机定时器可以用于周期性任务的调度。
通过设置定时器的计数值和溢出中断,可以实现定时触发中断,从而执行一些周期性的任务,例如数据采集、数据上传、状态刷新等。
单片机的定时器模式
单片机的定时器模式
单片机的定时器模式有以下几种:
1. 定时/计数模式(T/C mode):定时器用作定时器或者计数器,在设定时间或者计数到设定值后触发中断或者输出信号。
2. 输入捕获模式(Input Capture mode):定时器用于测量输入信号的脉冲宽度或者周期,在每次捕获到输入信号时记录定时器的值。
3. 输出比较模式(Output Compare mode):定时器用于与某个参考值进行比较,当定时器的值与参考值相等时,可以触发中断或者产生输出信号。
4. 脉冲宽度调制模式(PWM mode):定时器通过改变输出信号的占空比来生成脉冲宽度可调的方波,用于控制电机速度、LED亮度等应用。
5. 脉冲计数模式(Pulse Count mode):定时器用于计数输入信号的脉冲个数,在达到设定的脉冲数后触发中断或者产生输出信号。
这些定时器模式可以根据单片机的型号和品牌的不同而略有差异,具体的定时器模式可以参考单片机的技术手册或者开发工具的相关文档。
单片机定时器工作原理
单片机定时器工作原理一、工作原理1.设置定时器的工作模式:单片机的定时器可以设置为一次性定时、周期性定时、计时器模式等。
根据具体的需求,选择合适的工作模式。
2.设置定时器的计数初值:通过设置计数初值,决定了定时器溢出(计数器从0开始重新计数)的时间,即定时时间的长短。
3.启动定时器:一旦定时器被启动,定时器开始计数,计数值不断增加,直到达到设定的计数初值。
4.检测定时器溢出:当定时器溢出时,即计数值等于计数初值时,定时器会发出中断请求或触发相应事件。
5.定时器中断处理:当定时器溢出时,单片机会执行相应的中断服务程序,完成对定时事件的处理。
在中断服务程序中,可以根据需要进行相应操作,如更新变量值、控制外设等。
6.重新设置计数初值:根据具体应用的需要,可以重新设置计数初值,以实现连续的定时功能。
二、基本结构1.时钟源选择器:用于选择定时器的时钟源,可以是外部时钟源或内部时钟源。
根据具体需求,选择合适的时钟源。
2.控制寄存器:用于设置定时器的工作模式、计数初值、溢出中断使能等。
通过不同的寄存器位设置,实现不同的功能。
3.计数器:用于进行定时的计数操作,根据时钟信号的输入,计数器的值不断增加。
当计数值等于计数初值时,定时器溢出,触发相应事件。
4.中断控制器:用于处理定时器溢出中断,根据设定的中断优先级和中断使能位,确定是否触发中断。
三、应用实例1.脉冲生成器:通过设定定时器的计数初值和使能定时器的时钟源,可以很方便地生成指定频率和占空比的脉冲信号。
2.定时测量:通过定时器的计数功能,可以实现精确的时间测量。
例如,可以测量一些事件的持续时间,或者测量两个事件之间的时间间隔。
3.延时控制:通过定时器的定时功能,可以实现延时控制。
例如,可以设定一个定时时间,当定时器溢出时,触发相应事件,控制外设的开关。
4.时钟显示:通过多个定时器的协同工作,可以实现时钟的显示功能。
例如,通过一个定时器定时1秒,另一个定时器定时1分钟,可以实现秒表和时钟功能。
单片机定时器实验报告
单片机定时器实验报告单片机定时器实验报告概述:单片机是一种集成电路,具有微处理器核心,用于控制和执行各种任务。
在嵌入式系统中,单片机的定时器是一个重要的组件,用于生成精确的时间延迟和周期性的信号。
本实验旨在通过使用单片机的定时器模块,学习和掌握定时器的基本原理和应用。
实验目的:1. 理解单片机定时器的工作原理;2. 掌握定时器的基本配置和使用方法;3. 实现定时器产生精确的时间延迟和周期性的信号。
实验器材:1. 单片机开发板;2. USB数据线;3. 电脑。
实验步骤:1. 连接单片机开发板和电脑,确保开发板与电脑正常通信;2. 打开开发板的开发环境软件,创建一个新的工程;3. 在工程中选择定时器模块,并进行基本配置,如选择定时器模式、预分频系数等;4. 编写程序代码,实现定时器功能。
可以选择定时产生一个精确的时间延迟,或者产生一个周期性的信号;5. 将程序代码下载到单片机开发板中,并运行程序;6. 观察实验结果,验证定时器的工作是否符合预期。
实验结果:经过实验,我们成功实现了单片机定时器的功能。
通过设置定时器的工作模式和预分频系数,我们可以生成精确的时间延迟和周期性的信号。
实验结果与预期一致,证明了定时器的可靠性和准确性。
实验总结:通过本次实验,我们深入了解了单片机定时器的原理和应用。
定时器作为嵌入式系统中的重要组件,具有广泛的应用前景。
掌握定时器的基本配置和使用方法,对于开发嵌入式系统和实现各种功能非常重要。
通过实验,我们不仅学到了理论知识,还掌握了实际操作的技巧和经验。
然而,单片机定时器的应用不仅仅局限于时间延迟和周期性信号的生成。
在实际工程中,定时器还可以用于测量脉冲宽度、频率计数、PWM波形生成等。
因此,我们在以后的学习和工作中,应该进一步探索和应用定时器的其他功能,以满足不同场景下的需求。
总之,单片机定时器是嵌入式系统中不可或缺的组件之一。
通过本次实验,我们对定时器的原理和应用有了更深入的了解。
单片机 定时器
单片机定时器近年来,随着科技的发展,单片机作为一种重要的电子元器件,在各个领域得到了广泛的应用。
其中,定时器作为单片机的重要功能之一,在各种电子设备中发挥着重要的作用。
本文将对单片机定时器进行介绍和探讨。
一、什么是定时器定时器是单片机中常见的一个重要功能模块,用于产生或计数精确的时间间隔。
通过定时器,我们可以实现各种实时控制和时间测量功能。
在单片机的内部结构中,定时器通常由一个或多个计数器、比较器和控制逻辑电路组成。
二、单片机定时器的工作原理单片机定时器的工作原理主要可以分为计数模式和比较模式两种。
1. 计数模式在计数模式下,定时器会根据系统时钟的信号来进行计数操作。
当计数器达到设定的值后,会产生一个中断信号,从而触发系统执行相应的操作。
计数模式可以通过设置定时器的计数值和时钟频率来实现不同的时间间隔。
2. 比较模式在比较模式下,定时器会将计数器的值与设定的比较器进行比较。
当计数器的值等于比较器的值时,会产生一个中断信号。
比较模式常用于周期性的定时任务,如PWM信号的生成等。
三、单片机定时器的应用领域单片机定时器广泛应用于各个领域,如工业控制、通信设备、汽车电子、家电等。
以下是定时器在几个常见应用领域的具体应用。
1. 工业控制在工业控制领域,单片机定时器常用于实现定时开关、定时测量以及触发控制等功能。
通过设置不同的定时器参数,可以实现对生产过程的精确控制。
2. 通信设备在通信设备中,单片机定时器被广泛应用于协议的处理和时序控制。
通过定时器的精确计时功能,可以实现数据传输的同步和时序的控制。
3. 汽车电子在汽车电子领域,单片机定时器主要用于发动机的点火控制和喷油控制。
通过定时器的精确计时功能,可以实现对发动机点火和喷油的精确控制,提高汽车的燃油利用率和性能。
4. 家电在家电领域,单片机定时器主要用于电器的定时开关和节能控制。
通过设置定时器的参数,可以实现电器的定时开关,从而提高家电的智能化程度和能源利用效率。
单片机定时器定时原理
单片机定时器定时原理
单片机的定时器定时原理是通过内部的时钟源产生一定的时钟脉冲,然后根据预设的定时时间来计数,在达到预设的计数值时触发相应的中断或执行相应的操作。
具体的实现过程如下:
1. 设置定时器的工作模式:通常有定时器模式和计数器模式可供选择。
2. 配置定时器的计数值:根据所需的定时时间,设置定时器的计数值。
计数值决定了定时器中断或操作触发的时间点。
3. 配置定时器的时钟源:选择适合的时钟源供给定时器,一般可以选择外部晶振或内部时钟源。
4. 启动定时器:通过设置相关寄存器,启动定时器开始计数。
5. 定时器中断/操作触发:当定时器的计数值达到预设的值时,会产生中断或执行相应的操作,例如改变引脚状态、修改寄存器值等。
6. 清除中断标志位:处理完定时器中断或操作之后,需要手动清除中断标志位,以便下一次定时器能够正常工作。
通过以上步骤,单片机的定时器可以实现一定精度的定时功能。
根据不同的应用需求,可以选择合适的定时模式和计数值,以实现各种各样的定时操作。
单片机定时器的使用
单片机定时器的使用一、单片机定时器的基本原理定时器通常由一个时钟源提供脉冲信号来计数,这个时钟源可以是外部时钟源、内部时钟源或者其他外设提供的时钟源。
定时器以一个指定的时钟周期开始计数,并在达到预设的计数值时产生一个中断信号或触发一个相关事件。
二、单片机定时器的使用方法1.定时器的预分频设置在使用单片机的定时器之前,我们需要根据具体的应用需求设置定时器的预分频值。
预分频值的设置将影响定时器的计数速度。
常用的预分频值有1、2、4、8和16等,这意味着在一个计数周期内,定时器模块将接收几个时钟脉冲。
通过设置不同的预分频值,我们可以调整定时器的计数速度,从而实现不同的时间精度。
2.定时器计数值的设定在设置定时器的计数值之前,我们需要确定定时器的计数频率和所需的定时时间。
计数频率是由定时器的时钟源和预分频值决定的,而所需的定时时间是根据具体应用而确定的。
定时器计数值的设定通常是通过写入特定的寄存器来实现的。
根据单片机型号的不同,定时器计数值的位数可能有所不同。
一般来说,定时器的计数值越大,可以计时的时间就越长。
3.中断的使能与处理在使用定时器进行定时操作时,通常会设置一个中断服务程序,在定时器达到预设的计数值时触发中断。
中断服务程序中可以添加一些需要在定时器到达指定时间时执行的代码。
为了使中断能够正常工作,我们需要合理地设置中断向量、ISR(Interrupt Service Routine)等。
同时,我们也需要在程序的其他部分进行相关的中断控制设置,如打开或关闭中断、配置中断优先级等。
三、单片机定时器的常见应用案例1.时钟显示器时钟显示器是单片机定时器的一个常见应用案例,通过使用定时器和LED数码管等外设,可以实现一个精确计时的时钟显示器。
定时器以一定的频率计数,并在计数到一定值时触发中断,中断服务程序中可以更新数码管的显示值。
2.交通信号灯交通信号灯是城市道路交通管理中常用的设备,定时器可以用于控制交通信号灯的时序。
单片机定时器工作原理
单片机定时器工作原理
单片机中的定时器是一种内部的计时器,它通过内部的计数器、预置值和时钟源等组件来实现计时功能。
定时器一般用于产生精确的定时或延时事件。
工作原理如下:
1. 定时器的计数器会一直递增,直到达到预设的值。
预设的值可以通过寄存器来设置,一般称之为计数器的预置值或重装值(Reload Value)。
2. 当计数器的值等于预设值时,定时器会自动产生一个计时器溢出中断信号,即计时器溢出(Timer Overflow)。
3. 时钟源提供定时器计数器的输入时钟频率,它可以是外部的晶振、外部引脚输入、内部时钟源等,具体的时钟源由单片机的设计决定。
4. 定时器可以通过寄存器设置计时器的工作模式,如定时模式、计时模式、脉冲宽度调制模式等,不同的工作模式会影响定时器的计数行为和输出信号。
5. 定时器可以在计时器溢出时产生中断信号,通过中断服务程序(Interrupt Service Routine,ISR)来处理定时器的溢出事件,从而完成相应的定时或延时功能。
通过以上原理,单片机的定时器可以用来生成精确的定时或延时事件,常用于定时采样、时间测量、PWM输出等应用。
定时器PPT课件
完全可以,方法时用定时器将时间分片。只要 时间片足够短,事件1、事件2、事件3都可以 看作是同时在进行;单片机好像是同时在处理 3件事。
关于交通灯项目的再讨论
延时程序占用大量时间,CPU空转,效率不 高,如何提高效率?
延时,即定时问题能否交给专门的装置去管? 定时器即专门处理时间问题; 如何有多个程序要求“同时”运行怎么办?
定时器的控制寄存器
以上的这些控制都是通过特殊功能寄存器来实 现的。
一、工作方式寄存器TMOD
工作方式寄存器TMOD用于设置定时/计数器 的工作方式,低四位用于T0,高四位用于T1。其格 式如下:
字节地址:89H,不可以位寻址。
GATE:门控位。GATE=0时,只要用软件使 TCON中的TR0或TR1为1,就可以启动
第八章 单片机的定时器
知识目标:掌握单片机定时器的结构与特点, 掌握其控制寄存器及工作方式的设定方法。
技能目标:能正确设定定时器的控制寄存器, 能正确计算设定定时器的初值,会编写定时器 控制程序,能解决定时相关问题。
素质目标:不断深化对单片机兴趣,养成能克 服学习困难的习惯。
单片机的定时器
为什么要中断?
要跑马灯与交通灯同时运行, 怎么办?
时间分片可以解决这一问题
A时间 段,
CPU 做事 件1
B时间 段,
CPU 做事 件2
C时间 段,
CPU 做事 件3
A时间 段,
CPU 做事 件1
B时间 段,
CPU 做事 件2
C时间 段,
CPU 做事 件3
只要时间片足够短,事件1、事件2、事件3都 可以看作是同时在进行;单片机好像是同时 在处理3件事。
前面已经谈到,用软件延时的办法虽然方法简 单,但单片机的效率低下。能否在单片机CPU 工作的同时进行定时呢?
单片机中的定时器和计数器
单片机中的定时器和计数器单片机作为一种嵌入式系统的核心部件,在各个领域都发挥着重要的作用。
其中,定时器和计数器作为单片机中常用的功能模块,被广泛应用于各种实际场景中。
本文将介绍单片机中的定时器和计数器的原理、使用方法以及在实际应用中的一些典型案例。
一、定时器的原理和使用方法定时器是单片机中常见的一个功能模块,它可以用来产生一定时间间隔的中断信号,以实现对时间的计量和控制。
定时器一般由一个计数器和一组控制寄存器组成。
具体来说,定时器根据计数器的累加值来判断时间是否到达设定的阈值,并在时间到达时产生中断信号。
在单片机中,定时器的使用方法如下:1. 设置定时器的工作模式:包括工作在定时模式还是计数模式,以及选择时钟源等。
2. 设置定时器的阈值:即需要计时的时间间隔。
3. 启动定时器:通过控制寄存器来启动定时器的运行。
4. 等待定时器中断:当定时器计数器的累加值达到设定的阈值时,会产生中断信号,可以通过中断服务函数来进行相应的处理。
二、计数器的原理和使用方法计数器是单片机中另一个常见的功能模块,它主要用于记录一个事件的发生次数。
计数器一般由一个计数寄存器和一组控制寄存器组成。
计数器可以通过外部信号的输入来触发计数,并且可以根据需要进行计数器的清零、暂停和启动操作。
在单片机中,计数器的使用方法如下:1. 设置计数器的工作模式:包括工作在计数上升沿触发模式还是计数下降沿触发模式,以及选择计数方向等。
2. 设置计数器的初始值:即计数器开始计数的初始值。
3. 启动计数器:通过控制寄存器来启动计数器的运行。
4. 根据需要进行清零、暂停和启动操作:可以通过控制寄存器来实现计数器的清零、暂停和启动操作。
三、定时器和计数器的应用案例1. 蜂鸣器定时器控制:通过定时器模块产生一定频率的方波信号,控制蜂鸣器的鸣叫时间和静默时间,实现声音的产生和控制。
2. LED呼吸灯控制:通过定时器模块和计数器模块配合使用,控制LED的亮度实现呼吸灯效果。
单片机中定时器的作用
单片机中定时器的作用
单片机中的定时器是一种非常重要的功能模块,它可以用来实现各种不同的功能。
下面是定时器的具体作用:
1.计时:单片机中的定时器可以用来计算时间,例如测量某个事件发生的时间间隔或者进行定时操作。
通过对定时器进行编程,可以让它在一定时间后产生中断信号,从而实现某些特殊功能。
2.脉冲计数:在某些应用场合下需要对输入信号进行脉冲计数,这个时候就可以使用单片机中的定时器模块。
通过对定时器进行编程,可以让它记录输入信号发生的次数,并输出相应的计数结果。
3. PWM输出:PWM是一种常见的数字信号调制技术,它可以将一个模拟信号转化为数字信号输出。
单片机中的定时器可以用来产生PWM 波形,并通过IO口输出给外部设备控制电平。
4. 作为延迟函数使用:在某些应用场合下需要进行延迟操作,例如等待外部设备响应或者等待数据传输完成等。
这个时候就可以使用单片机中的定时器模块,在程序中编写相应代码实现延迟操作。
5. 实现周期性任务:在某些嵌入式应用场合下需要对某些任务进行周
期性操作,例如定时采集数据或者周期性发送数据等。
这个时候就可以使用单片机中的定时器模块,在程序中编写相应代码实现周期性任务。
总之,单片机中的定时器模块是一种非常重要的功能模块,它可以帮助我们实现各种不同的功能。
在进行单片机设计和编程的过程中,我们需要充分利用定时器模块来满足不同需求。
单片机定时器的工作原理
单片机定时器的工作原理
单片机定时器是一种用于控制和测量时间的重要功能模块。
它通过计数定时器来实现定时的功能。
单片机定时器一般由一个计数器和相关的控制寄存器组成。
计数器用于储存和维护计时的数值,而控制寄存器则用于配置定时器的工作方式和触发条件。
定时器的工作原理如下:
1. 初始化计数器:在使用定时器前,需要对计数器进行初始化,将其清零或者设定为初始值。
2. 定时器开始计数:经过初始化后,定时器开始从初始值开始计数。
计数器可以按照一定的时钟频率进行增加。
3. 计数器达到设定值:当计数器的数值达到设定的目标值时,定时器会触发一个中断请求或者产生一个输出信号,用于通知外部系统。
4. 可选择的处理中断或输出信号:根据实际需求,可以选择在定时器触发中断请求后进行相应的中断处理,或者对输出信号进行相应的操作。
5. 定时器复位或重新计数:在完成一定的操作后,可以选择将定时器重新设定为初始值,或者清零计数器,以重新开始计时。
总之,单片机定时器通过计数器实现定时功能,当计数器达到设定值时触发中断请求或输出信号,从而控制和测量时间。
它在很多应用中都发挥着重要的作用,比如定时测量、脉冲计数、PWM输出等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
燕山大学课程设计说明书题目:定时器实验学院(系):电气工程学院年级专业: 09级仪表(2)班学号: 0901******** 学生姓名:吴季哲指导教师:张淑清教师职称:教授摘要单片机,一个集成在一块芯片上的完整计算机系统。
尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
单片机8031中有两个16位定时器/计数器,分别为定时器/计数器0和定时器/计数器1,简称为定时器0(T0)和定时器1(T1)。
定时器/计数器具有计数和定时功能,拥有4种工作方式,即工作方式0~3。
本次课程设计采用的是定时器0的工作方式2来实现定时功能。
利用工作方式2的区别于定时工作方式0和1的自动重新加载功能,循环定时,通过软件和硬件的结合达到定时的目的。
在单片机外部接连适当的电路,通过开关按键启停定时功能,通过二极管灯亮与否判断定时时间到否。
关键词单片机8031 定时器0 工作方式2 二极管目录摘要 (1)第一章.绪论 (3)1.1 引言 (3)1.2本人所做工作 (3)1.3课题概述 (3)第二章课程设计报告内容 (5)2.1 双音多频(DTMF)信号简介 (5)2.1.1相关控制寄存器 (5)2.1.2定时器工作方式2 (7)2.1.3 总体设计 (9)2.2 详细设计 (9)2.2.1 硬件设计 (9)2.2.2软件设计 (11)第三章程序代码及其分析 (13)3.1 定时器程序代码 (13)3.1.1定时器的原程序代码如下所示 (13)3.1.2修改后定时器的原程序代码如下所示 (14)3.2结果分析 (18)3.2.1在原程序中结果分析 (18)3.2.1在扩展程序中结果分析 (19)第4章总结 (20)参考文献第一章绪论1.1 引言在我们平时的生活中,有许多地方可以看到定时的影子,如手表定时、电脑电视定时、工厂车间零件制作定时等等。
定时不仅让我们的生活变得时间化和规律化,也从一定程度上提高了生产力,提高了人民的生活水平。
基于单片机的定时,轻巧简便,利于携带和操作,在当今物质文化飞速发展的今天更是必不可少的。
所以研究基于单片机的定时器设计很有意义。
1.2 本人所做工作在这次的单片机课程设计中,我和同组同学被派发“定时器”这一课题。
作为一名普通的组员,我和其他组员都各尽其职,为顺利完成此次课题一起努力着。
课程设计期间,我和同组人员讨论并完善程序代码。
这个过程让我受益匪浅,不仅提高了自己的代码分析能力,也从一定程度上锻炼了动手能力。
1.3课题概述在单片机控制应用的定时和计数的需求很多,为此在单片机中都有定时器/计数器。
8031的两个定时器/计数器都是16位加法计数结构。
由于在8031中只能使用8为字节寄存器,所以把两个16位定时器分解为4个8位定时器,依次为TL0、TL1、TH0和TH1。
它们均属于专用寄存器之列。
单片机的定时功能是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机芯片内部,每个机器周期有一个计数脉冲,即每个机器周期计数器加1。
由于一个机器周期等于12个振荡脉冲周期,因此,计数频率为振荡频率的1/12。
如果单片机采用12MHz晶振,则计数频率为1MHz,即每微妙计数器加1。
这样,在使用定时器是既可以根据计数值计算出定时时间,也可以通过定时时间的要求算出计数器的预置值。
要实现定时器的功能,需要用到与定时器/计数器应用有关的控制寄存器,它们分别是:定时器控制寄存器(TCON)、定时器方式选择寄存器(TMOD)、中断允许控制寄存器(IE)。
此次课题所要设计的系统比较简易,其主要功能是:利用定时器/计数器定时,去实现二极管不同顺序发光。
第二章课程设计报告内容2.1 背景知识2.1.1相关控制寄存器在8031中,与定时器/计数器应用有关的控制寄存器共有3个,分别是定时控制寄存器、工作方式控制寄存器和中断允许控制寄存器。
本次课程设计将会涉及这三个控制寄存器,现对它们说明如下。
(1)定时器控制寄存器(TCON)TCON寄存器地址为88H,位地址为8FH~88H。
该寄存器位定义及位地址表示如表3-1所示。
表3-1 TCON寄存器表示定时器控制寄存器中,与定时器/计数器有关的控制位共4位,即TF1、TR1、TF0和TR0,它们的作用分别为:TR0和TR1——运行控制位。
TR0(TR1)=0,停止定时器/计数器工作;TR0(TR1)=1,启动定时器/计数器工作。
控制计数启停只需用软件方法使其置1或清0即可。
TF0和TF1——计数溢出标志位。
当计数器产生计数溢出时,相应溢出标志位由硬件置1。
计数溢出标志用于表示定时/计数是否完成,因此,它是供查询的状态位。
当采用查询方法是,溢出标志位被查询,并在后续处理程序中应以软件方法及时将其清0。
而当采用中断方法是,溢出标志位不但能自动产生中断请求,而且连清0操作也能在转向中断服务程序时由硬件自动进行。
(2)定时器方式选择寄存器(TMOD)TMOD寄存器用于设定定时器/计数器的工作方式。
寄存器地址为89H,但它没有位地址,不能进行位寻址,只能用字节传送指令设置其内容。
该寄存器的位定义如表3-2所示。
表3-2 TMOD寄存器表示它的低半字节对应定时器/计数器0,高半字节对应定时器/计数器1,前后半字节的位格式完全对应。
位定义如下:GATE——门控位。
GA TE=0,以运行控制位TR启动定时器;GATE=1,以外中断请求信号(0INT)启动定时器,这可以用于外部脉冲宽度INT或1测量。
C/——定时方式或计数方式选择为。
TTC/=1,计数工作方式。
C/=0,定时工作方式;TM1M0——工作方式选择位。
M1M0=00,工作方式0;M1M0=01,工作方式1;M1M0=10,工作方式2;M1M0=11,工作方式3。
(3)中断允许控制寄存器(IE)该寄存器地址为A8H,位地址为AFH~A8H。
寄存器位定义及位地址如表3-3所示。
表3-3 IE寄存器表示其中与定时器/计数器有关的是定时器/计数器中断允许控制位ET0和ET1。
ET0(ET1)=0,禁止定时器中断;ET0(ET1)=1,允许定时器中断。
2.1.2 定时器工作方式28031的两个定时器/计数器都有4种工作方式是,即工作方式0~3。
由于本次课程设计主要涉及定时器/计数器0的工作方式2,所以以下将重点介绍定时器/计数器0的工作方式2。
本次课程设计使用定时器工作方式2,是由于其相对定时器工作方式0和工作方式1有一定的长处。
工作方式0和工作方式1有一个共同点,就是计数溢出后计数器全为0,因此循环定时应用时就需要反复设置计数初值。
这不但影响定时精度,而且也给程序设计带来麻烦。
工作方式2就是针对此问题而设置的,它具有自动重新加载计数初值的功能,免去了反复设置计数初值的麻烦。
定时器/计数器0的工作方式0和工作方式2所对应的电路逻辑结构图分别如图3-1和图3-2所示。
图3-1定时器/计数器0的工作方式0逻辑结构图3-2 定时器/计数器0的工作方式2逻辑结构对比上述两图,我们可以发现工作方式0和工作方式2对应的逻辑结构还是有许多部分相同的,如两图的右半部分,而两图左半部分则有所差异。
下面将对其相同点和不同点作简要分析,这也是为什么这次课程设计选择工作方式2的原因。
相同点:两种工作方式,计数脉冲既可以来自芯片内部,也可以来自外部。
来自内部的是机器周期脉冲,图中OSC是英文Oscillator(振荡器)的缩写,表示芯片的晶振脉冲,经12分频后,即为单片机的机器周期脉冲。
来自外部的计数脉冲由T0(P3.4)引脚输入,计数脉冲由控制寄存器TMOD的TC/位进行控制。
当TC/=0时,接通机器周期脉冲,计数器每个机器周期进行一次加1,这就是定时器工作方式;当TC/=1时,接通外部计数引脚T0(P3.4),从T0引入计数脉冲输入,这就是计数工作方式。
不同点:如图3-1所示的左半部分,工作方式0条件下,TL0使用了5位,当TL0的低5位计数溢出时,向TH0进位;而全部13位计数溢出时,向计数溢出标志位TF0进位,将其置1。
如图3-2所示的左半部分,工作方式2条件下,16位计数器被分成两部分,TL作为计数器使用,TH作为预置寄存器使用,初始化时把计数初值分别装入TL和TH中。
当计数溢出后,由预置寄存器TH以硬件方法自动给计数器TL重新加载。
变软件加载为硬件加载。
更详细点,初始化时,8位计数初值同时装入TL0和TH0。
当TL0计数溢出时,置位TF0,并用保存在预置寄存器TH0中的计数初值自动加载TL0,然后开始重新计数。
如此重复,这样不但省去了用户程序中的重装指令,而且也有利于提高定时精度。
2.1.3 总体设计如图3-3所示是此次课题设计的总体框架图。
图3-3 定时器总体框架图2.2 详细设计2.2.1 硬件设计(1)定时器设计电路图本次课程设计设计的电路图如图3-4所示。
图中单片机采用8031,由图可见,P1.0~P1.7依次控制八个LED灯。
图3-4 定时器电路图2.2.2软件设计(1)计数初值计算根据定时器/ 计数器0的工作方式2逻辑结构图可知,使用工作方式2的计数范围是1~255,定时时间的计算公式为:(28-计数初值)*晶振周期*12或(28-计数初值)*机器周期本次课题设计的晶振频率为12MHz,所以机器周期为1微秒。
由于工作方式2计数最高限值为255,所以这里选定定时时间为100微秒,这样可计算出计数初值。
设计数初值为x,则(28- x)*1*10-6s=100*10-6s计算得x=(256-50)=(256-50)。
所以寄存器TL0和TH0都设置初值为CEH。
每一次定时时间要求是100U秒,所以可利用软件方法实现10000次1秒的定时,这就是循环定时。
(2)详细流程图定时器设计的详细流程图如图3-5所示。
图3-5 定时器设计详细流程图第三章程序代码及其分析3.1 定时器程序代码3.1.1定时器的原程序代码如下所示。
#include <reg51.h>#define Tick 10000 // 10000 x 100us = 1s#define T100us (256-50) // 100us时间常数(6M)unsigned int C100us; // 100us记数单元bit LEDBuf;sbit LED = P1^0;void T0Int() interrupt 1{C100us--;if (C100us == 0) {C100us = Tick; // 100us 记数器为0, 重置记数器LEDBuf = !LEDBuf; // 取反LED}}void main(){TMOD = 0x02; // 方式2, 定时器TH0 = T100us;TL0 = T100us;IE = 0x82; // EA=1, IT0 = 1LEDBuf = 0;LED = 0;C100us = Tick;TR0 = 1; // 开始定时while (1) {LED = LEDBuf;}}3.1.2修改后定时器的原程序代码如下所示。