基于51單片機(jī)的超聲波避障小車設(shè)計(jì)-畢業(yè)論文_第1頁(yè)
基于51單片機(jī)的超聲波避障小車設(shè)計(jì)-畢業(yè)論文_第2頁(yè)
基于51單片機(jī)的超聲波避障小車設(shè)計(jì)-畢業(yè)論文_第3頁(yè)
基于51單片機(jī)的超聲波避障小車設(shè)計(jì)-畢業(yè)論文_第4頁(yè)
基于51單片機(jī)的超聲波避障小車設(shè)計(jì)-畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩56頁(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)介

內(nèi)蒙古科技大學(xué)本科生畢業(yè)設(shè)計(jì)說(shuō)明書(畢業(yè)論文)題目:基于單片機(jī)的超聲波避障小車設(shè)計(jì)學(xué)生姓名:祝偉泰學(xué)號(hào):1267112115專業(yè):測(cè)控技術(shù)與儀器班級(jí):測(cè)控2012-1指導(dǎo)教師:燕芳副教授內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(畢業(yè)論文)大于給定的40cm時(shí),單片機(jī)退出報(bào)警中斷執(zhí)行主函數(shù)的程序,此時(shí)小車將正常行駛。總體方案框圖如圖2.1所示。圖2.1系統(tǒng)的總體方案框圖2.1.1具體設(shè)計(jì)思路本設(shè)計(jì)采用兩驅(qū)車模,實(shí)質(zhì)上小車有三個(gè)車輪,第三個(gè)車輪為活動(dòng)輪,活動(dòng)輪不參與小車驅(qū)動(dòng)只作從動(dòng)和支撐作用。以單片機(jī)STC15為控制芯片,借用超聲波模塊進(jìn)行測(cè)距,光電碼盤模塊進(jìn)行速度測(cè)量,蜂鳴器進(jìn)行報(bào)警預(yù)告,PWM軟件控制系統(tǒng)進(jìn)行調(diào)速,LCD1602進(jìn)行顯示。具體實(shí)現(xiàn)過(guò)程:硬件方面小車的主板最終選用的是洞洞板焊接,當(dāng)然小車的PCB板也有繪制,只是最終選型選擇的是洞洞板,洞洞板的連線是根據(jù)小車的原理圖連接的[12]。主板包括幾個(gè)部分:第一部分就是供電部分,因?yàn)橐?qū)動(dòng)兩個(gè)5V的電機(jī),需要一個(gè)供電路,同時(shí)加入穩(wěn)壓電路以保證電壓的穩(wěn)定。第二部分是小車的驅(qū)動(dòng)電路,驅(qū)動(dòng)電路是自行繪制并焊接的電路板。第三部分超聲波電路和測(cè)速電路,因?yàn)橛玫氖乾F(xiàn)成的模塊,所以焊接電路的時(shí)候只需要用排針把單片機(jī)的IO口引出來(lái)即可。第四部分是顯示電路,這部分的電路在LCD模塊中會(huì)詳細(xì)的介紹。軟件方面也就是程序部分,軟件的思路也分為兩個(gè)部分:第一部分就是小車的主程序,主程序的中包含了定時(shí)器程序、超聲波采集程序、顯示程序。第二部分就是中斷程序:中斷程序中含有調(diào)速程序,報(bào)警程序,這樣的設(shè)計(jì)思路方便了程序的編寫。總的來(lái)說(shuō)在寫程序的時(shí)候只需要考慮兩個(gè)方面,第一方面就是小車在正常情況下能按照給定的速度運(yùn)行和實(shí)現(xiàn)顯示。第二方面就是小車在觸發(fā)中斷后立即執(zhí)行中斷程序,中斷程序中包含小車調(diào)速程序和報(bào)警程序。中斷是一個(gè)較為復(fù)雜的程序,中斷程序要涉及到中斷標(biāo)志和中斷優(yōu)先級(jí)問(wèn)題[13]。2.2系統(tǒng)各模塊的設(shè)計(jì)方案2.2.1控制核心模塊的選擇方案論證方案一:選用普通的51系列單片機(jī),該系列的單片機(jī)是有51單片機(jī)公司最早推出的,這一型號(hào)的單片機(jī)網(wǎng)上有很多的歷程可以用,因此用起來(lái)比較容易上手。其中P0可作為地址和數(shù)據(jù)的三態(tài)雙向口,P1是多功能的復(fù)用接口,P2可作為地址總線的輸出P3口的第一功能跟P1口相似,第二功能可作為特殊功能的輸入輸出線線[14]。方案二:選用增強(qiáng)型51系列單片機(jī),它比普通的51單片機(jī)多了一些外設(shè),功能上更加豐富強(qiáng)大了,增大了ROM和RAM,運(yùn)算速度是普通的51單片機(jī)的8-10倍,I/O口的驅(qū)動(dòng)能力大概是20mA,8051系列的在10mA左右,增強(qiáng)型51系列單片機(jī)與嵌入式芯片如AVR、ARM等很像,但其內(nèi)部框架依舊是8051。方案三:選用15系列單片機(jī),該系類的單片機(jī)是STC最新推出的單片機(jī),除了增大了ROM和RAM外。芯片的封裝也改為貼片式占用的面積小,除此之外15最大的優(yōu)勢(shì)在于在他內(nèi)部裝有可配置的時(shí)鐘電路所以外接晶振[15]。起初在選擇方案的時(shí)候就是本著簡(jiǎn)單易懂的心態(tài)去選的,所以首選的是方案一,考慮到程序的占用的內(nèi)存問(wèn)題于是選擇了增強(qiáng)型的51.但是通過(guò)學(xué)習(xí)和繪制電路板之后漸漸的發(fā)現(xiàn)用最新的15單片機(jī)的優(yōu)勢(shì)所在,而且15單片機(jī)的歷程從沒(méi)有接觸過(guò),這是一次挺好的挑戰(zhàn)機(jī)會(huì),于是最終選定的方案是方案三。除此之外15不用外加晶振而且其的封裝采用的是貼片式極大的節(jié)省了電路板的面積,普通的51單片機(jī)用的功能15都已經(jīng)具備,32個(gè)IO口的15單片機(jī)也足以滿足本次課設(shè)對(duì)單片機(jī)管腳的需求,加之15擁有與PWM波形相關(guān)的特殊功能寄存器[16],為此最終選定了STC15單片機(jī)作為本次課題的核心控制器。2.2.2主電路板的方案論證目前電路圖的制作方式主要有兩種:第一種是繪制電路原理圖然后根據(jù)電路原理圖制作繪制PCB板,第二種就根據(jù)相關(guān)的電路知識(shí)在洞洞板上自行搭建電路圖,電路中的線路一般是用焊錫焊接出來(lái)的。方案一:PCB電路板,在制作PCB板之前首先要繪制電路原理圖,需要用的軟件是AltiumDesigner10簡(jiǎn)稱AD10.AltiumDesigner10.作為新一代的板卡級(jí)設(shè)計(jì)軟件,以WindowXP的界面風(fēng)格為主,同時(shí),Altium公司獨(dú)一無(wú)二的DXP技術(shù)集成平臺(tái)也為設(shè)計(jì)系統(tǒng)提供了所有工具和編輯器的相容環(huán)境[17]。AD10操作起來(lái)十分的簡(jiǎn)單,但是需要有一定的英文基礎(chǔ),繪制電路圖主要分為兩個(gè)部分,第一部分是電路的原理圖,第二部分是PCB圖,電路原理圖可以生成未布線的PCB電路圖,經(jīng)過(guò)布線處理之后就是完整的PCB電路圖了。用AD繪制電路圖的優(yōu)點(diǎn)在于軟件自帶檢測(cè)功能,可以檢查電路中的錯(cuò)誤。方案二:自行搭建洞洞板;洞洞板顧名思義就是有很多個(gè)小洞組成的板子,這種板子一般有塑料制成,在每個(gè)小洞的的周圍鍍上焊盤。使用的時(shí)候?qū)⑵骷迳?,用焊錫焊接固定即可,至于需要用線連接的器件可以用焊錫將兩個(gè)器件間的一列焊盤連接在一起。洞洞板的搭建的優(yōu)點(diǎn)在于,比較靈活,需要增加硬件可以自行拓展電路,其缺點(diǎn)在于相對(duì)PCB板的焊接較為復(fù)雜[18]。綜合了兩個(gè)方案的優(yōu)缺點(diǎn)之后,在主板的制作上最終采用了洞洞板的,但是前期的調(diào)試采用的是PCB電路板。PCB電路板如圖2.2圖2.2主板PCB圖2.2.3測(cè)距避障傳感器的方案論證測(cè)距傳感器是本次課題的核心傳感器,測(cè)距傳感器的選用關(guān)乎到小車的實(shí)際避障和測(cè)距情況,因此測(cè)距傳感器的選型至關(guān)重要。目前測(cè)距傳感器種類繁多,其中應(yīng)用最廣泛的莫過(guò)于聲光測(cè)距傳感器。常見(jiàn)的聲光測(cè)距傳感器有、超聲波傳感器、雷達(dá)測(cè)距、激光測(cè)距傳感器、光電管、CCD圖像傳感器、光釬傳感器和光柵傳感器[19]。通過(guò)查閱相關(guān)資論文中給出兩種種測(cè)距方案進(jìn)行論述。方案一:超聲波測(cè)距,超聲波測(cè)距的原理是利用聲反射的原理通過(guò)聲速傳播的時(shí)間來(lái)計(jì)算距離。需要注意的是超聲波傳感器不能直接測(cè)量距離,只能測(cè)量超聲波傳播的時(shí)間,距離可以根據(jù)聲速傳播的公式進(jìn)行計(jì)算。聲波抗高壓能力強(qiáng),不易受到可見(jiàn)光,外界溫度的干擾,但是超聲波檢測(cè)存在盲區(qū),其檢測(cè)盲區(qū)為小于2CM[20]。方案二:紅外對(duì)管,紅外對(duì)管是一種十分常用的傳感器其集發(fā)射與接收于一體的光電傳感器[21],檢測(cè)范圍:3-80CM。因其安裝方便,價(jià)格低廉,操作簡(jiǎn)單被應(yīng)用于各行各業(yè)。紅外對(duì)管的主要用了測(cè)距測(cè)溫,測(cè)距的原理也很簡(jiǎn)單,就是利用光反射的原理,這個(gè)跟超聲波測(cè)距很相似。因?yàn)楣饩哂写┩感?,因此紅外對(duì)管不能用來(lái)檢測(cè)透明物體,這也是其檢測(cè)的局限性。通過(guò)分析和具體的實(shí)踐最終選定方案一的超聲波傳感器為測(cè)距傳感器,選用的原因如下。(1)超聲波傳的抗干擾能力比紅外對(duì)管的強(qiáng),小車在行駛過(guò)程中易受到可見(jiàn)光的干擾,降低了傳感器的精度。紅外對(duì)管屬于光電傳感器,其在檢測(cè)自身發(fā)出的紅外線時(shí)易受外界光線的影響。(2)紅外對(duì)管在檢測(cè)障礙物的時(shí)候具有局限性,因?yàn)楣饩€具有一定的穿透性,當(dāng)前方的障礙物為可穿透的物體時(shí),紅外線是無(wú)法檢測(cè)出的,這給小車的自動(dòng)避障帶來(lái)了局限性[22]。綜合上面分析的原因,最終選定了超聲波傳感器為智能避障小車的測(cè)距傳感器。2.2.4測(cè)速模塊的選擇方案論證測(cè)速模塊選用的的是光電編碼測(cè)速器,又稱光電碼盤。其因具有測(cè)量精度高,價(jià)格便宜,抗干擾能力強(qiáng),可靠性高的特點(diǎn)而被廣泛的使用。目前常用的光電編碼測(cè)速器主要有兩種類型,一種是透光型光電編碼測(cè)速器,一種是反光型編碼測(cè)速器。根據(jù)編碼器的型號(hào)本文給出了兩種方案,并分析論述得出最終的方案。方案一:透光式光電編碼器,透光式光電編碼器有兩個(gè)部分組成第一部分是一個(gè)帶有光柵的圓盤,在使用時(shí)這個(gè)圓盤被安裝在直流電機(jī)的轉(zhuǎn)軸上。第二部分是由光電二極管和光敏原件組成測(cè)量模塊。透光式的測(cè)量原理是基于光是沿直線傳播的原理,當(dāng)光柵和光電二極管處于同一直線上時(shí)光線穿過(guò)光柵[21],此時(shí)光敏原件檢測(cè)到發(fā)光源,則此時(shí)發(fā)出高電平,反之則為地低電平。當(dāng)圓盤旋轉(zhuǎn)一周時(shí)記下此時(shí)發(fā)出的高電平數(shù),在通過(guò)圓盤的周長(zhǎng)就可以算出小車的轉(zhuǎn)速。例如:圓形旋轉(zhuǎn)物體半徑為R,碼線數(shù)為M,單位時(shí)間內(nèi)(1s)掃過(guò)N個(gè)碼線,則該旋轉(zhuǎn)體的速度為V=M/N*π*2R。方案二:反射式光電編碼測(cè)速器,反射式光電編碼器也是有兩部分組成,第一部分也是一個(gè)圓盤,但是這個(gè)圓盤是一個(gè)能反射光線的圓盤,圓盤上均勻的分布著反光面,當(dāng)圓盤旋轉(zhuǎn)到合適的位置后就能反射由光電二極管發(fā)出的光線,光電管將感受的光變化轉(zhuǎn)換為電信號(hào)變化,第二部分則是將反光材料粘貼于被測(cè)軸的測(cè)量部位上構(gòu)成反射面。常用的反射材料為專用測(cè)速反射紙帶(膠帶),也可用鋁箔等反光材料代替,有時(shí)還可以在被測(cè)部位涂以白漆作為反射面。投光器與反射面需適當(dāng)配置,通常兩者之間距離為5-15M。當(dāng)被測(cè)軸旋轉(zhuǎn)時(shí),光電元件接受脈動(dòng)光照,并輸出相應(yīng)的電信號(hào)送人電子計(jì)數(shù)器,從而測(cè)量出被測(cè)軸的轉(zhuǎn)速[22]。通過(guò)具體的對(duì)分析以及結(jié)合小車車模的實(shí)際情況做種選定方案一,得出方案一的原因如下:小車的車模空間有限,在安裝了圓盤后已經(jīng)沒(méi)有合適的位置安裝反射式光電編碼器的反射紙帶。相反透光式的光電編碼器需要的空間相對(duì)較小,不需要在車模上安裝其他的硬件。透光式編碼器雖然易容機(jī)械震動(dòng)的干擾,但是圓盤式安裝在直流電機(jī)的轉(zhuǎn)軸上的,幾乎不會(huì)產(chǎn)生太過(guò)劇烈的震動(dòng),因此這對(duì)于透光式編碼器不會(huì)產(chǎn)生干擾。2.2.5電機(jī)驅(qū)動(dòng)選擇方案論證智能車常用驅(qū)動(dòng)有兩種:L298N和L293D。兩者均為的電機(jī)為5V直流電機(jī)的常用驅(qū)動(dòng)模塊。方案一:L298N是專用驅(qū)動(dòng)集成電路,屬于H橋集成電路,與L293D的差別是起輸出電流增大,功率增強(qiáng)。其輸出電流為2A,最高電流4A,最高工作電壓50V,可以驅(qū)動(dòng)感性負(fù)載,如大功率直流電機(jī),步進(jìn)電機(jī),線圈等感性負(fù)載[23],特別是其輸入端可以與單片機(jī)直接相連,從而很方便地受單片機(jī)控制。驅(qū)動(dòng)直流電機(jī)時(shí)是通過(guò)控制IN1--IN4四個(gè)輸入端的高低電平,只要有電平差就會(huì)驅(qū)動(dòng)電機(jī)旋轉(zhuǎn)。方案二:L293D支持兩路直流電機(jī)或一路步進(jìn)電機(jī)的驅(qū)動(dòng),最高工作電壓25V,最大驅(qū)動(dòng)電流1.2A。工作時(shí)控制引腳與核心控制芯片的IO口相連。其驅(qū)動(dòng)直流電動(dòng)機(jī)的方式與L298N相同。在綜合考慮后期的調(diào)試中可能要加入電機(jī)的正反轉(zhuǎn)或者,緊急停車系統(tǒng),為此選用性能更加穩(wěn)定,但是價(jià)格相對(duì)貴的L298N驅(qū)動(dòng)模塊。2.2.6顯示裝置的選型方案論證顯示裝置主要是用來(lái)顯示小車當(dāng)前的速度值和超聲波采集到的數(shù)值,字符數(shù)在6到8位左右。在電子系統(tǒng)領(lǐng)域中跟單片機(jī)配套使用的顯示裝置主要有LED數(shù)碼管,LCD1602液晶顯示屏和12864液晶顯示屏。方案一:LED數(shù)碼管顯示,數(shù)碼管一般有7段或者8段字段碼,每段字段碼其實(shí)就是一個(gè)發(fā)光二極管。數(shù)碼管一般有兩種,一種是共陰極數(shù)碼,共陰極數(shù)碼就是將數(shù)碼管的一端接地,給高電平時(shí)數(shù)碼管點(diǎn)亮,反之則不點(diǎn)亮。共陽(yáng)極數(shù)碼管則是將數(shù)碼管的一端與電源的正極相接,給低電平時(shí)數(shù)碼管點(diǎn)亮,反之則不點(diǎn)亮[24]。數(shù)碼管的顯示方式也分為兩種,一種是靜態(tài)顯示,一種是動(dòng)態(tài)掃描。所謂的靜態(tài)顯示是指將數(shù)碼管的一端與單片機(jī)具有鎖存功能的IO口連接,當(dāng)給數(shù)碼管合適電平時(shí)數(shù)碼管點(diǎn)亮,只要一直給電平數(shù)碼段就會(huì)一直點(diǎn)亮。動(dòng)態(tài)掃描相對(duì)來(lái)說(shuō)比較復(fù)雜,其原理就是將數(shù)碼管的位段碼和字段碼分別接在單片機(jī)的不同IO口上,由單片機(jī)控制位段碼和字段碼的顯示。由于單片機(jī)的掃描頻率很高,人眼是無(wú)法識(shí)別數(shù)碼管在掃描過(guò)程中的字符變換的,因此在人眼的觀察下數(shù)碼管是無(wú)變化的。圖2.3LED原理圖方案二:LCD1602顯示,顧名思義1602的意思就是16*2也就是說(shuō)LCD1602能顯示16*2個(gè)字符。在1602的字符寄存器中含有192個(gè)字符,除了平假名外其他的均是常用的字符。用戶在使用字符時(shí)只需要調(diào)出相應(yīng)的字符代碼便可讓其顯示,操作是十分方便的。通過(guò)對(duì)比分析LCD1602方案較為合適,原因如下:LED數(shù)碼管顯示一個(gè)字符需要一位數(shù)碼管,而要顯示速度和距離至少需要8位的數(shù)碼管,加之如果要在前后分別加上被測(cè)量的公式符號(hào)和單位則需要至少16位的數(shù)碼管,這種顯示太繁瑣了[25]。選用LCD1602在安裝時(shí)只需要在洞洞板上焊接上排母,再將LCD插入排母內(nèi)即可,而LED需要焊接在板子上,需要的占用空間大,焊接繁瑣。從視覺(jué)角度分析,LCD相對(duì)美觀,顯示也方便。圖2.21602模型圖2.3本章小結(jié)本章主要論述了課題的總體思路和各個(gè)模塊的選型方案,以及在選型過(guò)程中會(huì)遇到的問(wèn)題。這些問(wèn)題有些可以通過(guò)查閱資料解決,有些必須要通過(guò)實(shí)踐才能得出結(jié)論。當(dāng)遇到兩個(gè)方案都適用的時(shí)候此時(shí)應(yīng)該從節(jié)約成本的角度出發(fā),盡可能的減少成本。小車核心控制器的選型以及測(cè)距傳感器的選型是本次課題的關(guān)鍵點(diǎn),其關(guān)乎著本次課題的成功與否,因此在核心控制器以及測(cè)距傳感器的選型上應(yīng)該做出充分的論證。第三章硬件電路設(shè)計(jì)上文主要論述了小車的設(shè)計(jì)的整體思路和各個(gè)模塊的選型,關(guān)于小車的硬件電路也做了簡(jiǎn)單的介紹。小車的硬件電路并不復(fù)雜,主要包括供電電路,驅(qū)動(dòng)電路和LED顯示電路。下文會(huì)逐一對(duì)各個(gè)部分的硬件及電路進(jìn)行詳細(xì)的論述。3.1STC15單片機(jī)簡(jiǎn)介本次課題采用的STC15W4K系類單片機(jī)是STC公司生產(chǎn)的推出的新一代單時(shí)鐘周期/機(jī)器周期(1T)的單片機(jī)。其代碼完全兼容傳統(tǒng)的51單片機(jī),在KeilC的開(kāi)發(fā)環(huán)境中,選擇Intel8052編譯,頭文件包含<reg51.h>即可完成程序的編譯[26]。除此外15單片機(jī)還具有一下特點(diǎn):增強(qiáng)型8051CPU,1T,單時(shí)鐘/機(jī)器周期,速度比普通的8051快8-12倍。不需要外部晶振和外部復(fù)位電路這是其最大的優(yōu)勢(shì)和特點(diǎn),還可對(duì)外輸出時(shí)鐘和低電平復(fù)位信號(hào)。封裝比傳統(tǒng)的51小,本次課設(shè)用的15其封裝為QFN32(5m*5m),將其引腳由排針引出來(lái)后也比傳統(tǒng)單片小的多。3.1.1引腳說(shuō)明本次課題用到的引腳功能及其用法如表3.1所示:引腳功能外接備注PO.0-PO.7數(shù)據(jù)總線接口與LCD的D0-D7口相接P1.6-P1.7晶振接口/普通IO口其他IO口與傳統(tǒng)51差別不大其中3.03.1可做下載器的接口下載器可用RS232或者USB轉(zhuǎn)TTL表3.1STC15部分引腳說(shuō)明圖3.1STC15單片機(jī)引腳圖3.1.2特別管腳說(shuō)明STC15系列單片機(jī)的所有I/0口上電復(fù)位后均為準(zhǔn)雙向口/弱上拉模式,但是由于P1.7和P1.6口還可以分別作外部品體或時(shí)鐘電路的引腳XTAL1和XTAL2,所以P1.7/XTAL1和P1.6/XTAL2上電復(fù)位后的模式不一定就是準(zhǔn)雙向口/弱上拉模式[27]。當(dāng)P1.7和P1.6口作為外部晶體或時(shí)鐘電路的引腳XTAL1和XTAL2使用時(shí),P1.7/XTAL1和P1.6/XTAL2上電復(fù)位后的模式是高阻輸入.每次上電復(fù)位時(shí),單片機(jī)對(duì)P1.7/XTAL1和P1.6/XTAL2的工作模式按如下步驟進(jìn)行設(shè)置:1.首先,單片機(jī)短時(shí)間(十個(gè)時(shí)鐘)內(nèi)會(huì)將P1.7/XTAL1和P1.6/XTAL2設(shè)置成高阻輸入[27]。2.然后,單片機(jī)會(huì)白動(dòng)判斷上一次用戶ISP燒錄程序時(shí)是將P1.7/XTAL1和P1.6/XTAL2設(shè)置成普通I/0口還是XTAL1/XTAL2。3.如果上一次用戶ISP燒錄程序時(shí)是將P1.7/XTAL1和P1.6/XTAL2設(shè)置成普通I/0口,則單片機(jī)會(huì)將P1.7/XTAL和P1.6/XTAL2上電復(fù)位后的模式設(shè)置成準(zhǔn)雙向口/弱上拉。4.如果上一次用戶ISP編程時(shí)是將P1.7/XTAL1和P1.6/XTAL2設(shè)置成XTAL1/XTAL2,則.単片機(jī)會(huì)將P1.7/XTAL1和P1.6/XTAL2.上電復(fù)位后的模式設(shè)置成高[27]。3.1.3中斷說(shuō)明STC15w4K32s4系列単片機(jī)提供了21個(gè)中斷請(qǐng)求源它們分別是:外部中斷0(INT0)、定時(shí)器0中斷、外部中斷1(INT1)、定時(shí)器1中斷、中口1中斷、A/D轉(zhuǎn)換中斷、低壓檢測(cè)(LVD)中斷、CCP/PWM/PCA中斷、中口2中斷、SPI中斷、外部中斷2(INT2)、外部中斷3(NT3)、定時(shí)器2中斷、外部中斷4(NT4)、中口3中斷、串口4中斷定時(shí)器3中斷、定時(shí)器4中斷、比較器中斷、PWM中斷及PWM異常檢測(cè)中斷,除外部中斷2(INT2)、外部中斷3(INT3)、定時(shí)器2中斷、串口3中斷、串口4中斷、定時(shí)器3中斷、定時(shí)器4中斷及比救器中斷固定是最低優(yōu)先級(jí)中斷外,其它的中斷都具有2個(gè)中斷優(yōu)先級(jí)[28]。3.2時(shí)鐘電路和復(fù)位電路在傳統(tǒng)的51單片機(jī)中,需要加入時(shí)鐘電路和復(fù)位電路,這兩個(gè)電路組成了單片機(jī)的最小系統(tǒng)。在15單片機(jī)中因其內(nèi)部含有時(shí)鐘電路和復(fù)位電路,所以本次課題就不加入時(shí)鐘電路和復(fù)位電路。3.3電源電路部分本次課題所采用的是電池盒供電,電池盒中有6節(jié)1.5V的干電池,在滿電狀態(tài)下能為小車提供9V的電壓,下面具體分析一下小車的供電電路,供電電路如圖3.2所示。電源模塊由一個(gè)電源插孔,一個(gè)六角自鎖開(kāi)關(guān)和一塊7805穩(wěn)壓芯片組成。當(dāng)開(kāi)光按后,電路接通,的電源指示燈被點(diǎn)亮,9V的電壓經(jīng)過(guò)7805穩(wěn)壓后變成5V。驅(qū)動(dòng)L298N的工具電壓為9V電壓,單片機(jī)、LCD、超聲波傳感器等的供電使用的是5V電壓,這也是圖中出現(xiàn)兩個(gè)輸出電壓的原因,這是前期調(diào)試用到的電路圖,到后期小車成型后巧妙的運(yùn)用了L298N中的穩(wěn)壓芯片獲取5V電壓,因此只需要輸入9V電壓即可。圖3.2小車電源電路圖3.4超聲波傳感器超聲波傳感器是小車的核心傳感器,本次課題采用的傳感器為HC-SR04超聲波測(cè)距模塊。主要技術(shù)參數(shù)如表3.2所示:表3.2超聲波技術(shù)參數(shù)表電氣參數(shù)HC-SR04超聲波模塊工作電壓DC5V工作電流15mA工作頻率40kHz最遠(yuǎn)射程4m最近射程2cm測(cè)量角度15度輸入觸發(fā)信號(hào)10us的TTL脈沖輸出觸發(fā)信號(hào)輸出TTL電平信號(hào),與射程成比例規(guī)格尺寸45*20*15mm3.4.1超聲波測(cè)距的物理性質(zhì)超聲波是頻率大于2萬(wàn)Hz的機(jī)械振動(dòng)在彈性介質(zhì)中傳播而形成的一種機(jī)械波[]。它具有能量大、穿透力強(qiáng)且在異動(dòng)界面易產(chǎn)生反射、折射及波形轉(zhuǎn)換等特點(diǎn),超聲波測(cè)距的物理基礎(chǔ)如下:(1)障礙物引發(fā)超聲場(chǎng)的變化(反射和折射),測(cè)距正是利用反射這一點(diǎn)。(2)傳感器能采集到超聲場(chǎng)的變化。3.4.2超聲波測(cè)距的原理超聲波測(cè)距的原理正是基于其物理基礎(chǔ),當(dāng)超聲波模塊產(chǎn)生超聲波后,單片機(jī)的計(jì)時(shí)器開(kāi)始計(jì)時(shí)。超聲波在遇到障礙物后會(huì)被反射,超聲波模塊接收到反射波后,單片機(jī)的計(jì)時(shí)器停止計(jì)時(shí)。根據(jù)收發(fā)超聲波所產(chǎn)生的時(shí)間差,便可計(jì)算出超聲波模塊與障礙物的距離。超聲波模塊在接收超聲波時(shí)存在能量轉(zhuǎn)化,當(dāng)超聲波接收到反射波后,聲信號(hào)轉(zhuǎn)換為電信號(hào),從而使單片機(jī)的停止計(jì)時(shí)。設(shè)超聲波的聲速為v,時(shí)間差為t0則超聲波的測(cè)距公式如式3.1:S=×t0/2式(3.1)圖3.3超聲波測(cè)距原理圖P’圖3.4超聲波測(cè)距時(shí)序圖3.4.3超聲波測(cè)距過(guò)程分析超聲波避障的主要部分如表3.2所示:表3.2超聲波主要組成部分序號(hào)簡(jiǎn)介1供應(yīng)電能的脈沖發(fā)生器(發(fā)射電路);2轉(zhuǎn)換電能為聲能,且將聲能透射到介質(zhì)中的發(fā)射傳感器;3接收反射聲能(回波)和轉(zhuǎn)換聲能為電信號(hào)的接收傳感器;4接收放大器可以使微弱的回聲放大到一定幅度,并使回聲激發(fā)記錄設(shè)備;5記錄/控制設(shè)備,通??刂瓢l(fā)射到傳感器中的電能,并控制聲能脈沖發(fā)射到記。6錄回波的時(shí)間,存儲(chǔ)所要求的數(shù)據(jù),并將時(shí)間間隔轉(zhuǎn)換成距離在超聲波測(cè)量系統(tǒng)中,頻率取得過(guò)高或是過(guò)低都不合適,最常使用40KHz的超聲波。發(fā)射部分包含兩個(gè)組成部分:振蕩和功放,主要負(fù)責(zé)向傳感器輸出一個(gè)有一定寬度的高壓脈沖串,并由其內(nèi)部結(jié)構(gòu)模塊轉(zhuǎn)換成聲能發(fā)出去;接收放大器用來(lái)放大回聲信號(hào),收/發(fā)隔離則使接收裝置避開(kāi)強(qiáng)大的發(fā)射信號(hào)[29];記錄/控制部分啟動(dòng)或關(guān)閉發(fā)射電路并記錄發(fā)射的瞬時(shí)及接收的瞬時(shí),并將時(shí)差換算成距離讀數(shù)并加以顯示或記錄。3.5電機(jī)驅(qū)動(dòng)電路驅(qū)動(dòng)電路采用的是L298N驅(qū)動(dòng)電路,其電路原理圖如圖3.5所示:3.5L298N驅(qū)動(dòng)原理圖實(shí)物圖如圖3.6所示圖3.6L298N實(shí)物圖3.5.1電機(jī)驅(qū)動(dòng)電路分析L298N其內(nèi)部含有橋式電路,可以用來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載[10];控制原理采用采邏輯電平信號(hào)進(jìn)行控制具有ENA和ENB兩個(gè)使能控制端,在無(wú)信號(hào)信號(hào)影響的情況下只允許或禁止器件由一個(gè)電源信號(hào)輸入,在使用LN298的時(shí)候通常需要將8個(gè)二極管并聯(lián)到電路中,這8個(gè)二極管可做續(xù)流保護(hù)的作用,電機(jī)在斷電后由于慣性作用會(huì)產(chǎn)生有可能會(huì)發(fā)生自感,為了防止電源關(guān)閉時(shí)自感電壓擊穿開(kāi)關(guān)元件,同時(shí)也是防止電機(jī)受外力作用運(yùn)轉(zhuǎn)時(shí)發(fā)電造成芯片損壞。電路中L298N有4個(gè)輸出端,兩兩一組分別跟兩個(gè)直流電機(jī)的正負(fù)極相接,兩個(gè)使能控制端分別跟單片機(jī)的兩個(gè)PWM調(diào)速口連接。表3.3直流電機(jī)控制表電機(jī)旋轉(zhuǎn)方式控制端IN1控制端IN2控制端IN3控制端IN4PWM信調(diào)速ABM1正轉(zhuǎn)高低//高/反轉(zhuǎn)低高//高/停止低低//高/M2正轉(zhuǎn)//高低/高反轉(zhuǎn)//低高/高停止低低///高3.5.2PWMD調(diào)速分析PWM即脈沖寬度調(diào)制(PulseWidthModulation),固定了一個(gè)輸出信號(hào)的時(shí)間周期,通過(guò)調(diào)整基本周期內(nèi)工作時(shí)間的大小來(lái)調(diào)整脈沖的占空比[29],在課題中PWM由單片機(jī)完成。在固定的周期高電平和低電平分別作用于直流電機(jī),如果高電平左右的時(shí)間長(zhǎng),低電平作用的短則電機(jī)轉(zhuǎn)速相對(duì)較高,反之則轉(zhuǎn)速較慢。圖3.7PWM控制原理圖設(shè)電機(jī)始終接通電源時(shí),電機(jī)轉(zhuǎn)速最大為Vm,設(shè)占空比為D=t/T,則電機(jī)的平均速度為[30]:Vd=Vm·D(3.2)式中:Vd表示電機(jī)的平均速度;Vm表示電機(jī)全通電時(shí)的最大速度;D=t/T表示占空比。由公式(3.2)可見(jiàn),當(dāng)改變占空比D時(shí),就可以得到不同的電機(jī)平均速度,從而達(dá)到調(diào)速的目的。PWM調(diào)速工作方式有2種:一種是單極性工作制一種是雙極性工作制。兩種工作方式都是根據(jù)電壓差來(lái)工作,單極性就是只有一端接PWM,另一端接GND。而雙極性就是接2路PWM信號(hào)。由于單極性工作制電流的最大波動(dòng)比雙極性工作制的小,古采用了單極性工作制。3.6LCD1602顯示電路設(shè)計(jì)3.6.1LCD1602顯示液晶顯示器利用的是液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示。具有顯示質(zhì)量高、數(shù)字式接口、體積小、重量輕、功耗低等優(yōu)點(diǎn)。字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD。本設(shè)計(jì)用的是16*2的模塊。其實(shí)物如圖3.9所示。圖3.8LCD1602實(shí)物圖3.6.2LCD1602引腳功能說(shuō)明LCD1602采用的16腳(帶背光)的封裝接口,各個(gè)引腳的功能說(shuō)明如表3.5所示。表3.5引腳接口說(shuō)明表編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極其中VL為背光調(diào)節(jié)引腳,高電平時(shí)對(duì)比度最弱,反之最強(qiáng)。RS為寄存器選擇引腳,高電平選擇數(shù)據(jù)寄存器、反之選中指令寄存器。R/W為讀寫引腳,高電讀取,反之寫入。D0—D7是數(shù)據(jù)引腳[14]。3.6.31602LCD的指令說(shuō)明及時(shí)序:1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.6所示。表3.6控制命令表序號(hào)指令R/SR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開(kāi)/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容對(duì)LCD1602進(jìn)行諸如讀寫操作、光標(biāo)的操作時(shí)都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)各指令具體含義如下表所示。表3.7指令含義表指令1清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4顯示開(kāi)關(guān)控制。D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6功能設(shè)置命令DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平時(shí)顯示5x7的點(diǎn)陣字符.指令7字符發(fā)生器RAM地址設(shè)置。指令8DDRAM地址設(shè)置。指令9讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10讀數(shù)據(jù)。指令113.7光電測(cè)速模塊光電測(cè)速模塊的信號(hào)線接在外部中斷口,其原理如圖3.9所示。圖3.9光電測(cè)速模塊模塊參數(shù):1.供電電壓:5V。2.輸出信號(hào):TTL電平,當(dāng)檢測(cè)到碼盤無(wú)縫隙時(shí)輸出高電平,反之低電平,轉(zhuǎn)一周輸出的脈沖數(shù)由碼盤線數(shù)決定。3.接線說(shuō)明:紅色接+5V,黑色接GND,藍(lán)色接OUT。20線光碼盤如3.11圖所示。圖3.10光碼盤碼線數(shù)決定了測(cè)速的精度,一般常用碼線為100的碼盤,這里采用20碼線的碼盤進(jìn)行測(cè)速,精度相對(duì)較低,但已經(jīng)滿足本系統(tǒng)的需求。3.8報(bào)警電路設(shè)計(jì)報(bào)警采用的是聲光報(bào)警,聲報(bào)警就是在單片機(jī)指定的引腳上接一個(gè)蜂鳴器。通過(guò)實(shí)踐發(fā)現(xiàn)將蜂鳴器直接接在電路中時(shí)蜂鳴器不能發(fā)聲,原因在于電流太小無(wú)法驅(qū)動(dòng)蜂鳴器,解決方案6是串聯(lián)一個(gè)三級(jí)管。三極管是模擬電子技術(shù)中一個(gè)非常重要的電子元件,其作用是將電路中的微弱信號(hào)進(jìn)行放大[31]。要實(shí)現(xiàn)光報(bào)警只需要在蜂鳴器的電路上并聯(lián)一個(gè)發(fā)光二極管即可,需要注意的是二極管要串聯(lián)一個(gè)電阻從而起到限流保護(hù)的作用[31]。原理圖如圖3.12所示。圖3.11報(bào)警電路設(shè)計(jì)第四章軟件設(shè)計(jì)部分小車程序的編寫時(shí)整個(gè)課題的重點(diǎn)也是難點(diǎn),程序的編寫采用的是模塊化結(jié)構(gòu),就是將整個(gè)大程序模塊化的劃分開(kāi)。首先將程序分成兩大部分,第一部分是主程序,第二部分是中斷程序。主程序是指小車在正常行使的情況下所執(zhí)行的程序,中斷程序是指小車受到中斷的觸發(fā)后跳入中斷程序,待中斷程序結(jié)束后再執(zhí)行主程序。通過(guò)整體的思路分析主程序中應(yīng)該含有幾個(gè)部分的程序,分別為小車測(cè)距程序,小車測(cè)速程序,顯示程序,中斷程序中包含的程序?yàn)椋盒≤噲?bào)警程序,小車避障程序。當(dāng)小車進(jìn)入中斷后是否還顯示小車的車速要在具體的調(diào)試中進(jìn)行對(duì)比分析,還有小車的中斷程序應(yīng)該加入中斷保護(hù)程序,所謂的中斷保護(hù)是指:當(dāng)中斷觸發(fā)時(shí),中斷前一時(shí)刻所執(zhí)行的程序受到保護(hù),當(dāng)中斷接收程序從進(jìn)入中斷前的那個(gè)程序開(kāi)始執(zhí)行[9]。在用流水燈模擬生產(chǎn)流水線時(shí)用到的就是中斷保護(hù),當(dāng)故障發(fā)生時(shí)暫定作業(yè),當(dāng)故障排除后流水線要從故障發(fā)生前的那一步繼續(xù)進(jìn)行,而不是重新開(kāi)始執(zhí)行流水線。4.1主程序的設(shè)計(jì) 本設(shè)計(jì)采用了STC15系列的單片機(jī),其程序的編寫跟傳統(tǒng)的51單片機(jī)沒(méi)有太大的區(qū)別。因此完全可以參照51的一些典型的學(xué)習(xí)例程對(duì)程序進(jìn)行編寫,主程序部分包括距離,速度的測(cè)量以及顯示,其中超聲波的采集需要用到中斷程序,因此在主程序中應(yīng)該加入定時(shí)器中斷。具體編寫時(shí)通過(guò)定義定時(shí)器T1中斷來(lái)確定超聲波傳感器的采集周期和測(cè)速的采集周期,這兩個(gè)周期可以使一致的,定時(shí)器是一個(gè)非常重要的程序,因?yàn)?5沒(méi)有外接時(shí)鐘電路,所以通過(guò)查閱15單片機(jī)的用戶手冊(cè)可了解其內(nèi)部的機(jī)械周期。除此以外定時(shí)器還用作計(jì)算超聲波從發(fā)射到返回的需要的時(shí)間;定時(shí)器T1用于產(chǎn)生計(jì)算并顯示PWM;外部中斷INT0用于累計(jì)光電碼盤掃過(guò)的碼線數(shù),將傳感器采集回來(lái)的參數(shù)通過(guò)單片機(jī)運(yùn)算處理后的結(jié)果與給定值進(jìn)行對(duì)比,當(dāng)超聲波采集到的值小于給定值時(shí),單片機(jī)通過(guò)PWM使能端控制LN298n進(jìn)而控制兩個(gè)個(gè)驅(qū)動(dòng)輪的動(dòng)作,小車的整個(gè)運(yùn)行過(guò)程中超聲波的采集值和光電編碼器的采集值通過(guò)LCD來(lái)顯示[10]。小車的主程序雖然包含了很多程序,但是只要通過(guò)模塊化的調(diào)試,最終將小車的程序整合到一起便可實(shí)現(xiàn)小車的測(cè)速、測(cè)距、避障報(bào)警燈功能。小車主程序流程如圖4.1所示。圖4.1主程序流程圖4.2超聲波測(cè)距程序設(shè)計(jì)本課題是采用超聲波模塊進(jìn)行測(cè)距,在編寫超聲波程序時(shí)先要從超聲波模塊的硬件出發(fā),超聲波模塊一共四個(gè)引腳,上面分別標(biāo)有GND、VCC、Echo和Trig。VCC和GND是給超聲波模塊供電的,Echo和Trig分別是超聲波信號(hào)的收發(fā)引腳,因此需要給單片機(jī)相連。通過(guò)給控制Echo電平來(lái)控制數(shù)據(jù)的采集,當(dāng)Echo為零是等待并開(kāi)啟計(jì)數(shù),當(dāng)Echo為1計(jì)數(shù)并等待,關(guān)閉計(jì)數(shù),最后調(diào)用計(jì)算距離函數(shù),得出所測(cè)距離。具體設(shè)計(jì)如圖4.2所示圖4.2超聲波測(cè)距流程圖4.3避障程序設(shè)計(jì)避障程序時(shí)基于超聲波測(cè)距程序,當(dāng)超聲波采集到的距離小于程序中的預(yù)設(shè)值時(shí),觸發(fā)單片機(jī)的中斷,因此超聲波避障的程序應(yīng)該放在中斷程序中。超聲波避障的程序可以用一個(gè)if語(yǔ)句設(shè)定距離的預(yù)設(shè)值(閾值)當(dāng)檢測(cè)到的距離小于閾值執(zhí)行進(jìn)行避障操作(轉(zhuǎn)彎)。超聲波傳感器發(fā)射超聲波測(cè)量障礙物距離,決定電機(jī)的輸出狀態(tài)。4.3超聲波避障流程圖4.4PWM程序設(shè)計(jì)PWM輸出的信號(hào)接在驅(qū)動(dòng)板L298N的ENA和ENB上,ENA和ENB的管腳從而實(shí)現(xiàn)調(diào)速。PWM脈沖的周期是通過(guò)定時(shí)器實(shí)現(xiàn)的,設(shè)置定時(shí)器T1的TH1和TL1的初值[14];在實(shí)際編程設(shè)定一個(gè)50ms的周期,具體實(shí)現(xiàn)過(guò)程:每到1ms進(jìn)一次定時(shí)器中斷服務(wù)程序[14],在用函數(shù)定義一個(gè)變量,這個(gè)函數(shù)用于累加進(jìn)定時(shí)器T1中斷的次數(shù),h變量用來(lái)表示高電平次數(shù),同樣用if來(lái)設(shè)置閾值,當(dāng)累加到的次數(shù)達(dá)到閾值時(shí)就會(huì)給相應(yīng)的電機(jī)管腳高電平,否則給低電平,就能輸出方波從而達(dá)到脈寬調(diào)制的目的。經(jīng)過(guò)反復(fù)的調(diào)式,調(diào)節(jié)高電平占用PWM的周期可以便得到最優(yōu)的占空比。需要注意的是PWM調(diào)速程序也需要在避障中發(fā)揮左右,因?yàn)槲矣玫能嚹J莾沈?qū)車,因此需要通過(guò)兩輪的速度差來(lái)進(jìn)行轉(zhuǎn)彎,從而實(shí)現(xiàn)避障功能。4.5顯示子程序設(shè)計(jì)在對(duì)LCD1602進(jìn)行程序編寫前首先要清楚RS,RW,和EN引腳的用法。這個(gè)在硬件部分已經(jīng)做了詳細(xì)的介紹。在編寫程序的時(shí)候要圍繞這三個(gè)引腳展開(kāi),其編寫步驟如下;定義1602的相關(guān)引腳,包括RS,RW和EN。顯示的初始化(顯示初始化包括設(shè)置顯示方式、延時(shí)、清緩存和設(shè)置模式等)設(shè)置顯示地址(寫顯示字符的位置)寫顯示字符的數(shù)據(jù)LCD顯示流程圖如圖4.4所示。圖4.4LCD顯示流程圖4.7報(bào)警程序設(shè)計(jì)報(bào)警程序放入到中斷程序中,只要超聲波測(cè)得的距離小于閾值,單片機(jī)立即執(zhí)行聲光報(bào)警程序,此時(shí)只要將高電平輸出給指定的IO口,蜂鳴器就能發(fā)聲,二極管也會(huì)隨之被點(diǎn)亮。蜂鳴器的的聲音頻率是可調(diào)的,這個(gè)在下文的調(diào)試部分會(huì)做詳細(xì)的介紹。程序流程圖如圖4.5所示。圖4.5報(bào)警程序流程圖

第五章系統(tǒng)調(diào)試5.1概述在調(diào)試時(shí)的軟件調(diào)試平臺(tái)借助的是Keil軟件,作為C語(yǔ)言開(kāi)發(fā)環(huán)境本次運(yùn)用的keil軟件是keil51的升級(jí)版keil4,其比前者擁有更加完善的編譯功能。Keil作為美國(guó)Software公司推出的兼容51系列單片機(jī)的C語(yǔ)言開(kāi)發(fā)環(huán)境,其為用戶提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案[32]。硬件方面選用了功能較為完善的開(kāi)發(fā)板去進(jìn)行調(diào)試,因?yàn)檎{(diào)試的過(guò)程中是按模塊化方法去調(diào)試的,用51開(kāi)發(fā)板可以很好地解決這個(gè)問(wèn)題。51開(kāi)發(fā)板由1602模塊和蜂鳴器以及二極管,同時(shí)也可以機(jī)上直流電機(jī)進(jìn)行PWM調(diào)速,為此選用開(kāi)發(fā)板對(duì)模塊進(jìn)行調(diào)試最為方便和效率。5.2各模塊的調(diào)試5.2.1LCD的調(diào)試在進(jìn)行LCD調(diào)試的時(shí)候需要進(jìn)行硬件檢查,可導(dǎo)入51開(kāi)發(fā)板的預(yù)先編寫好的程序進(jìn)行檢查。除此之外對(duì)LCD硬件進(jìn)行安裝的時(shí)候需要接入可調(diào)電阻(電位器),其作用是調(diào)節(jié)LCD顯示屏的對(duì)比度,讓LCD能更清楚的顯示字符,這個(gè)是硬件調(diào)試中需要解決的問(wèn)題。將51開(kāi)發(fā)板的液晶測(cè)試程序?qū)牒?,l602能正常的顯示字符,即硬件無(wú)問(wèn)題。圖5.1LCD測(cè)試圖5.2.2光電碼盤調(diào)試 光電碼盤模塊與超聲波一樣也是四根線,一個(gè)VCC,一個(gè)GND,還有兩個(gè)信號(hào)線,分別測(cè)正反轉(zhuǎn)的,這里為了簡(jiǎn)潔只取了一個(gè)方向進(jìn)行工作測(cè)量。按原理圖接好線,最終測(cè)試結(jié)果如圖5.2。圖5.2測(cè)速的效果圖5.2.3蜂鳴器報(bào)警調(diào)試 在開(kāi)發(fā)板上用一根跳線將蜂鳴器連接起來(lái),然后通再并聯(lián)一個(gè)發(fā)光二極管構(gòu)成小車所需的聲光報(bào)警系統(tǒng)。報(bào)警器的調(diào)試主要是調(diào)試蜂鳴器的聲音頻率,這個(gè)就需要調(diào)試延時(shí)程序來(lái)解決。調(diào)試蜂鳴器聲音頻率時(shí)可以加入發(fā)光二級(jí)的程序。這兩個(gè)程序相對(duì)簡(jiǎn)單,蜂鳴器只需要給高電平然后延時(shí)一段時(shí)間后再給低電平,這樣蜂鳴器就能發(fā)出聲音了。二級(jí)管的程序就更為簡(jiǎn)單了,只需要給蜂鳴器高電平的同時(shí)給二極管的IO一個(gè)高電平就能將其點(diǎn)亮。圖5.3蜂鳴器測(cè)試程序5.2.4電機(jī)及驅(qū)動(dòng)調(diào)試在測(cè)試電機(jī)驅(qū)動(dòng)電路前,需要保證兩個(gè)5v的直流電機(jī)是能正常使用的,因此可以將兩個(gè)直流電機(jī)接在5v電壓上檢測(cè)。當(dāng)測(cè)試電機(jī)能使用后可以將兩個(gè)電機(jī)分別接入L298N的四個(gè)輸出口中,此時(shí)不加入PWM調(diào)速,因此應(yīng)將L298N的驅(qū)動(dòng)的兩個(gè)使能端ENA和ENB接入5V的高電平,如果兩個(gè)直流電機(jī)能正常轉(zhuǎn)動(dòng)則證明驅(qū)動(dòng)電路是沒(méi)有問(wèn)題的,如果不能也可以采用自行排查的方法來(lái)查找問(wèn)題所在。可以用萬(wàn)用表的導(dǎo)通檔來(lái)檢測(cè)是否存在斷線,也可以用20V電壓檔檢測(cè)各個(gè)輸入斷是否有異常電壓存在,當(dāng)然實(shí)際調(diào)試中的L298N的驅(qū)動(dòng)電路是沒(méi)有問(wèn)題的,兩個(gè)直流電機(jī)都能正常使用。5.2.5超聲波模塊調(diào)試超聲波的調(diào)試也是在開(kāi)發(fā)板上進(jìn)行調(diào)試的,在調(diào)試的過(guò)程中遇到不少問(wèn)題,有些通過(guò)查閱相關(guān)資料已經(jīng)得到解決有些至今沒(méi)有找到很好的解決辦法。在調(diào)試的過(guò)程中遇到的問(wèn)題主要有超聲波的采集距離更新慢,超聲波模塊移動(dòng)了好幾地方,檢測(cè)的距離也變化了好幾次,可是液晶屏的數(shù)據(jù)卻沒(méi)有變化。通過(guò)檢查程序發(fā)現(xiàn)超聲波的周期存在問(wèn)題,修改了程序后問(wèn)題得以解決,數(shù)據(jù)采集到一定的時(shí)間后就會(huì)停止,必須要通過(guò)單片機(jī)復(fù)位才能繼續(xù)采集。通過(guò)反復(fù)的修改程序也解決不了問(wèn)題,因?yàn)槟芰τ邢捱@個(gè)問(wèn)題還是得不到解決。圖5.4超聲波調(diào)試圖 總結(jié)本文從智能車的研究意義和智能車的發(fā)展出發(fā),充分的論述這次課題的目的和意思。汽車作為21世紀(jì)最重要的交通工具,其發(fā)揮著的作用是不言而喻的,而智能汽車作為未來(lái)汽車發(fā)展的一個(gè)新思路和新方向,因此在智能車的研究成為了世界各國(guó)重點(diǎn)關(guān)注的問(wèn)題[1]。智能車擁有巨大的商業(yè)價(jià)值,這注定成為未來(lái)工業(yè)發(fā)展的一個(gè)重點(diǎn)領(lǐng)域[2]。正是基于這樣的研究背景本次課題對(duì)智能車的知識(shí)進(jìn)行論述,最終制作出了超聲波避障小車。本次課題中的超聲波避障小車是一15單片機(jī)為控制器,一超聲波傳感器為主要傳感元件,制作成的一臺(tái)多功能智能車。超聲波避障小車的主要功能有自動(dòng)測(cè)速,自動(dòng)測(cè)距自動(dòng)避障。通過(guò)上訴這些功能以模擬未來(lái)智能車的發(fā)展思路和方向,通過(guò)對(duì)課題遇到的問(wèn)題進(jìn)行反復(fù)的思考和論證,最終得出解決方案。作為本科的畢業(yè)課題,其技術(shù)含量相對(duì)較低但是其對(duì)個(gè)人的幫助和影響是很大的。通過(guò)這次課題的制作,對(duì)硬件的認(rèn)識(shí)和對(duì)有關(guān)于智能車領(lǐng)域的認(rèn)識(shí)是很大的。關(guān)于校車硬件帶來(lái)的收獲也是很大的,校車的硬件電路中包括了供電電路,驅(qū)動(dòng)電路,顯示電路等傳統(tǒng)的基本電路知識(shí)[31],這對(duì)于大學(xué)本科所學(xué)的專業(yè)知識(shí)是一次很好地鞏固機(jī)會(huì)。除此之外,通過(guò)對(duì)智能校車各個(gè)模塊的程序調(diào)試,對(duì)C語(yǔ)言的認(rèn)識(shí)上升了一個(gè)層次,有關(guān)于數(shù)組與指針?lè)矫娴膶W(xué)習(xí)是在課本上很難學(xué)習(xí)到的??偟膩?lái)說(shuō)智能車測(cè)距和測(cè)速模塊的調(diào)試時(shí)這次課題的難點(diǎn)很重點(diǎn),在程序的調(diào)試中用的化整為零和化零為整思想是一個(gè)很好的思路。關(guān)于本次課題中尚未解決的問(wèn)題:超聲波采集有時(shí)候會(huì)突然停止,需要進(jìn)行復(fù)位操作才能解決。直到最后這個(gè)問(wèn)題也沒(méi)有得到解決,這也是這次課設(shè)一個(gè)較大的遺憾,不過(guò)通過(guò)以后再工作中的總結(jié)和學(xué)習(xí)一定會(huì)有所收獲,解決這個(gè)問(wèn)題是遲早的事。參考文獻(xiàn)[1].賈玉花與薛蓉娜,基于產(chǎn)業(yè)成長(zhǎng)理論的中國(guó)汽車電子信息產(chǎn)業(yè)發(fā)展研究[J].西安郵電學(xué)院學(xué)報(bào),2005(04):11-15.[2]胡海峰,史忠科與徐德文.智能汽車發(fā)展研究[J].計(jì)算機(jī)應(yīng)用研究,2004.21(6):20-23.[3]晏磊,劉岳峰.關(guān)于GPS技術(shù)在智能交通系統(tǒng)中的應(yīng)用分析[J].測(cè)繪通報(bào),2005.8:15-18[4]PomerleauD,JochemT.Rapidlyadaptingmachinevisionforautomatedvehiclesteering[J],IEEEexpert,1996,11(2):19-27.[5]UmsonC,AnhaltJ,BagellD,etal.Autonomousdrivinginurbanenvironments:Bossandtheurbanchallenge[J].JornalofFiedRobotics,2008,25(8):425-466.[6]BroggiA,BertozziM,FascioliA.Architecturalissuesonvision-basedautomaticvehicleguidance:theexperienceoftheARGOproject[J].Real-TimeImaging,2000,6(4):313-324.[7]BroggiA,BertozziM,FascioliA.etal.TheARGOautomaticvehiclevisionandcontrolsystems[J].InternationalJournalofIntelligentControlandSystems,1999,3(4):409-441.[8]MaurerM,BehringerR,FurstS,etal.Acompactvisionsystemforroadvehicleguidance:PatternRecognition,1996,Proceedingofthe13thInternationalConferenceon,1996[C].IEEE.[9]何曄.基于AT89S52單片機(jī)自動(dòng)避障自動(dòng)追光小車新設(shè)計(jì)[J].科技致富向?qū)?2011,(9):130-131[10]蔡卓凡.基于多超聲波傳感器避障機(jī)器人小車的設(shè)計(jì)[J].儀器儀表與檢測(cè)技術(shù),2014,33(5):88[11]潘永雄.

新編單片機(jī)原理與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.[12]付家才.傳感器與檢測(cè)技術(shù)原理及實(shí)踐[M].北京:中國(guó)電力出版社,2008.[13]楊虹,單片機(jī)測(cè)速系統(tǒng)的一種新方法.天津職業(yè)技術(shù)師范學(xué)院學(xué)報(bào)[J],2009(03):25-27.[14]王洪濤,王永亮,禹海闊,馬樂(lè)巖,張志明.基于89S51單片機(jī)的智能運(yùn)載車設(shè)計(jì)[J].濱州學(xué)院學(xué)報(bào),2011,27(6):99-100[15]劉映群與丁向榮,基于STC15系列單片機(jī)多功能開(kāi)發(fā)板[J],2013.(8):6-7.[16]朱嶸濤,徐愛(ài)鈞,葉傳濤.基于STC15單片機(jī)的無(wú)線遙控智能小車的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2014,10(14):34-46[17]王淵峰,戴旭輝AltiumDesigner10電路設(shè)計(jì)教程[M]:科學(xué)出版社2012.[18]郭亞娟,秦襄培與章秀華,基于最小二乘擬合的PCB板焊點(diǎn)定位[J].計(jì)算機(jī)與數(shù)字工程,2014(11):2181-2184.[19]靳展,劉錚與林玉池,光電傳感器特性參數(shù)測(cè)試系統(tǒng)的設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2012(12):1678-1683.[20]劉升平,王劍與葛紅,超聲波測(cè)距系統(tǒng)的開(kāi)發(fā)與研究[J].計(jì)算機(jī)工程與應(yīng)用,2009(25):78-81[21]范文利等,基于PLC和光學(xué)傳感器的角焊縫跟蹤系統(tǒng)[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2009(05):122-123.[22]董胡,馬振中.基于單片機(jī)的智能玩具小車設(shè)計(jì)[J].微型電腦應(yīng)用,2014,30(9):16[23]孫緒才.

L298N在直流電機(jī)PWM調(diào)速系統(tǒng)中的應(yīng)用[J].

濰坊學(xué)院學(xué)報(bào),2009,04:19-21[24]安曉莉.

AT89S51單片機(jī)并行I/O端口擴(kuò)展[J].電子設(shè)計(jì)工程,2009(08),66-67+70[26]余錫存,曹國(guó)華.單片機(jī)原理及接口技術(shù)[M].西安:西安科技大學(xué)出版社,2007.[27]朱嶸濤,徐愛(ài)鈞與葉傳濤,STC51單片機(jī)和nRF2401的無(wú)線門禁系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014(06):57-60.[28]李文勝,基于STC15F2K60S2智能多路溫度巡檢儀設(shè)計(jì)[J].電子世界,2014(08):第166-167頁(yè).[30]吳賽燕與楊輝,超聲波測(cè)距信號(hào)處理算法研究.福建電腦[J],2009(03):73-75.[31]梁紅,電工學(xué)中模擬電子的電路分析.高師理科學(xué)刊[J],2007(03):107-108.附錄A實(shí)物圖附錄B源程序main/************************************** 超聲波避障小車程序*** MCUIAP15W4K61S4************************************/#include"stc15f2k60s2.h"#include"math.h"#include<intrins.h>#defineuintunsignedint#defineucharunsignedchar#defineCYCLE0x1000L//定義PWM周期(最大值為32767)#defineDUTY10L//定義占空比為10%#defineAVOID_DIS20#definePI3 //簡(jiǎn)化PI3.14為3#defineNUM30 //柵格數(shù)#defineR3 //輪子半徑sbitLED=P0^0;sbitRX=P0^2; //超聲波接收端sbitTX=P0^1; //超聲波發(fā)送端staticbitflag=0; //超聲波超時(shí)標(biāo)志位intiDis=0;uintflag_count=0,speed=0;voidDelay_l(uinti) { uintx,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); }voidDelay10us() //@11.0592MHz{ unsignedchari; _nop_(); _nop_(); _nop_(); i=24; while(--i);}//觸發(fā)一個(gè)高電平時(shí)間staticvoidStartModule(void) //啟動(dòng)模塊{ TX=1; //啟動(dòng)一次模塊 Delay10us();// _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();// _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();// _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); TX=0;}/********************************************************************************FunctionName:CsbInit*Description:超聲波初始化函數(shù)*Input:None*Output:None*Return:None*Attention :調(diào)用的函數(shù)有:Timer0Init,只調(diào)用了一個(gè)定時(shí)器初始化*******************************************************************************/voidCsbInit(void){ TMOD&=0xf0; TMOD|=0x01; //設(shè)T0為方式1, TH0=0; TL0=0; ET0=1;//允許T0中斷 EA=1; //開(kāi)啟總中斷}/********************************************************************************FunctionName:Conut*Description:取出定時(shí)器的值,并通過(guò)計(jì)算得到距離,返回距離到調(diào)用函數(shù)*Input:None*Output:None*Return:計(jì)算得到的距離*Attention :當(dāng)距離大于5m時(shí),返回3個(gè)8,表示超出量程*******************************************************************************/staticintConut(void){ uintS,time; time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100;//算出來(lái)是CM if((S>=500)||flag==1)//超出測(cè)量范圍,親測(cè)可以達(dá)到6M多一點(diǎn)點(diǎn),不過(guò) {//跳動(dòng)的很厲厲害,現(xiàn)改為5M flag=0; S=888; } returnS;}/********************************************************************************FunctionName:GetDis*Description:發(fā)出一個(gè)10us的高電平脈沖,得到超聲波測(cè)出的距離*Input:None*Output:None*Return:S測(cè)得的距離,Uint型變量,比如返回124,則表示為1.24M*Attention :調(diào)用的函數(shù)有:StartModule,Conut*******************************************************************************/intGetDis(void){ StartModule();//給一個(gè)高電平觸發(fā)脈沖 while(!RX); //當(dāng)RX為零時(shí)等待 TR0=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR0=0; returnConut(); //計(jì)算}/*********************************************************************名稱:bitBusy(void)*功能:這個(gè)是一個(gè)讀狀態(tài)函數(shù),讀出函數(shù)是否處在忙狀態(tài)*輸入:輸入的命令值*輸出:無(wú)***********************************************************************/bitBusy(void){ bitbusy_flag=0; P27=0; P26=1; P25=1; Delay_l(10); busy_flag=(bit)(P1&0x80); P25=0; returnbusy_flag;}/*********************************************************************名稱:wcmd(uchardel)*功能:1602命令函數(shù)*輸入:輸入的命令值*輸出:無(wú)***********************************************************************/voidwcmd(uchardel){ while(Busy()); P27=0; P26=0; P25=0; P1=del; Delay_l(10); P25=1; Delay_l(10); P25=0;}/*********************************************************************名稱:wdata(uchardel)*功能:1602寫數(shù)據(jù)函數(shù)*輸入:需要寫入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidwdata(uchardel){ while(Busy()); P27=1; P26=0; P25=0; P1=del; Delay_l(10); P25=1; Delay_l(10); P25=0;}/*********************************************************************名稱:L1602_char(ucharhang,ucharlie,charsign)*功能:改變液晶中某位的值,如果要讓第一行,第五個(gè)字符顯示"b",調(diào)用該函數(shù)如下 L1602_char(1,5,'b')*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){ uchara; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; wcmd(a); wdata(sign);}/*********************************************************************名稱:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改變液晶中某位的值,如果要讓第一行,第五個(gè)字符開(kāi)始顯示"abcdef",調(diào)用該函數(shù)如下 L1602_string(1,5,"abcdef;")*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){ uchara,b=0; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; while(1) { wcmd(a++); if((*p=='\0')||(b==16))break; b++; wdata(*p); p++; }}/*********************************************************************名稱:display(uinttemp)*功能:顯示數(shù)據(jù)*輸入:temp要顯示的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voiddisplay(uinttemp){uintbai,shi,ge; bai=temp/100+48; shi=temp%100/10+48; ge=temp%100%10+48; L1602_char(1,9,bai); L1602_char(1,10,shi); L1602_char(1,11,ge);}voiddisplay_s(uinttemp){uintbai,shi,ge; bai=temp/100+48; shi=temp%100/10+48; ge=temp%100%10+48; L1602_char(2,9,bai); L1602_char(2,10,shi); L1602_char(2,11,ge);}/*********************************************************************名稱:LDC_Init(void)*功能:LCD1602初始化程序***********************************************************************/voidLDC_Init(void){ P25=0; wcmd(0x38); wcmd(0x08); wcmd(0x0c); wcmd(0x04); wcmd(0x01); L1602_string(1,1,"space:cm"); L1602_string(2,1,"Speed:cm/s"); }/*********************************************************************名稱:pwm_init()*功能:PWM初始化程序***********************************************************************/voidpwm_init(){P_SW2|=0x80;//使能訪問(wèn)XSFRPWMCFG=0x00;//配置PWM的輸出初始電平為低電平PWMCKS=0x00;//選擇PWM的時(shí)鐘為Fosc/(0+1)PWMC=CYCLE;//設(shè)置PWM周期PWM2T1=0x0000;//設(shè)置PWM2第1次反轉(zhuǎn)的PWM計(jì)數(shù)PWM2T2=CYCLE*1/100;//占空比為(PWM2T2-PWM2T1)/PWMCPWM2CR=0x00;//選擇PWM2輸出到P3.7,不使能PWM2中斷 PWM3T1=0x0000;//設(shè)置PWM2第1次反轉(zhuǎn)的PWM計(jì)數(shù)PWM3T2=CYCLE*1/100;//占空比為(PWM2T2-PWM2T1)/PWMCPWM3CR=0x00;//選擇PWM2輸出到P3.7,不使能PWM2中斷 PWM4T1=0x0000;//設(shè)置PWM2第1次反轉(zhuǎn)的PWM計(jì)數(shù)PWM4T2=CYCLE*1/100;//占空比為(PWM2T2-PWM2T1)/PWMCPWM4CR=0x00;//選擇PWM2輸出到P3.7,不使能PWM2中斷 PWM5T1=0x0000;//設(shè)置PWM2第1次反轉(zhuǎn)的PWM計(jì)數(shù)PWM5T2=CYCLE*1/100;//占空比為(PWM2T2-PWM2T1)/PWMCPWM5CR=0x00;//選擇PWM2輸出到P3.7,不使能PWM2中斷PWMCR=0x0f;//使能PWM信號(hào)輸出PWMCR|=0x80;//使能PWM模塊P_SW2&=~0x80;}/***********************小車后退函數(shù)************************/voidback(){ P_SW2|=0x80; PWM2T2=CYCLE*1/100; PWM3T2=CYCLE*50/100; PWM4T2=CYCLE*50/100; PWM5T2=CYCLE*1/100; P_SW2&=~0x80; }/***********************小車前進(jìn)函數(shù)************************/voidgo(){P_SW2|=0x80; PWM2T2=CYCLE*80/100; PWM3T2=CYCLE*1/100; PWM4T2=CYCLE*1/100; PWM5T2=CYCLE*80/100; P_SW2&=~0x80; }/***********************小車左轉(zhuǎn)函數(shù)左邊輪子后退右邊輪子前進(jìn)************************/voidleft_s(){ P_SW2|=0x80; PWM2T2=CYCLE*80/100; PWM3T2=CYCLE*1/100; PWM4T2=CYCLE*80/100; PWM5T2=CYCLE*1/100; P_SW2&=~0x80; }/***********************小車停下函數(shù)************************/voidstop(){ P_SW2|=0x80; PWM2T2=CYCLE*1/100; PWM3T2=CYCLE*1/100; PWM4T2=CYCLE*1/100; PWM5T2=CYCLE*1/100; P_SW2&=~0x80;;}/***********************小車右轉(zhuǎn)函數(shù)左邊輪子前進(jìn)右邊輪子后退************************/voidright_s(){ P_SW2|=0x80; PWM2T2=CYCLE*1/100; PWM3T2=CYCLE*80/100; PWM4T2=CYCLE*1/100; PWM5T2=CYCLE*80/100; P_SW2&=~0x80; }/*************************避障函數(shù)*********************************/voidAvoid(void){ staticunsignedcharDir=0; if(iDis>AVOID_DIS||iDis<5)//大于避障距離,則前進(jìn) { LED=1; go(); } else//否則轉(zhuǎn)彎 {LED=0; Dir++; if(Dir%2) { back(); Delay_l(1000); right_s();//右轉(zhuǎn) Delay_l(1000); } // else // { ////back(); //// ////Delay_l(1000); //// left_s();//左轉(zhuǎn) Delay_l(1000); // } }}/*************************定時(shí)器初始化*********************************/voidtimer_Init(void){ AUXR|=0x40; //定時(shí)器時(shí)鐘1T模式 TMOD&=0x0F; //設(shè)置定時(shí)器模式 TL1=0xCD; //設(shè)置定時(shí)初值 TH1=0xD4; //設(shè)置定時(shí)初值 TF1=0; //清除TF1標(biāo)志 ET1=1;//使能定時(shí)器1中斷 TR1=1; //定時(shí)器1開(kāi)始計(jì)時(shí) IT0=1;//設(shè)置INT0的中斷類型(1:僅下降沿0:上升沿和下降沿)EX0=1;//使能INT0中斷EA=1; }/*************************速度計(jì)算函數(shù)*********************************/voidspeed_act(uintsp){ speed=(2*R*PI*sp)/NUM;}/*************************主函數(shù)*********************************/voidmain(void){ P0M1=0; P0M0=0; P1M1=0; P1M0=1; P2M1=0; P2M0=0; P3M1=0; P3M0=0; CsbInit(); LDC_Init(); pwm_init(); timer_Init(); while(1) { LED=0; iDis=GetDis(); Avoid(); display(iDis); Delay_l(1000); display_s(speed); } }//外部中斷服務(wù)程序voidexint0()interrupt0//INT0中斷入口{ flag_count++; }/**************************定時(shí)器0中斷服務(wù)函數(shù)*******************************/voidzd0()interrupt1 //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍{ flag=1; //中斷溢出標(biāo)志}voidzd1()interrupt3 //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍{ staticflag_t=0; TF1=0;//清除TF1標(biāo)志 flag_t++; if(flag_t==1000) { flag_t=0; speed_act(flag_count); flag_count=0; LED=~LED;致謝這次課題足足花了我三個(gè)多月的時(shí)間,很多的知識(shí)在剛開(kāi)始的時(shí)候完全不了解,通過(guò)不斷的學(xué)習(xí)和請(qǐng)教同學(xué),慢慢的

溫馨提示

  • 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)論