一種基于52系列單片機的多路舵機控制方法
【專利摘要】本發(fā)明涉及一種基于52系列單片機的多路舵機控制方法,其包括:(1)搭建控制框架;(2)按照周期為20ms,脈沖寬度為0.5ms~2.5ms標準舵機進行定時時間分配,每路舵機的高電平持續(xù)時間為0.5ms~2.5ms,然后將需要控制的端口等分成多個端口組,并對該多個端口組進行排序;(3)將所有端口組的端口的電平變?yōu)榈碗娖剑?4)對T0定時器和T1定時器進行初始化配置;(5)對T0定時器和T1定時器進行賦值;(6)遍歷所有的端口組,直到T0定時器和T1定時器中斷關閉為止。
【專利說明】
一種基于52系列單片機的多路舵機控制方法
技術領域
[0001]本發(fā)明屬于機器人應用控制領域,具體涉及一種基于52系列單片機的多路舵機控制方法。
【背景技術】
[0002]隨著當今社會科技發(fā)展迅速,處理器的功能在不停的提升,性能不斷的被優(yōu)化,而在各行業(yè)應用了很多年的52系列的單片機由于沒有自帶pwm的端口,所以在很多領域的應用受到了很大的限制,尤其是機器人的領域,沒有多路的Pwm使得52系列單片機被擋在了多自由度機器人的門外;但是52系列單片機由于在價格和穩(wěn)定性等方面的優(yōu)勢勉強沒有被市場淘汰;如何將52系列單片機應用到在多機舵機的控制板上,進而降低成本成為一個急需解決的問題。
【發(fā)明內(nèi)容】
[0003]發(fā)明目的:本發(fā)明針對上述現(xiàn)有技術存在的問題做出改進,即本發(fā)明公開了一種基于52系列單片機的多路舵機控制方法,其可以使沒有pwm輸出口的52系列單片機實現(xiàn)高精確度多路可調Pwm波,可以利用這些可以調節(jié)的pwm波來控制多路舵機,使52系列的功能更加的完善。
[0004]技術方案:一種基于52系列單片機的多路舵機控制方法,包括以下步驟:
[0005](I)搭建控制框架,該控制框架包括:
[0006]TO中斷模塊:按照設定的中斷順序依次給TO定時器中需要控制的端口賦初值;
[0007]T1中斷模塊:按照設定的中斷順序依次給Tl定時器中需要控制的端口賦初值;
[0008]定時器定時初值比較模塊,用于判斷TO定時器和Tl定時器初值的大小,依據(jù)比較的結果更改低優(yōu)先級的定時器的定時初值;
[0009]舵機控制模塊,用來存放和改變TO定時器和Tl定時器所需要控制的端口的定時初值;
[00? O ] (2)按照周期為20ms,脈沖寬度為0.5ms?2.5ms標準舵機進行定時時間分配,每路舵機的高電平持續(xù)時間為0.5ms?2.5ms,然后將需要控制的端口等分成多個端口組,并對該多個端口組進行排序,每一個端口組包括兩個端口,該端口兩個分別受TO定時器和Tl定時器控制;
[0011](3)將所有端口組的端口的電平變?yōu)榈碗娖剑?br>[0012](4)對TO定時器和Tl定時器進行初始化配置,同時TO定時器和Tl定時器初始化的初值差小于0.5ms;
[0013](5)對TO定時器和Tl定時器進行賦值;
[0014](51)通過TO中斷模塊控制TO定時器進入中斷,將第一端口組中TO定時器控制的端口變?yōu)楦唠娖剑瑫r為TO定時器賦初值,TO定時器初值為舵機控制模塊中此路端口對應的定時初值;
[0015](52)通過Tl中斷模塊控制Tl定時器進入中斷,將第一端口組中Tl定時器控制的端口變?yōu)楦唠娖?,同時為Tl定時器賦初值,Tl定時器初值為舵機控制模塊中此路端口對應的定時初值;
[0016](53)通過定時器定時初值比較模塊比較中步驟(51)得到的TO定時器初值和步驟
(52)得到的Tl定時器初值的大小,通過比較的結果改變低優(yōu)先級Tl定時器的高電平的初值
[0017](531)若TO定時器初值大于Tl定時器初值,則對Tl定時器初值重新進行賦值,其值等于步驟(52)得到的TI定時器初值減去TI,TI的值為TO定時器進入中斷時到賦初值開始時的時間;
[0018](532)若TO定時器初值等于Tl定時器初值,則對Tl定時器初值重新進行賦值,其值等于步驟(52)得到的Tl定時器初值減去T2,T2的值為TO定時器進入中斷時到賦初值開始時的時間;
[0019](532)若TO定時器初值小于Tl定時器初值,則調換TO和Tl的中斷優(yōu)先級,對TO定時器初值重新進行賦值,其值等于步驟(52)得到的TO定時器初值減去Τ3,Τ3的值為Tl定時器進入中斷時到賦初值開始時的時間;
[0020](54)通過TO中斷模塊控制TO定時器進入中斷,將第一端口組中TO定時器控制的端口由高電平改為低電平,同時為TO定時器進行二次賦值,TO定時器二次賦值等于2.5ms減去TO定時器初值;
[0021 ] (55)通過Tl中斷模塊控制Tl定時器進入中斷,將第一端口組中Tl定時器控制的端口由高電平變?yōu)榈碗娖?,并對Tl定時器進行二次賦值,Tl定時器二次賦值等于2.5ms-Tl定時器初值;
[0022](6)遍歷所有的端口組,重復步驟(51)?(55),直到TO定時器和Tl定時器中斷關閉為止。
[0023]進一步地,步驟(2)中若所需要控制的端口的數(shù)量為奇數(shù),多余的一路端口隨機分配給TO定時器或Tl定時器。
[0024]更進一步地,若所需要控制的端口的數(shù)量為奇數(shù),多余出來一路端口不需要對初值進行比較。
[0025]有益效果:本發(fā)明公開的一種基于52系列單片機的多路舵機控制方法具有以下有益效果:
[0026]1、將價格低廉且穩(wěn)定性好的52系列單片機應用到機器人控制領域,節(jié)約成本;
[0027]2、同時可以應用到其他需要pwm的領域;
[0028]3、對52單片機的應用范圍進一步拓展。
【具體實施方式】
:
[0029]下面對本發(fā)明的【具體實施方式】詳細說明。
[0030]具體實施例1
[0031 ]一種基于52系列單片機的多路舵機控制方法,包括以下步驟:
[0032](I)搭建控制框架,該控制框架包括:
[0033]T0中斷模塊:按照設定的中斷順序依次給TO定時器中需要控制的端口賦初值;
[0034]Tl中斷模塊:按照設定的中斷順序依次給Tl定時器中需要控制的端口賦初值;
[0035]定時器定時初值比較模塊,用于判斷TO定時器和Tl定時器初值的大小,依據(jù)比較的結果更改低優(yōu)先級的定時器的定時初值;
[0036]舵機控制模塊,用來存放和改變TO定時器和Tl定時器所需要控制的端口的定時初值;
[0037](2)按照周期為20ms,脈沖寬度為0.5ms標準舵機進行定時時間分配,每路舵機的高電平持續(xù)時間為0.5ms,然后將需要控制的端口等分成多個端口組,并對該多個端口組進行排序,每一個端口組包括兩個端口,該端口兩個分別受TO定時器和Tl定時器控制;
[0038](3)將所有端口組的端口的電平變?yōu)榈碗娖剑?br>[0039](4)對TO定時器和Tl定時器進行初始化配置,同時TO定時器和Tl定時器初始化的初值差小于0.5ms;
[0040](5)對TO定時器和Tl定時器進行賦值;
[0041 ] (51)通過TO中斷模塊控制TO定時器進入中斷,將第一端口組中TO定時器控制的端口變?yōu)楦唠娖剑瑫r為TO定時器賦初值,TO定時器初值為舵機控制模塊中此路端口對應的定時初值;
[0042](52)通過Tl中斷模塊控制Tl定時器進入中斷,將第一端口組中Tl定時器控制的端口變?yōu)楦唠娖剑瑫r為Tl定時器賦初值,Tl定時器初值為舵機控制模塊中此路端口對應的定時初值;
[0043](53)通過定時器定時初值比較模塊比較中步驟(51)得到的TO定時器初值和步驟
(52)得到的Tl定時器初值的大小,通過比較的結果改變低優(yōu)先級Tl定時器的高電平的初值
[0044](531)若TO定時器初值大于Tl定時器初值,則對Tl定時器初值重新進行賦值,其值等于步驟(52)得到的TI定時器初值減去TI,TI的值為TO定時器進入中斷時到賦初值開始時的時間;
[0045](532)若TO定時器初值等于Tl定時器初值,則對Tl定時器初值重新進行賦值,其值等于步驟(52)得到的Tl定時器初值減去T2,T2的值為TO定時器進入中斷時到賦初值開始時的時間;
[0046](532)若TO定時器初值小于Tl定時器初值,則調換TO和Tl的中斷優(yōu)先級,對TO定時器初值重新進行賦值,其值等于步驟(52)得到的TO定時器初值減去Τ3,Τ3的值為Tl定時器進入中斷時到賦初值開始時的時間;
[0047](54)通過TO中斷模塊控制TO定時器進入中斷,將第一端口組中TO定時器控制的端口由高電平改為低電平,同時為TO定時器進行二次賦值,TO定時器二次賦值等于2.5ms減去步驟(53)得到的TO定時器初值;
[0048](55)通過Tl中斷模塊控制Tl定時器進入中斷,將第一端口組中Tl定時器控制的端口由高電平變?yōu)榈碗娖?,并對Tl定時器進行二次賦值,Tl定時器二次賦值等于2.5ms-步驟
(53)得到的Tl定時器初值;
[0049](6)遍歷所有的端口組,重復步驟(51)?(55),直到TO定時器和Tl定時器中斷關閉為止。
[0050]進一步地,步驟(2)中若所需要控制的端口的數(shù)量為奇數(shù),多余的一路端口隨機分配給TO定時器或Tl定時器。
[0051 ]更進一步地,若所需要控制的端口的數(shù)量為奇數(shù),多余出來一路端口不需要對初值進行比較。
[0052]具體實施例2
[0053]與具體實施例1大致相同,區(qū)別僅僅在于:
[0054]步驟(2)中按照周期為20ms,脈沖寬度為2.5ms標準舵機進行定時時間分配,每路舵機的高電平持續(xù)時間為2.5ms。
[0055]具體實施例3
[0056]與具體實施例1大致相同,區(qū)別僅僅在于:
[0057]步驟(2)中按照周期為20ms,脈沖寬度為Ims標準舵機進行定時時間分配,每路舵機的高電平持續(xù)時間為Ims ο
[0058]上面對本發(fā)明的實施方式做了詳細說明。但是本發(fā)明并不限于上述實施方式,在所屬技術領域普通技術人員所具備的知識范圍內(nèi),還可以在不脫離本發(fā)明宗旨的前提下做出各種變化。
【主權項】
1.一種基于52系列單片機的多路舵機控制方法,其特征在于,包括以下步驟: (1)搭建控制框架,該控制框架包括: TO中斷模塊:按照設定的中斷順序依次給TO定時器中需要控制的端口賦初值; TI中斷模塊:按照設定的中斷順序依次給TI定時器中需要控制的端口賦初值; 定時器定時初值比較模塊,用于判斷TO定時器和Tl定時器初值的大小,依據(jù)比較的結果更改低優(yōu)先級的定時器的定時初值; 舵機控制模塊,用來存放和改變TO定時器和Tl定時器所需要控制的端口的定時初值; (2)按照周期為20ms,脈沖寬度為0.5ms?2.5ms標準舵機進行定時時間分配,每路舵機的高電平持續(xù)時間為0.5ms?2.5ms,然后將需要控制的端口等分成多個端口組,并對該多個端口組進行排序,每一個端口組包括兩個端口,該端口兩個分別受TO定時器和Tl定時器控制; (3)將所有端口組的端口的電平變?yōu)榈碗娖剑? (4)對TO定時器和Tl定時器進行初始化配置,同時TO定時器和Tl定時器初始化的初值差小于0.5ms; (5)對TO定時器和Tl定時器進行賦值; (51)通過TO中斷模塊控制TO定時器進入中斷,將第一端口組中TO定時器控制的端口變?yōu)楦唠娖?,同時為TO定時器賦初值,TO定時器初值為舵機控制模塊中此路端口對應的定時初值; (52)通過TI中斷模塊控制TI定時器進入中斷,將第一端口組中TI定時器控制的端口變?yōu)楦唠娖?,同時為Tl定時器賦初值,Tl定時器初值為舵機控制模塊中此路端口對應的定時初值; (53)通過定時器定時初值比較模塊比較中步驟(51)得到的TO定時器初值和步驟(52)得到的Tl定時器初值的大小,通過比較的結果改變低優(yōu)先級Tl定時器的高電平的初值 (531)若TO定時器初值大于Tl定時器初值,則對Tl定時器初值重新進行賦值,其值等于步驟(52)得到的Tl定時器初值減去Tl,T1的值為TO定時器進入中斷時到賦初值開始時的時間; (532)若TO定時器初值等于Tl定時器初值,則對Tl定時器初值重新進行賦值,其值等于步驟(52)得到的Tl定時器初值減去T2,T2的值為TO定時器進入中斷時到賦初值開始時的時間; (532)若TO定時器初值小于Tl定時器初值,則調換TO和Tl的中斷優(yōu)先級,對TO定時器初值重新進行賦值,其值等于步驟(52)得到的TO定時器初值減去Τ3,Τ3的值為Tl定時器進入中斷時到賦初值開始時的時間; (54)通過TO中斷模塊控制TO定時器進入中斷,將第一端口組中TO定時器控制的端口由高電平改為低電平,同時為TO定時器進行二次賦值,TO定時器二次賦值等于2.5ms減去TO定時器初值; (55)通過TI中斷模塊控制TI定時器進入中斷,將第一端口組中Tl定時器控制的端口由高電平變?yōu)榈碗娖?,并對Tl定時器進行二次賦值,Tl定時器二次賦值等于2.5ms-Tl定時器初值; (6)遍歷所有的端口組,重復步驟(51)?(55),直到TO定時器和Tl定時器中斷關閉為止。2.根據(jù)權利要求1所述的一種基于52系列單片機的多路舵機控制方法,其特征在于,步驟(2)中若所需要控制的端口的數(shù)量為奇數(shù),多余的一路端口隨機分配給TO定時器或Tl定時器。3.根據(jù)權利要求2所述的一種基于52系列單片機的多路舵機控制方法,其特征在于,若所需要控制的端口的數(shù)量為奇數(shù),多余出來一路端口不需要對初值進行比較。
【文檔編號】G05B19/042GK105911921SQ201610428812
【公開日】2016年8月31日
【申請日】2016年6月16日
【發(fā)明人】常坤, 武風波, 劉海強, 馬文凱, 李榮榮
【申請人】西安科技大學