任务五 定时控制流水灯

合集下载

PLC控制技术基础项目三PLC流水灯控制

PLC控制技术基础项目三PLC流水灯控制

PLC 基本单元
电源变换器

微处理器(CPU)




运算器
控制器







I/O

















PLC系统结构示意图
现场用户输出设备 执行器
中间继电器 电磁阀
扩展设备 扩展单元 通讯模块 功能模块
3.1.1PLC的基本组成
1.微处理器(CPU)
?接收并存储用户程序和数据; ?诊断电源、PLC工作状态及编程的语法错误; ?接收输入信号,送入数据寄存器并保存; ?运行时顺序读取、解释、执行用户程序,完成用户 程序的各种操作; ?将用户程序的执行结果送至输出端。
2.存储器 ?存放系统工作程序(监控程序); ?存放模块化应用功能子程序; ?存放命令解释程序; ?存放功能子程序的调用管理程序; ?存放存储系统参数。 用户存储器——RAM/EPROM/EEPROM ?存放用户工作程序; ?存放工作数据。
3.输入单元——带光电隔离电路
?多种辅助电源类型:AC电源DC24V输入 DC电源DC24V输入 DC电源DC12V输入
(2)100ms积算定时器(T250~T255)共6点, 是对100ms时钟脉冲进行累积计数的定时的时间范 围为0.1~3276.7s。
项目三:流水灯的PLC控 制
3.1任务资讯 3.2任务分析 3.3任务决策 3.4任务计划 3.5任务实施 3.6评价提高
3.2任务分析
本实例中,流水灯的控制要求: PLC运行后,灯光自动开始显示,有时每次只亮一 盏灯,顺序从上向下,或是从下向上;有时从底层从 下向上全部点亮,然后又从上向下熄灭。运行方式多 样,学生可自行设计。 具体讲,共有6盏灯,每灯亮1s,按下启动按钮顺 序依次为 L1→L2→L3→L4→L5→L6→L5→L4→L3→L2 →L1, 循环往复亮灭。

流水灯定时控制

流水灯定时控制

任务3 以定时方式控制流水灯
自然优先权顺序
中 断 源 同级内优先权排列
外部中断0中断(IE0) 定时器/计数器0中断(TF0) 外部中断1中断(IE1) 定时器/计数器1中断(TF1) 串行接口中断(TI/RI)
最 高
最 低
任务3 以定时方式控制流水灯
MCS-51系列单片机中断响应原则:
1)高级中断请求可以中断正在执行的低级中断。
任务3 以定时方式控制流水灯
(2)中断请求标志
1)TCON中的中断标志位
(MSB)8FH D7 TF1 8EH D6 TR1 8DH D5 TF0 8CH D4 TR0 8BH D3 IE1 8AH D2 IT1 89H D1 IE0 88H(LSB) D0 IT0
外部中断INT0中断标志 位(TCON.1) : IE0=1,外部中断1 向CPU申请中断
位 符号 值
D7 X 0
D6 X 0
D5 X 0
D4 PS 0
D3 PT1 0
D2 PX1 1
D1 PT0 1
D0 PX0 0
IP的值就是06H。
任务3 以定时方式控制流水灯
实例3-3 在上例中,如果5个中断请求同时发生 ,求中断响应的次序。
位 符号 值 D7 X 0 D6 X 0 D5 X 0 D4 PS 0 D3 PT1 0 D2 PX1 1 D1 PT0 1 D0 PX0 0
任务3 以定时方式控制流水灯
关于USING的说明
using不仅可以用于中断服务函数的定义中,也可以 用于普通的内部函数,但不能用于外部函数。 就中断服务函数而言 • 如果不使用using,则在进入中断服务函数的时 候,中断函数中所用到的全部工作寄存器都要入 栈,函数返回之前所有的寄存器内容出栈; • 如果使用using,则在进入中断服务函数的时候 ,只将当前工作寄存器组入栈,用using指定的 工作寄存器组的内容不变也不入栈,函数返回之 前将被保护的工作寄存器组出栈。

任务五 定时控制流水灯

任务五 定时控制流水灯

C1
22pF
X1 R1
1k 12MHz
U1
19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
#include <reg51.h> Void main() { unsigned char i; TMOD=0x10; //设置Timer 1工作在方式1下定时模式 for (i=0; i<50; i++) //重复定时计数器,定时50次 { TH1=(65536-20000)/256; //往TH1中载入计数初值高8位 TL1=(65536-20000)%256; //往TL1中载入计数初值低8位定时20ms TR1=1; //启动Timer 1 while (!TF1) ; //检测Timer1溢出标志,当TF1=1,跳出 TR1=0; //关闭Timer 1 TF1=0; //将TF1清0 } }
//设置Timer 1工作在方式1下定时模式 //重复定时计数器,定时50次 //往TL1和TH1中载入计数的初始值B1E0H //定时20ms //启动Timer 1 //检测Timer1溢出标志,当TF1=1,跳出 //关闭Timer 1 //将TF1清0

0305 定时器控制流水灯程序设计

0305 定时器控制流水灯程序设计

THANK YOU!
定时器控制流水灯程序设计
PLC执行[>= T0 K20]指令和[< T0 K30] 指令,判断T0的经过值 是否在2~3秒时间段,如果T0的经 过值在此时段内,则PLC执行[MOV K4 K2Y000]指令,Y2线圈得电, 第3盏彩灯点亮。
任务实施
› (2)采用当前值比较方式编写程序
PLC执行[>= T0 K30]指令和[< T0 K40] 指令,判断T0的经过值是否在3~4 秒时间段,如果T0的经过值在此时段内,则PLC执行[MOV K8 K2Y000]指令 ,Y3线圈得电,第4盏彩灯点亮。 PLC执行[>= T0 K40]指令和[< T0 K50] 指令,判断T0的经过值是否在4~5 秒时间段,如果T0的经过值在此时段内,则PLC执行[MOV K16 K2Y000]指令 ,Y4线圈得电,第5盏彩灯点亮。
知识储备
定时器 时钟脉冲周期 编号范围(共256个) 定时范围
通用 定时器
100ms 10ms
T0~T199,共200个 0.1~3276.7s T200~T245,共46个 0.01~327.67s
积算 定时器
1ms 100ms
T246~T249,共4个 0.001~32.767s T250~T255,共6个 0.1~3276.7s
知识储备
› 1)通用定时器
在任意时刻,如果定时 器T0被断电或者是驱 动输入X000被断开, 定时器T0将被立即复 位,累计值清零、输出 触点复位。
当T0累计值等于设 定值K50时,定时 器T0的输出触点动 作,Y000得电。
X000接通,T0开 始对100ms的时钟 脉冲进行累计。
知识储备ቤተ መጻሕፍቲ ባይዱ

流水灯控制的实验报告

流水灯控制的实验报告

一、实验目的1. 熟悉流水灯控制电路的原理和设计方法;2. 掌握使用单片机控制LED灯流水灯的方法;3. 培养动手实践能力和创新意识。

二、实验原理流水灯是一种常见的LED灯控制方式,通过单片机对LED灯进行控制,使LED灯按照一定的规律依次点亮和熄灭,形成动态的流水效果。

本实验采用51单片机作为控制器,通过编程实现对LED灯流水灯的控制。

流水灯的控制原理如下:1. 将LED灯连接到单片机的P0口,每个LED灯对应一个P0口的引脚;2. 编写程序,使单片机依次对P0口的引脚进行赋值,从而控制LED灯的亮灭;3. 通过延时函数实现LED灯的流水效果。

三、实验器材1. 51单片机实验板;2. 8个LED灯;3. 电阻(阻值约为220Ω);4. 连接线;5. 编程器;6. 示波器(可选)。

四、实验步骤1. 将LED灯按照电路图连接到实验板上,确保每个LED灯的正极连接到单片机的P0口对应引脚,负极连接到GND;2. 编写程序,实现LED灯流水灯的控制。

程序如下:```c#include <reg51.h>void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 120; j++); }void main() {while (1) {P0 = 0x01; // 第一个LED灯亮 delay(500);P0 = 0x02; // 第二个LED灯亮 delay(500);P0 = 0x04; // 第三个LED灯亮 delay(500);P0 = 0x08; // 第四个LED灯亮 delay(500);P0 = 0x10; // 第五个LED灯亮 delay(500);P0 = 0x20; // 第六个LED灯亮 delay(500);P0 = 0x40; // 第七个LED灯亮 delay(500);P0 = 0x80; // 第八个LED灯亮delay(500);P0 = 0xFF; // 所有LED灯亮delay(500);P0 = 0x00; // 所有LED灯灭delay(500);}}```3. 将编写好的程序烧录到单片机中,并上电运行;4. 观察LED灯流水灯的效果,分析程序运行过程。

定时器控制流水灯

定时器控制流水灯

定时器控制流水灯The Standardization Office was revised on the afternoon of December 13, 2020成绩信息与通信工程学院实验报告(操作性实验)课程名称:微机原理与微控制器应用实验题目:c51单片机的定时器实验指导教师:班级: 学号:学生姓名:一、实验目的和任务1.掌握定时器中断的编程方法。

2.掌握keil C51集成开发环境在硬件仿真条件下各参数的设置。

二、实验仪器及器件硬件:电脑一台、微机原理与单片机试验箱:51开发板、开关及LED显示单元、导线若干软件:keil uVision4三、实验内容及电路图利用实验板上的八个LED灯作显示,利用定时器中断编写中断一次为50ms的定时程序,控制单片机定时器进行定时,总定时时间为。

四、流程图与程序#include ""#include<>int temp=0x01,num=0;void T0Int() interrupt 1{TH0=(65536-45872)/256;TL0=(65536-45872)%256;num++;if(num==15) {num=0;P1=_crol_(temp,1);temp=P1;}}void main(){EA=1;ET0=1;TMOD=0X01;TH0=(65536-45872)/256;TL0=(65536-45872)%256;TR0=1;while(1);}五、实验结果八个LED灯由左往右依次亮起,并且每个LED灯点亮时间大约为。

六、实验数据分析及处理从实验现象来看,LED灯从左到右依次点亮,符合实验要求,说明实验操作正确,实验结果正确。

七、实验结论与感悟(或讨论)。

流水灯控制教案

流水灯控制教案流水灯的模拟控制【引入】在前面的学习中,我们给大家介绍了定时器的相关知识点,同学们也能够运用定时器这种软元件进行一些简单程序的编写。

然而,定时控制在实际生活中的运用也是比比皆是。

比如在一些标志牌和广告牌,内部和四周都会运用流水灯来增加它的醒目程度。

利用PLC技术如何来进行流水灯控制呢?这就是今天所要给大家介绍的:项目五——流水灯的模拟控制。

【过渡】首先我们来看一下我们今天的学习目标。

一、【学习目标】1.会分析流水灯控制系统的动作要求,合理分配输入/输出点。

2.能独立完成流水灯控制系统的安装、调试和监控。

3.培养勤于思考、善于动手的良好习惯以及团队合作的能力。

【过渡】那么流水灯是如何控制的呢,我们来看一下它的动作要求?在此过程中,请大家思考这样几个问题?1.系统中用到哪些输入/输出器件呢?2.它们又该如何分配呢?请大家完成I/O分配表。

二、【动作要求】有三盏灯分别为红灯、绿灯和黄灯。

要求:1.按下启动按钮SB1三盏灯按以下顺序循环:2.按下停止按钮SB2三盏灯均熄灭,系统恢复初始状态。

三、【输入/输出分配表】流水灯控制电路的输入/输出分配表如表所示。

流水灯控制输入/输出分配表【点评】【过渡】动作任务清楚了。

接下来,请大家根据输入/输出分配表画出原理图。

然后,进行该系统硬件接线部分的安装。

四、【安装、连接、检测电路】一、用三菱FX2-48MR型可编程序控制器实现流水灯控制的输入/输出接线如图下所示。

图2-32流水灯PLC控制输入/输出接线图二、在此过程中,请大家务必注意:1)注意安全规范。

严格按照评分表的要求文明操作。

【点评】【过渡】至此,硬件部分的安装已经完成。

那么软件(梯形图的程序)该如何编写呢?请同学们以小组为单位相互讨论一下。

在讨论过程中可以带着这3个问题去思考?1.本控制任务每循环一个周期需要几秒时间?2.每个循环周期分几个步骤来完成,需要几个定时器,设定值分别为多少?3.每个定时器的作用是什么?下面,请几位同学谈谈他们小组的思路。

流水灯课程设计

第1章设计概述流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制可用多种方法实现,利用移位寄存器实现最为便利。

通常用左移寄存器实现灯的单方向移动;用双向移位寄存器实现灯的双向移动。

本设计用红、黄、绿、白四种颜色的灯在时钟信号作用下按以下规律转换状态。

电路启动后,要求红、黄、绿、白四种颜色的灯在脉冲作用下顺序,循环点亮。

红、黄、绿、白灯每次亮的时间可通过电位器调节。

设计任务:1.输出为4路LED灯;2.要求能实现左移右移功能,左右移自动切换;3.移动速度要可调。

第2章系统框图第3章 单元模块设计3.1 脉冲产生电路由555定时器组成时钟发生电路,为整个电路提供所需要的时钟信号CP 。

时钟脉冲产生电路由NE555定时器、两个电阻和两个电容构成。

555定时器是一种多用途的数字模拟混合集成电路,利用它可以方便的构成施密特触发器、单稳态触发器和多谐振荡器,由于使用灵活、方便,所以555定时器再波形的产生与变换、测量与控制等多种领域都得到广泛应用。

3.1.1 555管脚介绍555定时器内部机构如图所示,它主要有以下部分组成: (1)电阻分压器。

由3个5 K Ω的电阻组成。

(2)电压比较器。

控制波形的占空比由C1和C2组成,当控制输入端悬空时,C1和C2的基准电压分别是2/3Vcc 和1/3Vcc 。

(3)基本RS 触发器。

由两个与非门G1和G2构成,它的作用是对两个比较器输出的电压进行控制。

(4)放电三极管VT 。

及放电端,用DISC 表示,VT 是集成极开路的三极管,VT 的集成极作为定时器的引出端D 。

NE555时基电路21348765GNDTRIOUT RES VccDISTHRCON(5)缓冲器。

由G3和G4构成,以提高电路的负载能力。

引脚功能:1脚位接地端;2脚是低电平触发端入端;3脚是输出端;4脚是复位端;5脚是电压控制端;6脚是高电平触发端入端;7脚是放电端;8脚是电源端。

3.1.2 周期计算 时钟电路案例图如图时钟电路案例(数据可变)UAL用555定时器构成多谐振荡器,电路输出得到一个周期性的矩形脉冲,其周期为:T=0.7(R1+2R2)C555控制74LS161模十六计数器和八位移位寄存器,要能看到彩灯的流动,其周期设为1秒左右, 电阻值和电容值可设为:R1=20KΩ R2=2.2KΩ(可变) C=100μf由公式计算得: T=1.72s时钟电路的输出一路作为计数脉冲送到模十六计数器74LS161;另一路作为移位时钟脉冲加到移位寄存器74LS194。

流水灯定时控制

MEMORY { PAGE 0: VECS: origin = 00000h, length = 00040h LOW: origin = 00040h, length = 03FC0h SARAM: origin = 04000h, length = 00800h B0: origin = 0FF00h, length = 00100h PAGE 1: B0: origin = 00200h, length = 00100h B1: origin = 00300h, length = 00100h B2: origin = 00060h, length = 00020h SARAM: origin = 08000h, length = 00800h }
CMD详解
CMD主要是用来分配rom和ram空间用的,它告诉链接 程序怎样计算地址和分配空间.所以不同的芯片就有 不同大小的rom和ram.放用户程序的地方也不尽相同. 所以要根据芯片进行修改.分两部分.MEMORY和 SECTIONS.
RAM(易挥发性随机存取存储器),高速存取, 读写时间相等,且与地址无关。 ROM(只读存储器)断电后信息不丢失,取速度 很低且不能改写 281X采用分页制,PAGE0放程序空间,PAGE1放数据 空间
• 预定标计数器低位及高位寄存器 (TIMERxTPR,TIMERxTPRH) 定时器预定标计数器低位及高位寄存 器结构及位域定义见图,它由16位分频寄 存器(TDDRH:TDDR)和16 位预定标器计数 器(PSCH:PSC)组合而成
• 控制寄存器(TIMERxTCR) TCR 是一个16 位的寄存器 它在所有运算符中优先级最高 */ Timer->RegsAddr->TCR.bit.TSS=1;//停止定时器 Timer->RegsAddr->TCR.bit.TRB=1; //重装定时器 Timer->RegsAddr->TCR.bit.SOFT=1; Timer->RegsAddr->TCR.bit.FREE=1; //定时器自由 运行 Timer->RegsAddr->TCR.bit.TIE=1; //使能定时器中 断 Timer->InterruptCount=0; //复位中断计数器 }

任务五时间间隔为1S钟流水灯控制

X = M 计数值=65536 50000 = 15536 = 3CB0H TH1=0X3C; TH0=0xBO;
任务五时间间隔为1S钟流水灯控制
3.用T1、工作方式2实现1秒延时函数,晶振频率为12MHz, 请计算其初值,并加载到TH1和TL1。
用T1、工作方式2实现1秒延时函数,晶振频率为12MHz。 方式2采用8位计数器,其最大定时时间为:256×1s = 256us,可选择定时时间为250us,再循环4000次。 定时时间为250ms,则计数值为250us/1s =250,T1的初 值为:
控制
C/T=0Hale Waihona Puke C/T=1T0(P3.4)
TR0
+
GATE INT0
(P3.2) 任务五时间间隔为1S钟流水灯控制
例如:设定时器T0为定时工作方式,要求用软件启动
定时器T0工作,按方式1工作;定时器T1为计数
工作方式,要求软件启动,工作方式为方式2。
则根据TMOD各位的定义可知,其控制字为:
格式: D7 D6 D5 D4 D3 D2 D1 D0
计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0 (TH1)。
注意!方式0时初始值写入时,对于TL不用的高3位应填入0!
任务五时间间隔为1S钟流水灯控制
思考
1.用T1、工作方式0实现1秒延时函数,晶振频率为12MHz, 请计算其初值,并加载到TH1和TL1。
用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。 方式0采用13位计数器,其最大定时时间为:8192×1s = 8.192ms,可选择定时时间为5ms,再循环200次。 定时时间为5ms,则计数值为5ms/1s =5000,T1的初值为:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• Timer工作在方式0下产生一个500µ s的延时,使用的晶 振频率为12MHz。则计数初始值可以这样计算: ① 500µ s /1µ s = 500;② 8192 – 500 = 7692; ③ 7692= 11110000 01100B;④ THx = 1111 0000B, TLx =0000 1100B。转换成十六进制数:THx = 0F0H, TLx= 0CH。所以Timer寄存器计数初始值为F00CH。
其中MM是THx中的数值,LL是TLx中的数值(均为十 六进制数)。
或:t(定时时间)=(216-初始值)×T(机器周期) =(65536-初始值)×T
• 4、 如何选取Timer的计数初始值
例:设计一个方波信号发生器,要求从P1.0口输出频率 。所以 f=2kHz的方波,周期 P1.0口输出高、低电平持续时间分别为250μs。
任务五 ——定时控制
1 定时控制流水灯任务单描述 2 相关知识:定时器/计数器
3 定时器应用程序设计点拨
在单片机最小系统的基础上,添加8个发光二 极管VD0~VD7,与P1端口的P1.0~P1.7分别相连。 要求实现: 1.利用定时器/计数器T1查询方式(工作方式0) 控制流水灯,每个灯亮、灭时间均为1s。 2.利用定时器/计数器T1中断方式(工作方式1) 控制流水灯,每个灯亮、灭时间均为1s。
计数完成信号
• 2、 时间单位脉冲
单片机中的时间单位脉冲的周期是:1个机器周期, 即12个振荡周期。 如果晶振的频率是12MHz,则1个机器周期=1µ s,每 1秒钟Timer所记录的时间单位脉冲的个数是:
1s = 10 6个 1μs
如果Timer从0数到50000需要的时间可以这样计算:
50000个单位时间脉冲 = 0.05s 6 10 个/s
//设置Timer 1工作在方式1下定时模式 //重复定时计数器,定时50次 //往TL1和TH1中载入计数的初始值B1E0H //定时20ms //启动Timer 1 //检测Timer1溢出标志,当TF1=1,跳出 //关闭Timer 1 //将TF1清0
总延时 1s
//这里是所要处理的程序
事实上,在C中编程时,定时初值我们可在程序中写下如下公式,让单片机自己计算 并装入。 THx=(216-N/T)/28=(65536-N/T)/256 TLx=(216-N/T)%28=(65536-N/T)%256
• 4、 定时/计数器控制寄存器TCON
TCON是“timer control”的缩写,即“定时/计数器控制” 的意思。它在特殊功能寄存器区的88H上。 TCON的功能有:显示Timer溢出与否、启动/关闭 Timer、外部中断方式控制、外部中断标志位。 TCON的8位中与Timer有直接关系的只有高4位。
• 1、 Timer寄存器
Timer 0和Timer 1各有1个长度为2个字节的Timer寄存 器,每个Timer寄存器由低位字节TL0或TL1和高位字节 TH0或TH1两个特殊功能寄存器组成。
INT1 INT0 (P3 .3) (P3 .2) T1 (P3 .5) T0 (P3 .4)
定时器1 (8DH) TH1 (8B H) TL1 (8C H) TH0
THx TLx
M
N3
N2
N1
N0
P3
P2
P1
0
0
0
P0
Q3
Q2
Q1
Q0
方式0下在C中编程时,定时初值我们可在程序中写下如下公式, 让单片机自己计算并装入。 THx=(213-N/T)/25=(8192-N/T)/32 TLx=(213-N/T)%25=(8192-N/T)%32
定时/计数器的控制者
• Timer的启动、设置和关闭与特殊功能寄存 器中的TCON、TMOD、TL0、TH0等寄存器 有关。 • AT89S51单片机中有两个Timer,分别为 Timer 0和Timer 1。有些单片机具有3个Timer, 如AT89S52等。 • 两个Timer可以工作在定时器模式下,也可 以工作在计数器模式下。
方式0
• 方式0与方式1基本相同,不同的是方式1下Timer寄 存器是16位的,而方式0下Timer寄存器是13位的。 在载入计数初始值时,向THx载入高8位,向TLx的 低5位上载入5位。 • 方式0的计数初值的计算方法如下: ① 将设计时间(以μs为单位,且小于8192)除以 ② 用8192减去步骤①得到的数。 ③ 将步骤②中的得数转换成13位二进制数,高位如果 是空的用0补上,依次填入THx的8位和TLx的低5位 中,TLx的高3位用0代替。 ④ 最后得计数初始值。
• 5、 如何利用Timer进行长时间定时
Timer的设计时间t取决于两个因素:晶振频率,THx 和TLx中装载的计数初始值 。 硬件一旦完成,意味着晶振频率确定,Timer的设计 时间就取决于THx和TLx中装载的计数初始值。 当MMLL=0000H时,设计时间t具有最大值,如果晶 振频率为12MHz,设计时间的最大值=65536,即 65.536ms。这个设计时间连0.1秒都不到,无法满足 需要长时间定时的场合。
Timer 1 寄存器低位
Timer 1 寄存器高位• 2、 时/计数器模式控制寄存器TMOD
TMOD是“timer mode”的缩写,意思是“定时/计数 器模 式”,它在特殊功能寄存器区的89H上 。 TMOD寄存器由高4位和低4位组成,分别控制Timer1 和Timer 0。 在高4位或低4位中,M1和M0设置Timer 1或Timer 0 的工作模式 。
#include <reg51.h> Void main() { unsigned char i; TMOD=0x10; //设置Timer 1工作在方式1下定时模式 for (i=0; i<50; i++) //重复定时计数器,定时50次 { TH1=(65536-20000)/256; //往TH1中载入计数初值高8位 TL1=(65536-20000)%256; //往TL1中载入计数初值低8位定时20ms TR1=1; //启动Timer 1 while (!TF1) ; //检测Timer1溢出标志,当TF1=1,跳出 TR1=0; //关闭Timer 1 TF1=0; //将TF1清0 } }
• 5、 Timer的时钟源
TMOD寄存器中的C/T#位=0,即Timer用作定时器, 单片机的时钟信号就成了Timer的时钟源,时钟信号 由晶振决定:
如晶振为12MHz,则单位时间T (即机器周期)为:
定时器/计数器工作方式 方式1
• 1、 方式1下的Timer特点
Timer工作在方式1时是一个16位定时/计数器,计数 初始值的低位和高位分别装载到Timer寄存器TLx和 THx中。 Timer通过将TRx置1启动。 当TFx=1,表明计数完成,通过将TRx清0来关闭Timer。 想要重复Timer的计数过程,Timer寄存器中必须重新 装载原来的计数初始值,并将TFx位清0。
• 2、 方式1的设置步骤
① 设置Timer的工作方式。程序中向定时/计数器模式控 制寄存器TMOD中装载01H。
0 GATE 0 C/T# 0 M1 0 M0 0 GATE 0 C/T# 0 M1 1 M0
Timer 1
Timer 0
② 往TLx和THx中载入计数初始值。 ③ 启动Timer。将TRx置1以启动Timer。 ④ 监测Timer溢出标志TFx。
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51
R2
300
R3
300
R4
300
R5
300
R6
300
R7
300
R8
300
R9
300
p10
p11
p12
p13
p14
p15
p16
p17
相关知识:单片机的定时/计数器
• 1、 定时/计数器的实质
解决办法是多次重新装载计数初始值,累计计数多次 的定时值。
• 5、如何利用Timer进行长时间定时(C语言程序)
#include <reg51.h> Void main() { unsigned char i; TMOD=0x10; for (i=0; i<50; i++) { TH1=0xb1; TL1=0xe0; TR1=1; while (!TF1) ; TR1=0; TF1=0; } ……. }
C2
18 22pF 9 RST XTAL2
C3
10uF
29 30 31
PSEN ALE EA
D1
D2
D3
D4
D5
D6
D7
D8
LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW
p10 p11 p12 p13 p14 p15 p16 p17
3
单片机
T=500
μs
P1.0
T/2=250
μs
T/2=250
μs
μs
例:250即Timer计数时间,称之为设计时间。计数初始值 步骤为: ① 将设计时间(以μs为单位,且小于65536)除以 。 即用设计时间除以机器周期。 ② 用65536减去步骤①得到的数。 ③ 将步骤②中的得数转换成十六进制形式MMLL。如果转 换结果<100H,则MM=00。 ④ 最后得计数初始值:THx=MM,TLx=LL。 根据这个步骤,假设晶振频率为12MHz,设计时间 250:① 250µs /1µ s = 250;② 65536 – 250 = 65286; ③ 65286 = FF06H;④ THx = FF,TLx = 06。所以 Timer寄存器的计数初始值为 FF06H。
相关文档
最新文档