版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第八講模塊化機電系統(tǒng)設(shè)計實驗-中結(jié)構(gòu)組裝與運動規(guī)劃編程組裝實例介紹組裝實例介紹u全向運動小車全向運動小車u帶機械手帶機械手 組裝實例介紹組裝實例介紹u四足機器人四足機器人 組裝實例介紹組裝實例介紹u自動追光自動追光的的4足機械足機械爬蟲爬蟲 組裝實例介紹組裝實例介紹u自主避碰小車自主避碰小車 控制卡及C程序編譯環(huán)境簡介v我們的MultiFLEX控制器的控制核心采用的是Atmel公司的Mega128高檔單片機。vAVR系列單片機是Atmel生產(chǎn)的一種具有雙總線結(jié)構(gòu)的RISC(精簡指令系統(tǒng)計算機)單片機,它相對于傳統(tǒng)的CISC(復(fù)雜指令系統(tǒng)計算機)單片機而言,具有較短的指令周期和較快的運行速度。此
2、外,AVR單片機還具有片內(nèi)FLASH、片內(nèi)看門狗定時器、片內(nèi)同步/異步串行接口、片內(nèi)定時器/計數(shù)器、片內(nèi)數(shù)模轉(zhuǎn)換器等多種內(nèi)部資源。v上述這些特點使采用AVR單片機的應(yīng)用系統(tǒng)不僅具有運行速度快、結(jié)構(gòu)簡單、功能強大的特點,而且具有高可靠性和良好的經(jīng)濟(jì)型??刂瓶癈程序編譯環(huán)境簡介vAVR的程序編譯軟件比較多,比較著名的有ICC AVR、WinAVR、CodeVersionAVR、IAR等等。v以上軟件各有優(yōu)勢:ICCAVR具有良好的基于windows的集成開發(fā)環(huán)境,有人性化的代碼生成向?qū)?,而且價格低廉(相對于keil,IAR而言)、升級速度快,在國內(nèi)有雙龍電子提供技術(shù)支持。WinAVR是基于GCC
3、的一個免費軟件,網(wǎng)上有大量的教程以及源代碼可供參考(比較有名的有等),很多人認(rèn)為它沒有良好的集成開發(fā)環(huán)境而棄之不用,實際上它會自動嵌入到ATMEL公司的官方開發(fā)軟件AVRStudio中,AVRStudio的良好集成開發(fā)環(huán)境使得用GCC進(jìn)行程序開發(fā)變得異常簡單。和ICCAVR相比,其主要優(yōu)勢在于完全免費,有很多現(xiàn)成的函數(shù)可調(diào)用,網(wǎng)上可利用資源豐富等優(yōu)點;后兩者國內(nèi)使用較少,在此不做介紹。v本課程將以WinAVR+AVRStudio作為編譯環(huán)境進(jìn)行程序設(shè)計。WinAVR以及AVRStudio軟件的安裝v首先打開實驗指導(dǎo)書配套光盤,在“MultiFLEX控制卡AVR MCU開發(fā)資料”目錄下,打開“W
4、inAVR”文件夾,雙擊“WinAVR-20060421-install.exe”完成WinAVR的安裝;v然后打開“AVR Studio”文件夾,根據(jù)文件夾里面的安裝說明進(jìn)行AVRstudio的安裝,并將其升級到最新版本。v請先安裝WinAVR再安裝AVRStudio,這樣WinAVR才能自動嵌入到AVRStudio中。用AVRStudio建立一個工程v如何用AVRStudio建立一個新工程呢?首先打開我們剛剛安裝好的AVRStudio,會出現(xiàn)如下窗口:用AVRStudio建立一個工程v點擊選框1中的按鈕可以新建一個工程,點擊選框2中的按鈕可以打開一個工程,選框3是最近你所打開的文件,你可以
5、選中快速將其打開。在這里,我們點擊1(NewProject),會出現(xiàn)如下窗口:用AVRStudio建立一個工程v如何用AVRStudio建立一個新工程呢?首先打開我們剛剛安裝好的AVRStudio,會出現(xiàn)如下窗口:用AVRStudio建立一個工程v在此窗口中我們可以設(shè)置關(guān)于新工程的一些基本信息。在選框1(ProjectType)中,第一項AtmelAVRAssembler指匯編工程文件,第二項AVRGCC指建立后的文件為C語言工程文件,在此我們選擇AVRGCC(如果沒有安裝WinAVR則此處不會出現(xiàn)AVRGCC選項)。在選框2中,我們可以確定工程名(Project name)以及初始文件名(I
6、nitial file),在此我們不妨均取名為test。在選項框3中,我們可以確定工程所在的文件夾位置,在此我們不妨將路徑設(shè)為D:test。在選項卡2中如果選中Create folder,則會在3中確定的文件夾中新建一個以工程名為文件夾名的文件夾,所有與該工程有關(guān)的文件會放在此文件夾內(nèi);在選項卡2中選中Create initial file會生成一個初始.c文件,方便我們編寫程序。以上設(shè)定完成后我們點擊Next進(jìn)行下一步設(shè)置,會彈出如下窗口: 用AVRStudio建立一個工程v在此窗口中我們可以設(shè)置一些關(guān)于計算機調(diào)試的一些信息。在選項框1之中我們設(shè)置程序調(diào)試平臺,在此我們選擇AVRSimula
7、tor。在選項框2中我們可以選擇單片機類型,你可以根據(jù)實際需要選擇,在此我們選擇ATmega128(本實驗以創(chuàng)意之星控制板為平臺,所以選擇創(chuàng)意之星的控制核心ATmega128,AVRStudio可以進(jìn)行軟件模擬單片機的運行過程,但本書中不作介紹)。選擇完成后我們點擊Finish,這樣一個新工程就初步建立了。然后會出現(xiàn)如下窗口。其中選框其中選框1為菜單欄,選為菜單欄,選框框2為工具欄,選框為工具欄,選框3為工為工程管理樹,選框程管理樹,選框4為程序為程序編輯欄,選框編輯欄,選框5為編譯信為編譯信息欄。息欄。用AVRStudio建立一個工程作為我們的第一個代碼實驗,我們可在選框4中輸入如下程序:#
8、include /我們的第一個程序#defineBEEP_ONPORTG |= _BV(PG3)/蜂鳴器發(fā)聲/Gcc中的_BV()類似于ICC中的BIT()函數(shù),以上語句就是把PORTG的8個引腳中的第4個引腳置1#defineBEEP_OFFPORTG &= _BV(PG3)/蜂鳴器停止發(fā)聲int main(void)int i,j;PORTG = 0;DDRG = 0 xff;while(1)for(i=0;i0 xFF;i+)for(j=0;j0 xFF;j+);BEEP_ON;for(i=0;i0 xFF;i+)for(j=0;j0 xFF;j+);BEEP_OFF; /本實驗的源代碼
9、在配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.2” 文件夾用AVRStudio建立一個工程然后在菜單欄選擇“ProjectConfiguration Options”用AVRStudio建立一個工程彈出如下窗口:在控制核心工作頻率(Frequency)一欄輸入14745600,由于創(chuàng)意之星采用的晶振是此頻率,故如此設(shè)置。其他選項均采用默認(rèn)設(shè)置即可,然后點擊確定。用AVRStudio建立一個工程保存文件,然后在菜單欄選擇“BuildBuild”(或者按F7),如圖所示:用AVRStudio建立一個工程在編譯信息欄會出現(xiàn)相應(yīng)的編譯信息,顯示是否有錯誤,本實驗編譯結(jié)果如下:其中顯示“Build su
10、cceeded with 0 Warnings”說明我們編譯正常通過,這時,在我們當(dāng)初設(shè)置的工程所在的文件夾的default文件夾“D:testtestdefault”里會出現(xiàn)很多新文件,這些都是程序編譯的結(jié)果,其中有個test.hex 文件是程序燒寫文件,將這個文件經(jīng)過燒錄軟件下載至MultiFlex控制板后程序就能運行,至于如何燒寫我們將在后面進(jìn)行介紹。將*.hex文件燒錄至MultiFlex控制卡中v我們介紹了怎么建立一個工程以及如何生成.hex燒寫文件,那么怎么將此文件燒錄制控制卡中呢,我們將就此進(jìn)行介紹。v教師已經(jīng)將Pony Prog軟件安裝到實驗用計算機上.打開Pony Prog軟
11、件,界面如下圖所示:將*.hex文件燒錄至MultiFlex控制卡中v由于“創(chuàng)意之星”配置的是并行下載線,所以我們應(yīng)該選擇Parallel,在下拉選項中選擇AvrISPI/O,如上圖所示,其他選項按其默認(rèn)設(shè)置,不予更改,然后點擊“OK”完成設(shè)置。v然后我們進(jìn)行目標(biāo)芯片的選擇:點擊“DeviceAVR micro”,在彈出的選項框中選擇ATmega128,如下圖所示,這樣我們就完成了目標(biāo)芯片的選擇。將*.hex文件燒錄至MultiFlex控制卡中v現(xiàn)在我們用并口下載線將電腦和MultiFlex控制卡進(jìn)行連接。下圖是“創(chuàng)意之星”提供的并口下載線以及其線序:將*.hex文件燒錄至MultiFlex控
12、制卡中下圖是MultiFlex控制卡的功能區(qū)域圖,將下載線的5針插頭與其中的H區(qū)的5針插頭相連接,注意線序連接完成后給控制卡通上電源(程序燒寫過程中不允許斷電,請確保電源的可靠性)。用AVRStudio建立一個工程然后在剛才打開的PonyProg2000中點擊“FileOpen Device File”或者點擊圖標(biāo) 打開我們前面生成的test.hex文件(應(yīng)該在“D:testtestdefault”文件夾中),然后點擊然后點擊“CommandWrite All”或者點擊圖標(biāo) ,然后程序就會開始燒寫至控制卡里面,燒寫過程如下圖: 將*.hex文件燒錄至MultiFlex控制卡中v當(dāng)PonyPro
13、g2000顯示燒寫成功時,我們的第一個實驗程序就順利的燒寫進(jìn)MultiFlex控制卡中了.v正常情況下我們會聽到控制卡蜂鳴器發(fā)出急促的“嘟嘟嘟”的聲音,如果沒有任何現(xiàn)象請你檢查以上步驟是否按要求完成或者檢查下載線有沒有插反、控制卡是否正常供電,修改有問題的地方后再生成hex文件進(jìn)行燒錄,直至蜂鳴器出現(xiàn)規(guī)則的嘟嘟聲為止。v這個簡單程序的功能就是讓控制卡產(chǎn)生蜂鳴聲MultiFlex控制卡系統(tǒng)程序簡介v下面我們將介紹MultiFlex控制卡的程序總體結(jié)構(gòu)以及介紹如何編寫用戶自己的c語言程序?qū)崿F(xiàn)對機器人的控制。v通過第七章的實驗,相信大家已經(jīng)非常熟悉如何使用電腦對創(chuàng)意之星進(jìn)行控制。實際上,我們通過電腦
14、設(shè)置的命令會通過電腦串口傳遞給MultiFlex控制卡,控制卡通過內(nèi)部程序程序?qū)崿F(xiàn)命令,進(jìn)而實現(xiàn)對機器人的控制,那么控制卡具體是怎么工作的呢?MultiFlex控制卡系統(tǒng)程序簡介vMultiFlex控制卡的工作流程圖如圖所示:MultiFlex控制卡系統(tǒng)程序簡介vMultiFlex控制卡的工作流程:v控制卡通電控制卡首先讀取控制卡功能選擇撥碼開關(guān)的用戶設(shè)置情況然后進(jìn)行系統(tǒng)的初始化(具體設(shè)置規(guī)則請回顧1.3.4MultiFlex控制卡簡要說明)v控制卡根據(jù)用戶設(shè)置判斷是執(zhí)行用戶下載到控制卡的動作序列還是將各關(guān)機回復(fù)到初始位置等待上位機(電腦)的命令:如果是用戶下載到控制卡的動作序列,控制卡將循環(huán)
15、執(zhí)行該序列,直到接收到上位機的命令為止;如果是回復(fù)到初始位置等待上位機命令,則控制卡將使機器人各關(guān)節(jié)處于初始位置,然后等待上位機的指令。v然后控制卡就一直進(jìn)行“等待命令執(zhí)行上位機指令等待命令”循環(huán)。MultiFlex控制卡系統(tǒng)程序簡介vMultiFlex控制卡的工作流程:v由于整個控制卡的控制程序比較復(fù)雜,并且設(shè)計到很多單片機最根本的知識(如波特率設(shè)置,io口設(shè)置,中斷等)還有數(shù)據(jù)結(jié)構(gòu)方面的知識,對于初學(xué)者想弄明白可能需要花上一個月甚至更多的時間,所以在此不對其源程序進(jìn)行具體剖析,同學(xué)們可在每次做完實驗之余,或著利用課余時間自己研究,不懂的多查閱資料(建議大家研究透徹,將此卡的系統(tǒng)程序研究透徹
16、之后基本上你就可以進(jìn)行AVR單片機的基礎(chǔ)開發(fā)了)。MultiFlex控制卡的C語言程序編寫v在本節(jié),我們將學(xué)習(xí)如何調(diào)用Usertask.h中聲明的函數(shù)實現(xiàn)對舵機,電機,控制卡IO口、AD口、蜂鳴器的控制。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對12路舵機的控制用“創(chuàng)意之星”機器人套件搭建的機器人的主要關(guān)節(jié)都是由舵機驅(qū)動的,那么怎么用c語言直接控制舵機運動呢,我們將在本小節(jié)進(jìn)行介紹。在打開我們前面8.3.2里拷貝到電腦上的工程文件(“D:創(chuàng)意之星8.3.1控制卡原始程序MultiFlex.aps”)后我們選擇USERTASK.C對其進(jìn)行編輯。輸入如下程序,注釋部分可以不輸入(源
17、程序參見實驗指導(dǎo)書配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.48.4.1編寫C程序?qū)崿F(xiàn)對12路舵機的控制”下的USERTASK.C文件)MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對12路舵機的控制然后打開SYSTASK.C文件,將處于最后的main()函數(shù)進(jìn)行細(xì)微改動。位于SYSTASK.C末尾的main()函數(shù)應(yīng)該如下所示:intmain(void)Sys_Init();/單片機初始化WORK_LED_ON;while(1)system_task();/系統(tǒng)任務(wù),接收串口發(fā)送命令進(jìn)行相應(yīng)控制user_task(); /用戶自己編寫的任務(wù)MultiFlex控制卡的C語言程序編寫
18、v編寫C程序?qū)崿F(xiàn)對12路舵機的控制分析代碼我們會發(fā)現(xiàn)控制卡開機后會先初始化,打開工作狀態(tài)指示燈,然后不斷的執(zhí)行系統(tǒng)函數(shù)system_task()和用戶函數(shù)user_task(),而system_task()函數(shù)的功能就是實現(xiàn)8.3.1介紹的控制卡功能,而user_task()則是我們自己編寫的函數(shù)。為了能讓我們所寫的控制函數(shù)能夠直接的、可靠的通過控制卡對機器人的各種執(zhí)行器進(jìn)行控制,我們最好把系統(tǒng)函數(shù)給屏蔽掉,即在system_task()前面加上“/”。修改后的main()函數(shù)如下所示:MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對12路舵機的控制修改后的main()函數(shù)如下所示:
19、intmain(void)Sys_Init();/單片機初始化WORK_LED_ON;while(1)/system_task();/系統(tǒng)任務(wù),接收串口發(fā)送命令進(jìn)行相應(yīng)控制user_task(); /用戶自己編寫的任務(wù)MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對12路舵機的控制將從配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.3”里拷貝過來的“8.3.1控制卡原始程序”文件夾的項目文件MultiFlex.aps中如上修改Usertask.c文件后,按F7將整個工程進(jìn)行編譯,生成MultiFlex.hex文件(該文件應(yīng)該在“D:創(chuàng)意之星8.3.1控制卡原始程序”的default文件夾
20、內(nèi),后面的實驗中不再說明)。然后我們用“創(chuàng)意之星”套件中的并口下載線將電腦的并口與MultiFlex控制卡的程序下載口連接,并將4個舵機分別接到控制卡的PWM0PWM3上(舵機連接方法見第六章),然后給控制卡通電、,并且將前面生成的MultiFlex.hex文件燒寫至MultiFlex控制卡中,具體燒寫方法參見8.2.4。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對12路舵機的控制如果操作正確,我們會看見4路舵機呈周期性運動。如果發(fā)現(xiàn)異常請檢查程序或者連線,一般來說程序中常出先的錯誤是:v命令末尾的英文半角分號“;”誤用成了漢字的全角分號“;”v少了語句中少了“”或者“”;v連線
21、常出現(xiàn)的錯誤是舵機控制線插反,或者是程序下載線插反,又或者是我們忘了給控制卡通電。請大家仔細(xì)檢查錯誤,排除錯誤后重新編譯工程,生成MultiFlex.hex文件后重新燒錄至控制卡中,直到與控制卡相連的舵機呈周期性運動為止。至此我們就順利完成了用c語言實現(xiàn)機器人關(guān)節(jié)(在這里用舵機實現(xiàn))運動控制的實驗。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對12路舵機的控制實驗作業(yè):v發(fā)揮想象力,編寫c語言程序,讓我們第七章中組裝的某個機器人(包含多個舵機)按照一定的動作運動。注意:v舵機目標(biāo)角度參數(shù)取值應(yīng)在0-180之間,速度參數(shù)取值應(yīng)在0-255之間vdelay()函數(shù)參數(shù)值范圍在0-255
22、之間MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對4路電機的控制v電機是機器人非常重要的組成部件之一,我們已經(jīng)知道了怎樣用“創(chuàng)意之星”機器人套件提供的上位機程序通過控制卡對電機進(jìn)行控制,那么怎么樣用過編寫c語言文件對電機進(jìn)行操作呢?v在本實驗以及后面的實驗中,我們都只討論怎么對USERTASK.C進(jìn)行編輯,其余步驟跟8.4.1相同,不再贅述。v對四路電機進(jìn)行控制的USERTASK.C如下所示(源程序參見實驗指導(dǎo)書配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.48.4.2編寫C程序?qū)崿F(xiàn)對4路電機的控制”文件夾下):MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對4路電機的控制
23、v整個程序運行的結(jié)果為電機1、3以最大速度正轉(zhuǎn)3s,同時電機2、4以最大速度反轉(zhuǎn)3s;然后電機1、2、3、4在2.6s內(nèi)均勻減速至0,然后定頓1s。整個工程編譯后電機將按以上規(guī)律循環(huán)運動。v將“創(chuàng)意之星”套件中配置的4個直流伺服電機分別與控制卡的M1-M4插口相連接(線序參見第六章),將從配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.3”里拷貝過來的“8.3.1控制卡原始程序”文件夾的項目文件MultiFlex.aps中如上修改Usertask.c文件后,按F7進(jìn)行編譯,生成MultiFlex.hex文件后將其燒錄至控制卡中,觀察實驗結(jié)果。如果運動結(jié)果和以上分析所得結(jié)果不同的話請檢查程序以及連線
24、,特別注意程序中分號及括號的是否為半角以及電機有沒有插反,排除錯誤后再將程序編譯,燒錄至控制卡中,直至得到正確的結(jié)果為止。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對16路I/O的讀寫vI/O口(In/Out口)是數(shù)字電路的重要組成部分之一,通過I/O口,我們可以控制端口的電平變化,也可以對端口的電平信息進(jìn)行讀取。v在機器人人領(lǐng)域?qū)/O口的操作更是無處不在,那么針對創(chuàng)意之星的MultiFlex控制卡我們怎么通過編寫c與程序?qū)ζ銲/O口進(jìn)行操作呢,我們將在本小節(jié)對其進(jìn)行介紹。v首先我們來簡單了解一下AVR單片機與I/O口有關(guān)的寄存器。AVR單片機與I/O口有關(guān)的寄存器有3個:PO
25、RTX,DDRX,PINX(X為端口編號)。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對16路I/O的讀寫vDDRX說明X端口的輸入輸出狀態(tài),例如:如PORTA=0 x0F=0000 1111,則引腳PA0-PA3均為輸出(1為輸出),引腳PA4-PA7均為輸入(0為輸入)。vPORTX說明X端口的輸入輸出的具體信息,例如:當(dāng)PORTA=0 x0F時,若PORTA=0X33=0011 0011,則引腳PA0、PA1為輸出,且輸出信號為高(1);引腳PA2、Pa3為輸出,但輸出信號為低(0);PA4、PA5為輸入且輸入有效;至于PA6、PA7雖然DDRA已經(jīng)將其設(shè)置為輸入,但是PO
26、RTA使其輸入無效,所以PA6、PA7的輸入信號讀不出來。vPINX為輸入端口的具體信息(PINX只能讀取不能寫入),例如:當(dāng)DDRA=0 x0F,PORTA=0 x33時,如果讀取PINA即char temp=PINA,則temp=-XX0011,其中為輸入的引腳只有PA4-PA7,PA4與PA5狀態(tài)為XX,X為輸入信號,而PA6、PA7的輸入為-,-為一個不確定的數(shù)。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對16路I/O的讀寫v以上是只是關(guān)于端口寄存器的一個簡略介紹(如果讀者想了解更多相關(guān)知識,請參考相關(guān)資料,推薦黃任的AVR單片機與CPLD/FPGA綜合應(yīng)用入門,北京航空
27、航天大學(xué)出版社).v方便大家看懂源程序,對于MultiFlex控制卡,我們已經(jīng)在系統(tǒng)程序里面進(jìn)行了處理,同學(xué)們只需要調(diào)用相關(guān)的函數(shù)即可對控制卡的IO0-IO15這16個引腳進(jìn)行控制。v對控制卡I/O口進(jìn)行控制的USERTASK.C源程序參見實驗指導(dǎo)書配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.48.4.3編寫C程序?qū)崿F(xiàn)對16路IO口的控制”:MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對16路I/O的讀寫v整個實驗的運行結(jié)果應(yīng)為:當(dāng)開關(guān)(碰撞傳感器)未按下時,所有LED燈點亮,當(dāng)開關(guān)持續(xù)按下時,led燈循環(huán)點亮。v將“創(chuàng)意之星”套件中配置的4個led燈分別與控制卡的IO0-IO3插
28、口相連接(連接方法見第六章),將1個碰撞開關(guān)與控制卡的IO15插口相連接,給控制卡通電。v在AVRStudio中將從配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.3”里拷貝過來的“8.3.1控制卡原始程序”文件夾的項目文件MultiFlex.aps中如上修改Usertask.c文件后,按F7進(jìn)行編譯,生成MultiFlex.hex文件后將其燒錄至控制卡中,觀察實驗結(jié)果。v如果運動結(jié)果和以上分析所得結(jié)果不同的話請檢查程序以及連線,特別注意程序中分號及括號的是否為半角以及l(fā)ed燈有沒有插反,排除錯誤后再將程序編譯,燒錄至控制卡中,直至得到正確的結(jié)果為止。MultiFlex控制卡的C語言程序編寫v編寫
29、C程序?qū)崿F(xiàn)對16路I/O的讀寫v實驗作業(yè):發(fā)揮想象力,編寫c語言程序,讓我們的led燈按照一定的規(guī)則(不同于跑馬燈)閃爍。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對路A/D口的讀寫vA/D口(ADC模擬/數(shù)字信號轉(zhuǎn)換器)是MultiFlex控制卡的又一重要組成部分之一。在上一小節(jié)介紹的I/O口是單片機讀取傳感器信息以及驅(qū)動執(zhí)行器的一個重要組成部分,但是I/O口只支持?jǐn)?shù)字信號(0、1),那么對于輸出模擬信號的傳感器,我們想要讀取它的輸出信息,我們就需要用到A/D口。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對路A/D口的讀寫vA/D口可以進(jìn)行數(shù)字信號與模擬信號的轉(zhuǎn)化
30、,在這里我們僅簡單介紹A/D口的模擬信息采集過程:傳感器輸出的模擬信號到達(dá)A/D口后,單片機會對輸入的連續(xù)模擬信號進(jìn)行定時采集,進(jìn)而得到一系列時間間隔一定的離散信號,用這些離散的點信號來代替以前連續(xù)的曲線信號,由于兩次采集之間的時間間隔極短,所以由連續(xù)信號轉(zhuǎn)化為離散信號的誤差極小,在普通工程應(yīng)用領(lǐng)域我們可以忽略兩者之間的誤差。v由于現(xiàn)在數(shù)字信息處理技術(shù)日益發(fā)達(dá),現(xiàn)在已有非常成熟的算法對A/D采集的離散數(shù)據(jù)進(jìn)行濾波,以及幅頻、相頻分析,進(jìn)而講獲取的信息用于自動化控制。v我們從自然界獲取的信號大多是連續(xù)的(溫度,光強,電壓),對這些信號的處理有著廣泛而深遠(yuǎn)的意義,所以A/D口的使用極為廣泛。Mul
31、tiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對路A/D口的讀寫v下面將介紹如何使用C語言編寫程序?qū)ultiFlex控制卡的A/D口進(jìn)行操作,獲取外部的光強信息,進(jìn)對舵機進(jìn)行操作,使舵機的運動速度與外部光強成正比。v對控制卡I/O口進(jìn)行控制的USERTASK.C如下所示(源程序參見實驗指導(dǎo)書配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.48.4.4編寫C程序?qū)崿F(xiàn)對7路AD口的控制”):MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對路A/D口的讀寫v下面將介紹如何使用C語言編寫程序?qū)ultiFlex控制卡的A/D口進(jìn)行操作,獲取外部的光強信息,進(jìn)對舵機進(jìn)行操作,使舵機的運動速度
32、與外部光強成正比。v對控制卡I/O口進(jìn)行控制的USERTASK.C源程序參見實驗指導(dǎo)書配套光盤“實驗指導(dǎo)書第八章實驗程序源代碼8.48.4.4編寫C程序?qū)崿F(xiàn)對7路AD口的控制”):MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對路A/D口的讀寫v整個實驗的運行結(jié)果應(yīng)為:開機后,舵機在0-180度之間往復(fù)運動,其運動速度與外部光照強度成正比(外部光照強度通過光強傳感器采集,采集頻率2Hz)。我們可以用手遮住或用光照光強傳感器,觀察現(xiàn)象。MultiFlex控制卡的C語言程序編寫v編寫C程序?qū)崿F(xiàn)對路A/D口的讀寫v將“創(chuàng)意之星”套件中配置的舵機(1個)與控制卡的PWM0插口相連接,將1個光
33、強傳感器與控制卡的AD0插口相連接(連接方法見第六章),給控制卡通電。v在AVRStudio中將USERTASK.C編寫完畢后,按F7進(jìn)行編譯,生成MultiFlex.hex文件后將其燒錄至控制卡中,觀察實驗結(jié)果。v如果運動結(jié)果和以上分析所得結(jié)果不同的話請檢查程序以及連線,特別注意程序中分號及括號的是否為半角以及傳感器線、舵機線有沒有插反,排除錯誤后再將程序編譯,燒錄至控制卡中,直至得到正確的結(jié)果為止。v 如用如用MultiFlex控制卡采集外部電壓信息,請確保外部電控制卡采集外部電壓信息,請確保外部電壓輸入值壓輸入值5V(本卡(本卡AD基準(zhǔn)電壓值),否則有可能造成硬件基準(zhǔn)電壓值),否則有可能造成硬件損壞!損壞! 傳感-決策-控制綜合實驗v通過前面的實驗,我們已經(jīng)知道如何通過編寫c程
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024集成電路卡訂制購銷法律協(xié)議
- 2023-2024學(xué)年重慶市忠縣三匯中學(xué)高三下第二次檢測試題數(shù)學(xué)試題
- 2023-2024學(xué)年浙江省磐安縣二中高三第三次適應(yīng)性訓(xùn)練數(shù)學(xué)試題
- 2024限定收藏品無償交接協(xié)議
- 2024工程項目墊資協(xié)議示例
- 2024礦山工程承包協(xié)議模板
- 2024保障:權(quán)威協(xié)議樣本解析
- 2024跨境電子商務(wù)交易協(xié)議模板
- 2024年大清包勞務(wù)施工業(yè)務(wù)協(xié)議模板
- 2024年貨車運輸專屬駕駛員勞動協(xié)議
- 辦理營業(yè)執(zhí)照委托書
- 危險貨物道路運輸安全卡4
- 船舶電氣安裝理論圖紙相結(jié)合PPT課件
- 道路交通標(biāo)志與標(biāo)線PPT課件
- 幕墻打膠工藝
- 違約損失率(LGD)研究
- 新冀教版九年級英語上冊第26課課件
- 編寫標(biāo)準(zhǔn)必備文件 國家標(biāo)準(zhǔn) 地方標(biāo)準(zhǔn) 行業(yè)標(biāo)準(zhǔn) 企業(yè)標(biāo)準(zhǔn) 格式模板大全
- 《鉆木取火》PPT
- 2021-2025鄉(xiāng)村5年規(guī)劃三篇
- 無線電遙控帆船講解
評論
0/150
提交評論