CN109752988A - 一种利用单片机进行终端控制的方法及装置 - Google Patents

一种利用单片机进行终端控制的方法及装置 Download PDF

Info

Publication number
CN109752988A
CN109752988A CN201810038706.5A CN201810038706A CN109752988A CN 109752988 A CN109752988 A CN 109752988A CN 201810038706 A CN201810038706 A CN 201810038706A CN 109752988 A CN109752988 A CN 109752988A
Authority
CN
China
Prior art keywords
delay timer
time
clock
detecting
timing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810038706.5A
Other languages
English (en)
Other versions
CN109752988B (zh
Inventor
余发
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yuan Ruiyuan
Original Assignee
Dongguan Meter Source Electronic Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dongguan Meter Source Electronic Technology Co Ltd filed Critical Dongguan Meter Source Electronic Technology Co Ltd
Publication of CN109752988A publication Critical patent/CN109752988A/zh
Application granted granted Critical
Publication of CN109752988B publication Critical patent/CN109752988B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开是关于一种利用单片机进行终端控制的方法及装置,该方法包括:控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;检测所述累计延迟时间是否达到预设时间阈值;在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。该方法使得在主函数中延时时不阻塞MCU工作,并且可以同时进行多个不同延时处理操作,实现最大限度地利用MCU计算处理能力。

Description

一种利用单片机进行终端控制的方法及装置
技术领域
本公开涉及终端控制领域,尤其涉及一种利用单片机进行终端控制的方法及装置。
背景技术
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。在嵌入式编程时通常需要进行延时处理。
但是,相关技术中的延时处理方法,往往会使用一个死循环来实现。该方式严重影响系统性能,比如会出现主函数被阻塞,以及无法实现多处延时(计时)操作,微控制单元(Microcontroller Unit;MCU)工作效率低下等诸多问题。
发明内容
针对相关技术中存在的问题,本公开提供了一种利用单片机进行终端控制的方法及装置。
根据本公开实施例的第一方面,提供一种利用单片机进行终端控制的方法,包括:
控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测所述累计延迟时间是否达到预设时间阈值;
在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
可选的,所述控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,包括:
获取所述延迟计时器的前一时刻;
检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
可选的,所述获取所述延迟计时器的前一时刻,包括:
检测所述延迟计时器是否初始化;
在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
可选的,所述方法还包括:
在检测到所述延迟计时器非初始化的情况下,初始化所述延迟计时器。
可选的,所述方法还包括:
计算所述全局计时时钟的当前时刻与所述延迟计时器的前一时刻之间的时间差值;
将所述时间差值存储至所述单片机的延时记录器。
可选的,所述方法还包括:
控制所述单片机进行定时中断,其中,所述定时中断对全局变量以预设速度累加。
可选的,所述延迟计时器的数量大于或等于2。
根据本公开第二方面,还提供了一种利用单片机进行终端控制的装置,包括:
控制单元,用于控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测单元,用于检测所述累计延迟时间是否达到预设时间阈值;
输出单元,用于在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
可选的,所述控制单元包括:
获取模块,用于获取所述延迟计时器的前一时刻;
检测模块,用于检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
赋值模块,用于在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
可选的,所述获取模块包括:
检测子模块,用于检测所述延迟计时器是否初始化;
获取子模块,用于在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
本公开的实施例提供的技术方案可以包括以下有益效果:本公开通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行多个不同延时处理操作,最大限度地利用MCU计算处理能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1是根据一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图;
图2是根据另一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图;
图3是根据另一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图;
图4是根据一示例性实施例示出的一种利用单片机进行终端控制的装置的框图;
图5是根据另一示例性实施例示出的一种利用单片机进行终端控制的装置的框图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图。如图1所示,该方法包括:
步骤S101,控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
步骤S103,检测所述累计延迟时间是否达到预设时间阈值;
步骤S105,在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
本公开实施例中的单片机,可以是嵌入式单片机,即嵌入式微控制器,以微控制器为核心控制单元的嵌入到对象体系中的专用计算机系统,是应用十分广泛的一种嵌入式系统结构。
在该实施例中,全局计时时钟,也即全局计时器,用于对系统全局进行计时。延时,是指在执行一项任务的过程中,保持执行该任务的工作状态的时间。延迟计时器,用于对该时间的长度进行统计。
在一种可能的实现方式中,预设时间阈值可以基于用户的需求进行制定。例如,终端为LED灯,本公开实施例中的单片机用于控制LED灯的亮灭。则可以基于用户希望达到的亮起时长或者熄灭时长对预设时间阈值进行设定,比如,50秒。
在一种可能的实现方式中,控制指令用于指示终端执行预设操作。例如,在上述的实施例中,可以指示终端(LED灯)熄灭或者亮起。
在一种可能的实现方式中,终端可以是智能家居设备(例如,扫地机器人、空气净化器等)、计算机、智能便携式设备(智能手环、智能手表等)等。
本公开实施例中,通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行无限个不同延时处理操作,最大限度地利用MCU计算处理能力。
在一种可能的实现方式中,如图2所示,所述控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时还可以包括:
步骤S201,获取所述延迟计时器的前一时刻;
步骤S203,检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
步骤S205,在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
在该实施例中,例如,延迟计时器的前一时刻为12时03分,全局计时时钟的当前时刻为12时06分,则确定全局计时时钟的当前时刻迟于延迟计时器的前一时刻,此时将全局计时时钟的当前时刻赋值给延迟计时器。
在该实施例中,由于将全局计时时钟的当前时刻赋值给延迟计时器,也即,实际是基于全局变量进行累加计时,使得在主函数中延时时不阻塞MCU工作,并且可以支持同时进行多个不同延时处理操作,进而能够最大限度地利用MCU计算处理能力。
在一种可能的实现方式中,所述获取所述延迟计时器的前一时刻,包括:
检测所述延迟计时器是否初始化;
在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
其中,在检测到所述延迟计时器非初始化的情况下,初始化所述延迟计时器。
在一种可能的实现方式中,所述方法还包括:
计算所述全局计时时钟的当前时刻与所述延迟计时器的前一时刻之间的时间差值;
将所述时间差值存储至所述单片机的延时记录器。
在一种可能的实现方式中,所述方法还包括:
控制所述单片机进行定时中断,其中,所述定时中断对全局变量以预设速度累加。
在一种可能的实现方式中,所述延迟计时器的数量大于或等于2。在本公开实施例中,对延迟计时器的数量没有上限控制,也即,可以同时进行多个不同延时处理操作。
图3是根据另一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图。如图3所示,该方法包括:
步骤S301,设置全局计时时钟。
步骤S302,设置延迟计时时钟N,其中,N大于或等于2。
步骤S303,全局计时时钟计时,也即得到当前时间。
步骤S304,检测延迟计时器是否初始化。如果初始化,则执行步骤S305,如果未初始化,则执行步骤S312。
步骤S305,检测当前时刻是否迟于延迟计时器的前一时刻。若是,则执行步骤S306。
步骤S306,计算当前时刻与延迟计时器的前一时刻的时间差。
步骤S307,累计时刻差到延迟计时器的延迟记录器。
步骤S308,将当前时刻赋值给延迟计时器。
步骤S309,检测当前延迟计时器的延迟时间是否达到一预设值,也即上述的预设时间阈值。若是,则执行步骤S310;若否,则执行步骤S311。
步骤S310,控制终端执行预设操作,例如,控制LED灯亮起。
步骤S311,不控制终端执行预设操作。例如,如果先前LED灯处于亮起的状态,则控制LED灯熄灭。
步骤S312,初始化延迟计时器。
在本公开的一个实施例中,如下所述,提供了通过单片机控制两个LED灯,LED灯1和LED灯2,分别进行亮起和熄灭操作。
在相关技术中,在上述控制场景中,通常是采用以下程序进行控制:
但是,在上述程序中,由于使用阻塞延时方式,使得LED1与LED2亮、暗存在如下问题:
无法实现同时控制LED1以200ms闪亮、LED2以300ms闪亮;
因为delay函数使用循环方式实现延时,所以main主线程被阻塞严重影响MCU使用效率。
在本公开实施例中,通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行多个不同延时处理操作,最大限度地利用MCU计算处理能力。具体地,本公开主要通过如下三个部份实现非阻塞式延时:
定时中断对全局变量u16Ms以1毫秒速度累加;
TimeMs函数模块中以u16Ms为时间基准对形参Time.Delay作累加计时;以及
在所需延时处调用TimeMs,并读取返回参数值获知是否到达所需延时时间。
针对上述应用场景,根据本公开实施例,一种可选的控制程序如下:
//如下三个函数主要是延时功能,不阻塞主函数的延时方法
具体地,在该非阻塞式延时程序中,1毫秒(ms)定时器用于整机系统时钟基准,定时中断实现MsDida累加1。其次,形式参数传入时钟参数结构体Ts,在判断Ts.Init是否为0,并确认Ts.Init为0之后,判断MsDida是否大于Ts.Timebackup。如果MsDida大于Ts.Timebackup,则计算Ts.Timebackup与MsDida之差,并将差值累加入Ts.Delay。其中,如果判断出Ts.Init非0,则初始化Ts中的变量。另外,定义定时器变量Ta,调用TimeMs,并将Ta地址作为形式参数传入。判断Ta.Delay计时器是否达到阈值时间点,若是,则控制相应的LED灯执行预设操作。
通过以上非阻塞式延时程序,使得在主函数中延时时不阻塞MCU工作,并且可以同时对2个LED灯进行亮、暗控制,实现了最大限度地利用MCU计算处理能力的效果。
根据本公开实施例,还提供了一种利用单片机进行终端控制的装置,用于执行上述的利用单片机进行终端控制的装置。
图4是根据一示例性实施例示出的一种利用单片机进行终端控制的方法装置的框图,如图4所示,该利用单片机进行终端控制的方法装置包括:
控制单元41,用于控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测单元43,用于检测所述累计延迟时间是否达到预设时间阈值;
输出单元45,用于在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
图5是根据一示例性实施例示出的一种利用单片机进行终端控制的方法装置的框图,如图5所示,所述控制单元41还可以包括:
获取模块411,用于获取所述延迟计时器的前一时刻;
检测模块413,用于检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
赋值模块415,用于在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
可选的,所述获取模块411还可以包括:
检测子模块,用于检测所述延迟计时器是否初始化;
获取子模块,用于在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
本公开通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行无限个不同延时处理操作,最大限度地利用MCU计算处理能力。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。

Claims (10)

1.一种利用单片机进行终端控制的方法,其特征在于,包括:
控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测所述累计延迟时间是否达到预设时间阈值;
在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
2.根据权利要求1所述的方法,其特征在于,所述控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,包括:
获取所述延迟计时器的前一时刻;
检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
3.根据权利要求2所述的方法,其特征在于,所述获取所述延迟计时器的前一时刻,包括:
检测所述延迟计时器是否初始化;
在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在检测到所述延迟计时器非初始化的情况下,初始化所述延迟计时器。
5.根据权利要求2-4中任一项所述的方法,其特征在于,所述方法还包括:
计算所述全局计时时钟的当前时刻与所述延迟计时器的前一时刻之间的时间差值;
将所述时间差值存储至所述单片机的延时记录器。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
控制所述单片机进行定时中断,其中,所述定时中断对全局变量以预设速度累加。
7.根据权利要求1所述的方法,其特征在于,所述延迟计时器的数量大于或等于2。
8.一种利用单片机进行终端控制的装置,其特征在于,包括:
控制单元,用于控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测单元,用于检测所述累计延迟时间是否达到预设时间阈值;
输出单元,用于在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
9.根据权利要求8所述的装置,其特征在于,所述控制单元包括:
获取模块,用于获取所述延迟计时器的前一时刻;
检测模块,用于检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
赋值模块,用于在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
10.根据权利要求9所述的装置,其特征在于,所述获取模块包括:
检测子模块,用于检测所述延迟计时器是否初始化;
获取子模块,用于在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
CN201810038706.5A 2017-11-08 2018-01-16 一种利用单片机进行终端控制的方法及装置 Active CN109752988B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2017214772798 2017-11-08
CN201721477279 2017-11-08

Publications (2)

Publication Number Publication Date
CN109752988A true CN109752988A (zh) 2019-05-14
CN109752988B CN109752988B (zh) 2021-11-09

Family

ID=66402340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810038706.5A Active CN109752988B (zh) 2017-11-08 2018-01-16 一种利用单片机进行终端控制的方法及装置

Country Status (1)

Country Link
CN (1) CN109752988B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101272564A (zh) * 2008-04-17 2008-09-24 中兴通讯股份有限公司 一种软实时定时器调度的方法及软实时定时器模块
CN101498951A (zh) * 2008-01-30 2009-08-05 汤姆森许可贸易公司 在计算机或可编程机器中处理时间值的方法
CN104102150A (zh) * 2013-04-09 2014-10-15 亚德诺半导体股份有限公司 用于微处理器整合的传感器轮询单元
CN105528246A (zh) * 2015-12-07 2016-04-27 厦门雅迅网络股份有限公司 一种基于动态计时周期的进程内定时器管理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101498951A (zh) * 2008-01-30 2009-08-05 汤姆森许可贸易公司 在计算机或可编程机器中处理时间值的方法
CN101272564A (zh) * 2008-04-17 2008-09-24 中兴通讯股份有限公司 一种软实时定时器调度的方法及软实时定时器模块
CN104102150A (zh) * 2013-04-09 2014-10-15 亚德诺半导体股份有限公司 用于微处理器整合的传感器轮询单元
CN105528246A (zh) * 2015-12-07 2016-04-27 厦门雅迅网络股份有限公司 一种基于动态计时周期的进程内定时器管理方法及系统

Also Published As

Publication number Publication date
CN109752988B (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
US20170150920A1 (en) Method of controlling anti-snoring device
CN105902257B (zh) 睡眠状态分析方法及装置、智能可穿戴设备
CN106288641B (zh) 一种基于红外的冰箱降噪方法
CN106501825B (zh) 一种自动调整gps采样频率的方法与装置以及可穿戴设备
CN104026744A (zh) 电子烟微控制器的多任务执行方法及装置
CN104750483B (zh) 一种控制终端闹钟的方法及装置
CN106033255B (zh) 一种信息处理方法及电子设备
CN106264541A (zh) 运动传感器控制方法、装置和移动终端
CN106595696B (zh) 一种防作弊计步装置的计步方法
WO2005072444A3 (en) Intelligent memory device
DK1576852T3 (da) Fremgangsmåde til udvælgelse af et program i et høreapparat med flere programmer
CN108549280A (zh) 一种支持多信号输入的数字舵机控制方法
CN108415306B (zh) 一种烹饪设备的控制方法和装置
CN101558424A (zh) 从宿主信号中提取辅助数据
CN107794699A (zh) 一种洗衣机的自动洗涤方法和装置
CN110124307A (zh) 操作控制方法和装置、存储介质及电子装置
CN103427856A (zh) 一种gps接收机的功耗控制方法
CN104536835A (zh) 一种热备份实时控制系统中自适应任务调度方法
CN104598034A (zh) 信息处理方法和信息处理设备
CN110515462A (zh) 一种智能可穿戴设备中应用的控制方法、装置
CN109594287A (zh) 一种洗衣机控制方法、装置、存储介质及洗衣机
CN109752988A (zh) 一种利用单片机进行终端控制的方法及装置
JP2009175123A5 (zh)
US9239571B2 (en) Workout cycle employed in a time measurement portable device
CN102540940B (zh) 开关消抖系统及其方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230804

Address after: Room 315, Building 11, Lijingcheng, Qianjin Second Road, Bao'an District, Shenzhen City, Guangdong Province, 518100

Patentee after: Yuan Ruiyuan

Address before: 523837 floor 3, building 4, No. 8, Lianfeng new road, ailing village, Dalingshan Town, Dongguan City, Guangdong Province

Patentee before: DONGGUAN MITINGYUAN ELECTRONIC TECHNOLOGY CO.,LTD.

TR01 Transfer of patent right