【ch03】循環(huán)程序設(shè)計(jì)-讓機(jī)器人動(dòng)起來(lái)_第1頁(yè)
【ch03】循環(huán)程序設(shè)計(jì)-讓機(jī)器人動(dòng)起來(lái)_第2頁(yè)
【ch03】循環(huán)程序設(shè)計(jì)-讓機(jī)器人動(dòng)起來(lái)_第3頁(yè)
【ch03】循環(huán)程序設(shè)計(jì)-讓機(jī)器人動(dòng)起來(lái)_第4頁(yè)
【ch03】循環(huán)程序設(shè)計(jì)-讓機(jī)器人動(dòng)起來(lái)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

機(jī)器人程序設(shè)計(jì)(C語(yǔ)言)新工科建設(shè)之路·機(jī)器人技術(shù)與應(yīng)用系列循環(huán)程序設(shè)計(jì)一讓機(jī)器人動(dòng)起來(lái)第三章C51單片機(jī)的輸入/輸出接口控制機(jī)器人運(yùn)動(dòng)的伺服電機(jī)以不同速度運(yùn)動(dòng)是通過(guò)單片機(jī)的輸入/輸出(I/O)接口輸出不同脈沖序列來(lái)實(shí)現(xiàn)的。C51系列單片機(jī)有4個(gè)8位的并行I/O接口:P0、P1、P2和P3。AT89S52引腳:AT89S52有44根引腳,其中32根是I/O端口引腳,如圖3-1所示。其中有29根具備兩種用途(用圓括號(hào)寫出),既可作為I/O端口,也可作為控制信號(hào)或地址及數(shù)據(jù)線。單燈閃爍控制01為了驗(yàn)證P1接口的輸出電平是不是由你編寫的程序控制,可以采用一個(gè)非常簡(jiǎn)單的辦法,就是在想驗(yàn)證的接口引腳上接一個(gè)發(fā)光二極管。當(dāng)輸出高電平時(shí),發(fā)光二極管滅;輸出低電平時(shí),發(fā)光二極管亮。單燈閃爍控制單燈閃爍控制LED電路元器件(1)紅色發(fā)光二極管,2個(gè)。(2)470Ω電阻,2個(gè)。單燈閃爍控制LED電路搭建在搭建電路前先認(rèn)識(shí)面包板。教學(xué)板前端,那塊白色的、有許多孔或插座的區(qū)域稱為無(wú)焊料的面包板。面包板連同它三邊黑色插孔稱為原型區(qū)域,如圖3-2所示。單燈閃爍控制LED電路搭建單燈閃爍控制LED電路搭建在面包板插孔插上元器件,如本任務(wù)用到的電阻、LED燈,就可以構(gòu)成本書例程的電路。元器件靠面包板插孔彼此連接。單燈閃爍控制LED電路搭建面包板上共17列插孔,列與列之間互不相通。整個(gè)面包板通過(guò)中間槽分為兩塊,它們之間的插座互不相通。每一小列由5個(gè)插孔組成,這5個(gè)插孔在面包板上是電氣相連的。單燈閃爍控制現(xiàn)在按照?qǐng)D3-3所示電路,在教學(xué)板的面包板上搭建起實(shí)際電路。LED電路搭建單燈閃爍控制圖3-3所示的電路原理圖指引你如何連接電路元器件,使用唯一的符號(hào)來(lái)表示不同的元器件。這些器件符號(hào)用細(xì)線相連,表示它們是電氣相連的。在電路原理圖中,當(dāng)兩個(gè)器件符號(hào)用細(xì)線相連時(shí),表示它們之間是電氣連接的。細(xì)線還可以將元器件和電壓端口連接。LED電路搭建單燈閃爍控制圖3-4為元器件電路符號(hào)與實(shí)際元器件的對(duì)應(yīng)圖。元器件符號(hào)圖的上方就是該元器件的零件圖。LED電路搭建單燈閃爍控制LED電路搭建根據(jù)圖3-3實(shí)際搭建好的電路參考圖3-5所示。單燈閃爍控制LED電路搭建實(shí)際搭建電路時(shí)應(yīng)注意:確認(rèn)發(fā)光二極管的短針腳(陰極)插入面包板,通過(guò)電阻與P10相連。確認(rèn)發(fā)光二極管的長(zhǎng)針腳(陽(yáng)極)插入"+5V"插口,這里+5V就是電路圖上的Vcc。單燈閃爍控制HighLowLed.c是如何工作的與第1章程序相比,本例程多使用了一個(gè)頭文件BoeBot.h,其中定義了兩個(gè)延時(shí)函數(shù);voiddelay_nms(unsignedinti)和voiddelay_nus(unsignedinti)。單燈閃爍控制修飾符unsigned放到int前面,指定后面的變量為無(wú)符號(hào)數(shù)。如果加上修飾符signed,則指定是“有符號(hào)數(shù)”。如果既不指定signed,也不指定為unsigned,則隱含為有符號(hào)(signed)。實(shí)際上,signed是可以省略的。無(wú)符號(hào)整型數(shù)據(jù)unsignedint單燈閃爍控制單片機(jī)端口引腳信號(hào)隨時(shí)間的變化可以用時(shí)序圖來(lái)描述,一個(gè)端口引腳的時(shí)序圖反應(yīng)的是其高、低電壓信號(hào)與時(shí)間的變化關(guān)系圖。時(shí)序圖簡(jiǎn)介機(jī)器人伺服電機(jī)控制信號(hào)02機(jī)器人伺服電機(jī)控制信號(hào)圖3-8所示是高電平持續(xù)1.5ms,低電平持續(xù)20ms,然后不斷重復(fù)地控制脈沖序列。該脈沖序列發(fā)給經(jīng)過(guò)零點(diǎn)標(biāo)定后的伺服電機(jī),伺服電機(jī)不會(huì)旋轉(zhuǎn)。如果此時(shí)電機(jī)旋轉(zhuǎn),那么表明電機(jī)需要標(biāo)定。機(jī)器人伺服電機(jī)控制信號(hào)由圖3-8、圖3-9和圖3-10可知,控制電機(jī)運(yùn)轉(zhuǎn)速度的是高電平持續(xù)的時(shí)間,當(dāng)高電平持續(xù)時(shí)間為1.3ms時(shí),電機(jī)順時(shí)針全速旋轉(zhuǎn);當(dāng)高電平持續(xù)時(shí)間1.7ms時(shí),電機(jī)逆時(shí)針全速旋轉(zhuǎn)。按照任務(wù)1中給單片機(jī)微控制器編程,使P1端口的兩個(gè)引腳(P1_0和P1_1)控制兩個(gè)LED燈閃爍,重新給單片機(jī)編程,就可以給這兩個(gè)引腳發(fā)出伺服電機(jī)的控制信號(hào)。機(jī)器人伺服電機(jī)控制信號(hào)機(jī)器人伺服電機(jī)控制信號(hào)按照?qǐng)D3-12所示的伺服電機(jī)與教學(xué)板的連接原理圖和實(shí)際接線圖,將兩個(gè)電機(jī)的連接線連接到教學(xué)板上。具體連接時(shí),注意將P1_0引腳的控制輸出用來(lái)控制右邊的伺服電機(jī),P1_1則用來(lái)控制左邊的伺服電機(jī)。機(jī)器人伺服電機(jī)控制信號(hào)機(jī)器人伺服電機(jī)控制信號(hào)單片機(jī)編程發(fā)給伺服電機(jī)的高、低電平信號(hào)必須具備更精確的時(shí)間。機(jī)器人伺服電機(jī)控制信號(hào)用下面的程序片段代替例程HighLowLed.c中相應(yīng)的程序片段,編譯、連接、執(zhí)行代碼,觀察連接到P1_0腳的機(jī)器人輪子是不是逆時(shí)針全速旋轉(zhuǎn)。計(jì)數(shù)并控制循環(huán)次數(shù)03計(jì)數(shù)并控制循環(huán)次數(shù)for語(yǔ)句最方便的控制一段代碼執(zhí)行次數(shù)的方法是利用for循環(huán),語(yǔ)法如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句計(jì)數(shù)并控制循環(huán)次數(shù)for語(yǔ)句它的執(zhí)行過(guò)程如下:(1)求解表達(dá)式1。(2)求解表達(dá)式2,若其值為真(非0),則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行第(3)步;若其值為假(0),則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。(3)求解表達(dá)式3。(4)轉(zhuǎn)回第(2)步繼續(xù)執(zhí)行。(5)循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句。計(jì)數(shù)并控制循環(huán)次數(shù)for語(yǔ)句for語(yǔ)句最簡(jiǎn)單的應(yīng)用形式,也就是最易理解的形式如下:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增/減值)語(yǔ)句計(jì)數(shù)并控制循環(huán)次數(shù)自增和自減C語(yǔ)言有兩個(gè)很有用的運(yùn)算符-—自增和自減,即“++”和“_”。運(yùn)算符“艸”是操作數(shù)加1,而“-”是操作數(shù)減1。換句話說(shuō):“x=x+1”同“x++”,“x=x-1”同“x—”。計(jì)數(shù)并控制循環(huán)次數(shù)for循環(huán)控制電機(jī)的運(yùn)行時(shí)間下面是for循環(huán)的例子,它會(huì)使電機(jī)運(yùn)行幾秒鐘。用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)04用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)scanf()函數(shù)scanf()函數(shù)與printf()函數(shù)對(duì)應(yīng),在C語(yǔ)言庫(kù)的stdio.h中定義。它的一般形式如下:scanf("格式控制字符串",地址列表);用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)scanf()函數(shù)程序運(yùn)行結(jié)果如圖3-13所示。①輸出“ProgramRunning!”和“Pleaseinputpulsenumber:”。②程序處于等待狀態(tài),等待輸入數(shù)據(jù)。③在發(fā)送區(qū)(顯示窗口下面的窗口)輸入數(shù)據(jù)并回車,然后單擊“發(fā)送”按鈕,將數(shù)據(jù)發(fā)送給變量PulseNumber。④scanf()函數(shù)收到數(shù)據(jù)后,執(zhí)行下面的語(yǔ)句,輸出“Pleaseinputpulseduration:”。⑤處于等待狀態(tài)。用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)scanf()函數(shù)程序運(yùn)行結(jié)果如圖3-13所示。⑥在發(fā)送區(qū)再輸入數(shù)據(jù),然后單擊“發(fā)送”按鈕,將數(shù)據(jù)發(fā)送給變量PulseDuration。⑦程序接收到兩個(gè)數(shù)據(jù)后執(zhí)行剩余的程序,讓伺服電機(jī)運(yùn)轉(zhuǎn)。用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)scanf()函數(shù)用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)工程素質(zhì)和技能歸納本章涉及的主要技能①C51系列單片機(jī)的引腳定義和分布。②用C51單片機(jī)的P1端口的位輸出控制單燈和雙燈閃爍,時(shí)序圖的概念,while循環(huán)的引入和延時(shí)函數(shù)的使用。③機(jī)器人伺服電機(jī)的控制脈沖序列,通過(guò)給C51編程讓其輸出這些控制脈沖序列。④自增運(yùn)算符的使用。⑤for循環(huán)的使用以控制機(jī)器人的運(yùn)動(dòng)。⑥如何通過(guò)串口輸入數(shù)據(jù)控制機(jī)器人的運(yùn)動(dòng)。用計(jì)算機(jī)來(lái)控制機(jī)器人的運(yùn)動(dòng)科學(xué)精神的培養(yǎng)①比較BS2微控制器與C51單片機(jī)微控制器輸入、輸出接口的使用方法。

溫馨提示

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

評(píng)論

0/150

提交評(píng)論