




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-龍人寶貝Open教育機(jī)器人寶貝車簡介雙控制器(C51和AVR)教學(xué)板兩個連續(xù)旋轉(zhuǎn)的舵機(jī)開放的實(shí)驗(yàn)面包板豐富的傳感器配置教學(xué)板內(nèi)容概述建立編程開發(fā)環(huán)境安裝調(diào)試讓寶貝車動起來利用傳感器導(dǎo)航建立編程開發(fā)環(huán)境C51單片機(jī)
KeiluVision
AVR單片機(jī)WINAVRISP程序下載SLISP串口調(diào)試工具建立編程開發(fā)環(huán)境安裝keil,嘗試建立一個新的工程建立編程開發(fā)環(huán)境安裝ISP下載程序建立編程開發(fā)環(huán)境串口調(diào)試工具建立編程開發(fā)環(huán)境串口線----連接在電腦的串口,可以通過單片機(jī)將信息輸出到串口調(diào)試工具中ISP下載線接在電腦的并口上,通過ISP下載軟件可以將程序下載到單片機(jī)系統(tǒng)調(diào)試接上兩個伺服舵機(jī)到教學(xué)板的P1_0和P1_1電機(jī)口,進(jìn)行舵機(jī)的調(diào)零系統(tǒng)調(diào)試舵機(jī)的特性如何連接舵機(jī)有三個連接引腳,一個+5V的電源,一個地,以及一個信號系統(tǒng)調(diào)試舵機(jī)的特性如何控制在接上+5V電源后,舵機(jī)運(yùn)動的速度和方向由脈沖信號的時序決定,寶貝車上使用的舵機(jī)時序特點(diǎn)是高電平從1.3ms到1.5ms,低電平為20ms時電機(jī)為順時針旋轉(zhuǎn),高電平1.5ms到1.7ms電機(jī)逆時針旋轉(zhuǎn)。高電平持續(xù)1.3ms,低電平持續(xù)20ms,電機(jī)全速順時針旋轉(zhuǎn)。系統(tǒng)調(diào)試舵機(jī)的特性如何控制高電平持續(xù)1.7ms,低電平20ms,電機(jī)全速逆時間旋轉(zhuǎn)。高電平持續(xù)1.5ms,低電平20ms,電機(jī)保持不動系統(tǒng)調(diào)試關(guān)于調(diào)零為此我們需要做一下工作給單片機(jī)一個程序,讓接電機(jī)信號的P1_0和P1_1口按保持不動的脈沖輸出高低電平信號。打開電源,使用我們提供的小十字起輕輕的轉(zhuǎn)動調(diào)零口,使電機(jī)靜止下來。剛剛出產(chǎn)的電機(jī)并不能正確的按照時序工作,需要調(diào)零,調(diào)零就是在給定電機(jī)高脈沖1.5ms的情況下,保持電機(jī)不動。讓寶貝車動起來認(rèn)識一下AT89S52AT89SC52單片機(jī)由4個口,P0,P1,P2,P3來進(jìn)行外圍擴(kuò)展和控制。4個P口的每個引腳都可以做普通I/O使用。此外一些引腳還有第二功能。P0和P2口可以組成16位的外部地址總線,用于以總線方式擴(kuò)展外部器件。P3口I/O引腳都有地二功能,主要有串口收(RXD)發(fā)(TXD)信號口;兩個外部中斷信號(INT0和INT1)口;外部脈沖計數(shù)信號(T0和T1)口等,具體可以參考相關(guān)資料或書籍。讓寶貝車動起來準(zhǔn)備好調(diào)零的程序打開第二章BothServoClockwise這個例程#include<BoeBot.h>#include<uart.h>intmain(void){ uart_Init(); //初始化串口
printf("TheLEDsconnectedtoP1_0andP1_1areblinking!\n"); while(1) { P1_0=1; //P1_0輸出高電平
P1_1=1; //P1_1輸出高電平
delay_nus(1300); //延時500ms P1_0=0; //P1_0輸出低電平
P1_1=0; //P1_1輸出低電平
delay_nms(20); //延時20ms }}讓寶貝車動起來分析這個程序頭文件#include<BoeBot.h>包含了兩個延時函數(shù)#include<uart.h> 包含了串口的驅(qū)動串口初始化uart_Init();初始化串口控制部分控制部分在一個while(1)下的無限循環(huán)中讓寶貝車動起來根據(jù)時序?qū)懗绦蜃岆姍C(jī)引腳為高電平
P1_0
=
1;
P1_1
=
1;讓高電平1.5ms(1500us)
delay_nus(1500);讓電機(jī)引腳為低電平
P1_0
=
0;
P1_1
=
0;讓低電平保持20ms
delay_nms(20);循環(huán)
讓寶貝車動起來關(guān)于單片機(jī)C語言編程基于C語言的單片機(jī)編程除了要遵守C語言的語法外,針對不同單片機(jī)的特點(diǎn),對C語言做了一些擴(kuò)展。如:對存儲區(qū)間定義的關(guān)鍵字data,bdata,idata,pdata,xdata。對中斷行為的關(guān)鍵字?jǐn)U展interrupt
位變量,可重入關(guān)鍵字等程序中使用P1_0來表示P0口的第一個引腳,這是因?yàn)槌绦虬腁T89X52.H這個頭文件中將引腳的地址通過宏定義成容易記憶的符號,單片機(jī)的其他器件也是這樣表示的,具體請參考AT89X52.H這個頭文件,以及相關(guān)資料。讓寶貝車動起來調(diào)零將代碼考到我們新建的工程中,修改程序中延時函數(shù)參數(shù)1300為1500,編譯程序。將生成的.HEX文件下載到單片機(jī)。將電源開關(guān)打開到2,用十字起分別調(diào)整兩個電機(jī)的調(diào)零口,直到電機(jī)完全不轉(zhuǎn)動為止。根據(jù)安裝手冊安裝好寶貝車,接下編寫程序來讓車完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等基本運(yùn)動。讓寶貝車動起來編寫基本運(yùn)動程序目標(biāo)分析由于兩個電機(jī)對稱安裝,只要是兩個是兩個輪子想相反的方向以相同的速度運(yùn)動,車就會像一個方向像運(yùn)動。語言實(shí)現(xiàn)使右邊電機(jī)順時針旋轉(zhuǎn),向P1_0口輸出連續(xù)的高電平為1.3ms低電平為20ms的脈沖信號使左邊電機(jī)逆時針旋轉(zhuǎn),向P1_1口輸出連續(xù)的高電平為1.7ms低電平為20ms的脈沖信號讓寶貝車動起來編寫程序修改之前的調(diào)零程序的電機(jī)控制部分重新編譯程序,并將生產(chǎn)的.HEX文件下載到單片機(jī) P1_0=1; //P1_0輸出高電平
delay_nus(1300); //延時500ms P1_0=0; //P1_0輸出低電平
P1_1=1; //P1_1輸出低電平 delay_nus(1500); P1_1=0; //P1_1輸出高電平
delay_nms(20); //延時20ms讓寶貝車動起來建立一個向前的運(yùn)動函數(shù)供以后使用函數(shù)命名為ForwardvoidForward(void){ P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);}讓寶貝車動起來編寫其他運(yùn)動程序,并且封裝成函數(shù)要讓小車以不同方式運(yùn)動,只需要通過調(diào)整信號高電平脈沖時間,以控制電機(jī)以不同的方向和速度運(yùn)動即可.左轉(zhuǎn),只要兩個高電平同為1300,再通過控制脈沖周期的次數(shù)來決定小車左轉(zhuǎn)的速度.右轉(zhuǎn),只要兩個高電平同為1700,再通過控制脈沖周期的次數(shù)來決定小車右轉(zhuǎn)的速度.后退剛好與前進(jìn)相反即可讓寶貝車動起來用FOR語句控制轉(zhuǎn)動角度程序在for中執(zhí)行26次,使小車左轉(zhuǎn)約90度voidLeft_Turn(void){inti;for(i=1;i<=26;i++) { P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); }}讓寶貝車動起來總結(jié)在編寫程序的時候我們新明確任務(wù),再逐步分解成我們?nèi)菀资褂玫恼Z言描述的任務(wù)?,F(xiàn)在我們擁有了幾個可以使小車運(yùn)動的函數(shù)。我們可以把這些函數(shù)組織起來,做成一個運(yùn)動的頭文件,以供以后使用。形成自己的函數(shù)庫,在編寫程序的時候,我們可以把一些好用的小模塊編寫成通用的函數(shù),以供需要時使用。最后再來看一個完整的例子ForwardLeftRightBackward在開始下一部分之前單片機(jī)C語言編程的一些特點(diǎn)總結(jié)While(1),很多時候我們希望單片機(jī)能夠連續(xù)的做一些事情,如讓電機(jī)運(yùn)動,不斷的掃描I/O口以檢測信號,通常在做完一些變量聲明,以及初始化工作后我會將控制程序放在一個無限循環(huán)中。Delay函數(shù),單片機(jī)很多時候都會用到這個函數(shù)以等待一些事情完成,或按照某個時序控制I/O。利用傳感器導(dǎo)航有了基本的運(yùn)動基礎(chǔ),現(xiàn)在需要讓小車通過傳感器來感知外部的世界,并完成智能的運(yùn)動。下面的內(nèi)容包括以下幾個方面通過外部信息來進(jìn)行智能的運(yùn)動的構(gòu)思使用紅外探測傳感器完成紅外線避障總結(jié)利用傳感器導(dǎo)航1、感知外部信息2、分析處理信息3、做出智能決策4、執(zhí)行決策利用傳感器導(dǎo)航使用紅外線探測器感知外部信息紅外線探測器的原理紅外線接收器像機(jī)器人的眼睛,它能夠“看見”
980nm波長的紅外線通過,接收器里面還帶一個濾波器,接受38.5KHZ的電信號。接收到信號后引腳電平由高變低。(10)紅外線發(fā)射器在接通電源之后發(fā)射980nm波長的紅外線,所以只要使發(fā)射器一秒鐘發(fā)射38,500次的紅外光就能得到接收器能識別的信號。利用傳感器導(dǎo)航認(rèn)識需要使用的電子元器件紅外線接收器、發(fā)射器三極管利用傳感器導(dǎo)航在面包板上搭建好電路利用傳感器導(dǎo)航編寫紅外線探測器驅(qū)動使用紅外線探測器只要使紅外線發(fā)射器以38.5khz發(fā)射紅外線即可。從時序來分析,只要按照下面的時序來變化引腳電平利用傳感器導(dǎo)航參照調(diào)零的程序來寫紅外發(fā)射驅(qū)動紅外線觸發(fā)信號接在P1_3上面發(fā)射完成馬上檢查紅外線接收器信號紅外線接收器件接在P1_2上這樣就完成了一次收發(fā)過程!for(counter=0;counter<38;counter++){ P1_3=1; delay_nus(13); P1_3=0; delay_nus(13);}irDetectLeft
=
P1_2state();利用傳感器導(dǎo)航delay_nus函數(shù)的不精確性由于調(diào)用函數(shù)本身是要消耗時間,所以為了有更精確,我們要修改一下程序的延時部分。Int
i
=
39;While(--i)
{RightLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();RightLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}_nop_();在intrins.h這個頭文件中。表示執(zhí)行一條空指令。使用一連串的_nop_();來代替delay_nus();即可。記住加入instrins.h這個頭文件。利用傳感器導(dǎo)航完整的函數(shù)voidIRLaunch(unsignedcharIR){intcounter;if(IR=='L') for(counter=0;counter<38;counter++)//左邊發(fā)射
{LeftLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LeftLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}if(IR=='R')。。。。。。。。。。
利用傳感器導(dǎo)航測試你的紅外線傳感器編譯程序,下載程序到教學(xué)板。打開串口調(diào)試程序,連接串口線利用傳感器導(dǎo)航寫出完整的程序現(xiàn)在我們將運(yùn)動部分的函數(shù)加到程序中來按照之前的構(gòu)思一步步完成程序感知外部信息處理得到的信息
IRLaunch('R');//右邊發(fā)射
irDetectRight=RightIR;//右邊接收
IRLaunch('L');//左邊發(fā)射
irDetectLeft=LeftIR;//左邊接收利用傳感器導(dǎo)航寫出完整的程序分析并處理得到的信息并作出決策得到的信息是左邊和右邊的紅外線接收器的狀態(tài)左邊紅外線信號右邊紅外線信號外部狀態(tài)分析行為策略11兩邊都沒有檢測的信號前方?jīng)]有障礙物。前進(jìn)10右邊有障礙物左轉(zhuǎn)一定角度01左邊有障礙物右轉(zhuǎn)一定角度00兩邊(前方)有障礙物后退一段距離,轉(zhuǎn)180度利用傳感器導(dǎo)航寫出完整的程序執(zhí)行決策主要在決策的條件下執(zhí)行之前的運(yùn)動函數(shù)就可以了,這里我們用了一組if
…..
else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭裝修工程合同違約處理3篇
- 合伙足浴合同協(xié)議書3篇
- 冰箱轉(zhuǎn)讓協(xié)議合同范本
- 微生物培養(yǎng)基的配制試題及答案
- 項(xiàng)目溝通管理的信息流動性試題及答案
- 高分攻略的證券從業(yè)資格證試題及答案
- 2025年會計決策模型試題及答案
- 逐步提高2025年證券從業(yè)資格證考試試題及答案
- 財務(wù)深度分析案例研究試題及答案
- 2025年國際金融理財師考試的多元化投資策略試題及答案
- 2024年廣東公需科目答案
- 房樹人心理畫繪畫分析(附圖)-課件
- 新時代鄉(xiāng)村振興戰(zhàn)略課件
- 2023年蘇州風(fēng)景園林投資發(fā)展集團(tuán)有限公司招聘筆試題庫及答案解析
- “一大”代表人生歷程與啟示匯總課件
- 2023年河南推拿職業(yè)學(xué)院單招考試面試模擬試題及答案解析
- 現(xiàn)代生物技術(shù)與人類健康課件
- 籃球裁判法(裁判手勢)課件
- 野外生存2-1課件
- 辭職報告辭職信
- 2021年新湘教版九年級數(shù)學(xué)中考總復(fù)習(xí)教案
評論
0/150
提交評論