2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  概述</b></p><p>  自第一臺(tái)工業(yè)機(jī)器人誕生以來,機(jī)器人的發(fā)展已經(jīng)遍及機(jī)械、電子、冶金、交通、宇航、國(guó)防等領(lǐng)域,其涉及到多個(gè)學(xué)科,機(jī)械、電工、自動(dòng)控制、計(jì)算機(jī)測(cè)量、人工智能、傳感技術(shù)等等,是眾多領(lǐng)域的高科技。近年來機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們?cè)诓粩嗵接?、改造、認(rèn)識(shí)自然的過程中,制造能替代人勞動(dòng)的機(jī)器一直是人類的夢(mèng)想。

2、而智能小車比賽就是機(jī)器人技術(shù)的一個(gè)重要研究方向。</p><p>  智能小車作為機(jī)器人的典型代表,可以分為三大組成部分:傳感器檢測(cè)部分、執(zhí)行部分、CPU。</p><p>  在本次課程設(shè)計(jì)中,我所制作的智能小車要實(shí)現(xiàn)自動(dòng)避障功能,還擁有擴(kuò)展循跡等功能,感知導(dǎo)引線和障礙物?;谏鲜鲆螅瑐鞲袡z測(cè)部分考慮到小車一般不需要感知清晰的圖像,只要求粗略感知即可,所以可以舍棄昂貴CCD傳感器而考慮

3、使用價(jià)廉物美的紅外反射式傳感器來充當(dāng)。智能小車的執(zhí)行部分,是由直流電機(jī)來充當(dāng)?shù)?,主要控制小車的行進(jìn)。CPU使用STC89C51單片機(jī),配合軟件編程實(shí)現(xiàn)。而本次課程設(shè)計(jì)所制作的小車,其與眾不同的地方在于全部使用上位機(jī)通過無線模塊對(duì)其進(jìn)行控制,小車本身不具備任何輸入設(shè)備。小車可以工作在三種模式下,超聲波測(cè)距模式,紅外循跡模式以及無線控制模式。在無線控制模塊下可以遠(yuǎn)距離對(duì)其進(jìn)行前后左右停的操作。除此之外,還可以實(shí)現(xiàn)手機(jī)對(duì)小車的狀態(tài)控制。<

4、;/p><p><b>  系統(tǒng)原理</b></p><p>  該智能小車模型是一輛由PCB和車體拼裝的小車。所有的機(jī)械結(jié)構(gòu)和零部件都安裝固定在電路板上,除幾個(gè)特殊模塊是由自己手動(dòng)焊之外,其余是買回的封裝好的模塊。其穩(wěn)定性更高。</p><p>  2.1 底盤的選擇</p><p>  底盤的作用在于固定電機(jī),并安置其

5、他模塊。根據(jù)個(gè)人喜好,可以選擇4輪的和2輪+萬向輪式的。我選擇的是4輪驅(qū)動(dòng)小車。</p><p>  2.2 電機(jī)的選擇</p><p>  圖2.1 直流減速電機(jī)</p><p>  右圖為小車使用的直流減速電機(jī),減速比為1:48,額定電壓為3-9V.</p><p>  當(dāng)我們?cè)谥绷麟姍C(jī)的兩極施加一定的電壓后,電機(jī)開始勻速轉(zhuǎn)動(dòng),如果這時(shí)

6、候?qū)㈦姌O對(duì)調(diào),</p><p>  原來的正極變負(fù)極、負(fù)極變正極,那么電機(jī)就會(huì)反向轉(zhuǎn)動(dòng)。小車轉(zhuǎn)彎則是通過左右兩側(cè)電機(jī)速度不同來控制的。</p><p>  圖2.2 直流減速電機(jī)參數(shù)</p><p>  下圖是典型的“H”橋電路,采用下面這種電路,即可實(shí)現(xiàn)上面所說的電極翻轉(zhuǎn),從而達(dá)到電機(jī)的正反轉(zhuǎn)。</p><p>  圖2.3“H”橋電路&l

7、t;/p><p>  常態(tài)下,4個(gè)橋臂的開關(guān)保持開路狀態(tài),這時(shí)候電機(jī)兩端懸空,沒有電壓。</p><p>  當(dāng)1、4開關(guān)閉合,2、3開關(guān)打開,電流從1號(hào)開關(guān)流經(jīng)電機(jī),再從4號(hào)開關(guān)流出,這時(shí)候電機(jī)正轉(zhuǎn)。</p><p>  當(dāng)2、3開關(guān)閉合,1、4開關(guān)打開,電流從2號(hào)開關(guān)流經(jīng)電機(jī),再從3號(hào)開關(guān)流出,這時(shí)候電機(jī)反轉(zhuǎn)。</p><p>  通過上面的

8、分析,我們只需要通過控制1、2、3、4 號(hào)開關(guān)的打開與關(guān)閉,即可以實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)向的控制。如果在改變開關(guān)的導(dǎo)通時(shí)間,即控制pwm占空比,就可以實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速的調(diào)節(jié)。</p><p>  下面我們將要介紹電機(jī)驅(qū)動(dòng)模塊。</p><p><b>  2.3電機(jī)驅(qū)動(dòng)模塊</b></p><p>  圖2.4 電機(jī)驅(qū)動(dòng)模塊L298N電路圖</p&g

9、t;<p>  L298N是專用驅(qū)動(dòng)集成電路,屬于H橋集成電路,與L293D的差別是其輸出電流增大,功率增強(qiáng)。其輸出電流為2A,最高電流4A,最高工作電壓50V,可以驅(qū)動(dòng)感性負(fù)載,如大功率直流電機(jī),(二相、三相、四相)步進(jìn)電機(jī),伺服電機(jī),電磁閥等,特別是其輸入端可以與單片機(jī)直接相聯(lián),從而很方便地受單片機(jī)控制。當(dāng)驅(qū)動(dòng)直流電機(jī)時(shí),可以直接控制兩路電機(jī),并可以實(shí)現(xiàn)電機(jī)正轉(zhuǎn)與反轉(zhuǎn),實(shí)現(xiàn)此功能只需改變輸入端的邏輯電平。</p&

10、gt;<p>  本模塊具有體積小,控制方便的特點(diǎn)。具體使用方法:板上的EN1與EN2為高電平時(shí)有效,只有當(dāng)EN1與EN2為高電平時(shí),電機(jī)才旋轉(zhuǎn),則電機(jī)不轉(zhuǎn),這里的電平指的是TTL電平。EN1為IN1和IN2的使能端,EN2為IN3和IN4的使能端。當(dāng)EN1=1,IN1=1 INT2=0時(shí)電機(jī)1正轉(zhuǎn),EN1=1,IN1=0 IN2=1電機(jī)1反轉(zhuǎn)。同理,當(dāng)EN2=1,IN3=1 IN4=0電機(jī)2正轉(zhuǎn),EN2=1,IN3=0

11、IN4=1電機(jī)2反轉(zhuǎn)。A-、B-接電機(jī)1,C-、D-接電機(jī)2。</p><p>  圖2.5 L298N實(shí)物圖</p><p>  下面,我們將要研究L289N的供電問題,L298N的輸出電壓跟供電電壓是有關(guān)系的:經(jīng)過實(shí)驗(yàn)我們發(fā)現(xiàn),輸入多少V,輸出就差不多是多少V(略有損耗)。</p><p>  由原理圖我們知道,L298N供電方式有兩種。方式一,由于L298N的

12、邏輯控制電壓是5V的,所以可以為它提供5V電源。方式二,用12V鉛蓄電池為其供電,A通道和B通道輸出的是驅(qū)動(dòng)電機(jī)的12V電壓,同時(shí)選擇板載5V使能,這時(shí)+5V供電端可以輸出5V電壓(此時(shí)不能再給+5V供電端加電壓了,否則會(huì)燒掉78M05),向外供電,以方便外部的控制電路使用。</p><p>  圖2.6 L298N工作方式</p><p>  2.4 紅外循跡模塊</p>

13、<p>  此模塊是為智能小車,機(jī)器人等自動(dòng)化機(jī)械裝置提供一種多用途的紅外線探測(cè)系統(tǒng)的解決方案。該傳感器模塊對(duì)環(huán)境光線適應(yīng)能力強(qiáng) , 其具有一對(duì)紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測(cè)方向遇到障礙物 ( 反射面)時(shí),紅外線反射回來被接收管接收,經(jīng)過比較器電路處理之后,同時(shí)信號(hào)輸出接口輸出數(shù)字信號(hào)(一個(gè)低電平信號(hào)),可通過電位器旋鈕調(diào)節(jié)檢測(cè)距離,有效距離范圍2 ~ 6 0cm ,工作電壓為3.3V-5V 。該

14、傳感器的探測(cè)距離可以通過電位器調(diào)節(jié)、具有干擾小、便于裝配、使用方便等特點(diǎn),可以廣泛應(yīng)用于機(jī)器人避障 、 避障小車、流水線計(jì)數(shù)及黑白線循跡等眾多場(chǎng)合。</p><p>  下面我們來了解一下此模塊的具體介紹,其中,每1 路的傳感器的紅外發(fā)射管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒有被反射回來或被反射回來但強(qiáng)度不夠大時(shí),紅外接收管一直處于關(guān)斷狀態(tài),此時(shí)模塊的TTL 輸出為高電平,相應(yīng)指示二極管一直處于熄滅狀態(tài);當(dāng)被檢測(cè)物

15、體出現(xiàn)在檢測(cè)范圍內(nèi)時(shí),紅外線被反射回來且強(qiáng)度足夠大,紅外接收管導(dǎo)通,此時(shí)模塊的TTL 輸出端為低電平,指示二極管被點(diǎn)亮。</p><p>  圖2.7 紅外循跡模塊實(shí)物圖</p><p><b>  下面是接法說明:</b></p><p>  圖2.8 紅外循跡模塊引腳介紹</p><p><b>  模

16、塊接線說明:</b></p><p>  1.DO1---1 路TTL 電平輸出</p><p>  2.DO2---2 路TTL 電平輸出</p><p>  3.DO3---3 路TTL 電平輸出</p><p>  4.DO4---4 路TTL 電平輸出</p><p>  5.GND---接電源負(fù)極

17、</p><p>  6.VCC---接電源正極</p><p>  2.5 超聲波測(cè)距模塊</p><p>  圖2.9 超聲波模塊實(shí)物圖 </p><p><b>  其工作原理如下:</b></p><p>  控制口發(fā)一個(gè)10US以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可

18、以開定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的值,此時(shí)就為此次測(cè)距的時(shí)間,方可算出距離。如此不斷的周期測(cè),就可以達(dá)到你移動(dòng)測(cè)量的值了。</p><p>  (1)采用 IO 觸發(fā)測(cè)距,給至少10us 的高電平信號(hào);</p><p>  (2)模塊自動(dòng)發(fā)送8 個(gè)40khz 的方波,自動(dòng)檢測(cè)是否有信號(hào)返回;</p><p>  (3)有信號(hào)返回,通過IO 輸出一高電

19、平,高電平持續(xù)的時(shí)間就是</p><p>  (4)超聲波從發(fā)射到返回的時(shí)間.</p><p>  測(cè)試距離=(高電平時(shí)間*聲速(340M/S/2;</p><p><b>  超聲波時(shí)序圖如下:</b></p><p>  圖2.10 超聲波時(shí)序圖</p><p><b>  其接口定

20、義如下:</b></p><p>  Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd</p><p>  2.6 GPRS模塊</p><p>  此模塊是本課程設(shè)計(jì)重點(diǎn),也是相對(duì)于以往智能小車創(chuàng)新之處。</p><p>  在本課程設(shè)計(jì)中,我們使用了靈旗通信的 LQ1000 GPRS DTU通信模塊。</p

21、><p>  圖2.11 LQ1000 GPRS DTU實(shí)物圖</p><p>  2.6.1 LQ1000 GPRS DTU 概述</p><p>  LQ1000 GPRS DTU采用了先進(jìn)的GPRS無線通信技術(shù)、嵌入式單片機(jī)技術(shù)和TCP/IP網(wǎng)絡(luò)通信技術(shù),其穩(wěn)定性強(qiáng)、可靠性高、實(shí)時(shí)性好、應(yīng)用性廣、功能強(qiáng)大,是一種實(shí)現(xiàn)串口設(shè)備數(shù)據(jù)通過無線透?jìng)鞯街行能浖挠辛υO(shè)備。&

22、lt;/p><p>  LQ1000 GPRS DTU 提供標(biāo)準(zhǔn)RS232/485數(shù)據(jù)接口,可以方便的連接RTU、PLC、串口儀表、工控機(jī)等設(shè)備,僅需一次性完成初始化配置,用戶設(shè)備就可以與數(shù)據(jù)中心通過GPRS無線網(wǎng)絡(luò)建立連接,實(shí)現(xiàn)數(shù)據(jù)的全透明傳輸。</p><p>  2.6.2 使用方式</p><p><b>  安裝SIM卡</b></

23、p><p>  將SIM卡從DTU的外殼背面的插槽中插入,SIM卡座插入插槽后需要卡緊,以防SIM未插入到位導(dǎo)致終端通信異常。然后用螺絲鎖緊插槽外的擋板。目前在中國(guó)大陸地區(qū)的中國(guó)移動(dòng)和中國(guó)聯(lián)通的手機(jī)卡都可以使用。在其他國(guó)家或地區(qū)的GPRS網(wǎng)絡(luò)的手機(jī)卡也可以使用。</p><p>  DTU一共有四種應(yīng)用方式</p><p>  圖2.12 LQ1000 GPRS DT

24、U應(yīng)用方案</p><p>  我們所應(yīng)用的是第一種方案,只不過稍稍做些改動(dòng),進(jìn)行DTU與中心軟件進(jìn)行通信。</p><p><b>  硬件系統(tǒng)設(shè)計(jì)</b></p><p><b>  3.1單片機(jī)選擇</b></p><p>  一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包含有兩部分內(nèi)容:一是系統(tǒng)擴(kuò)展,即

25、單片機(jī)內(nèi)部的功能單元,如ROM﹑RAM﹑I/O口﹑定時(shí)/記數(shù)器﹑中斷系統(tǒng)等能量不能滿足應(yīng)用系統(tǒng)的要求時(shí),必須在片外進(jìn)行擴(kuò)展,選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路。二是系統(tǒng)配置,既按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤顯示器﹑打印機(jī)﹑A/D﹑D/A轉(zhuǎn)換器等,要設(shè)計(jì)合適的接口電路。</p><p>  3.1.1 80C51單片機(jī)硬件結(jié)構(gòu)</p><p>  80C51單片機(jī)是把那些作為控制應(yīng)用所必

26、需的基本內(nèi)容都集成在一個(gè)尺寸有限的集成電路芯片上。如果按功能劃分,它由如下功能部件組成,即微處理器、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、并行I/O口、串行口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是CPU加上外圍芯片的傳統(tǒng)結(jié)構(gòu)模式。但對(duì)各種功能部件的控制是采用特殊功能寄存器的集中控制方式。</p><p><b>  1) 微處理器</b></p

27、><p>  該單片機(jī)中有一個(gè)8位的微處理器,與通用的微處理器基本相同,同樣包括了運(yùn)算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數(shù)據(jù),還可以進(jìn)行位變量的處理。</p><p><b>  2) 數(shù)據(jù)存儲(chǔ)器</b></p><p>  片內(nèi)為128個(gè)字節(jié),片外最多可外擴(kuò)至64k字節(jié),用來存儲(chǔ)程序在運(yùn)行期間的工作變量、運(yùn)算的中間結(jié)果、

28、數(shù)據(jù)暫存和緩沖、標(biāo)志位等,所以稱為數(shù)據(jù)存儲(chǔ)器。</p><p><b>  3)程序存儲(chǔ)器</b></p><p>  由于受集成度限制,片內(nèi)只讀存儲(chǔ)器一般容量較小,如果片內(nèi)的只讀存儲(chǔ)器的容量不夠,則需用擴(kuò)展片外的只讀存儲(chǔ)器,片外最多可外擴(kuò)至64k字節(jié)。</p><p><b>  4) 中斷系統(tǒng)</b></p>

29、;<p>  具有5個(gè)中斷源,2級(jí)中斷優(yōu)先權(quán)。</p><p>  5) 定時(shí)器/計(jì)數(shù)器</p><p>  片內(nèi)有2個(gè)16位的定時(shí)器/計(jì)數(shù)器, 具有四種工作方式。</p><p><b>  6) 串行口</b></p><p>  1個(gè)全雙工的串行口,具有四種工作方式??捎脕磉M(jìn)行串行通訊,擴(kuò)展并行I/O

30、口,甚至與多個(gè)單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)的功能更強(qiáng)且應(yīng)用更廣。</p><p>  7) P1口、P2口、P3口、P4口</p><p>  為4個(gè)并行8位I/O口。</p><p>  8) 特殊功能寄存器</p><p>  共有21個(gè),用于對(duì)片內(nèi)的個(gè)功能的部件進(jìn)行管理、控制、監(jiān)視。實(shí)際上是一些控制寄存器和狀態(tài)寄存器,是一個(gè)具有

31、特殊功能的RAM區(qū)。</p><p>  由上可見,80C51單片機(jī)的硬件結(jié)構(gòu)具有功能部件種類全,功能強(qiáng)等特點(diǎn)。特別值得一提的是該單片機(jī)CPU中的位處理器,它實(shí)際上是一個(gè)完整的1位微計(jì)算機(jī),這個(gè)一位微計(jì)算機(jī)有自己的CPU、位寄存器、I/O口和指令集。1位機(jī)在開關(guān)決策、邏輯電路仿真、過程控制方面非常有效;而8位機(jī)在數(shù)據(jù)采集,運(yùn)算處理方面有明顯的長(zhǎng)處。MCS-51單片機(jī)中8位機(jī)和1位機(jī)的硬件資源復(fù)合在一起,二者相輔相

32、承,它是單片機(jī)技術(shù)上的一個(gè)突破,這也是MCS-51單片機(jī)在設(shè)計(jì)的精美之處。</p><p>  3.1.2 最小應(yīng)用系統(tǒng)設(shè)計(jì)</p><p>  80C51是片內(nèi)有ROM/EPROM的單片機(jī),因此,這種芯片構(gòu)成的最小系統(tǒng)簡(jiǎn)單﹑可靠。在本次課程設(shè)計(jì)中,我使用的便是51單片機(jī)最小系統(tǒng)。用80C51單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,如圖80C51單片機(jī)最小系統(tǒng)

33、所示。由于集成度的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。其應(yīng)用特點(diǎn):</p><p>  有可供用戶使用的大量I/O口線。</p><p>  內(nèi)部存儲(chǔ)器容量有限。</p><p>  圖3.1 80C51單片機(jī)最小系統(tǒng)</p><p>  應(yīng)用系統(tǒng)開發(fā)具有特殊性。</p><p><b>  1、時(shí)

34、鐘電路</b></p><p>  80C51雖然有內(nèi)部振蕩電路,但要形成時(shí)鐘,必須外部附加電路。80C51單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種。內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。</p><p>  本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式,利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2引腳上外接定時(shí)元件,內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。本設(shè)計(jì)采用最常用的內(nèi)部時(shí)鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回路。振

35、蕩晶體可在1.2MHZ到12MHZ之間選擇。電容值無嚴(yán)格要求,但電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度</p><p>  有少許影響,CX1、CX2可在20pF到100pF之間取值,但在60pF到70pF時(shí)振蕩器有較高的頻率穩(wěn)定性。所以本設(shè)計(jì)中,振蕩晶體選擇6MHZ,電容選擇65pF。</p><p>  在設(shè)計(jì)印刷電路板時(shí),晶體和電容應(yīng)盡可能靠近單片機(jī)芯片安裝,以減少寄

36、生電容,更好的保證振蕩器穩(wěn)定和可靠地工作。為了提高溫度穩(wěn)定性,應(yīng)采用NPO電容。</p><p><b>  2、復(fù)位電路</b></p><p>  80C51的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳RST通過一個(gè)斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號(hào)。</p>

37、<p>  復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。</p><p>  最簡(jiǎn)單的上電自動(dòng)復(fù)位電路中上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。只要Vcc的上升時(shí)間不超過1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。時(shí)鐘頻率用6MHZ時(shí)C取22uF,R取1KΩ。</p><p>  除了上電復(fù)位外,有時(shí)還需要按鍵手動(dòng)復(fù)位。本設(shè)計(jì)就是用的按鍵手動(dòng)復(fù)位。按鍵手動(dòng)復(fù)位有電平方式和脈

38、沖方式兩種。其中電平復(fù)位是通過RST端經(jīng)電阻與電源Vcc接通而實(shí)現(xiàn)的。按鍵手動(dòng)復(fù)位電路見圖3.2。時(shí)鐘頻率選</p><p>  用6MHZ時(shí),C取22uF,Rs取200Ω,RK取1KΩ。</p><p>  圖3.2 80C51復(fù)位電路</p><p><b>  3.2 電路設(shè)計(jì)</b></p><p>  選好單片

39、機(jī)后,我們將各個(gè)模塊逐個(gè)進(jìn)行調(diào)試。</p><p>  3.2.1 電機(jī)安裝與驅(qū)動(dòng)</p><p>  將四個(gè)電機(jī)安裝在小車底盤上,并固定好,然后將電機(jī)與L298N模塊相連,通過以上的介紹,我們可以知道,如果是做兩輪驅(qū)動(dòng),需要一個(gè)L298N,4輪驅(qū)動(dòng)需要用2個(gè)L298N。其中,一個(gè)控制左上,右上, 一個(gè)控制左下,右下。我們分別將其編號(hào)為1號(hào)和2號(hào)。1號(hào)L298N的in1in2控制右上,in

40、3in4控制左上。2號(hào)L298N的in1in2控制左下,in3in4控制右下。我們用P0^0~P0^3控制L298N輸入,這樣,兩個(gè)l298n需要8個(gè)輸入,即占用單片機(jī)的8個(gè)端口,在實(shí)驗(yàn)的過程中,我們發(fā)現(xiàn),左上左下的電機(jī)是同步的,右上右下電機(jī)是同步的。因此說,1號(hào)L298N的in1in2和2號(hào)L298N的in3in4是相同的控制信號(hào),1號(hào)L298N的in3in4和2號(hào)L298N的in1in2是相同的控制信號(hào),我們自己焊了一個(gè)板子,具有三

41、排排針,然后對(duì)應(yīng)的引腳短路,其中一排連接單片機(jī)的引腳,另外兩排分別連接1號(hào)L298N和2號(hào)L298N。這樣,我們就節(jié)省了四個(gè)單片機(jī)的IO輸出。</p><p>  圖3.3 L298N引腳控制</p><p>  在此模塊中,我們采用第一種供電方式,即直接用單片機(jī)供電。</p><p>  3.2.2 紅外循跡模塊</p><p>  我

42、們將紅外循跡模塊的D0~D3與單片機(jī)的P0^4~P0^7口相連。用來檢測(cè)數(shù)據(jù)的輸出,是否檢測(cè)到障礙物,當(dāng)檢測(cè)到障礙物,會(huì)輸出低電平。</p><p>  3.2.3 超聲波測(cè)距模塊</p><p>  將Echo與P1^1相連,Trig與P1^2相連。</p><p>  3.2.4 DTU無線控制模塊</p><p>  首先,對(duì)DTU

43、進(jìn)行設(shè)置。使用串口線將DTU與電腦相連,打開設(shè)備管理器,查看所用端口。然后打開LQ1000 GPRS DTU參數(shù)配置與服務(wù)端軟件。</p><p>  圖3.4 LQ1000 GPRS DTU參數(shù)配置</p><p>  打開串口,進(jìn)入設(shè)置,然后是終端參數(shù)聯(lián)網(wǎng)設(shè)置。其接入中心IP設(shè)置為所在網(wǎng)絡(luò)IP地址。點(diǎn)擊設(shè)置按鈕。</p><p>  圖3.5 LQ1000 GP

44、RS DTU終端參數(shù)聯(lián)網(wǎng)設(shè)置</p><p>  返回LQ1000 GPRS DTU參數(shù)配置與服務(wù)端軟件。點(diǎn)擊退出設(shè)置。以上是DTU設(shè)置過程。</p><p><b>  3.3 小車的控制</b></p><p>  本課程設(shè)計(jì),集成了三個(gè)模塊,紅外循跡,超聲波測(cè)距與無線通信模塊,因此此智能小車可以工作在三種工作方式下。默認(rèn)為無線控制模塊。&

45、lt;/p><p>  三種工作模式的選擇都是通過DTU無線模塊進(jìn)行控制。選擇不同的模式,將給單片機(jī)發(fā)送不同的指令。</p><p>  如下圖是自己編寫的上位機(jī)程序,右下角部分是控制面板。</p><p>  圖3.6 LQ1000 GPRS DTU上位機(jī)程序</p><p>  當(dāng)我們選擇超聲波測(cè)距模式時(shí),小車會(huì)進(jìn)行超聲波測(cè)距,并適時(shí)根據(jù)距離

46、障礙物的距離進(jìn)行運(yùn)動(dòng)方式的調(diào)整,我們將閾值設(shè)置為15,當(dāng)距離小于15cm時(shí),小車的運(yùn)動(dòng)狀態(tài)為先后退0.8秒后向右運(yùn)動(dòng)0.8秒。</p><p>  當(dāng)小車工作在紅外循跡模塊時(shí),小車會(huì)按照地面上的黑線前進(jìn),及時(shí)調(diào)整方向。</p><p>  當(dāng)小車工作在無線模式下,我們可以控制小車5種運(yùn)動(dòng)狀態(tài),前后左右停。</p><p>  除此之外,小車還可以由手機(jī)控制其運(yùn)動(dòng)狀態(tài)

47、。下面介紹手機(jī)控制小車運(yùn)動(dòng)過程。如下圖是手機(jī)控制小車運(yùn)動(dòng)的APP。</p><p>  圖3.7 手機(jī)控制小車運(yùn)動(dòng)APP</p><p>  首先輸入DTU所在網(wǎng)絡(luò)IP地址。點(diǎn)擊連接。下面即可對(duì)小車的運(yùn)動(dòng)狀態(tài)進(jìn)行控制。</p><p><b>  軟件系統(tǒng)設(shè)計(jì)</b></p><p>  圖4 智能小車系統(tǒng)程序框圖<

48、;/p><p>  其中,軟件程序包括三部分。</p><p>  第一部分,51單片機(jī)程序編寫,將各個(gè)模塊模塊化到一起,控制小車工作在各個(gè)模式。</p><p>  如上圖所示是智能小車的系統(tǒng)程序框圖。主要處理流程包括初始化、判斷等。</p><p>  初始化主要設(shè)定處理的各項(xiàng)外設(shè),如時(shí)鐘、定時(shí)器、IO輸入輸出、SPI、UART、DMA等等。

49、</p><p>  第二部分,上位機(jī)程序的編寫。由C++的MFC程序。編寫了控制小車運(yùn)動(dòng)的控制面板。</p><p>  第三部分,手機(jī)App編寫。這部分是求教于實(shí)驗(yàn)室的師兄幫助編寫完成的。</p><p><b>  5.心得與體會(huì)</b></p><p>  經(jīng)過半個(gè)學(xué)期的努力,終于順利的完成了基于GPRS無線發(fā)射

50、模塊的51單片機(jī)智能小車設(shè)計(jì),可以實(shí)現(xiàn)用上位機(jī)控制小車工作在不同的工作模式下,或者是利用手機(jī)APP控制小車的運(yùn)動(dòng)狀態(tài)。</p><p>  在制作的過程中,遇到了許多問題,并不斷去解決,學(xué)習(xí)到了許多知識(shí)。</p><p>  首先對(duì)于單片機(jī)的基礎(chǔ)知識(shí)有了一定的了解,更加深入的了解了定時(shí)器,中斷的使用。除此之外,學(xué)習(xí)了GPRS模塊,可以完成遠(yuǎn)距離無線控制。軟件方面,進(jìn)一步學(xué)習(xí)了程序的模塊化,

51、使得程序更加簡(jiǎn)潔。另外,學(xué)習(xí)了c++編程,編寫了上位機(jī)MFC程序。十分具有成就感。</p><p>  存在的問題,因?yàn)樵谡麄€(gè)過程中將重點(diǎn)放在無線模塊的調(diào)試,對(duì)于超聲波與紅外循跡模塊沒有過多的投入,導(dǎo)致成果檢測(cè)的時(shí)候發(fā)現(xiàn)超聲波測(cè)距模塊硬件出現(xiàn)問題,導(dǎo)致效果不穩(wěn)定。對(duì)于紅外循跡模塊,最初小車的速度過快,當(dāng)循跡轉(zhuǎn)彎的時(shí)候小車來不及反應(yīng),所以看起來不夠靈敏,因此降低占空比,降低小車的速度可以很好的解決這個(gè)問題。<

52、/p><p>  整體來說,雖然任務(wù)大體完成,單仍然存在許多可以改進(jìn)的地方。例如小車的速度不能實(shí)時(shí)的控制,距離可以返回給上位機(jī)但是不能顯示在小車上,因此說另外可以添加顯示模塊,對(duì)速度距離進(jìn)行實(shí)時(shí)的顯示。對(duì)于超聲波和紅外效果也可以進(jìn)一步進(jìn)行改進(jìn)。另外還可以集成攝像頭模塊等。</p><p>  此次的課程設(shè)計(jì)不僅教會(huì)了我專業(yè)知識(shí),更加讓我明白了要想學(xué)到東西要親自動(dòng)手這個(gè)道理,一個(gè)部分一個(gè)部分的完

53、成,一個(gè)問題一個(gè)問題的解決。將各個(gè)部分整合到一起,軟件與硬件是分不開的。遇到問題也要不驕不躁,認(rèn)真學(xué)習(xí)進(jìn)而解決問題。</p><p><b>  6.附錄</b></p><p><b>  Main.c</b></p><p>  /*-------------------------------------------

54、-------</p><p>  P0.1-P0.4用于電機(jī)控制</p><p><b>  中斷用來接收數(shù)據(jù)</b></p><p>  --------------------------------------------------------*/</p><p>  #include <reg52.h&

55、gt;//包函8051內(nèi)部資源的定義</p><p>  #include <intrins.h></p><p>  #include <stdio.h></p><p>  #include "delay.h"</p><p>  #include "move.h"<

56、;/p><p>  #include "chuankou.h"</p><p>  #include "hongwai.h"</p><p>  #include "UltrasonicDistanceDriver.h"</p><p>  #include "Ultrason

57、icDistanceConfig.h"</p><p>  //#include " "</p><p>  //unsigned char temp;</p><p>  bit rec=0, send=1;</p><p>  //#include""</p><p&g

58、t;<b>  main()</b></p><p><b>  { </b></p><p>  char pcOutBuf[30]; //串口返回超聲波測(cè)距字符串緩存</p><p>  unsigned int iOld=0; //超聲波測(cè)得的距離</p><p>  unsigned

59、int control_flag;</p><p>  InitUART();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  control_flag=get_control_flag();</p><p>

60、  if(control_flag==1)</p><p><b>  {</b></p><p>  send_byte(temp);</p><p>  while(control_flag==1)</p><p><b>  {</b></p><p>  InitUl

61、trasonicDistance();</p><p>  //當(dāng)調(diào)用測(cè)距函數(shù)后,返回為0,表示測(cè)距成功,否則測(cè)距函數(shù)正在延遲中</p><p>  //當(dāng)取值有效時(shí),如果與前次值沒變化,則不作更新</p><p>  iOld = getDistance();</p><p>  //sprintf(pcOutBuf, "S=%d

62、\r\n", iOld);</p><p>  //SerialSendStr(pcOutBuf); //送到串口</p><p>  if(iOld<30)</p><p><b>  {</b></p><p>  stop_car();</p><p>  delay1

63、ms(10);</p><p><b>  back();</b></p><p>  delay1ms(1000);</p><p>  delay1ms(1000);</p><p>  stop_car();</p><p>  delay1ms(10);</p><p&

64、gt;  turn_right(); //右邊不轉(zhuǎn) 左邊轉(zhuǎn) int1,2控制右側(cè)</p><p>  delay1ms(1000);</p><p>  delay1ms(1000);</p><p><b>  }</b></p><p><b>  else</b></p>

65、<p><b>  { </b></p><p>  straight(); </p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

66、 else if(control_flag==2)</p><p><b>  {</b></p><p>  hongwai();</p><p>  //P0=0XF0;</p><p>  send_byte(temp);</p><p><b>  }</b><

67、/p><p>  else if(control_flag==3)</p><p><b>  {</b></p><p>  //state='W';</p><p>  while(temp!='I'&&temp!='U')</p><p

68、><b>  {</b></p><p>  send_byte(temp);</p><p>  if( temp=='Q')</p><p><b>  {</b></p><p>  stop_car();</p><p>  delay1ms(

69、5);</p><p>  straight();</p><p>  delay1ms(100);</p><p>  delay1ms(100);</p><p><b>  }</b></p><p>  else if(temp=='H')</p><p

70、><b>  {</b></p><p>  stop_car();</p><p>  delay1ms(5);</p><p><b>  back();</b></p><p>  delay1ms(100);</p><p>  delay1ms(100);

71、</p><p><b>  }</b></p><p>  else if(temp=='Y')</p><p><b>  {</b></p><p>  turn_right(); //右邊不轉(zhuǎn) 左邊轉(zhuǎn) int1,2控制右側(cè)</p><p>  

72、delay1ms(1000);</p><p>  delay1ms(1000);</p><p><b>  }</b></p><p>  else if(temp=='Z')</p><p><b>  {</b></p><p>  turn_left

73、(); //左邊不轉(zhuǎn) 右邊轉(zhuǎn)</p><p>  delay1ms(1000);</p><p>  delay1ms(1000);</p><p><b>  }</b></p><p>  else if(temp=='T')</p><p><b>  {<

74、;/b></p><p>  stop_car();</p><p>  delay1ms(1000);</p><p>  delay1ms(1000);</p><p><b>  }</b></p><p><b>  }</b></p><

75、p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*--------------------------------------------------</p><p><b> 

76、 Move.c</b></p><p>  --------------------------------------------------*/</p><p>  #include<reg51.h></p><p>  #include "move.h"</p><p>  #include

77、"delay.h"</p><p>  void straight()</p><p><b>  {</b></p><p>  int1=1; </p><p><b>  int2=0;</b></p><p><b>  int3=1

78、;</b></p><p>  int4=0; </p><p><b>  }</b></p><p>  void back()</p><p><b>  {</b></p><p>  int1=0; </p><p>&l

79、t;b>  int2=1;</b></p><p><b>  int3=0;</b></p><p><b>  int4=1;</b></p><p><b>  }</b></p><p>  void turn_right() //右邊不轉(zhuǎn) 左邊

80、轉(zhuǎn) int1,2控制右側(cè)</p><p><b>  {</b></p><p>  int1=0; </p><p><b>  int2=0;</b></p><p><b>  int3=1;</b></p><p><b>  i

81、nt4=0;</b></p><p><b>  }</b></p><p>  void turn_left() //左邊不轉(zhuǎn) 右邊轉(zhuǎn)</p><p><b>  {</b></p><p>  int1=1; </p><p><b>  

82、int2=0;</b></p><p><b>  int3=0;</b></p><p><b>  int4=0;</b></p><p><b>  }</b></p><p>  void stop_car() //停</p><p

83、><b>  {</b></p><p>  int1=0; </p><p><b>  int2=0;</b></p><p><b>  int3=0;</b></p><p><b>  int4=0;</b></p>&l

84、t;p><b>  }</b></p><p>  /*--------------------------------------------------</p><p><b>  hongwai.c</b></p><p>  ------------------------------------------

85、--------*/</p><p>  #include <reg52.h>//包函8051內(nèi)部資源的定義</p><p>  #include <intrins.h></p><p>  #include "move.h"</p><p>  #include "delay.h&q

86、uot;</p><p>  #include "hongwai.h" </p><p>  void hongwai()</p><p><b>  {</b></p><p>  if(text1==0&&text2==0&&text3==1) //探測(cè)到之

87、后輸出為0;</p><p><b>  {</b></p><p>  stop_car();</p><p>  delay1ms(100);</p><p>  turn_right();</p><p>  delay1ms(1000);</p><p>  del

88、ay1ms(1000);</p><p><b>  }</b></p><p>  if(text1==1&&text2==0&&text3==0) //探測(cè)到之后輸出為0;</p><p><b>  {</b></p><p>  stop_car();&

89、lt;/p><p>  delay1ms(100);</p><p>  turn_left();</p><p>  delay1ms(1000);</p><p>  delay1ms(1000);</p><p><b>  }</b></p><p><b>

90、  else</b></p><p><b>  {</b></p><p>  stop_car();</p><p>  delay1ms(100);</p><p>  straight();</p><p>  delay1ms(100);</p><p&g

91、t;<b>  }</b></p><p><b>  }</b></p><p>  /*--------------------------------------------------</p><p>  chuankou.c</p><p>  ----------------------

92、----------------------------*/</p><p>  #include <reg52.h>//包函8051內(nèi)部資源的定義</p><p>  #include <intrins.h></p><p>  #include "chuankou.h"</p><p>  

93、unsigned int control_flag;</p><p>  void InitUART(void)</p><p><b>  {</b></p><p>  TMOD = 0x20;</p><p>  SCON = 0x50;</p><p>  TH1 = 0xFD;</

94、p><p>  TL1 = TH1;</p><p>  PCON = 0x00;</p><p><b>  EA = 1;</b></p><p><b>  ES = 1;</b></p><p><b>  TR1 = 1;</b></p>

95、;<p>  control_flag=3;</p><p><b>  }</b></p><p>  void send_byte(unsigned char str1)</p><p><b>  {</b></p><p>  if((rec==1)&&(sen

96、d==1)) //rec=1 說明接收完數(shù)據(jù)既沒有發(fā)也沒有收</p><p><b>  {</b></p><p>  SBUF=str1;</p><p><b>  rec=0;</b></p><p><b>  send=0;</b></p>&l

97、t;p><b>  }</b></p><p><b>  }</b></p><p>  /*-------------------------------------------------------</p><p>  *向串口發(fā)送一個(gè)字符串 以'\0'結(jié)束</p><p&

98、gt;  *@param char *str 需要發(fā)送的字符串指針</p><p>  *@return void</p><p>  *-----------------------------------------------------*/</p><p>  void SerialSendStr(char *str)</p><p>

99、;<b>  {</b></p><p>  while(*str)</p><p>  send_byte(*str++);</p><p><b>  }</b></p><p>  unsigned int get_control_flag()</p><p><

100、b>  {</b></p><p>  return control_flag;</p><p><b>  }</b></p><p>  void UARTInterrupt(void) interrupt 4</p><p><b>  {</b></p>&

101、lt;p><b>  if(RI)</b></p><p><b>  {</b></p><p><b>  RI = 0;</b></p><p>  temp=SBUF;</p><p><b>  rec=1;</b></p>

102、<p>  if(temp=='U')</p><p><b>  {</b></p><p>  control_flag=1;</p><p><b>  }</b></p><p>  if(temp=='I')</p><p>

103、;<b>  {</b></p><p>  control_flag=2;</p><p><b>  }</b></p><p>  if(temp=='W')</p><p><b>  {</b></p><p>  contro

104、l_flag=3;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  TI =

105、 0;</b></p><p><b>  send=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*-----------------------------------------------

106、---</p><p>  UltrasonicDistance.c</p><p>  --------------------------------------------------*/</p><p>  #include <reg52.h>//包函8051內(nèi)部資源的定義</p><p>  #include <

107、;intrins.h></p><p>  #include "UltrasonicDistanceDriver.h"</p><p>  #include "UltrasonicDistanceConfig.h"</p><p>  //*****************************************

108、**********//</p><p>  // HC-SR04 超聲波測(cè)距模塊操作庫 //</p><p>  //---------------------------------------------------//</p><p>  // 晶振:11.0592

109、 //</p><p>  // Create Date:2011-09-27 User:JerryLi //</p><p>  // email:lijian@dzs.mobi //</p><p>  // 工作時(shí)將會(huì)占用 T0 計(jì)數(shù)器

110、 //</p><p>  // HC-SR04 的探測(cè)精度范圍為 2cm-400cm // </p><p>  // 在當(dāng)前晶振工作頻率下,一次有效測(cè)距需要23.42ms // </p><p>  //----------------------------------------------

111、-----//</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uint distance;</p><p>  int time,sum=0;</p><p>  int succeed_flag;

112、</p><p>  uchar timeL,i;</p><p>  uchar timeH;</p><p>  void delay_20us()</p><p><b>  { </b></p><p><b>  uchar a ;</b></p>&

113、lt;p>  for(a=0;a<100;a++);</p><p><b>  }</b></p><p>  /*-------------------------------------------------------</p><p>  *超聲波測(cè)距模塊初始化函數(shù)</p><p>  *@retu

114、rn void</p><p>  *-------------------------------------------------------*/</p><p>  void InitUltrasonicDistance(void)</p><p><b>  {</b></p><p>  distance=0

115、;</p><p>  Trig=0; //首先拉低脈沖輸入引腳</p><p>  EA=1; //打開總中斷0 </p><p>  TMOD|=0x01; //定時(shí)器1,16位工作方式 </p><p><b>  }</b></p><p>  void

116、delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b

117、>  }</b></p><p>  /*-------------------------------------------------------</p><p>  *獲取最近一次測(cè)得的距離</p><p>  * 注意:每次成功測(cè)距,需要耗時(shí)100ms-150ms左右時(shí)間</p><p>  *---------

118、----------------------------------------------*/</p><p>  unsigned int getDistance(void)</p><p><b>  {</b></p><p>  for(i=0;i<10;i++)</p><p><b>  {

119、 </b></p><p>  EA=0; //關(guān)總中斷</p><p>  Trig=1; //超聲波輸入端</p><p>  delay_20us(); //延時(shí)20us</p><p>  Trig=0; //產(chǎn)生一個(gè)20us的脈沖</p><p&

120、gt;  while(Echo==0); //等待Echo回波引腳變高電平</p><p>  succeed_flag=0; //清測(cè)量成功標(biāo)志</p><p><b>  EA=1; </b></p><p>  EX0=1; //打開外部中斷0</p><p>  TH0=0;

121、//定時(shí)器1清零</p><p>  TL0=0; //定時(shí)器1清零</p><p>  TF0=0; //計(jì)數(shù)溢出標(biāo)志</p><p>  TR0=1; //啟動(dòng)定時(shí)器0</p><p>  delay(10); //等待測(cè)量的結(jié)果</p><p>  

122、TR0=0; //關(guān)閉定時(shí)器1</p><p>  EX0=0; //關(guān)閉外部中斷0</p><p>  if(succeed_flag==1)</p><p><b>  { </b></p><p>  time=timeH*256+timeL;</p><

123、p>  distance=time*0.0172; //厘米 </p><p>  } </p><p>  if(succeed_flag==0)</p><p><b>  {</b></p><p>  distance=100;

124、 //沒有回波則清零</p><p><b>  } </b></p><p>  sum=sum+distance;</p><p><b>  }</b></p><p>  distance=sum/10;</p><p>  // display(di

125、stance); </p><p><b>  sum=0;</b></p><p>  return distance;</p><p><b>  }</b></p><p>  //外部中斷0,用做判斷回波電平</p><p>  void exter() int

126、errupt 0 // 外部中斷0是0號(hào)</p><p><b>  { </b></p><p>  EX0=0; //關(guān)閉外部中斷 </p><p>  timeH =TH0; //取出定時(shí)器的值</p><p>  timeL =TL0; //取出定時(shí)器的值</p>

127、<p>  succeed_flag=1;//至成功測(cè)量的標(biāo)志</p><p><b>  }</b></p><p>  //定時(shí)器1中斷,用做超聲波測(cè)距計(jì)時(shí)</p><p>  void timer1() interrupt 1 //</p><p><b>  {</b></

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論