悟空、悟能雙足機器人教程_第1頁
悟空、悟能雙足機器人教程_第2頁
悟空、悟能雙足機器人教程_第3頁
悟空、悟能雙足機器人教程_第4頁
悟空、悟能雙足機器人教程_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、創夢智能機器人BigBang Robots創夢智能機器人雙足競步悟空、悟能雙足機器人教程創夢智能機器人工程部2014.4.1目錄第一章:雙足競步悟空、悟能雙足機器人安裝教程3第二章:雙足競步悟空、悟能雙足機器人快速編程指南11第一節:認識單片機 11 第二節:STC單片機介紹 13第三節:程序代碼的編譯、糾錯及燒寫18 3.1程序代碼的編譯及糾錯18 3.1.1 keil軟件的安裝 18 3.1.2 keil 的執行及程序編譯 21 3.2 燒寫軟件的使用 24第四節:舵機簡介 26第五節:PWM信號介紹 30第六節:創夢控制板硬件功能介紹33第七節:實例雙足程序詳解 38第八節:如何快速會用

2、雙足程序 54第一章:雙足競步悟空、悟能雙足機器人安裝教程專用舵機頭頂板U型件連接板直角連接板狹窄足腳底板交叉足腳底板1交叉足腳底板2M2*6M2自攻絲M2螺母第一步:頭頂板與U型件連接第二步:U型件與U型件悟能交叉足: 悟空狹窄足:第三步: 腳底板的安裝悟空狹窄足: 悟能交叉足:第四步:第五步:第六步:第七步:第八步:第二章:雙足競步悟空、悟能雙足機器人快速編程指南第一節:認識單片機隨著電子產品的多樣化和普及,單片機已漸漸成為生活上不可的少的必需品了,從早上起床的電子鬧鐘,烹煮早餐的電磁爐定時及溫控裝置,上課、上班時吹冷風用的Fuzzy控制器,學校電梯控制電路,家中的電視機的遙控器,計算機及

3、外圍的控制電路以及許多的玩具應用等,這些電子產品內部都含有一個單片機。因為單片機具有體積小、功能強大、編寫容易等優點,自然就成為我們機器人中不可或缺的控制組件,這也可以減輕機器人的重量和縮小其體積,相對的,也減少對電池能量的消耗。接下來我們來了解單片機(微電腦)。微電腦具有和大腦一樣的中央處理器,以及存儲器,通過中央處理器去控制輸出輸入單元。1、中央處理單元用于指令的編碼及存取,依此來控制整個系統的運作,并同時執行所有的算術與邏輯運算。中央處理器單元是微電腦的大腦,主要負責指令的提取、分析、執行并將結果送至內存,也能控制輸出輸入的動作,而中央處理單元每次所能處理的信號位數則代表該CPU的位數,

4、如4位、8位、16位等、目前的微電腦已達到64位了。2、存儲器用來存儲數據及指令的地方,CPU要執行的指令、順序及所需要的都存放在此,是微電腦的數據倉庫。存儲器又可分為:1)ROM只讀存儲器,是一種可讀不可寫的存儲器,在電路中,即使電源關閉其內部的數據或程序也不會因此而消失的,下次開啟電源時,又可以再次執行,所以也稱為非易失性存儲器。2)隨機存儲器RAM 內部的數據可以隨時由電路或CPU讀取及存放,故其內容隨時會因電源的關閉而消失,當下次開啟電源時,CPU就得重新將數據寫入RAM中,所以又稱為易失性存儲器。 3、輸入/輸出單元(I/O Port)-連接外界及內部之間的通道 CPU產生的各種信號

5、可以通過輸出單元到達外界,繼而控制各種外圍電路及設備。相反的,外圍電路及設備所要給CPU的信號,就得通過輸入單元,傳給CPU,這就是微電腦輸出/輸入單元的主要功能。第二節:STC單片機介紹STC12C5A60S2單片機圖片上圖為48腳單片機,常見的還有下面40腳直插型的單片機內部結構圖常接的復位電路和時鐘電路STC12C5A60S2單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強干擾的新一代8051單片機,指令代碼完全兼容傳統的8051,但速度快812.內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S,及25萬次/秒),針對點擊控

6、制,強干擾場合。1. 增強型8051 CPU, 1T單時鐘/機器周期,指令代碼完全兼容傳統80512. 工作電壓;STC12C5A60S2 系列工作電壓:5.5V-3.5V(5V單片機) STC12C5A60S2 系列工作電壓:3.6V-2.2V(3V單片機)3. 工作頻率范圍:0-35MHz,相當于普通8051的0-420MHz4. 應用程序空間 8K/16K/20K/32K/40K/48K/52K/60K/62K字節5. 片上集成1280字節RAM6. 通過I/O口(36/40/44個),復位后為:準雙向口/弱上拉(普通8051傳統I/O口)可以設置成四種模式:準雙向口/弱上拉,強推挽/強

7、上拉,緊為輸入/高阻,開漏每個I/O驅動能力均可以達到20mA,但整個芯片最大不要超過120mA7. ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器可以通過串口(P3.0/P3.1)直接下載用戶程序,數秒即可完成一片8. 有EEROM功能(STC12C5A60S2/AD/PWM無內部EEPROM)9. 看門狗10. 內部集成MAX810專用復位電路(外部晶振12M以下時,復位腳可直接1K電阻到地)11. 外部掉點檢測電路:在P4.6口有一個低壓門檻比較器5V單片機為1.33V,誤差為5%,3.3V單片機為1.31V誤差為3%12. 時鐘源:外部高精度晶體/時鐘,

8、內部R/C振蕩器(溫漂為5%到10%以內)用戶在下載用戶程序時,可選擇使用內部R/C振蕩器還是外部晶體/時鐘,常溫下內部R/C振蕩器頻率為:5.0V單片機為:11M-17M 3.3V單片機為:8M-12M 精度要求不高時,可以選擇使用內部時鐘但是因為有制造誤差和溫漂,以實際測試為準13. 共4個16位定時器兩個與傳統8051兼容的定時器/計數器,16位定時器T0和T1,沒有定時器2,但是有獨立的波特率發生器做串行通訊的波特率發生器,再加上2路PCA模塊可實現2個16位定時器 14.3個時鐘輸出口,可以有T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘,獨立波特率發生器

9、可以在P1.0口輸出時鐘 15.外部中斷I/O口7路,傳統的下降沿中斷或低電平觸發中斷,并新增支持上升沿中斷的PCA模塊,Power Down模式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,TO/P3.4,T1/P3.5,RxD/3.0,CCP0/P1.3(也可以通過寄存器設置到P4.2),CCP1/P1.4(也可以通過寄存器設置到P4.3) 16.PWM(2路)/PCA(可編程計數器陣列,2路) 17.A/D轉換,10位精度ADC,共8路,轉換速速可達到250K/S(每秒鐘25萬次) 18.STC12C5A60S2系列有雙串口,后綴有S2標志的才有雙串口,RxD2/P1.2(可

10、以通過寄存器設置到P4.2),TxD2/P1.3(可以通過寄存器設置到P4.3) 19.通過全雙工異步串行口(UART),由于STC12系列是高速的8051,可以再用定時器或PCA軟件實現多串口 20.工作溫度范圍:-40-+85(工業級)/0-75(商業級) 21.封裝:LQFP-48,LQFP-44,PDIP-40,PLCC-44,QFN-40第三節:程序代碼的編譯、糾錯及燒寫3.1程序代碼的編譯及糾錯 3.1.1 keil軟件的安裝(1)在附帶的資料里面找到(keil4+破解+漢化)這個文件夾,點進去然后雙擊C51v901.exe (2)接下來出來如圖所示的界面,點擊Next(3)在I

11、agree to前面的方框打鉤,再點擊Next(4)以后一直點擊Next,最后出來如下圖所示的界面就點擊finish就完成安裝了(5)下面最主要就是破解了,打開keil 4這個軟件,點擊file如圖所示的界面,選擇License Management(6)接著在下面界面中,把CID里面的數字復制下來,不要關閉這個界面(7)然后在Keil4+破解+漢化中找到KEIL_Lic.exe點擊打開,把剛才復制的CID碼粘貼到下面CID后面方框里,點擊Generate,接著會出來一串數字,把它復制下來然后粘貼到上圖New License ID Code(LIC)后面的方框,再點擊Add LIC就搞定了!再

12、把這個關掉就破解成功了!3.1.2 keil 的執行及程序編譯 安裝編程軟件現在就是該怎么使用了!(1) 第一步就是新建工程,見下圖的界面點擊藍條選項就是新建工程,然后根據提示選擇程序保存位置,還有就是選擇芯片型號,如果沒有你需要的芯片型號,你可以添加或者選擇AT89C51這個型號的也是可以的!(2) 然后就要添加文件了,從file里面第一項就是添加,把自己下的程序打出來,在保存一下再添加到工程目錄下。(3) 現在就該編譯程序了,點擊,如果編譯沒通過下面方框會出來如圖所示的對話框,然后雙擊error c202回用箭頭指出錯誤的地方,根據錯誤修改就好(4) 如果沒有出錯,就對輸出選擇生成HEX文

13、件,點擊Flash然后選擇如圖所示的藍條(5) 得到如下圖的界面,(6) 上面的界面在選擇output得到下面界面,在Create HEX File前面打勾,點擊ok就行。然后重新編譯一下就可以生成HEX文件了。3.2 燒寫軟件的使用 燒寫軟件首先要用的硬件有STC ISP燒寫器,首先就得給該硬件安裝驅動,這個驅動的可以有驅動人生、360驅動、驅動精靈等都可以安裝。安裝完成就得看看驅動安裝怎么樣,查看電腦的設備管理器,安裝完成就會出現端口(COM2)不同電腦可能COM口不一樣,但是COM口編號要記下來。在附帶的資料里面找到STC-ISP下載軟件,將這個文件夾打開,打開如下圖所示,然后雙擊擊藍條

14、這個文件。接下來有幾個選項要選擇,首先是芯片型號的選擇這里是STC12C5A60S2然后就是端口的選著上面電腦的端口是COM2然后改成COM就好然后就是文件的選擇,點擊打開文件,選擇編譯好的文件的HEX文件然后就是下載了,可能會提示給MCU上電的,直接給單片機上電就好了!有的下載器有冷啟動就不會提示上電的!第四節:舵機簡介微型伺服電機內部結構:伺服電機(外形見圖1)內部包括一只小型直流電機;變速齒輪組;反饋可調電位器及電子控制板處理輸入的脈沖信號。舵機主要是由外殼、電路板、無核心馬達、齒輪與位置檢測器所構成。其工作原理是由接收機發出訊號給舵機,經由電路板上的 IC判斷轉動方向,再驅動無核心馬達

15、開始轉動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回訊號,判斷是否已經到達定位。位置檢測器其實就是可變電阻,當舵機轉動時電阻值也會隨之改變,藉由檢測電阻值便可知轉動的角度。一般的伺服馬達是將細銅線纏繞在三極轉子上,當電流流經線圈時便會產生磁場,與轉子外圍的磁鐵產生排斥作用,進而產生轉動的作用力。依據物理學原理,物體的轉動慣量與質量成正比,因此要轉動質量愈大的物體,所需的作用力也愈大。舵機為求轉速快、耗電小,于是將細銅線纏繞成極薄的中空圓柱體,形成一個重量極輕的五極中空轉子,并將磁鐵置於圓柱體內,這就是無核心馬達。 為了適合不同的工作環境,有防水及防塵設計的舵機;并且因應不同的負載需求,舵

16、機的齒輪有塑膠及金屬之區分,金屬齒輪的舵機一般皆為大扭力及高速型,具有齒輪不會因負載過大而崩牙的優點。較高級的舵機會裝置滾珠軸承,使得轉動時能更輕快精準。滾珠軸承有一顆及二顆的區別,當然是二顆的比較好。目前新推出的 FET 舵機,主要是采用 FET(Field Effect Transistor)場效電晶體。FET 具有內阻低的優點,因此電流損耗比一般電晶體少。伺服電機的工作原理:伺服電機是一個典型閉環反饋系統,其原理可由下圖表示:減速齒輪組由電機驅動,其輸出端帶動一個線性的比例電位器作位置檢測,該電位器把轉角坐標轉換為一比例電壓反饋給控制線路板,控制線路板將其與輸入的控制脈沖信號比較,產生糾

17、正脈沖,并驅動電機正向或反向地轉動,使齒輪組的輸出位置與期望值相符,令糾正脈沖最終趨于為0,從而達到使伺服電機精確定位的目的。 標準的伺服電機有三條控制線。分別為:電源、地及控制。電源線與地線用于提供內部的直流電機及控制電路所需的能源,電壓通常介于4V6V之間,該電源應盡可能與處理系統的電源隔離(因為伺服馬達會產生噪音)。甚至小伺服電機在重負載時也會拉低放大器的電壓,所以整個系統的電源供應的比例必須合理。伺服電機的電源引線:伺服電機電源引線三條線中橙色的線是控制線,連到控制芯片上。紅色的線是電源正極線,工作電壓是5V。 黑色的是地線。伺服電機的控制:伺服電機的控制端需輸入周期性的正向

18、脈沖信號,這個周期性脈沖信號的高電平時間通常在1ms2ms之間,而低電平時間應在5ms到20ms之間,并不很嚴格。下表表示出一個典型的20ms周期性脈沖的正脈沖寬度與微型伺服馬達的輸出臂在180范圍內轉動時與輸入脈沖的對應關系:舵機的技術參數:廠商所提供的舵機規格資料,都會包含外形尺寸(mm)、扭力(kg-cm)、速度(秒/60°)、測試電壓(V)及重量(g)等基本資料。扭力的單位是 kg-cm,意思是在擺臂長度 1 公分處,能吊起幾公斤重的物體。這就是力臂的觀念,因此擺臂長度愈長,則扭力愈小。速度的單位是 sec/60°,意思是舵機轉動 60°所需要的時間。 電

19、壓會直接影響舵機的性能,例如 Futaba S-9001 在 4.8V 時扭力為 3.9kg、速度為 0.22 秒,在 6.0V 時扭力為 5.2kg、速度為 0.18 秒。若無特別注明,JR 的舵機都是以 4.8V 為測試電壓,Futaba則是以 6.0V 作為測試電壓。所謂天下沒有白吃的午餐,速度快、扭力大的舵機,除了價格貴,還會伴隨著高耗電的特點。因此使用高級的舵機時,務必搭配高品質、高容量的鎳鎘電池,能提供穩定且充裕的電流,才可發揮舵機應有的性能。伺服電機使用的注意事項:伺服舵機轉角在0180°,當高電平脈沖大于2.5ms,一般沒有自我保護的舵機,都會使轉角超出正常的范圍,使

20、內部直流電機處于堵轉狀態,一兩分鐘就會使舵機發燙,甚至燒壞舵機。使用時,盡量讓舵機在-45°到45°之間轉動,這范圍內舵機轉角也更精準。第五節:PWM信號介紹1、PWM信號定義PWM信號為脈寬調制信號,其特點在于他的上升沿與下降沿之間的時間寬度。具體的時間寬窄協議參考下列講述。我們目前使用的舵機主要依賴于模型行業的標準協議,隨著機器人行業的漸漸獨立,有些廠商已經推出全新的舵機協議,這些舵機只能應用于機器人行業,已經不能夠應用于傳統的模型上面了。優點是已經產業化,成本低,旋轉角度大(目前所生產的都可達到185度);缺點是控制比較復雜。但是它是一款數字型的舵機,其對PWM信號的

21、要求較低:(1) 不用隨時接收指令,減少CPU的疲勞程度;(2) 可以位置自鎖、位置跟蹤,這方面超越了普通的步進電機;其PWM格式注意的幾個要點:(1) 上升沿最少為0.5mS,為0.5mS-2.5mS之間;(2) 數字舵機下降沿時間沒要求,目前采用0.5Ms就行;也就是說PWM波形可以是一個周期1mS的標準方波;(3) 模擬舵機,其要求連續供給PWM信號;它也可以輸入一個周期為1mS的標準方波,這時表現出來的跟隨性能很好、很緊密。我們采用的是8位STC12C5A60S2CPU,其數據分辨率為256,那么經過舵機極限參數實驗,得到應該將其劃分為250份。那么0.5mS-2.5Ms的寬度為2mS

22、 = 2000uS。2000uS÷250=8uS則:PWM的控制精度為8us我們可以以8uS為單位遞增控制舵機轉動與定位。舵機可以轉動185度,那么185度÷250=0.74度,則:舵機的控制精度為0.74度2PWM信號控制精度制定1 DWT = 8uS ; 250DWT=2mS時基寄存器內的數值為:(#01H)01 (#0FAH)250。共185度,分為250個位置,每個位置叫1DWT。則:185÷250 = 0.74度 / DWTPWM上升沿函數: 0.5mS + N×DWT 0uS N×DWT 2mS 0.5mS 0.5Ms+N×

23、;DWT 2.5mS3、舵機控制方法舵機的轉角達到185度,由于采用8位CPU控制,所以控制精度最大為256份。目前經過實際測試和規劃,分了250份。具體劃分參見“PWM信號控制精度制定”。將0185分為250份,每份0.74度。控制所需的PWM寬度為0.5ms2.5ms,寬度2ms。2ms÷250=8us;所以得出:PWM信號高電平持續的時間 =度數/8s + 500s舵機角度= 0.74×NPWM = 0.5 + N×DWT;(DWT=8us)角度04590135185N062125187250PWM0.5ms1ms1.5ms2ms2.5ms第六節:創夢控制板

24、硬件功能介紹除了機器人機體本身以外,還有很重要的一個部分就是機器人的控制器系統。創夢智能機器人生產的控制板具有很好的操作性。目前市面上使用最廣泛的是51系列單片機,我們的控制板采用STC12C5A60S2單片機,大部分元器件采用全表貼工藝。此控制板設計合理,擴展了STC12C5A60S2系列單片機的六個端口以供雙足使用。電路板上面的主要元件:CPU: STC12C5A60S2, 48pinLQFP封裝IO口: 此電路板共擴展6個IO口,給雙足六個舵機控制智能穩壓: 該電路板采用LM2596可調穩壓芯片,解決了舵機聯動電壓波動比較大的問題,還可以通過電位器調節改變舵機的供電電壓,這樣就可以使機器

25、人運行在一個最佳的電壓狀態下!一鍵快速啟動:本控制板加了一個啟動按鈕,就是在機器人在電源開啟狀態下,按下按鈕機器人快速動起來,這在比賽的時候不必停留一兩秒機器人才開始啟動!擴展電源管理模塊:只要插上電源管理模塊可以實現低壓報警,電視實時監控,不必擔心在電池電量不佳的情況下讓機器人運行!控制板原理圖:創夢雙足控制板實物圖:該控制板使用簡介:從上面圖片中可以看出該板子是專門為雙足機器人設計的,各個接口按鍵簡單介紹一下:首先是電源接口配備了PCB專用插孔,采用兩片鋰電供電;接著就是10P下載接口和專用下載器給該控制板下載程序,下載線也是采用專用10P線;然后還有就是程序啟動按鍵,它和單片機的P3.0

26、引腳接著,程序檢測低電平信號,有這個信號機器人立馬啟動;然后就是有就是六個舵機的接口,上面J1到J6分別就是六個舵機,讓機器人背對自己,右手邊從上到下依次為:J1、J2、J3;然后左手邊從上到下依次為:J4、J5、J6。控制板上面對應的有:J1、J2、J3、J4、J5、J6。注意舵機白色是信號線,白色頭插在靠近芯片端,黑色端插在板子靠近外面!這里需要強調幾個注意:(1)7.4V電源的正負問題,一般情況下,紅色線是正極,黑色線是負極。(2)舵機接線統一遵守標準:在控制板上靠內側即靠近單片機的一端是控制信號線,中間是電源(穩壓后正端),最外面的是地(GND)。電壓檢測模塊的簡介: 該電壓檢測模塊也

27、采用STC芯片控制,單片機自帶十位數模轉換,可以準確的測出電池和舵機供電電壓,這個板子是專門為創夢雙足控制板設計的,能夠在使用機器人前使用知道電池的使用情況,避免了機器人在沒電的情況下造成機器人損壞!上面可調報警電壓根據自己實際情況調節所需的報警電壓!圖片如下:兩個連接圖片如下:第七節:實例雙足程序詳解/* 創夢智能機器人公司文件名稱:robot_test.c文件內容:狹窄足程序創建人 :創夢智能機器人創建時間:2014/4/16*/#include<reg60s2.h> /芯片頭文件 寄存器已經修改#include<math.h> /數學函數#include<d

28、elay.h> /延時程序 通過示波器測試#define uchar unsigned char#define uint unsigned intuchar position8; /用于記錄8個舵機的位置uchar pick_up8; /kouchu8;各個io口輪流輸出是屏蔽其它位uchar arr8; /提供排序空間 paixu_ncha8=0;中間過度用 uchar t0bit=0; /定時器0周期相同標志位uchar N; /關于掃尾值的參數uchar zsax=15; /14h,z 平面sa 修正參數 uchar psax=10; /15h,p 平面sa 修正參數交互2ucha

29、r zsag=20; /16h,z 平面sa 過渡參數uchar psag=20; /17h,p 平面sa 過渡參數/*函數名稱:void low_level_500u函數功能:PWM信號低電平時間子程序,控制舵機PWM信號的低電平時間決定舵機轉動的速度 積分思想輸入 : time輸出 :無*/void low_level_500u(uint time) uint i; for(i=0;i<time;i+) delay500us(1);/*函數名稱:void t0_init函數功能:t0定時器初始化,用于舵機2.5ms定時輸入 :無 輸出 :無備注 :沒有開啟定時*/void t0_in

30、it(void) TMOD = TMOD & 0xf0; /初始化定時器1的計數方式為方式1 無用 TMOD = TMOD | 0x01; TH0=0xee; /晶振22.1184MHz,2.5Ms定時ee00 TL0=0x00; ET0=1; EA=1; t0bit=1;/*函數名稱:void low_level_t0函數功能:同周期定時器0設置及啟動程序,使每變化一個變化量的周期相同 給寄存器填值輸入 :THTL輸出 :無*/void low_level_t0(uint THTL) TH0=THTL>>8; /晶振22.1184MHz,2.5Ms定時ee00 TL0=T

31、HTL; t0bit=0; TR0=1;/*函數名稱:void T0_Interrupt(void) interrupt 1函數功能:定時器t0中斷服務函數函數 中斷一次填一次值 標記一次一個2.5ms到了輸入 :輸出 :無*/void T0_Interrupt(void) interrupt 1 TH0=0xee; /晶振22.1184MHz,2.5Ms定時ee00 TL0=0x00; t0bit=1;/*函數名稱:init_cpu函數功能:單片機初始化程序輸入 :無輸出 :無*/void init_cpu(void)t0_init(); /定時器0初始化delay500us(10);/*函

32、數名稱:array()函數功能:排序子程序,將各個口的8位根據時間的長短排序 提供arri=arri- arri+1相鄰差值輸入 :無輸出 :無*/void array() uchar i=0,j=0,x=0; pick_up0=0xFE; pick_up1=0xFD; pick_up2=0xFB; pick_up3=0xF7; pick_up4=0xEF; pick_up5=0xDF; pick_up6=0xBF; pick_up7=0x7F; /賦值 /冒泡排序 for(i=0;i<=6;i+) for(j=i+1;j<=7;j+) if(arri<arrj) /交換數據

33、 x=arrj; arrj=arri; arri=x; x=pick_upj; pick_upj=pick_upi; pick_upi=x; for(i=0;i<7;i+) arri= arri- arri+1; /*函數名稱:void PWM_8()函數功能:8路舵機輸出子程序,實現8路舵機的PWM信號在最短的時間內輸出輸入 :positioni輸出 :無備注 :P0口*/void PWM_8() uchar i=0,j; for(i=0;i<8;i+) /取P0口舵機對應的值 arri=positioni; array(); /排序計算 low_level_t0(0xee00)

34、; /開啟定時器并賦初始值 P0=0xff; /使口P0全部拉高 delay500us(1); /調用延時500us函數 for(i=0;i<8;i+) /P0口8路同時輸出 for(j=0;j<arr7-i;j+) /此時arr為(安位置大小)相鄰舵機位置相差值 delay8us(1); P0=P0&pick_up7-i; /此時pick_up為 代表的是那一位為0 邏輯與后拉低 while(t0bit=0); /等待2.5ms應該說是一個周期的到來 可自定義TR0=0; /關閉定時器0/*函數名稱:initial_position();函數功能:初始位置子程序,根據各個

35、舵機的不同位置設置初始位置輸入 :無輸出 :無*/void initial_position(void) uchar i,j,x=0; for(i=0;i<30;i+) x+; position0=125; /0號(舵機) 舵機的初始位置修改,改變數值大小就可以 position1=125; /1號 position2=124; /2號 position3=125; /3號 position4=125; /4號 position5=128; /5號 position6=125; /未使用 position7=113; /未使用 PWM_8(); if(x<10) j=20;j-;

36、low_level_500u(j); else j=10; j+; low_level_500u(j); /*函數名稱:main函數功能:入口函數輸入 :無輸出 :無*/void main(void) SP=0x70; /堆棧指針初始化 P0M1 = 0x00;/P0 as Digital OUTPUT P0M0 = 0x00; init_cpu(); /初始化cpu 設置定時器 delay500us(10); P0=0xff; delay500ms(1); initial_position();/初始位置 delay500ms(1); while(P3&0x01); /檢測按鍵信號

37、go_ahead_3(); /調用前進三步程序 qian_gendou(); /調用前跟頭程序 go_ahead_3(); /調用前進三步程序 hou_gendou(); /調用后跟頭程序 go_ahead(); /調用一直前進程序 while(1); /* */#/ 函數名稱:void goahead3(void)/ 函數說明:前進3步子程序/ 入口參數:無/ 出口參數:無/# void go_ahead_3(void) uchar i,t; for(i=0;i<30;i+) /側身 position2+; if(i%2)=0) position5+; PWM_8(); low_lev

38、el_500u(15); for(i=0;i<50;i+) /半步 position0+; position1+; position3+; position4+; if(i%5)=0) position2-; if(i%10)=0) position2-; if(i%50)=0) position5+=3; PWM_8(); low_level_500u(15); for(i=0;i<15;i+) /落腳 position2-; position5-; if(i%5)=0) position5-; PWM_8(); low_level_500u(15); for(i=0;i<30;i+) /右側 position5-; if(i%2=0) position2-; PWM_8(); low_level_500u(15); for(i=0;i<100;i+) /左 大步 position0-; position1-; position3-; position4-; if(i%10=0) position5+; if(i%20=0) position5+; if(i%100=0) position2-=3; P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論