欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      智能小車的自動尋跡實驗

      時間:2019-05-12 11:52:18下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《智能小車的自動尋跡實驗》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《智能小車的自動尋跡實驗》。

      第一篇:智能小車的自動尋跡實驗

      智能小車的自動尋跡實驗

      【實驗目的】 熟悉光敏電阻的性質 熟悉ICCAVR 編譯環(huán)境

      進一步熟悉單片機各端口的特性和作用 能夠編寫程序,利用光敏電阻的性質對小車進行控制

      【實驗器材】

      小車一輛 導線五根 下載線一根

      【實驗原理】

      (一)光敏電阻

      當光照射在物體上,物體內(nèi)部的原子釋放出電子并不逸出物體表面,而仍留在內(nèi)部,使 物體的電阻率1/R 發(fā)生變化的效應稱為光電導效應。光敏電阻是一種光電導效應半導體器 件。由于光敏電阻沒有極性,工作是可加直流偏壓或交流電壓。當無光照時,光敏電阻的阻 值(暗電阻)很大,電路中電流很小。當它受到一定波長范圍的光照射時,其阻值(亮電阻)

      急劇減小,電路中電流迅速增加,用電流表可以測量出電流。

      本實驗所采用的光敏電阻是硫化鎘光敏電阻,下圖是硫化鎘光敏電阻的光照特

      光敏電阻的檢測

      1. 用黑紙片將光敏電阻的透光窗口遮住,此時萬用表的指針基本保持不動,阻值接近無窮 大。此值越大說明光敏電阻性能越好。若此值很小或接近為零,說明光敏電阻已燒穿損

      壞,不能再繼續(xù)使用。

      2. 用一光源對準光敏電阻的透光窗口,此時萬用表的指針應有較大幅度的擺動,阻值明顯 減小。此值越小說明光敏電阻性能越好。若此值很大甚至無窮大,表明光敏電阻內(nèi)部開

      路損壞,也不能再繼續(xù)使用。

      3. 將光敏電阻透光窗口對準入射光線,用小黑紙片在光敏電阻的遮光窗上部晃動,使其間 斷受光,此時萬用表指針應隨黑紙片的晃動而左右擺動。如果萬用表指針始終停在某一

      位置不隨紙片晃動而擺動,說明光敏電阻的光敏材料已經(jīng)損壞。

      (二)Atmega8515的端口特性

      由于本實驗主要用到I/O輸入輸出的PA端口,因此主要介紹PA端口的特性。端口 A(PA7..PA0)端口A為8位雙向I/O口,具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱 的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,端口被外 部電路拉低時將輸出電流。在復位過程中,即使系統(tǒng)時鐘還未起振,端口A處于高阻狀態(tài)。作為通用數(shù)字I/O使用時,所有AVRI/O端口都具有真正的讀-修改-寫功能。這意味著用 SBI或CBI指令改變某些管腳的方向(或者是端口電平、禁止/使能上拉電阻)時不會無意地改 變其他管腳的方向(或者是端口電平、禁止/使能上拉電阻)。輸出緩沖器具有對稱的驅動能 力,可以輸出或吸收大電流,直接驅動LED。所有的端口引腳都具有與電壓無關的上拉電阻。

      并有保護二極管與VCC和地相連。

      每個端口都有三個I/O存儲器地址:數(shù)據(jù)寄存器–PORTx、數(shù)據(jù)方向寄存器–DDRx和端 口輸入引腳–PINx。數(shù)據(jù)寄存器和數(shù)據(jù)方向寄存器為讀/寫寄存器,而端口輸入引腳為只讀 寄存器。當寄存器SFIOR 的上拉禁止位PUD置位時所有端口的全部引腳的上拉電阻都被禁 止。不論如何配置DDxn,都可以通過讀取PINxn寄存器來獲得引腳電平。PINxn寄存器的各 個位與其前面的鎖存器組成了一個同步器。這樣就可以避免在內(nèi)部時鐘狀態(tài)發(fā)生改變的短

      時間范圍內(nèi)由于引腳電平變化而造成的信號不穩(wěn)定。

      本實驗主要應用PA端口的輸入引腳PINA。因此當我們把與光敏電阻的輸出電壓相連的 五個數(shù)據(jù)線連接到PA端口時可以通過讀取寄存器PINAx來獲得光探測裝置輸出的電平,在 AVR中PA端口的反轉電壓是2.1V為高電平。即當外部輸入電壓高于2.1V時,PINAx讀取的輸 入邏輯電平值為“1”,當外部輸入電壓低于2.1V時,PINAx讀取的輸入邏輯電平值為“0”。

      根據(jù)PINA寄存器放置的五個數(shù)據(jù)來判斷小車的走向。

      (三)本實驗實現(xiàn)原理

      當電路接通電源時,由小車主板的穩(wěn)壓電源電路穩(wěn)定輸出5 伏電壓為小車下部的光探測 電路提供電源使二極管發(fā)光,當路面是白色時,二極管發(fā)出的光大部分被反射,光敏電阻就 接收到比較強的光照射,阻值變小,流過光敏電阻的電流變大。由于電阻的分壓作用,使得 光敏電阻的輸出電壓較小,約為1.5V 左右。當路面是黑色時,由于黑色對光有吸收作用,使得二極管發(fā)出的光大部分被吸收,只有小部分被反射,光敏電阻接收到的光照就比較小,阻值變大,流過光敏電阻的電流變小,光敏電阻的輸出電壓變大,約為2.5V 左右。共有五個 光敏電阻也就是有五個數(shù)據(jù)輸出。這五個信號通過數(shù)據(jù)線與單片機的PA 口相連,最左邊的

      電阻連接PA 口的最低位PA0,依次類推,一直連到PA4 口。

      【實驗步驟】

      (1)連接好電路,把導線,下載線連接好,打開電源

      (2)進入ICCAVR 編譯環(huán)境,編寫并調(diào)試程序直至沒有錯誤,編譯環(huán)境簡介請參見

      附錄一

      (3)下載,燒錄進單片機,看實驗結果(4)反復修改調(diào)試程序,逐漸增強其功能(5)寫好實驗報告,實驗心得體會

      【實驗電路】 小車的硬件連接圖

      小車輪子的驅動詳見實驗一

      【程序示例】

      由于在實驗中黑線的寬度不同,尋跡中所用到的光敏電阻的部位也不同。下面程序的

      例子是黑線的寬度只能覆蓋一個光敏電阻時對小車的驅動程序

      #include

      #include //定義t 為中間變量

      unsigned char t;//******************系統(tǒng)自動生成的初始化程序**********************

      void port_init(void)

      {

      PORTA = 0x00;DDRA = 0x00;PORTB = 0x00;DDRB = 0x00;PORTC = 0x00;DDRC = 0x00;PORTD = 0x00;DDRD = 0xFF;PORTE = 0x00;DDRE = 0x04;

      } //call this routine to initialize all peripherals

      void init_devices(void)

      {

      //stop errant interrupts until set up

      CLI();//disable all interrupts

      port_init();MCUCR = 0x00;EMCUCR = 0x00;GICR = 0x00;TIMSK = 0x00;

      SEI();//re-enable interrupts //all peripherals are now initialized

      } //****************小車前進的子程序*********************

      void runforth(void)

      {

      PORTE=0x04;PORTD=0x70;

      } //*****************小車左轉的子程序*********************

      void zuozhuan(void)

      {

      PORTE=0x00;PORTD=0X70;

      } //****************小車右轉的子程序*********************

      void youzhuan(void)

      {

      PORTE=0x04;PORTD=0x50;

      } //***************小車停止不動的子程序****************

      void stop(void)

      {

      PORTE=0x00;PORTD=0x00;

      } //****************主程序***************************

      void main(void)

      { while(1)//設置一個死循環(huán),不斷讀取PA口的輸入邏輯電平

      {

      init_devices();//調(diào)用初始化函數(shù)

      t=PINA&0x1f;//屏蔽掉PA口的高三位數(shù)據(jù)位

      if(t==0x00){stop();} else { switch(t)

      { case 0x01:zuozhuan();break;case 0x07:zuozhuan();break;case 0x02:zuozhuan();break;case 0x03:zuozhuan();break;case 0x04:runforth();break;case 0x0e:runforth();break;case 0x06:zuozhuan();break;case 0x08:youzhuan();break;case 0x10:youzhuan();break;case 0x0c:youzhuan();break;case 0x18:youzhuan();break;case 0x1c:youzhuan();break;

      } } } }

      第二篇:智能尋跡小車實訓報告

      目錄

      1、引言

      1.1智能小車的設計意義和作用………………………3

      2、系統(tǒng)總體設計……………………………………………4

      3、硬件設計

      3.1循線模塊……………………………………………5

      4、軟件設計

      4.1軟件調(diào)試平臺………………………………………7 4.2系統(tǒng)軟件流程………………………………………8 4.3系統(tǒng)軟件程序………………………………………9

      5、調(diào)試及性能分析………………………………………12

      6、設計總結………………………………………………13

      7、作品實物圖……………………………………………14

      8、參考文獻………………………………………………15

      1、引言

      1.1智能小車的設計意義和作用

      智能小車是移動式機器人的重要組成部分,介紹一種基于AT89S52單片機的智能小車。通過不斷檢測各個模塊傳感器的輸入信號,根據(jù)內(nèi)置的程序分別控制小車左右兩個直流電機運轉,實現(xiàn)小車自動識別路線,尋找光源,判斷并避開障礙物,檢測道路上的鐵片、發(fā)出聲光信息并計數(shù)顯示,智能停車等功能。

      作為20世紀自動化領域的重大成就,機器人已經(jīng)和人類社會的生產(chǎn)、生活密不可分。因此為了使智能小車工作在最佳狀態(tài),進一步研究及完善其速度和方向的控制是非常有必要的。智能小車要實現(xiàn)自動尋跡功能和避障功能就必須要感知導引線和障礙物,感知導引線相當給機器人一個視覺功能。避障控制系統(tǒng)是基于自動導引小車(avg—auto-guide vehicle)系統(tǒng),基于它的智能小車實現(xiàn)自動識別路線,判斷并自動避開障礙,選擇正確的行進路線。使用傳感器感知路線和障礙并作出判斷和相應的執(zhí)行動作。該智能小車可以作為機器人的典型代表.它可以分為三大組成部分:傳感器檢測部分,,執(zhí)行部分,cpu。機器人要實現(xiàn)自動避障功能,還可以擴展循跡等功能,感知導引線和障礙物??梢詫崿F(xiàn)小車自動識別路線,選擇正確的行進路線,并檢測到障礙物自動躲避??紤]使用價廉物美的紅外反射式傳感器來充當。智能小車的執(zhí)行部分,是由直流電機來充當?shù)模饕刂菩≤嚨男羞M方向和速度。

      2、系統(tǒng)總體設計

      AT89S52單片機作為總的控制核心,利用傳感器,在循線信號、尋光信號、檢測障礙物信號等的輸入作用下,控制電機采取相應的動作,從而調(diào)整小車做合適的選擇。同時,如果有檢測到金屬片的信號,則將該信號以聲光的形式表現(xiàn)出來并令數(shù)碼管計數(shù)顯示。主要有循線、尋光、避障、金屬檢測、數(shù)碼顯示、電機驅動、電源、單片機控制等8大模塊,如2-1圖所示。

      圖2-1 功能模塊圖

      3、硬件設計

      3.1循線模塊

      循線模塊,循跡是指小車在白紙地板上循黑線行走通常采取的方法是紅外探測法,紅外探測法即利用紅外線在不同顏色的物體表面具有不同的反射性質的特點,可以根據(jù)黑帶和白紙對光線的發(fā)射系數(shù)不同,可以利用車底接收到的發(fā)射光的強弱來判斷“道路”黑帶。采用四個紅外光電管分別置于移動智能小車前板底座的兩側,確保沿著黑線行駛。紅外光電管由一個發(fā)射管和一個接收管組成,安裝在同一面上。紅外光電管的工作原理是由發(fā)射管發(fā)射出的紅外線,經(jīng)檢測面反射后被接收管吸收,由于檢測面顏色的不同,對紅外線的吸收程度也不同,從而反映在接收管的阻值變化上。這種阻值變化通過外接通路就能轉換成單片機能夠識別的信號。由于紅外光電管發(fā)出的是紅外線,日光對小車的檢測不會產(chǎn)生影響,因而其抗干擾性能好,從而實現(xiàn)小車的循跡功能。但紅外探測器探測距離有限,一般最大不應超過3cm。循跡功能如3-1,3-2圖所示。

      圖 3-1 循跡功能圖

      圖3-2循跡功能圖

      本設計需要檢測小車的運動狀態(tài),沿著路面黑線運動。采用發(fā)射取樣式,單光束紅外傳感器接收信號,電路在5V電壓下工作,根據(jù)該型號傳感器紅外發(fā)射管所需的工作降壓(紅外發(fā)射管的正向降壓在1-1.3V)和工作電流(紅外發(fā)射管的電流為2-10mA),選取負載電阻R=15千歐,紅外發(fā)射管負載電阻R=220歐。

      4、軟件設計

      4.1 軟件調(diào)試平臺

      Keil for C51是美國Keil Software公司出品的C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,Keil C51軟件還提供了豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,生成的目標代碼效率非常高,且容易理解。

      C51開發(fā)中除了必要的硬件外,同樣離不開軟件,我們寫的源程序要變?yōu)镃51可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,但現(xiàn)在已極少使用手工匯編。Keil提供了包括C編譯器、宏匯編、連接線、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision2)將這些部分組合在一起。如圖4-1所示。

      圖4-1 Keil for C51開發(fā)平臺

      4.2系統(tǒng)軟件流程

      系統(tǒng)軟件流程圖如圖4-2所示

      圖4-2系統(tǒng)流程圖

      4.3系統(tǒng)軟件程序

      #include #define LED P1 //定義數(shù)據(jù)顯示端口

      sbit D1=P2^0;//定義前方左側指示燈端口 sbit D2=P0^7;//定義前方側右指示燈端口 sbit ZIR=P3^5;//定義前方左側紅外探頭端口 sbit YIR=P3^6;//定義前方右側紅外探頭端口 sbit QIR=P3^7;//定義前方正前方紅外探頭端口 sbit M1A=P0^0;//定義左側電機驅動A端 sbit M1B=P0^1;//定義左側電機驅動B端 sbit M2A=P0^2;//定義右側電機驅動A端 sbit M2B=P0^3;//定義右側電機驅動B端 sbit SB1=P0^4;//定義語音識別傳感器端口 sbit MIC=P0^6;//定義蜂鳴器端口 void delay(unsigned int z){ while(z--);SB1=!SB1;

      return;} void car(unsigned char a){ M1A=0;M2A=0;M1B=0;M2B=0;switch(a){ case 1:{M1A=1;M2A=1;break;};case 2:{M1B=1;M2B=1;D1=0;D2=0;break;};case 3:{M1B=1;M2A=1;D2=0;break;};case 4:{M1A=1;M2B=1;D1=0;break;};} } void main(){ car(1);while(1);{ D1=1;D2=1;LED=0x00;if(QIR==0){ car(2);delay(15000);car(1);} if(YIR==0&&ZIR==1){ car(3);delay(15000);if(YIR==0&&ZIR==1){ car(1);} } if(ZIR==0){ car(4);delay(15000);if(YIR==0&&ZIR==1)

      { car(1);} } if(YIR==0&&ZIR==0){ car(2);delay(30000);} } }

      5、調(diào)試及性能分析

      整機焊接完畢,首先對硬件進行檢查聯(lián)線有無錯誤,再逐步對各模塊進行調(diào)試。首先寫入電機控制小程序,控制其正反轉,停機均正常。加入避障子程序,小車運轉正常,調(diào)整靈敏度達最佳效果。加入顯示時間子程序,顯示正常。鐵片檢測依靠接近開關,對檢測信號進行處理并實時顯示和發(fā)出聲光信息,無異常狀況。路程顯示部分是對霍爾管脈沖進行計數(shù),為了盡量達到精確,車輪加裝小磁片。接著對黑帶檢測模塊調(diào)試,發(fā)現(xiàn)有時小車會跑出黑帶,經(jīng)判斷是因為紅外線收發(fā)對管靈敏度不高,調(diào)整靈敏度后仍然達不到滿意效果,疑是受環(huán)境光影響,利用塑料套包圍紅外線收發(fā)后問題解決。趨光電路主要由三個光敏電阻構成,調(diào) 整三個光敏電阻的角度同時測試軟件,以最佳效果完成趨光功能。

      整機綜合調(diào)試,上電后對系統(tǒng)進行初始化,接著控制電機使小車向前行駛,突然發(fā)現(xiàn)系統(tǒng)即刻進入外部中斷1,重復多次測試,結果都是自動進入該中斷。推斷是由剛上電時電機起動所引起,為了避免上電瞬間的影響,在啟動小車后延時幾毫秒,再開外部中斷,結果問題解決。允許的話應采用雙電源供電,即電機和電路應分開供電,L293D與單片機之間采用隔離信號控制。這樣就不會出現(xiàn)小車啟動時程序出錯和數(shù)碼管顯示閃動的問題。在計程精度上,可用紅外線原理獲 得較高精度。

      6、設計總結

      通過本次實訓設計,不僅是對我們課本所學知識的考查,更是對我們的自學能力和收集資料能力及動手能力的考驗,本次實訓使我們對一個項目整體設計有了初步認識。再有對電路板的制作有了一定的了解。并學會了使用keil軟件設計。本次實訓使我們意識到實驗的更重要性,在硬件制作和軟件調(diào)試過程中,出現(xiàn)了很多問題,最終都

      是通過實驗的方法來解決的。還有以前對程序只是一個模糊的概念。通過這次實訓極大的鍛煉了我們的思考和分析問題能力。并對單片機有利益更深的認識。

      總之,實訓過程中,無論是對學習方法還是理論知識,我們都有了新的認識。受益匪淺。這將激勵我們今后再接再勵,不斷完善自己的理論知識提高實踐運作能力。

      8、作品實物圖

      9、參考文獻

      1)、《單片機應用技術》 2)、《周立功單片機》 3)、《單片機原理與應用》

      4)、《8051單片機程序設計與實例》 5)、《MCS-51單片機實驗指導》

      第三篇:尋跡小車報告

      智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      尋跡小車設計報告

      指導教師:

      2011年6月12日13:30

      小組成員:智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      C8051F單片機的智能尋跡小車

      本課題是基于C8051F單片機的智能小車的設計與應用,小車完成的主要功能是能夠自主識別黑色引導線并根據(jù)黑色引線能快速自主穩(wěn)定的尋線行駛。小車系統(tǒng)以單片機為系統(tǒng)控制處理器,對整個控制軟件進行程序的設計和程序的調(diào)試,并最終完成軟硬件的結合,完成小車的預期功能。

      一、實驗目的:

      通過設計能進一步掌握單片機的原理、以及能剛好的運用編程實現(xiàn)對小車的控制。

      使小車能自主尋找路線,并且能夠合理設計單片機的外圍電路,并使之與單片機能構成整個 系統(tǒng)。

      二、設計方案:

      本組小車以單片機為控制處理器、以298為驅動器結合程序,通過芯片發(fā)出驅動命令,控制電機的驅動以實現(xiàn)對小車的控制。

      三、技術方案概要說明

      本模塊車的電路系統(tǒng)包括電源管理模塊、單片機模塊、傳感器模塊、電機驅動模塊、人機界面。

      四、工作原理

      1、利用紅外采集塊中的紅外發(fā)射接收對關檢測路面上的軌跡

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      2、將軌跡信號傳給單片機

      3、單片機采用模糊推理求出轉向角度和行走速度,然后去控制行走部分

      4、最終完成智能小車可以按照路面上的軌跡運行

      五、報告內(nèi)容安排

      第一部分為對整個報告的概括說明,第二部分為整個電路硬件的介紹和說明,第三部分為整個設計的軟件程序設計的說明。

      硬件電路的設計

      一、尋跡模塊

      尋跡共有8路,前后各4路,它通過TCRT5000是否接受到紅外反射光來改變電壓大小,從而使單片機發(fā)出指令,使小車進行前進、后退、停止、走正等一系列動作。

      1、尋跡電路圖

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      焊接時,可用一個電位器來代替四個電位器,這樣即省材料,也使電路板更加精巧。甚至還能將除TCRT5000以外的部件全部安放到車體板上面。

      TCRT5000實物圖與內(nèi)部結構(與地面距離0.2mm~0.8mm之間)

      LM393引腳圖

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      2、檢測

      將5V電源連接好,萬用表與各組尋跡的GND與輸出端相連,用白紙來使紅外燈反射,當TCRT5000接收到反射紅外光時輸出低電平,未接收時輸出高電平,最后通過改變電位器阻值來調(diào)節(jié)尋跡靈敏度。

      二、驅動模塊

      驅動的核心部件是L298N,它通過單片機指令直接控制小車電機電機轉速,從而來使小車行駛。

      驅動電路圖

      5,7,10,12與P2.1,P2.2,P2.5,P2.6相連,使能1,2與P0.0,2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      P0.1相連,2,3,13,14與小車電機相連,驅動要加散熱片,防止過熱燒壞。

      L298n引腳分辨

      電機驅動的檢測:

      連接好電源,將使能1,2都與電源5V相連,5,10與7,12兩組,一組與5V相連,另一組與GND相連,用萬用表分別測量2,3與13,14兩組引腳,有12V電源輸出,則驅動正常。

      三、電源模塊

      電源主要是將12V電壓降為5V,輸給小車的各部分模塊。

      電源電路圖

      電源最好需由兩組并聯(lián)而成,以免7805過載而燒壞。J2與外電源12V

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      相連,需要兩個引腳,5V引腳與GND引腳都需要多個,以滿足對各模塊的供電需求。

      LM7805

      電源模塊的檢測:

      將12V與GND連接好,輸出端有穩(wěn)定的5V電源輸出,則電源正常。

      四、1602顯示屏(主要用于顯示小車運動時間)

      1602電路圖

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      五、語音模塊

      當小車完成所有指令動作到達終點時,蜂鳴器發(fā)出響聲。

      蜂鳴器的電路圖

      六、C8051F020單片機

      它是由Cygnal出的一種混合信號系統(tǒng)級單片機。片內(nèi)含CIP-51的CPU內(nèi)核,它的指令系統(tǒng)與MCS-51完全兼容。其中的C8051F020單片機含有64kB片內(nèi)Flash程序存儲器,4352B的RAM、8個I/O端口共64根I/O口線、一個12位A/D轉換器和一個8位A/D轉換器以及一個雙12位D/A轉換器、2個比較器、5個16位通用定時器、5個捕捉/比較模塊的可編程計數(shù)/定時器陣列、看門狗定時器、VDD監(jiān)視器和溫度傳感器等部分。C8051F020單片機支持雙時鐘,其工作電壓范圍為2.7~3.6V(端口I/O,RST和JTAG引腳的耐壓為5V)。與以前的51系列單片機相比,C8051F020增添了許多功能,同時其可靠性和速度也有了很大提高。

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      五、組裝小車

      用適當大小的單孔電路板作為小車底板,在適當位置打上小孔,將各個模塊安在上面,使小車質量分布均勻,以免小車走歪。

      六、焊接的注意事項

      1.呈圓焊接順序,元器件裝焊順序依次為:電阻器、電容器、二極管、三極管、集成電路、大功率管,其它元器件為先小后大。

      2.芯片與底座都是有方向的,焊接時,要嚴格按照PCB板上的缺口所指的方向,使芯片,底座與PCB三者的缺口都對應。

      3.焊接時,要使焊點周圍都有錫,將其牢牢焊住,防止虛焊。

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      4.在焊接圓形的極性電容器時(一般電容值都是比較大的),其電容器的引腳是分長短的,以長腳對應“+”號所在的孔。

      5.芯片在安裝前最好先兩邊的針腳稍稍彎曲,使其有利于插入底座對應的插口中。

      6.電位器也是有方向的,其旋鈕要與PCB板上凸出方向相對應。7.取電阻時,找到所需電阻后,拿剪刀剪下所需數(shù)目電阻,并寫上電阻,以便查找。

      8.裝完同一種規(guī)格后再裝另一種規(guī)格,盡量使電阻器的高低一致。焊完后將露在印制電路板表面多余引腳齊根剪去。

      9.焊接集成電路時,先檢查所用型號,引腳位置是否符合要求。焊接時先焊邊沿對腳的二只引腳,以使其定位,然后再從左到右自上而下逐個焊接。

      10.對引腳過長的電器元件(如電容器,電阻等),焊接完后,要將其剪短。

      11.焊接后用放大鏡查看焊點,檢查是否有虛焊以及短路的情況的發(fā)生。

      12.當有連線接入時,要注意不要使連線深入過長,以至于將其旋在電線的橡膠皮上,出現(xiàn)斷路的情況。

      13.當電路連接完后,最好用清洗劑對電路的表面進行清洗,以防電路板表面附著的鐵屑使電路短路。

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      14.在多臺儀器老化的時候,要注意電線的連接,零線對零線,火線對火線。

      15.當最后組轉時,應將連線扎起,以防線路混亂交叉。16.要進行老化工藝,可發(fā)現(xiàn)很多問題,連線要接緊,螺絲要旋緊,當反復插拔多次后,要注意連線接頭是否有破損。

      17.焊接上錫時,錫不宜過多,當焊點焊錫錐形時,即為最好。

      軟件系統(tǒng)設計

      若小車偏左的時候,左輪將向右偏轉;若小車偏右,車輪將向左偏轉;若沒有偏移,小車將繼續(xù)向前;若完全偏離黑色軌跡,小車后退以尋找黑色軌跡。

      一、程序設計方法

      1、確定程序功能。根據(jù)機電硬件中的人機界面、電力電子器件和傳感器件的物理特點和運行方式確定外圍部件軟件功能,根據(jù)控制系統(tǒng)設計方案確定控制軟件功能,根據(jù)系統(tǒng)的功能結構確定前面沒有提到的其他軟件功能。

      2、劃分任務。將各類軟件功能劃分成具體的任務。

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      3、確定任務的組合方式。通過分析任務的優(yōu)先級和相互關系來確定組合方式。因為這個組合方式通常并不是唯一的,可以采取如前文所介紹的概念設計方法的方案排列和方案選擇方法。

      4、確定編程方法。根據(jù)任務劃分、任務的組合方式、軟件開發(fā)能力和軟件開發(fā)環(huán)境可以確定具體程序編制方法。在確定過程中,也可以采用如前文所介紹的概念設計方法的方案排列和方案選擇方法。

      5、編程與調(diào)試。

      二、資源分配

      P0^0----電機1用的PWM輸出信號(左輪)P0^1----電機2用的PWM輸出信號(右輪)L_DIR1A=P3^6----左輪電機方向控制 L_DIR1B=P3^7----左輪電機方向控制 R_DIR1A=P3^4----右輪電機方向控制 R_DIR1B=P3^5----右輪電機方向控制 P3^1----蜂鳴器控制

      PCA0CPM0----電機1PWM輸出,工作在8位定時器模式,允許比較器匹配中斷,每次中斷加載新的比較值,實現(xiàn)電機輸出的脈寬、周期控制。

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      PCA0CPM1----電機2PWM輸出,工作在8位定時器模式,允許比較器匹配中斷,每次中斷加載新的比較值,實現(xiàn)電機輸出的脈寬、周期控制。

      P5.0-P5.7;傳感器接口 lcdrw=P3^2;----讀寫控制5 lcdcs=P3^0;----E使能6 lcdrs=P3^3;命令數(shù)據(jù)選擇控制4

      三、小車程序

      #include #include #include //包含頭文件

      typedef unsigned char uchar;typedef unsigned long ulong;typedef unsigned int uint;

      //變量定義#define L_MOTO_BREAK L_DIR1A=L_DIR1B #define L_MOTO_BACK L_DIR1A=0;L_DIR1B=1 #define L_MOTO_FORD L_DIR1A=1;L_DIR1B=0

      2011年6月12日13:30

      智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      #define R_MOTO_BREAK R_DIR1A=R_DIR1B #define R_MOTO_BACK R_DIR1A=0;R_DIR1B=1 #define R_MOTO_FORD R_DIR1A=1;R_DIR1B=0 //前走與后走的定義 sbit L_DIR1A=P3^6;sbit L_DIR1B=P3^7;sbit R_DIR1A=P3^4;sbit R_DIR1B=P3^5;sbit P3_1=P3^1;

      sbit lcdrw=P3^2;//5 sbit lcdcs=P3^0;//6 sbit lcdrs=P3^3;//4

      int a=0;//定時器計數(shù)用 uchar minute=0,second=0,sign=0;uchar fb=0;//控制前后方向

      //全局變量的聲明

      //1602液晶的管腳定義

      //I/O管腳的定義

      /********************************************/ /* 名稱:config

      */ /* 用途:初始化配置, 以保證單片機控制功能工作 */ /********************************************/ void config(void)

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      {

      WDTCN = 0x07;

      //看門狗禁止

      WDTCN = 0xde;

      WDTCN = 0xad;

      XBR0 = 0x50;

      XBR1 = 0x00;XBR2 = 0x40;

      //配置交叉開關,//交叉開關允許

      P0MDOUT=0x00;

      P1MDOUT=0x00;

      P2MDOUT=0x00;

      P3MDOUT=0xfd;//I/O口的推挽與漏極輸出 P74OUT=0x00;

      //p4--p6 I/O口的推挽與漏極輸出

      P5=0xff;

      OSCXCN = 0x00;

      OSCICN = 0x16;//采用內(nèi)部晶振,頻率為 8MHZ }

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      /********************************************/ /* 名稱: delay1ms

      */ /* 用途: 延時

      */ /********************************************/ void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);

      }

      void delay1(uint time){ uint ii;uint jj;for(ii=0;ii

      }

      //兩個延遲子程序

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      /********************************************/ /* 名稱: PCA_Init

      */ /* 用途: PCA初始化

      */ /********************************************/ void PCA_Init(){

      PCA0MD=0x08;

      //PCA采用系統(tǒng)時鐘,且PCA溢出中斷禁止

      PCA0CN=0x40;

      //啟動PCA計數(shù)器

      } void PCA0_Init(){

      PCA0CPM0=0x42;//CEX0為8位PWM輸出模式

      PCA0CPM1=0x42;//CEX1為8bit PWM輸出模式

      }

      /********************************************/ /* 名稱: PWM_Init

      /* */ /********************************************/ void PWM0_set(uchar val){ PCA0CPH0=~val+1;

      2011年6月12日13:30

      產(chǎn)

      */ 生

      PWM

      調(diào)

      用途:

      //高電平占空比為val/256 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      } void PWM1_set(uchar val){

      }

      /********************************************/ /* 名稱: L_Operation R_Operation

      /* */ /********************************************/ void L_FORD(uchar L_spe_ford){

      L_MOTO_FORD;

      PWM0_set(L_spe_ford);} void R_FORD(uchar R_spe_ford){

      R_MOTO_FORD;

      PWM1_set(R_spe_ford);} void L_BACK(uint L_spe_back){

      L_MOTO_BACK;

      PWM0_set(L_spe_back);

      }

      2011年6月12日13:30

      //高電平占空比為val/256 PCA0CPH1=~val+1;

      */ 用途:

      電機正反轉及速度的控制

      //電機速度 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      void R_BACK(uint R_spe_back){

      R_MOTO_BACK;

      PWM1_set(R_spe_back);

      } void L_BREAK(){

      L_MOTO_BREAK;

      } void R_BREAK(){

      R_MOTO_BREAK;

      }

      /********************************************/ /* 名稱: 定時器_Init

      */ /* 用途: 定時器初始化

      */ /********************************************/ void time_init()

      { CKCON=0X08;

      //12分頻與原分頻的選擇。把定時器1選為系統(tǒng)時鐘 TMOD=0X01;//定時器1的方式選擇為,把定時器1選為16位定時功能

      2011年6月12日13:30 智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      TH0=0X00;TL0=0X00;//定時器1重裝初值 ET0=1;//使能定時器1 TR0=1;//開定時器1 } /********************************************/ /* 名稱:lcddisplay顯示函數(shù)

      */ /* 用途:初始化

      */ /********************************************/

      void sendc(uchar c)//給1602的lcd送命令 {

      } void sendd(uchar c)//給1602的lcd送數(shù)據(jù)

      2011年6月12日13:30 lcdrs=0;lcdrw=0;lcdcs=1;//E的高脈沖 P7=c;delay(10);lcdcs=0;//E的高脈沖

      智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      { lcdrs=1;lcdrw=0;lcdcs=1;P7=c;delay(10);lcdcs=0;}

      void lcd_pos(uchar pos){ sendc(pos|0x80);}

      //發(fā)送地址定位函數(shù)

      void lcd_init(void)

      //lcd初始化函數(shù) { sendc(0x38);//8位,2行,5*7字體

      sendc(0x08);//顯示開,光標關;不閃

      sendc(0x01);//清屏

      sendc(0x06);delay1(1);

      2011年6月12日13:30

      智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      sendc(0x0C);}

      /********************************************/ /* 名稱:lcddisplay1

      */ /* 用途:第一次顯示

      */ /********************************************/ void lcddisplay1(void)

      //顯示主函數(shù) {

      line1[5]=table[sign%10];line1[4]=table[sign/10];line1[11]=table[second%10];line1[10]=table[second/10];line1[8]=table[minute%10];line1[7]=table[minute/10];sendc(0x01);lcd_pos(0x00);

      2011年6月12日13:30 uchar table[]={“0123456789”};uchar line1[]={“time00/00:00”};uchar i=0;sign++;智能尋跡小車

      組員:趙一鵬 艾博文 董羽曦

      for(i=0;i<12;i++)

      {

      sendd(line1[i]);

      delay(1);

      } }

      //時間顯示

      void display()

      //最后的顯示子函數(shù),顯示總時間,與結束標志。{ uchar table[]={“0123456789”};uchar i=0;uchar table1[]={“all_time:00:00”};uchar table2[]={“finish”};table1[13]=table[second%10];table1[12]=table[second/10];table1[10]=table[minute%10];table1[9]=table[minute/10];sendc(0x01);lcd_pos(0x00);while(table1[i]!='