案例4-定时器综合应用

合集下载

第四讲 定时器及其应用PPT教学课件

第四讲 定时器及其应用PPT教学课件

2020/12/10
13
√ 移动的文字----左移
2020/12/10
14
设计步骤:
1、新建一个基于文档视图的应用程序,为视图 类添加int类型的成员变量 m_x,并在构造函 数中完成其初始化;
2、为WM_CREATE消息添加消息处理函数; 3、为WM_TIMER消息添加消息处理函数; 4、为OnDraw函数添加代码; 5、为WM_DESTROY消息添加消息处理函数。
CView::OnTimer(nIDEvent); }
2020/12/10
22
CView::OnTimer(nIDEvent); }
2020/12/10
18
void CMoving_wordsView::OnDraw(CDC* pDC) {
CMoving_wordsDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rect; GetClientRect(rect); CString str="南昌航空大学"; pDC->TextOut(m_x,rect.bottom/2,str); }
4、为停止按钮添加处理程序
void CClockDlg::OnButton1() { // TODO: Add your control notification handler code here
KillTimer(1); }
2020/12/10
11
举例3:移动的文字
2020/12/10
12
移动的文字----左移 移动的文字----右移 移动的文字----对角线移动

定时器应用举例

定时器应用举例

TEST0: JB P3.2,TEST0 ;检测是否到a点 SETB TR0 ;到a点,TR0 = 1,做好取计时值准备。
TEST1: JNB P3.2,TEST1 ;检测是否到1点 SETB TR1 ;到1点T0计时;TR1 = 1,做好T1计时准备。
TEST2:JB P3.2,TEST2 ;检测是否到2点 CLR TR0 ;到2点,停止T0计时,T1开始计时。
;T0:模式3,计数方式 ;T1:模式2,定时方式 ;一旦加1,马上溢出,申请中断 ;TH0初值 ;根据波特率要求而定

低频信号发生器驱动程序
设计一个控制程序,使89c51的P1口输出8 路低频方波脉冲,频率分别为100,50, 25,20,10,5,2,1Hz。
1. 计算定时器初值
使用T0,产生5ms的定时,若晶振选12MHz,则5ms相当于 5000个机器周期,T0应工作在模式1,初值x为: x= 655365000=60536,用十六进制表示,则x=0EC78H。 (注意TH,TL分开赋值---因为T0/T1都是16位)
分析: 目的:1) 增加一个外部中断; 2) 使P1.0输出一个方波。 条件:1)两个外部中断源已被使用 2)定时器T1已用于串行口波特率发生器

因此:可利用定时/计数器T0,使之工作在模式3, 1)利用TL0扩展外部中断源 2)利用TH0作定时器使用,输出方波
设置初值: 1) TL0 = 0FFH 2) 因为输出方波f = 5kHz,故方波周期为 200us,用TH0产生100us的定时,故TH0的 初值X = 256 – (定时时间/机器周期) = 256 - (100us*晶振频率/12) = 156 设定T0工作方式,TMOD,TCON.
例3、使用定时器0以工作方式2产生100us定 时,在P1.0输出周期为200us的连续方波脉 冲,已知晶振频率fosc=6MHZ。

第6章定时器及应用分析PPT课件

第6章定时器及应用分析PPT课件
T 1 初 5 值 5 5 D 8 F 30 H 6
解:2)确定工作模式寄存器TMOD的值 ∵ 定时器T1工作于模式1的定时器工作方式, ∴ 高四位: GATE=0,C/T=0,M1M0=01 ,低四位:取0。 ∴ (TMOD)=0001 0000 B = 10H
3)编程
MOV SETB LOOP:MOV MOV JNB CLR CPL SJMP
28
(2) 计算计数初值 因为: (216-X)×12×10-6 ×1/12=50×10-3 所以: X=15536=3CB0H 因此: TH0=3CH,TL0=B0H
(3) 10次计数的实现 设计一个软件计数器,初始值设为10。每隔 50ms定时时间到,产生溢出标志TF0,程序查询 到TF0=1,则软件计数器减1。这样减到0时就获 得了500ms的定时。
• T0为方式0, M1M0=00 • 定时工作状态, C/T=0 • GATE=0,不受INT0控制, • T1不用全部取“0”值。 • 故TMOD=00H
25
第二步: 计算1ms定时的初值X
设初值为X,则有: (213-X) ×12×10-6 ×1/12=1×10-3 可求得:X=8192-1000=7192
第6章 定时器及应用
§6.1 定时器概述 §6.2 定时器的控制 §6.3 定时器的四种模式及应用 §6.4 思考题与习题
*
6.1 定时器概述
• 89C51/S51/S51单片机片内有两个16位定时器/计数器 定时器0(T0) 定时器1(T1)。
• 定时和事件计数 • 用于定时控制、延时、对外部事件计数和检测等场合。
& INT0引脚接一脉冲可 测脉宽
22
模式 1 工作特点
• 该模式对应的是一个16位的定时器/计数器。

定时器的应用课件

定时器的应用课件
交通信号灯
定时器在交通领域的应用之一是控制交通信号灯的亮灭时间,保障交通秩序和安 全。
公共交通
公共交通车辆的到站时间、发车时间等也需要通过定时器进行精确控制,提高公 共交通的便利性和准时性。
计算机与网络领域的定时器应用案例
网络爬虫
任务调度
05
定时器的未来展望
定时器技术的发展趋势
智能化
精准化
多样化
定时器在物联网中的应用前景
智能家居 工业自动化 农业智能化
定时器在人工智能领域的应用前景
机器人控制
01
无人驾驶
02
虚拟现实
03
ห้องสมุดไป่ตู้
THANK YOU
软件定时器种类
介绍常见的软件定时器库或工具,如 C中的chrono库、Python中的time 库等。
定时任务调度
说明如何使用软件定时器来调度定时 任务,如每日、每周或每月的任务。
定时任务实现
提供实现定时任务的示例代码,包括 时间间隔计算、任务触发等。
软件定时器优势与限制
分析软件定时器的优点和局限性,以 及适用场景。
地铁列车
地铁列车的发车和到站时间可以 通过定时器进行精确控制。
高速公路收费站
使用定时器可以设定收费站的开 放时间,方便车辆通行。
计算机与网络领域
网络服务 任务调度 自动更新
03
定时器的使用方法
硬件定时器的使用方法
01
硬件定时器种类
02
定时器设置
03
定时器启动与停止
04
定时器精度
软件定时器的使用方法
家电领域
空调
洗衣机 烤箱
工业控制领域
自动化生产线

《定时器及应用举例》课件

《定时器及应用举例》课件
根据应用需求选择定时器的时 间单位,如秒、分钟、小时等

设置触发条件
根据应用需求设置定时器的触 发条件,如时间到达、外部信 号触发等。
设置时间间隔
根据应用需求设置定时器的时 间间隔,如每隔一定时间触发 一次。
保存设置
完成设置后保存相关参数,确 保定时器能够按照预设参数进
行工作。
04
定时器的应用举例
软件编程
01
02
03
04
选择编程语言
根据定时器的厂商提供的编程 语言进行编程。
编写程序
根据应用需求编写程序,设置 定时器的触发条件、时间间隔
等参数。
调试程序
通过模拟或实际测试,对程序 进行调试,确保定时器能够按
照预期工作。
下载程序
将编写好的程序下载到定时器 中进行测试或实际应用
用于控制室内温度,实现 自动开关机,节省能源。
冰箱
用于控制冷藏和冷冻室的 温度,保持食物的新鲜度 。
洗衣机
用于控制洗涤和漂洗的时 间,实现自动化洗衣。
工业控制领域应用举例
自动化生产线
仪器仪表
用于控制生产线的启动和停止,保证 生产过程的稳定性和效率。
用于控制和监测各种工业设备的运行 状态和参数。
不要将电源直接连接到定时器的输出端,以防设 备损坏和火灾风险。
使用注意事项
设置时间
在设置定时器时间时,确保时间设置正确,避免误操作导致设备 无法正常工作。
安装位置
确保定时器安装在通风良好、干燥、无尘的地方,以防设备过热或 受潮。
定期校准
定期检查和校准定时器,以确保其准确性和可靠性。
维护与保养
清洁外壳
03
定时器的使用方法

北京信息科技大学单片机原理与应用实验4实验报告

北京信息科技大学单片机原理与应用实验4实验报告

实验报告课程名称单片机原理与应用实验项目串行通信指导教师学院信息与通信工程 _ 专业电子信息工程班级/学号学生姓名实验日期成绩______________________一、实验目的1、掌握串行口编程控制方法;2、掌握串口调试和仿真器的烧写方法;3、综合应用定时器、串行接口及中断等。

二、实验内容1、编写一个程序, 利用单片机的串行口向PC机循环发送0x55。

三、编写一个程序, 每当串行口接收到PC机发送的0x55(ASCII码为字母U)时, 返回一个0x41(ASCII码为字母A)。

在PC机一端, 以接收窗口收到0x41为完成(可以循环此过程)。

四、PC机向单片机发送0—9(无需编程, 在DPFlash的串口调试软件下配置即可), 单片机在接收到数据后送数码管显示;同时, 单片机每隔0.5S向PC机发送a—z的ASCII码(0x61~0x7a, 每秒发2个), 在PC机的串口调试软件中显示结果。

五、实验步骤1、新建工程, 编写程序, 实现通过串行口向PC机发送0x55(可采用串口模式1, 波特率2400), 注意工程的环境变量设置, Target窗口下code和xdata memory设置为空, 无须加入startup.A51, Output窗口下选中CreateHex选项, 编译生成HEX文件。

2、阅读网上的实验指导书及下面的说明, 掌握DPFlash软件的使用, 掌握仿真器的两种工作方式使用。

仿真器拨到load方式, 打开DPFlash软件,文件菜单中选择装载, 加入编译生成的*.HEX文件, 点击编程按扭, 使用默认配置即可, 烧入仿真器的Flash中。

3、关闭电源, 将仿真器拨到run方式, 并将连接在仿真器上的PC串口通信电缆拔下, 然后与实验仪上的单片机串口相连。

开机复位后将自动运行单片机程序, 在PC机的DPflash软件中的串口调试器下观察结果。

编写程序实现单片机接收到PC机发来的0x55后回送0x41,在串口调试软件的处理字符串中发送0x55,可以选中下栏的自动发送单选框来实现每隔1S发送一次, 观察结果。

6.4 定时器计数器综合应用举例

6.4 定时器计数器综合应用举例

LOOP1:ACALL D200 : TAB:DB 0FEH,25H,02H,0FEH,25H,02H : DJNZ R2, LOOP1 DB 0EH,25H,04H,0FDH,80H,04H INC DPTR DB 0FEH,84H,02H,0FEH,84H,02H AJMP LOOP DB 0FEH,84H,04H,0FEH,25H,04H D200: MOV R3, #81H : DB 0FEH,25H,02H,0FEH,84H,02H D200B:MOV A, #0FFH : DB 0FEH,0C0H,04H,0FEH,0C0H,04H D200A:DEC A : DB 0FEH,98H,02H,0FEH,84H,02H JNZ D200A DB 0FEH,57H,08H,00H,00H,04H DEC R3 DB 0FFH,0FFH CJNE R3, #00H,D200B END RET
SERVE: MOV TL0,#0B0H MOV TH0,#3CH DJNZ B,LOOP CLR TR0 LOOP: RETI END
端出现的正脉冲宽度。 例2:测量在 :测量在(P3.2)端出现的正脉冲宽度。 端出现的正脉冲宽度 P3.2
T
分析:利用门控制位 实现对定时器/ 分析:利用门控制位GATE实现对定时器/计数器的 实现对定时器 /停控制 来测量脉冲宽度。 停控制, 启/停控制,来测量脉冲宽度。 当GATE为1,TR1(TR0)为1时,只有 为 , 为 时 只有INT1(INT0)引 引 脚输入高电平时, 才允许计数。 脚输入高电平时,T1(T0)才允许计数。 才允许计数 当GATE为0,只要 为 ,只要TR1(TR0)为1时,T1(T0)就允许 为 时 ) 计数。 计数。 利用GATE=1时的这个功能,可测试 时的这个功能, 利用 时的这个功能 可测试INT1(P3.3)和 和 INT0(P3.2)上正脉冲的宽度。 上正脉冲的宽度。 ( 上正脉冲的宽度

定时计数器与中断综合应用举例

定时计数器与中断综合应用举例

例题:时钟计时程序设计。

所谓时钟计时,就是以秒、分、时为单位进行的计时。

可以把该程序看成是定时器/计数器与中断应用的典型代表,就算是对这两部分内容的复习。

⑴MCS-51单片机实现时钟计时显示的基本方法①首先要计算计数初值时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MMCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131毫秒,离1秒还差好远。

为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125毫秒,这样当计数溢出8次就可得到1秒,而8次计数可用软件方法实现。

为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,当设定单片机为6MHz晶振,设计数初值为X,则有如下等式:(216-X)×2us=125000us计算得计数初值X=3036,二进制表示为0000101111001101,十六进制表示为0BCDH。

②定时器定时采用中断方式完成,以便于通过中断服务程序进行溢出次数(每次125毫秒)的累计,计满8次即得到秒计时。

③通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时④设置时钟显示及显示缓冲区假定时钟时间在六位LED数码管(LED5~LED0)上进行显示(时、分、秒各占两位)。

为此,要在内部RAM中设置显示缓冲区,共6个单元(79H~7EH),与数码管的对应关系为:LED5→7EH、LED4→7DH、LED3→7CH、LED2→7BH、LED1→7AH、LED0→79H。

即显示缓冲区从左向右依次存放时、分、秒的数值。

⑤假定已有LED显示程序为SMXS可供调用⑵程序流程①主程序(MAIN)主程序的主要功能是进行定时器/计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。

②中断服务程序(PIT0)中断服务程序的主要功能是进行计时操作。

程序开始先判断计数溢出是否满了8次,不满8次表明还没达到最小计时单位秒,中断返回;如满8次则表明已达到最小计时单位秒,程序继续向下执行,进行计时操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8051 定时/计数器-编程
• • • • • • • •
#include "reg51.h" #define COUNT 50000 void T0_ISR(void) interrupt 1 { //TF0=0; TH0=(65536COUNT)/256; TL0=(65536COUNT)%256; //中断程序添加 处 }
• 对应的外部计数引脚为如图: – Pin14(T0) – Pin15(T1)
• 8位还是16位 • 定时还是计数等 – 赋计数初值 • 计数可从任意值开始,因此应根据 具体要求确定计数初始值 – 启动计数器 • 初始化完成后,定时/计数器需要 启动,一启动就开始硬件计数,计 数完成自动产生溢出标志,CPU根 据溢出标志执行预先约定的操作。
• 【赋计数初值】 • 8051单片机计数方式:递增溢出;若采 用16位计数 – 问题:若要加50000次出现溢出,则 计数初值应如何确定?
– 十进制计数初值 • 65536-50000=15536
– 因此本例的计数初值为 – 十六进制计数初值 – TH=0x3C;//15536的高8位 • (15536)D=0x3CB0 – TL=0xB0;//15536的低8位 • 但8051单片机为8位机,它是通 过两个8位寄存器来存储16位计 数初值,即 – 但此方法涉及十进制到十六进 • TH:高8位计数值(初值) 制转换过程,操作不便。可考 虑采用其它手段实现。 • TL:低8位计数值(初值)
• 启动定时器(TR0=1)后,T0从计数初值处对机 器周期进行硬件递增计数;当计至 TH0=0xff,TL0=0xff后,再计1次则定时器产 生溢出(溢出标志TF0=1): • 此时 – 若中断允许(ET0=1且EA=1)
• 则CPU立即停止当前程序 • 自动跳转到T0对应的中断入口(中断号为1 的ROM保留地址0x000B)处 • 硬件自动清溢出标志(TF0=0) • 执行中断服务程序 • 中断服务程序执行完后回原执行程序处;
• 另该延时采用软件等待方式实现,延时过程中, CPU不执行任何“有用”操作,对其后的任务执 行会产生影响。
延时时间测量方法
#include "reg51.h" #define N 1 sbit P1_0=P1^0; void delay(unsigned char n) { unsigned char i; for(i=0;i<n;i++) ; } void main(void) { P1_0=0; while(1) { P1_0=~P1_0; delay(N); } }
y1=32.82+17.34*x1(us) y2=41.79+26.01*x2(us)
• 若要实现1S的延时,N的数值约为多少? • X2=(1000 0000uS-41.79uS)/26.01=38445 • 但这种估计建立在特定的晶振频率基础上;若晶振频率改变,规律得重新进 行实验,相当繁琐。
ay函数延时的缺陷
• M1 M0:计数方式(位数)定义
8051 定时/计数器-工作方式
定时/计数器工作方式 M1 M0 方式 功 16位定时器/计数器 常数自动载入的8位定时器/计数器 仅适用于T0,两个8位定时器/计数器 能
0
0 1 1
0
1 0 1
0
1 2 3
13位定时器/计数器,TL存低5位,TH存高8位
• 【定义工作方式】 – 要求:试定义T0为16位内部定时方式 • TMOD=**** 0001B 即:TMOD=0x01;//TMOD=0000 0001B • 以上语句的实际功能是:定义T0为16位内部定时方式,同时修改 T1为13位内部定时方式。这样就改变了T1的工作方式。 – 要求:试定义T0为16位内部定时方式,而保持T1原有的工作方式。 • TOMD=(TMOD&0xf0)|0x01;
– 启动后,定时器开始硬件计数,计数满产生溢出标志
• TF0:高电平有效 • TF1
8051 定时/计数器-中断原理
• 【定时器中断控制】
– 8051单片机为T0、T1设置了中断机制。即当计数溢出(TF=1)时CPU可 停止当前的任务,自动跳转到对应(固定)的入口地址处,执行中断 服务程序(ISR:Interrupt Service Routine),等中断服务程序执行 完成后回到原被中断处继续执行。 • 因此中断服务程序应事先写好,另中断服务程 序是否执行受对应的中断允许位控制 • 中断允许:溢出时自动执行中断服务程序; • 中断不允许:溢出时不执行中断服务程序。 • T0、T1的中断允许控制位见下
8051 定时/计数器-控制位
• 【定时器启动】
– TCON:Timer Control Register
• • • • • • • /* TCON */ #include “reg51.h” sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; TR0=1;//Trigger T0启动控制位,高电平有效 TR1=1;
– 若T0中断不允许(ET0=0或EA=0) • 问题: • 1、T0溢出标志TF0与T0中断使能控制位ET0、EA间的关系是什么? • 2、T0溢出时,16位计数器的当前计数值为多少? • 3、T0在中断服务程序内是否计数?
• 则不执行中断服务程序 • 中断标志TF0也不能自动清0)
8051 定时/计数器-计数值重载
案例4 定时器及其应用 ftp://10.28.86.201 用户名:stu 密码:stu
2014.10.16
案例4 定时器及其应用
• 问题提出
–软件延时 –硬件延时
• 定时器应用案例
– 简单应用 – 综合应用 – 工程应用
• 定时/计数器工作原理 • 初始化 • 中断服务程序
问题提出-软件延时函数
• T0的计数是硬件实现的,因此不管在主程序还是中断服务程 序内,计数器都在计数。 • 在进入中断服务程序瞬间,当前计数值为TH0=0、TL0=0,对 于某些实际应用需对计数初值进行重载,方法见下:
• 【方法1】 void T0_ISR(void)interrupt 1 { TH0=(65536-COUNT)/256; TL0=(65536-COUNT)%256; //中断程序 } 先重载计数初值,后执行中断程序 • 【方法2】 void T0_ISR(void)interrupt 1 { //中断程序 TH0=(65536-COUNT)/256; TL0=(65536-COUNT)%256; } 先执行中断程序,后重载计数初值
8051 定时/计数器-计数初值
• 【赋计数初值】 • 其它手段计数初值TH、TL的确定 • #define COUNT 50000//计数次数
– 方法一:位操作
– 方法三:共用体法 union T_C TH0=(unsigned char)((65536-COUNT)>>8); TL0=(unsigned char)((65536-COUNT)&0x00ff);{ unsigned int data16; unsigned char data8[2]; }; void main(void) { – 方法二:对256求整、求余法 union T_C T0_count; T0_count.data16=65536-COUNT; TH0=(65536-COUNT)/256; TH0=T0_count.data8[0]; TL0=(65536-COUNT)%256; TL0=T0_count.data8[1]; }
• • 定时器:如果信号是周期 对于接在定时/计数器上的外部脉冲信号类型, 信号(T),若计数值为n, 处理器是没有办法要求的。因此定时器/计数 则定时时间t=n*T 器的功能分为: • 外部计数:对外部的脉冲信号计数 • 内部定时:对处理器内部的周期信号进行 计数,次数乘以机器周期即为定时时间 因此统一到一点,定时、计数都是计数
• 之前延时采用delay函数实现,而延时时间无法 精确估算,如下:
void delay(unsigned char n) { unsigned char i; for(i=0;i<n;i++) ; } void delay(unsigned int n) { unsigned int i; for(i=0;i<n;i++) ; }
8051 定时/计数器-工作方式
• GATE:门控位(高电平有效)
• 【定义工作方式】 – TMOD:定时器工作方式寄存器, • C/T#:计数/定时器选择控制位 该寄存器不能位寻址。 – 1:外部计数方式 • 高4位:T1工作方式 – 0:内部定时方式 • 低4位:T0工作方式 – 0:启动仅受TR*信号控制 – 1:启动受TR*与INT#引脚信号双 重控制
8051 定时/计数器-计数初值
• 【赋计数初值】 • 8051单片机计数方式:递增溢出; 若采用16位计数 –当计数初值为65535(0xffff) 时,计数1次就溢出 –最少计1次溢出
–当计数初值为0(0x0000)时, 计数65536次后溢出 –最多计65536次溢出
8051 定时/计数器-计数初值
• 定时/计数器 • delay延时函数缺陷 – 定时/计数器是一硬件资源,对应 – 不能实现精确延时 有脉冲输入接口 – 该延时由软件实现,延时期间无 – 计数器:若对应端口上输入非周 法执行其它任务,对于某些特定 期信号,该硬件能实现脉冲计数 时序的任务会造成影响。 • 为此要引入一种由硬件定时的电路 – 定时/计数器
– 计数方式
• 固定递增:加1计数 • 固定递减:减1计数 • 可设置递增、递减
– 脉冲触发方式
• • • • 固定上升沿计数 固定下降沿计数 双沿计数 可设置边沿计数
相关文档
最新文档