本发明专利技术涉及一种基于52系列单片机的多路舵机控制方法,其包括:(1)搭建控制框架;(2)按照周期为20ms,脉冲宽度为0.5ms~2.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms~2.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序;(3)将所有端口组的端口的电平变为低电平;(4)对T0定时器和T1定时器进行初始化配置;(5)对T0定时器和T1定时器进行赋值;(6)遍历所有的端口组,直到T0定时器和T1定时器中断关闭为止。
【技术实现步骤摘要】
本专利技术属于机器人应用控制领域,具体涉及一种基于52系列单片机的多路舵机控制方法。
技术介绍
随着当今社会科技发展迅速,处理器的功能在不停的提升,性能不断的被优化,而在各行业应用了很多年的52系列的单片机由于没有自带pwm的端口,所以在很多领域的应用受到了很大的限制,尤其是机器人的领域,没有多路的pwm使得52系列单片机被挡在了多自由度机器人的门外;但是52系列单片机由于在价格和稳定性等方面的优势勉强没有被市场淘汰;如何将52系列单片机应用到在多机舵机的控制板上,进而降低成本成为一个急需解决的问题。
技术实现思路
专利技术目的:本专利技术针对上述现有技术存在的问题做出改进,即本专利技术公开了一种基于52系列单片机的多路舵机控制方法,其可以使没有pwm输出口的52系列单片机实现高精确度多路可调pwm波,可以利用这些可以调节的pwm波来控制多路舵机,使52系列的功能更加的完善。技术方案:一种基于52系列单片机的多路舵机控制方法,包括
以下步骤:(1)搭建控制框架,该控制框架包括:T0中断模块:按照设定的中断顺序依次给T0定时器中需要控制的端口赋初值;T1中断模块:按照设定的中断顺序依次给T1定时器中需要控制的端口赋初值;定时器定时初值比较模块,用于判断T0定时器和T1定时器初值的大小,依据比较的结果更改低优先级的定时器的定时初值;舵机控制模块,用来存放和改变T0定时器和T1定时器所需要控制的端口的定时初值;(2)按照周期为20ms,脉冲宽度为0.5ms~2.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms~2.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序,每一个端口组包括两个端口,该端口两个分别受T0定时器和T1定时器控制;(3)将所有端口组的端口的电平变为低电平;(4)对T0定时器和T1定时器进行初始化配置,同时T0定时器和T1定时器初始化的初值差小于0.5ms;(5)对T0定时器和T1定时器进行赋值;(51)通过T0中断模块控制TO定时器进入中断,将第一端口组中T0定时器控制的端口变为高电平,同时为T0定时器赋初值,T0定时器初值为舵机控制模块中此路端口对应的定时初值;(52)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口变为高电平,同时为T1定时器赋初值,T1定时器初值为舵机控制模块中此路端口对应的定时初值;(53)通过定时器定时初值比较模块比较中步骤(51)得到的T0定时器初值和步骤(52)得到的T1定时器初值的大小,通过比较的结果改变低优先级T1定时器的高电平的初值(531)若T0定时器初值大于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T1,T1的值为T0定时器进入中断时到赋初值开始时的时间;(532)若T0定时器初值等于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T2,T2的值为T0定时器进入中断时到赋初值开始时的时间;(532)若T0定时器初值小于T1定时器初值,则调换T0和T1的中断优先级,对T0定时器初值重新进行赋值,其值等于步骤(52)得到的T0定时器初值减去T3,T3的值为T1定时器进入中断时到赋初值开始时的时间;(54)通过T0中断模块控制T0定时器进入中断,将第一端口组中T0定时器控制的端口由高电平改为低电平,同时为T0定时器进行二次赋值,T0定时器二次赋值等于2.5ms减去T0定时器初值;(55)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口由高电平变为低电平,并对T1定时器进行二次赋值,T1定时器二次赋值等于2.5ms-T1定时器初值;(6)遍历所有的端口组,重复步骤(51)~(55),直到T0定时器和T1定时器中断关闭为止。进一步地,步骤(2)中若所需要控制的端口的数量为奇数,多余的一路端口随机分配给T0定时器或T1定时器。更进一步地,若所需要控制的端口的数量为奇数,多余出来一路端口不需要对初值进行比较。有益效果:本专利技术公开的一种基于52系列单片机的多路舵机控制方法具有以下有益效果:1、将价格低廉且稳定性好的52系列单片机应用到机器人控制领域,节约成本;2、同时可以应用到其他需要pwm的领域;3、对52单片机的应用范围进一步拓展。具体实施方式:下面对本专利技术的具体实施方式详细说明。具体实施例1一种基于52系列单片机的多路舵机控制方法,包括以下步骤:(1)搭建控制框架,该控制框架包括:T0中断模块:按照设定的中断顺序依次给T0定时器中需要控制的端口赋初值;T1中断模块:按照设定的中断顺序依次给T1定时器中需要控制的端口赋初值;定时器定时初值比较模块,用于判断T0定时器和T1定时器初值的大小,依据比较的结果更改低优先级的定时器的定时初值;舵机控制模块,用来存放和改变T0定时器和T1定时器所需要控制的端口的定时初值;(2)按照周期为20ms,脉冲宽度为0.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序,每一个端口组包括两个端口,该端口两个分别受T0定时器和T1定时器控制;(3)将所有端口组的端口的电平变为低电平;(4)对T0定时器和T1定时器进行初始化配置,同时T0定时器和T1定时器初始化的初值差小于0.5ms;(5)对T0定时器和T1定时器进行赋值;(51)通过T0中断模块控制TO定时器进入中断,将第一端口组中T0定时器控制的端口变为高电平,同时为T0定时器赋初值,T0定时器初值为舵机控制模块中此路端口对应的定时初值;(52)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口变为高电平,同时为T1定时器赋初值,T1定时器初值为舵机控制模块中此路端口对应的定时初值;(53)通过定时器定时初值比较模块比较中步骤(51)得到的T0定时器初值和步骤(52)得到的T1定时器初值的大小,通
过比较的结果改变低优先级T1定时器的高电平的初值(531)若T0定时器初值大于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T1,T1的值为T0定时器进入中断时到赋初值开始时的时间;(532)若T0定时器初值等于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T2,T2的值为T0定时器进入中断时到赋初值开始时的时间;(532)若T0定时器初值小于T1定时器初值,则调换T0和T1的中断优先级,对T0定时器初值重新进行赋值,其值等于步骤(52)得到的T0定时器初值减去T3,T3的值为T1定时器进入中断时到赋初值开始时的时间;(54)通过T0中断模块控制T0定时器进入中断,将第一端口组中T0定时器控制的端口由高电平改为低电平,同时为T0定时器进行二次赋值,T0定时器二次赋值等于2.5ms减去步骤(53)得到的T0定时器初值;(55)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口由高电平变为低电平,并对T1定时器进行二次赋值,T1定时器二次赋值等于2.5ms-步骤(53)得到本文档来自技高网...
【技术保护点】
一种基于52系列单片机的多路舵机控制方法,其特征在于,包括以下步骤:(1)搭建控制框架,该控制框架包括:T0中断模块:按照设定的中断顺序依次给T0定时器中需要控制的端口赋初值;T1中断模块:按照设定的中断顺序依次给T1定时器中需要控制的端口赋初值;定时器定时初值比较模块,用于判断T0定时器和T1定时器初值的大小,依据比较的结果更改低优先级的定时器的定时初值;舵机控制模块,用来存放和改变T0定时器和T1定时器所需要控制的端口的定时初值;(2)按照周期为20ms,脉冲宽度为0.5ms~2.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms~2.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序,每一个端口组包括两个端口,该端口两个分别受T0定时器和T1定时器控制;(3)将所有端口组的端口的电平变为低电平;(4)对T0定时器和T1定时器进行初始化配置,同时T0定时器和T1定时器初始化的初值差小于0.5ms;(5)对T0定时器和T1定时器进行赋值;(51)通过T0中断模块控制TO定时器进入中断,将第一端口组中T0定时器控制的端口变为高电平,同时为T0定时器赋初值,T0定时器初值为舵机控制模块中此路端口对应的定时初值;(52)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口变为高电平,同时为T1定时器赋初值,T1定时器初值为舵机控制模块中此路端口对应的定时初值;(53)通过定时器定时初值比较模块比较中步骤(51)得到的T0定时器初值和步骤(52)得到的T1定时器初值的大小,通过比较的结果改变低优先级T1定时器的高电平的初值(531)若T0定时器初值大于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T1,T1的值为T0定时器进入中断时到赋初值开始时的时间;(532)若T0定时器初值等于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T2,T2的值为T0定时器进入中断时到赋初值开始时的时间;(532)若T0定时器初值小于T1定时器初值,则调换T0和T1的中断优先级,对T0定时器初值重新进行赋值,其值等于步骤(52)得到的T0定时器初值减去T3,T3的值为T1定时器进入中断时到赋初值开始时的时间;(54)通过T0中断模块控制T0定时器进入中断,将第一端口组中T0定时器控制的端口由高电平改为低电平,同时为T0定时器进行二次赋值,T0定时器二次赋值等于2.5ms减去T0定时器初值;(55)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口由高电平变为低电平,并对T1定时器进行二次赋值,T1定时器二次赋值等于2.5ms‑T1定时器初值;(6)遍历所有的端口组,重复步骤(51)~(55),直到T0定时器和T1定时器中断关闭为止。...
【技术特征摘要】
1.一种基于52系列单片机的多路舵机控制方法,其特征在于,包括以下步骤:(1)搭建控制框架,该控制框架包括:T0中断模块:按照设定的中断顺序依次给T0定时器中需要控制的端口赋初值;T1中断模块:按照设定的中断顺序依次给T1定时器中需要控制的端口赋初值;定时器定时初值比较模块,用于判断T0定时器和T1定时器初值的大小,依据比较的结果更改低优先级的定时器的定时初值;舵机控制模块,用来存放和改变T0定时器和T1定时器所需要控制的端口的定时初值;(2)按照周期为20ms,脉冲宽度为0.5ms~2.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms~2.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序,每一个端口组包括两个端口,该端口两个分别受T0定时器和T1定时器控制;(3)将所有端口组的端口的电平变为低电平;(4)对T0定时器和T1定时器进行初始化配置,同时T0定时器和T1定时器初始化的初值差小于0.5ms;(5)对T0定时器和T1定时器进行赋值;(51)通过T0中断模块控制TO定时器进入中断,将第一端口组中T0定时器控制的端口变为高电平,同时为T0定时器赋初
\t值,T0定时器初值为舵机控制模块中此路端口对应的定时初值;(52)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口变为高电平,同时为T1定时器赋初值,T1定时器初值为舵机控制模块中此路端口对应的定时初值;(53)通过定时器定时初值比较模块比较中步骤(51)得到的T0定时器初值和步骤(52)得到的T1定时器初值的大小,通过比较的结果改变低...
【专利技术属性】
技术研发人员:常坤,武风波,刘海强,马文凯,李荣荣,
申请(专利权)人:西安科技大学,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。