第一篇:飛思卡爾技術報告個人小結
讀技術報告個人小結
最近這段時間讀了一些關于智能車的技術報告,現在我最大的感覺就是對智能車有了新的較為全面的一些了解,當然這也只是對智能車構造有了一些認識,不再像以前只是知道智能車的存在。在讀技術報告的過程中,我有了自己的收獲,同時也了解到了現在自身存在的問題。首先我想將自己所讀技術報告中的一些關鍵技術做一個簡單的總結。
電磁組
一.智能車機械結構調整與優化
關于智能車前輪定位的調整有以下幾個參數。主銷內傾和主銷后傾都有使汽車轉向自動回正,保持直線行駛的功能。不同之處是主銷內傾的回正與車速無關,主銷后傾的回正與車速有關,因此高速時主銷后傾回正作用大,低速時主銷內傾的回正作用大。前輪前束的作用是保證汽車的行駛性能,減少輪胎的磨損。前輪在滾動時,其慣性力自然將輪胎向內偏斜,如果前束適當,輪胎滾動時的偏斜方向就會抵消,輪胎內外側磨損的現象會減少.關于舵機的安裝可以使用站立式。系統執行一個周期所用的時間為5ms左右,舵機作出響應需要十多毫秒的時間,提高系統反應速度唯一的時間瓶頸是舵機的響應時間。因此,不斷優化舵機控制策略是令智能車平穩高速行駛的有效方法。在模型車制做過程中,賽車的轉向是通過舵機帶動左右橫拉桿來實現的。轉向舵機的轉動速度和功率是一定,要想加快轉向機構響應的速度,唯一的辦法就是優化舵機的安裝位置和其力矩延長桿的長度。由于功率是速度與力矩乘積的函數,過分追求速度,必然要損失力矩,力矩太小也會造成轉向遲鈍,因此設計時就要綜合考慮轉向機構響應速度與舵機力矩之間的關系,通過優化得到一個最佳的轉向效果。經過最后的實際的參數設計計算,最后得出一套可以穩定、高效工作的參數及機構。
為了達到較遠前瞻,必須把電感架到較遠的位置,會引起車重心特別靠前,后輪正壓力不足導致甩尾。為了使重心后移,可以通過調整傳感器支架的搭建方式,使得保證結構穩定的前提下盡量減輕重量。同時,可以把舵機和電池均往后移,以達到預期的效果。
在實際調試過程中還可以對車輪進行粘胎處理,以圖有效地防止由于輪胎與輪輞錯位而引起的驅動力損失的情況。二.智能車傳感器模塊設計
電感應選用10mH電感。只有在10mH電感中,得到感應電動勢曲線是較為規整的正弦波,頻率和賽道電源頻率一致,為20kHz,幅值較其他型號的大,且隨導線距離變化,規律為近大遠小。其他電感得到信號不好。
應用電動勢的大小和通過線圈回路的磁通量的變化率成正比。由于在導線周圍不同位置,磁感應強度的大小和方向不同,所以不同位置上的電感產生的感應電動勢也應該是不同。據此,則可以確定電感的大致位置。
利用電感傳感器識別路徑一般有兩種不同的方法:(1)數字型尋線算法。利用多個水平放置的電感傳感器,將整個賽道分為多個區域,感應電動勢最大的電感是最靠近導線的電感,來判斷電磁線的位置。這種查詢方式的優勢在于算法簡單,易于實現。但是這種方法采集到的信息是離散的點,不利于精細控制;且要用到多個電感,會加重車頭重量,增大小車的轉動慣量,造成小車在高速行駛時發生甩尾;且多個電感“一”字排布,不得不考慮離得太近時相鄰電感的互感作用。
(2)模擬型尋線算法。使用少數傳感器,直接使用感應電動勢的模擬量精確值來進行賽道的精確定位。該方式可以達到賽道精確定位的目的,同時可以利用歸一化的方法來解決每個電感線圈不完全相同的問題。這種方法的特點是用了較少個數的傳感器進行道路識別,而且充分利用MCU里的ADC功能。
利用模擬型尋線算法可用三個水平電感和兩個八字的電感用于計算小車偏離中線的位置。八字電感對出入處磁場比較敏感,可以提前檢測出入彎道,改善小車出入彎姿態,且順利通過直角彎道。三.彎道策略分析
當賽車進彎的的時候,需要對兩個參數進行設定:進彎的角度,進彎的速度。這兩個參數決定著賽車在彎道里面的路徑。
對于大彎來說,切彎的角度最好是切外彎,這樣賽車在以高速的情況下有時間進行調整速度和變換姿態。對于小彎來說,最好是切內彎,因為小彎不需要太多時間進行調整姿態和速度,只要直接沖過去就可以了。
入彎時急減速,以得到足夠的調整時間,獲得正確的轉向角度;在彎道內適當提速,并保持角度不變,為出彎時的加速節約時間;出彎時,先準確判斷標志,然后加速,雖然會耗費一些時間,但是面對連續變向彎道可以減少判斷出錯的概率,保證行駛狀態的穩定性,而且彎道內的有限加速對后面的提速也有很大的幫助。綜合考慮用可以接收的額外時間換回行駛穩定性還是值得的。四.PID控制算法
1.方向控制采用位置式PID控制。
將積分項系數Ki設為0,發現車能在直線高速行駛時仍能保持車身非常穩定,沒有震蕩,所以沒有必要使用Ki 參數。該控制方案調整為PD控制。2.速度控制算法的參數整定
速度控制采用增量式PID控制,由于工程整定方法,主要依賴工程經驗,直接在控制系統的試驗中進行,且方法簡單,可以采用這種方法,多次實驗得出Kp,Ki,Kd的值。
光電平衡組
單片機采用32位K60單片機作為核心控制單元用于智能汽車系統的控制。線性CCD采集賽道明暗信息,返回到單片機作為轉向控制的依據。加速度計返回的模擬信號作為車身當前角度的信號,陀螺儀采集車身轉動的角速度。主控輸出PWM波控制電機的轉速以保持車身的平衡和鎖定賽道。同四輪車不同,平衡組需要使用左右輪的差速來轉彎。為了控制的準確性和快速性,我們使用編碼器作為速度傳感器。編碼器返回的信號可以形成閉環,使用PID控制電機的轉速。平衡組強烈的加減速會導致車身的傾角劇烈變化,這并不利于車身保持平衡。因此整個調試過程就是要保證車身穩定的前提下不斷提高車模前進的平均速度。一.系統總體方案設計。
兩輪自平衡車模在運行時主要受三種方式對車模進行控制,分別是平衡控制、速度控制和方向控制,其中平行控制系統是一個倒立擺系統,簡單來說就是車模往一方向傾斜則需要往同方向加速運動使得車模傾角回歸重心。而車模的速度控制則是在獲取實際速度的基礎上,與車模給定速度進行對比,速度不足,則車模前傾(這又通過平衡控制實現傾角的變化)使車模加速到指定速度,車模的速度控制是在實際速度的反饋基礎上,通過平衡控制(角度環控制)去實現車模的加減速。車模方向的控制則是在獲取方向偏移之后在,在原先平衡控制和速度控制的基礎上,對車模的左右輪胎進行一定量的差速控制,實現車模速度的變化。
車轉彎的原則是:小車處于直道,則兩個車輪等速。小車處于彎道的曲率越大,則兩輪的差速越大。二.機械結構設計與優化 齒輪傳動機構調整的原則是:兩傳動齒輪軸保持平行, 齒輪間的配合間隙要合適,過松容易打壞齒輪,過緊又會增加傳動阻力,浪費動力;傳動部分要輕松、順暢,不能有遲滯或周期性振動的現象。
線性CCD的安裝位置要適當。光電車要檢測的賽道環境是由通過線性CCD采集賽道的圖像信息完成的。關于CCD的安裝位置,不宜過高,也不宜過低,具體而言可以采取折中的做法,將CCD用碳素桿支撐在智能車的頂端,貼上海綿作為攝像頭的防撞保護,智能車的穩定性明顯提高,視野也可以滿足目前的要求。車模直立控制程序就是利用經典的反饋控制思路,馬達作為驅動機構,車模是一個倒立擺,在程序的控制下通過給定不同的占空比,可以實現馬達的正轉與反轉,于是我們需要的就是車模姿態的反饋信息,即車模傾角與車模擺動方向的角速度。由于陀螺儀有嚴重的溫度漂移,對陀螺儀的積分并不能得到當前車身的準確角度,也就無法控制車身的平衡,因此為了得到當前的車身角度,必須使用加速度計。加速度計是一種測量加速度的傳感器,可以將加速度計當成測量重力加速度的傳感器,通過重力加速度的分量來檢測,檢測車體的傾斜角度,陀螺儀測量小車的角速度,采用加速度計和陀螺儀的融合數據結合小車的姿態可以保證結果的正確性。采用陀螺儀和加速度計兩個傳感器,利用二者信息的融合計算濾波,則可以達到很好的效果,基本上在一定的擾動下可以很好的反映車體實時的角度和角速度信息。
三.硬件電路的設計
硬件電路是模型汽車系統的必備部分。只有穩定的硬件電路才能保證程序的正確控制,硬件電路的設計思想是在保證正確檢測信號的前提下,盡可能精簡電路,減小電路板體積,優化結構。
光電平衡組需要驅動2 個電機,驅動的設計尤為重要。常用的電機驅動有兩種方式:
一、采用集成電機驅動芯片;
二、采用N 溝道MOSFET和專用柵極驅動芯片設計。
使用集成芯片的電路設計簡單,可靠性高,但是性能受限。由于比賽電機內阻僅為幾毫歐,而集成芯片內部的每個MOSFET 導通電阻在120 毫歐以上,大大增加了電樞回路總電阻,此時直流電動機轉速降落較大,驅動電路效率較低,電機性能不能充分發揮。
由于分立的N 溝道MOSFET 具有極低的導通電阻,大大減小了電樞回路總電阻。另外,專門設計的柵極驅動電路可以提高MOSFET 的開關速度,使PWM 控制方式的調制頻率可以得到提高,從而減少電樞電流脈動。并且專用柵極驅動芯片通常具有防同臂導通、硬件死區、欠電壓保護等功能,可以提高電路工作的可靠性。
四.軟件程序的設計
1.線性CCD中線提取的設計 對于線性CCD信息的處理,主要是對于當前幀獲取到的信息進行處理,并未將之前的信息存儲記憶(這對于后期提速略有限制)。在一幀圖像的基礎上,我們提取圖像值的上升沿作為跑道的右邊界,提取圖像的下降沿作為跑道的左邊界,然后兩個邊界值取平均作為識別到的跑道中線值,而這只是理想情況。很多情況下,跑道的信息十分復雜,往往存在多個上升沿和多個下降沿。因此,在處理跑道信息的過程中,需要對不同個數的上升沿和下降沿進行分類,對于上升沿和下降沿的位置分布情況進行辨識,然后將識別到的中線值反饋給方向控制函數進行方向控制。
我們的小車僅采用一路CCD對賽道信息進行識別,一個CCD包含128個 像素點,但這128個點并不是所有的點都能夠被準確獲取灰度值,我們選擇采用左右各48個像素點來對賽道信息進行采集。在直道時,兩側都會檢測到賽道邊沿,且大體處于中間位置,左右較對稱;在小彎道時,兩側都會檢測到賽道邊沿,但會有小幅地左右擺動;在其它彎道時,會出現左右側跳變沿出賽道的狀況,這時主要依靠一側CCD進行巡線;在十字的時候,回旋全白的時候,在傳感器穩定的前提下,能出現全白的也只會在十字的時候出現,當然小S 虛線位置也不排除會有全白的情況發生,雖說黑白線時左右對稱的,但是黑白條的長度固定十公分,內側長度遠不及外側長度,無可避免的會多次出現單側全白的情況;終點 線依靠CCD 返回值具有駝峰形狀的賽道信息返回值來測得。2.線性CCD 傳感器路徑識別算法
路徑識別算法是我們使用的是由CCD 中心向兩側搜索提取跳變沿的算法,通過提取到的兩側跳變沿相加除二來得到小車轉向需要的轉向值。當CCD檢測到連續4 場全黑的情況下,我們便默認為小車前方出現了路障,并對速控以及轉向進行處理,進而達到平穩過路障得效果。
攝像頭組
系統概述:以系統控制處理器為核心,采用基于模擬攝像頭的圖像采集模塊獲取賽道圖像信息,對圖像進行硬件二值化,提取黑色引導線,算出賽道中心線,計算出小車與賽道中心線的位置偏差;通過編碼器來檢測車速,并采用編碼器的輸入捕捉功能進行脈沖計算獲得速度;轉向舵機采用PD控制;驅動電機采用 PID控制,通過PWM控制驅動電路調整電機的功率;而車速的目標值由默認值、運行安全方案和基于圖像處理的優化策略進行綜合控制。一.智能車機械結構調整與優化 1.攝像頭的選擇
因為COMS攝像頭具有體積小、質量輕、功耗低,圖像動態特性好等優點,因為小車隊圖像的清晰度,分辨率要求并不高,所以選用COMS。2.攝像頭的安裝
攝像頭支架的選取,支架與車模的固定,攝像頭與支架的固定等,都會對小車的性能造成很大的影響。因此可以選取輕質碳桿作為攝像頭的支架,并購買合適的器件將支架和車模牢牢的固定在一起,防止小車在運行過程中大幅抖動。二.智能車硬件系統設計與實現 1.電機驅動模塊
電機驅動電路對于智能車的速度控制有著至關重要的作用,較好的制動能力和加速對于提高小車的速度有著很大的幫助。電機的速度與施加在電機上的電壓成正比,輸出轉矩與電機的電流成正比。因為在智能車行駛過程中要改變直流電機的轉速,采用一個PWM(脈寬調制)方波,施加在直流電機上的PWM波的占空比對應著智能車所需的速度,電機起到一個低通濾波器的作用,將PWM信號轉換為有效的直流電平。PWM信號可以由K60單片機產生,用精準的脈沖寬度可以調節直流電機的轉 速,并且要優化PWM信號的頻率,以防止電機抖動。更換直流電機的電流方向,可以控制直流電機的轉動方向。
通過光電編碼器測量出智能車的車速,在軟件中編寫速度控制程序,通過改變PWM波的占空比來調節車速。2.視頻分離模塊
我們的智能模型車自動控制系統中可以使用黑白全電視信號格式CMOS攝像頭采集賽道信息。攝像頭視頻信號中除了包含圖像信號之外,還包括了行同步信號、行消隱信號、場同步信號、場消隱信號以及槽脈沖信號、前均衡脈沖、后均衡脈沖等。因此,若要對視頻信號進行采集,就必須通過視頻同步分離電路準確地把握各種信號間的邏輯關系。使用LM1881芯片對黑白全電視信號進行視頻同步分離,可以得到行同步、場同步信號。三.軟件設計與優化 1.黑線提取
提取黑線是整個圖像處理的關鍵部分,只有正確的把有效路徑提取出來,排除不利干擾,才能正確的控制智能車,使小車穩定的運行。因為我們采集到的是二值化后的圖像,所以我們所得到的圖像信息是0 和1 的組合,白色底板在數值上體現為1,黑線在數值上的體現為0。2.智能車的轉向控制算法
智能車的舵機采用位置式PD控制,因為舵機的控制精度高,不同的PWM占空比對應舵機的不同轉角,所以采用開環控制。當小車位于直道時,將舵機擺正;當小車位于彎道時,彎道的曲率越大則舵機的轉角擺角越大,利用圖像的加權平均偏差與圖像中心之差作為控制量。
以上便是我對競速組技術報告中的一些關鍵技術做的匯總。在我讀技術報告包括最后的匯總過程中,我也發現了電磁組、光電平衡組及攝像頭組中有很大一部分相似的地方,但又各不相同。這個過程下來,我感覺首先對智能車的各個器件有了初步的了解,對器件的功能及作用有了最初的認識,對智能車系統有了整體的認知,這是我感覺自己讀技術報告最大的收獲。在我的匯總中,大部分都是我對自己可以理解的技術思想的總結,主要包括了機械部分結構設計與優化,這部分三個組有很多相通之處,但又各不相同。對硬件電路部分我感覺有些陌生,只是知道其構成,對于原理及電路圖的設計當然需要更深層次的了解。軟件設計根據組別的不同差別最大,在理解上給我的感覺最困難的是攝像頭組的信息處理過程。調試模塊則基本上沒有涉及,我感覺這一部分更是需要靠實際操作來完成的。
讀過了技術報告,我想這只是能告訴我智能車系統的一個整體流程,至于說到親自動手做則需要自己去學習和嘗試更多的知識與方法。
第二篇:飛思卡爾實習報告
中南大學
Central South University
飛思卡爾實驗報告
學生姓名:應曉偉 指導老師:李志民 學院:信息科學與工程學院 專業班級:自動化1106班 完成日期:2013年9月12日
目錄
一、實驗目的………………………………………………………..2
二、實驗內容………………………………………………………..2
三、實驗電路圖…………………………………………………….3
四、實驗說明………………………………………………………..6
五、實驗方法及步驟…………………………………………....7
六、實驗總結……………………………………………………….10
一、實習目的
1、熟悉飛思卡爾試驗箱的操作。
2、掌握codewarrierr軟件的使用方法。
3、初步了解如何使用c語言編寫飛思卡爾單片機程序。
二、實驗內容
實驗1.1
流水燈
利用PORTB 口的低4 位驅動4 位LED 燈,實現4 位LED 燈明燈流水操作。
實驗1.2
撥碼開關控LED 燈
讀取PORTB 口高4 位連接的4 位撥碼開關狀態,將讀取到的撥碼開關狀態用 PORTB 口低4 位連接的LED 燈顯示。
實驗1.3
動態數碼管顯示
系統上電后首先單8 左移顯示,然后0-7 順次左移顯示,緊接著7-0 順次 右移顯示,再 0-7 全部閃爍顯示,并重復以上動作。
實驗1.4 矩陣鍵盤
編寫鍵盤掃描程序,當矩陣鍵盤模塊有按鍵按下時,讀取鍵值,并利用數碼 管顯示鍵值。系統上電后8 位數碼管以5-4-3-2-1 倒計數顯示,待顯示值為1 后,數碼管清除顯示,此時按下矩陣鍵盤按鍵,數碼管顯示對應鍵值。
實驗1.5 LCD(0802)顯示
利用LCD(0802)液晶顯示器,顯示兩排數字。
實驗1.6 LCD(12864)顯示
使用OCM12864-2 液晶顯示器,顯示漢字。
實驗1.7 蜂鳴器驅動
利用GPIO 端口中的某一位驅動蜂鳴器。
實驗1.8 繼電器驅動
利用GPIO 端口中的某一位驅動繼電器。
三、實驗電路圖
實驗1.1 流水燈
實驗1.2 撥碼開關控LED 燈
實驗1.3 動態數碼管顯示
實驗1.4 矩陣鍵盤
實驗1.5 LCD(0802)顯示
實驗1.6 LCD(12864)顯示
實驗1.7 蜂鳴器驅動
實驗1.8 繼電器驅動
四、實驗說明
實驗1.1 流水燈
1、PORTB 口寄存器初始化。
2、送數據給PORTB 口顯示,并延時一定時間。
3、改變數據,重復2。
實驗1.2 撥碼開關控LED 燈
1、PORTB 口寄存器初始化;
2、讀取PORTB 數據,將數據右移4 位;送PORTB 口顯示;
3、重復2。
實驗1.3 動態數碼管顯示
1、GPIO 相關寄存器初始化;
2、選中數碼管第一位,送段碼顯示第一個數據;
3、移動位碼,送下個數據的段碼,以此類推,實現移位顯示與動態顯示。
實驗1.4 矩陣鍵盤
1、GPIO 相關寄存器的初始化。2、8 位數碼管以5-4-3-2-1 倒計數顯示。
3、掃描按鍵,鍵值送數碼管顯示。
4、重復操作3。
實驗1.5 LCD(0802)顯示
1、驅動LCD(0802)GPIO 口相關寄存器初始化;
2、LCD(0802)初始化;
3、在LCD 屏上分行顯示“01234567”和“ABCDEFGH”。
實驗1.6 LCD(12864)顯示
1、驅動LCD(12864)的GPIO 相關寄存器初始化;
2、LCD(12864)控制器的初始化,延時及清屏;
3、在LCD 屏上顯示“歡迎使用”。
實驗1.7 蜂鳴器驅動
1、相應端口寄存器初始化;
2、送數據到相應I/O 口,間斷驅動蜂鳴器。
實驗1.8 繼電器驅動
1、相應端口寄存器初始化;
2、送數據到相應I/O 口,驅動繼電器間歇動作。
五、實驗步驟與方法
實驗1.1 流水燈
1、接線說明:
本實驗無需外部接線,只需要使用跳線帽短接核心板上JP_1 處標號為PB0~ PB3 的跳線即可。
2、運行程序,觀察LED 燈亮滅情況。
實驗1.2 撥碼開關控LED 燈
1、接線說明:
本實驗無需外部接線,只需要使用跳線帽短接核心板上JP_1 處標號為PB0~ PB7 的跳線即可。
2、運行程序,改變撥碼開關的狀態,觀察LED 燈的顯示變化。
實驗1.3 動態數碼管顯示
實驗系統底板的8 位8 段數碼管模塊的段碼接線說明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)* 注1:J_SEG-1 表示插座的標識名稱,后面括號中的A 表示該引腳的作用,后文均使用該方法描述,就不再重復說明了。
*注2:IO065 后括號中的PA0 表示當HF-ExBoard 實驗系統使用 HF-MC9S12XS128EVB-A 核心板時,實驗系統底板 的IO065 接口對應 MC9S12XS128EVB 的PA0,后文均使用該方法描述,就不再重復說明了。8 位8 段數碼管模塊的位碼接線說明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)*注3:IO051(PH7)對應的COM0 為8 位數碼管中最左邊第一位。
2、運行程序,觀察數碼管的顯示。
實驗1.4 矩陣鍵盤
實驗系統底板的4x4 矩陣鍵盤接線說明: J_Key-1(R0)-----IO092(PS0)J_Key-2(R1)-----IO091(PS1)J_Key-3(R2)-----IO094(PS2)J_Key-4(R3)-----IO093(PS3)J_Key-5(C0)-----IO096(PS4)J_Key-6(C1)-----IO095(PS5)J_Key-7(C2)-----IO098(PS6)J_Key-8(C3)-----IO097(PS7)實驗系統底板的8 位8 段數碼管模塊的段碼接線說明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)8 位8 段數碼管模塊的位碼接線說明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)
2、運行程序,觀察數碼管顯示變化。按下按鍵,觀察數碼管顯示變化。
實驗1.5 LCD(0802)顯示
實驗系統底板0802 液晶模塊的LCD 數據口信號接線說明: J_0802B_1-5(DB0)----IO065(PA0)J_0802B_1-6(DB1)----IO066(PA1)J_0802B_1-7(DB2)----IO067(PA2)J_0802B_1-8(DB3)----IO068(PA3)J_0802B_1-9(DB4)----IO069(PA4)J_0802B_1-10(DB5)----IO070(PA5)J_0802B_1-11(DB6)----IO071(PA6)J_0802B_1-12(DB7)----IO072(PA7)實驗系統底板0802 液晶模塊的LCD 控制口信號接線說明: J_0802B_1-1(RS)-----IO013(PK5)J_0802B_1-2(R/W)----IO014(PK4)J_0802B_1-3(EN)-----IO015(PK3)
2、運行程序,觀察實驗現象。
實驗1.6 LCD(12864)顯示 實驗系統底板128x64 液晶模塊的液晶數據口信號接線說明: J_12864-4(DB0)-----IO065(PA0)J_12864-5(DB1)-----IO066(PA1)J_12864-6(DB2)-----IO067(PA2)J_12864-7(DB3)-----IO068(PA3)J_12864-8(DB4)-----IO069(PA4)J_12864-9(DB5)----IO070(PA5)J_12864-10(DB6)---IO071(PA6)J_12864-11(DB7)---IO072(PA7)實驗系統底板128x64 液晶模塊的液晶控制口信號接線說明: J_12864-1(D/I)-----IO011(PK6)J_12864-2(R/W)-----IO013(PK5)J_12864-3(E)-------IO014(PK4)J_12864-12(CS1)----IO015(PK3)J_12864-13(CS2)----IO016(PK2)注:實驗指導書提供的接線說明根據金鵬OCM12864-2 型液晶編寫,如果 使用其它型號的12864 液晶模塊,可能液晶模塊的引腳定義有差異,只需要依據
具體使用的液晶引腳修改接線即可完成該實驗。
2、運行程序,觀察實驗現象。
實驗1.7 蜂鳴器驅動
實驗系統底板的蜂鳴器控制模塊區域的蜂鳴器控制端接線說明: J_ Beep(Beep)----IO061(PE3)
2、運行程序,觀察現象。
實驗1.8 繼電器驅動
實驗系統底板的繼電器控制模塊的繼電器控制端接線說明: J_Relay(Relay)----IO061(PE3)使用跳線帽短接實驗系統底板繼電器控制模塊JP_LED 處的跳線。使用跳線帽短接實驗系統底板繼電器控制模塊JP_Power 處的跳線。
2、運行程序,觀察現象。
六、實驗總結
通過這幾天的上機實驗,讓我學會了很多新的知識。基本掌握了codewarrierr的使用方法,能夠利用該軟件熟練地編譯下載程序。通過這幾天的學習,讓我對飛思卡爾試驗箱也有了一定的了解,而且這八個實驗做下來也感覺很有意思,每次對代碼進行一些小的改動出來效果以后,都感覺挺有趣的。不過在這幾天的學習,我也發現了一些問題,那就是才編程方面的缺陷,有些以前的知識都已經忘了,有些程序都看不太懂了,我覺得以后我應該好好復習一下,把以前學的知識都拿回來。
第三篇:飛思卡爾實驗報告
中南大學
Central South University
飛思卡爾實驗報告
學生姓名:葉吉東
指導老師:王擊
學院:信息科學與工程學院
專業班級:自動化1204班
完成日期:2014年09月21日
目錄
實驗1.1 流水燈………………………………..………………………………...3 實驗1.2 撥碼開關控LED 燈…………………....…………………………........4 實驗1.3 動態數碼管顯示…………………………….………………………....5 實驗1.4 矩陣鍵盤……………………………………………………………....6 實驗1.5 LCD(0802)顯示………………………………………………………..8 實驗1.6 LCD(12864)顯示…………………………………….………………..10 實驗1.7 蜂鳴器驅動………………………………………………………..….11 實驗1.8 繼電器驅動…………………………………..……………………….12
實驗1.1 流水燈
一、實驗目的:
1、掌握GPIO 口基本寄存器的使用,掌握如何將GPIO 作為輸出口。
2、初步了解如何使用C 語言編寫飛思卡爾單片機程序。
二、實驗內容
利用PORTB 口的低4 位驅動4 位LED 燈,實現4 位LED 燈明燈流水操作。
三、實驗電路圖
四、實驗說明
1、PORTB 口寄存器初始化。
2、送數據給PORTB 口顯示,并延時一定時間。
3、改變數據,重復2。
五、實驗方法及步驟
1、接線說明:
本實驗無需外部接線,只需要使用跳線帽短接核心板上JP_1 處標號為PB0~ PB3 的跳線即可。
2、運行程序,觀察LED 燈亮滅情況。
六、心得體會
這是我利用單片機進行的第一次實驗,之前也沒有接觸過單片機,通過這次實驗我大概了解了單片機的編程方法。它跟我們上個學期學過的微機原理很像,編程方法非常類似,這使得我也很容易看懂這個程序。最后我還做了課后思考題,發現只要延時時間縮短就可以達到閃爍的效果了。通過這一次實驗讓我對單片機有了初步的了解。為接下來的實驗打下了基礎。實驗1.2 撥碼開關控LED 燈
一、實驗目的:
1、掌握GPIO 口的讀寫操作。
2、進一步了解C 語言在飛思卡爾單片機中的編程規范及技巧。
二、實驗內容:
讀取PORTB 口高4 位連接的4 位撥碼開關狀態,將讀取到的撥碼開關狀態用 PORTB 口低4 位連接的LED 燈顯示。
三、實驗電路圖:
四、實驗說明:
1、PORTB 口寄存器初始化;
2、讀取PORTB 數據,將數據右移4 位;送PORTB 口顯示;
3、重復2。
五、實驗方法及步驟:
1、接線說明:
本實驗無需外部接線,只需要使用跳線帽短接核心板上JP_1 處標號為PB0~ PB7 的跳線即可。
2、運行程序,改變撥碼開關的狀態,觀察LED 燈的顯示變化。
六、心得體會
這一次的實驗跟第一次的實驗基本類似,知識這次所需要連的線要多一些而已。通過這一次的實驗,進一步了解GPIO 口的讀寫操作。進一步了解C 語言在飛思卡爾單片機中的編程規范及技巧。
實驗1.3 動態數碼管顯示
一、實驗目的:
1、了解數碼管動態顯示的方法。
2、掌握2803 的驅動原理。
二、實驗內容:
系統上電后首先單8 左移顯示,然后0-7 順次左移顯示,緊接著7-0 順次 右移顯示,再 0-7 全部閃爍顯示,并重復以上動作。
三、實驗電路圖:
四、實驗說明:
1、GPIO 相關寄存器初始化;
2、選中數碼管第一位,送段碼顯示第一個數據;
3、移動位碼,送下個數據的段碼,以此類推,實現移位顯示與動態顯示。
五、實驗方法及步驟:
1、接線說明: 實驗系統底板的8 位8 段數碼管模塊的段碼接線說明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)8 位8 段數碼管模塊的位碼接線說明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)
六、心得體會:
這次的實驗連線比較復雜,這使得我第一次的連線并沒有連正確,演示的時候出來的是亂碼。然后我就慢慢檢查,終于發現了錯誤所在,是我并沒有看清實驗指導書連線而是憑著自己的感覺經驗然后連線的,結果就出錯了,所以我們做實驗額時候一定得細心,要不然就會容易出錯。看著實驗箱上的實驗結果,就聯想到了我們日常生活中到處可見的LED燈。這讓我越來越覺得單片機實現的功能在生活中到處可見。
實驗1.4 矩陣鍵盤
一、實驗目的:
1、了解矩陣鍵盤掃描原理。
2、掌握矩陣鍵盤編程方法。
二、實驗內容:
編寫鍵盤掃描程序,當矩陣鍵盤模塊有按鍵按下時,讀取鍵值,并利用數碼 管顯示鍵值。系統上電后8 位數碼管以5-4-3-2-1 倒計數顯示,待顯示值為1 后,數碼管清除顯示,此時按下矩陣鍵盤按鍵,數碼管顯示對應鍵值。
三、實驗電路圖:
四、實驗說明:
1、GPIO 相關寄存器的初始化。2、8 位數碼管以5-4-3-2-1 倒計數顯示。
3、掃描按鍵,鍵值送數碼管顯示。
4、重復操作3。
五、實驗方法及步驟:
1、接線說明:
實驗系統底板的4x4 矩陣鍵盤接線說明: J_Key-1(R0)-----IO092(PS0)J_Key-2(R1)-----IO091(PS1)J_Key-3(R2)-----IO094(PS2)J_Key-4(R3)-----IO093(PS3)J_Key-5(C0)-----IO096(PS4)J_Key-6(C1)-----IO095(PS5)J_Key-7(C2)-----IO098(PS6)J_Key-8(C3)-----IO097(PS7)實驗系統底板的8 位8 段數碼管模塊的段碼接線說明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)8 位8 段數碼管模塊的位碼接線說明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)
2、運行程序,觀察數碼管顯示變化。按下按鍵,觀察數碼管顯示變化。
六、心得體會:
這次做的是矩陣鍵盤的實驗,通過前幾次實驗,對單片機實驗有了一定的了解,所以我這次并沒有一開始就連線,我先打開程序然后花了好長一段時間了解矩陣鍵盤掃描原理,發現程序是通過不斷循環掃描的方法來檢測按鍵是否按下。通過這次試驗我基本了解矩陣鍵盤的編程方法。
實驗1.5 LCD(0802)顯示
一、實驗目的:
1、掌握GPIO 口控制外設的方法。
2、熟悉LCD(0802)的指令系統。
二、實驗內容: 利用LCD(0802)液晶顯示器,顯示兩排數字。
三、實驗電路圖:
四、實驗說明:
1、驅動LCD(0802)GPIO 口相關寄存器初始化;
2、LCD(0802)初始化;
3、在LCD 屏上分行顯示“01234567”和“ABCDEFGH”。
五、實驗方法及步驟:
1、接線說明:
實驗系統底板0802 液晶模塊的LCD 數據口信號接線說明: J_0802B_1-5(DB0)----IO065(PA0)J_0802B_1-6(DB1)----IO066(PA1)J_0802B_1-7(DB2)----IO067(PA2)J_0802B_1-8(DB3)----IO068(PA3)J_0802B_1-9(DB4)----IO069(PA4)J_0802B_1-10(DB5)----IO070(PA5)J_0802B_1-11(DB6)----IO071(PA6)J_0802B_1-12(DB7)----IO072(PA7)
實驗系統底板0802 液晶模塊的LCD 控制口信號接線說明: J_0802B_1-1(RS)-----IO013(PK5)J_0802B_1-2(R/W)----IO014(PK4)J_0802B_1-3(EN)-----IO015(PK3)
2、運行程序,觀察實驗現象。
六、心得體會:
這次實驗我還是像上次一樣,先把實驗內容看一下,然后就直接看程序。剛開始的程序是LCD(0802)GPIO 口相關寄存器初始化和LCD(0802)初始化,看了半個多小時也是似懂非懂,接下來看的是LCD顯示“01234567”和“ABCDEFGH”的程序,這些程序應該都是應該查表得出來的,我也沒有必要看懂,所以我就連線進行實驗了,通過這次試驗我還是能夠初步掌握GPIO 口控制外設的方法和熟悉LCD(0802)的指令系統。
實驗1.6 LCD(12864)顯示
一、實驗目的:
1、掌握GPIO 口控制外設的方法。
2、熟悉LCD(12864)的指令系統。
二、實驗內容:
使用OCM12864-2 液晶顯示器,顯示漢字。
三、實驗電路圖:
四、實驗說明:
1、驅動LCD(12864)的GPIO 相關寄存器初始化;
2、LCD(12864)控制器的初始化,延時及清屏;
3、在LCD 屏上顯示“歡迎使用”。
五、實驗方法及步驟:
1、接線:
實驗系統底板128x64 液晶模塊的液晶數據口信號接線說明: J_12864-4(DB0)-----IO065(PA0)J_12864-5(DB1)-----IO066(PA1)J_12864-6(DB2)-----IO067(PA2)J_12864-7(DB3)-----IO068(PA3)J_12864-8(DB4)-----IO069(PA4)J_12864-9(DB5)----IO070(PA5)J_12864-10(DB6)---IO071(PA6)J_12864-11(DB7)---IO072(PA7)實驗系統底板128x64 液晶模塊的液晶控制口信號接線說明: J_12864-1(D/I)-----IO011(PK6)J_12864-2(R/W)-----IO013(PK5)J_12864-3(E)-------IO014(PK4)J_12864-12(CS1)----IO015(PK3)J_12864-13(CS2)----IO016(PK2)實驗1.7 蜂鳴器驅動
一、實驗目的:
了解蜂鳴器的使用和驅動方法。
二、實驗內容:
利用GPIO 端口中的某一位驅動蜂鳴器。
三、實驗電路圖:
四、實驗說明:
1、相應端口寄存器初始化;
2、送數據到相應I/O 口,間斷驅動蜂鳴器。
五、實驗方法及步驟:
1、接線說明:
實驗系統底板的蜂鳴器控制模塊區域的蜂鳴器控制端接線說明: J_ Beep(Beep)----IO061(PE3)
2、運行程序,觀察現象。
六、心得體會:
通過本次實驗,熟悉了實驗板中蜂鳴器工作原理,掌握編程控制蜂鳴器播 放音樂。掌握單片機編程控制蜂鳴器發出不同頻率聲音的方法;雖然在本次試驗中遇到了的問題,都在同學和老師的幫助下解決了,同時還進一步了解了單片機方面的有關知識。
實驗1.8 繼電器驅動
一、實驗目的:
了解繼電器的使用和驅動方法。
二、實驗內容:
利用GPIO 端口中的某一位驅動蜂鳴器。
三、實驗電路圖:
四、實驗說明:
1、相應端口寄存器初始化;
2、送數據到相應I/O 口,驅動繼電器間歇動作。
五、實驗方法及步驟:
1、接線說明:
實驗系統底板的繼電器控制模塊的繼電器控制端接線說明: J_Relay(Relay)----IO061(PE3)使用跳線帽短接實驗系統底板繼電器控制模塊JP_LED 處的跳線。使用跳線帽短接實驗系統底板繼電器控制模塊JP_Power 處的跳線。
2、運行程序,觀察現象。
六、心得體會:
通過這八天的實驗和八次實驗,讓我學會了很多新的知識。能夠利用該軟件熟練地編譯下載程序。通過這幾天的學習,讓我對飛思卡爾試驗箱也有了一定的了解,而且這八個實驗做下來也感覺很有意思,每次對代碼進行一些小的改動出來效果以后,都感覺挺有趣的。不過在這幾天的學習,我也發現了一些問題,那就是才編程方面的缺陷,有些以前的知識都已經忘了,有些程序都看不太懂了,我覺得以后我應該好好復習一下,把以前學的知識都拿回來。
第四篇:單片機(飛思卡爾)課程設計報告
2011年 6 月
1設計要求:
LCD的第一行顯示運算式,第二行顯示運算結果。比如要計算機12+34,在鍵盤上按下相應鍵后,LCD的第一行顯示“12+34”,按下“=”號后,LCD的第二行顯示“=46”。其他功能參考普通計算器。
擴展功能:負數、小數運算、復合運算。連續運算、2進制、8進制運算。
亦可直接在LCD上顯示一個計算器,用觸摸屏操作。
2設計思路
在LCD上顯示一個與鍵盤功能相同的計算器,可實現用鍵盤、觸摸屏混合操作。
1、在LCD顯示屏上按下某一個符號或者在鍵盤上某一個按鍵符號時,將相應字符存入數組中
并顯示在LCD上。
2按下“=”就運算處理并在第二行顯示計算結果。
3、按下“C”就進行退格操作。
4、按下“=”后顯示結果,并且能連續運算,其中,將操作數和操作碼全部顯示在第一行,第二行顯示當前計算結果。
5、當出現連續按兩個操作符、按等號前一個字符為操作符、最開始按下的不是操作數等非法輸
入時,自動在LCD屏幕上報錯并實現清屏重啟計算器。
3設計步驟
1、添加基本計算器的+、-、*、/ 四則運算和退格功能;
2、在1的基礎上實現復合運算和連續操作;
3、在LCD上通過調用函數在下方畫出計算器的按鍵圖畫并實現與鍵盤同等的功能;
4、綜合調試并進行優化。
4程序流程(含流程圖及詳細步驟解釋)
詳細步驟解釋
程序運行時即進行初始化,在LCD顯示屏上顯示計算器界面。接著判斷是否有鍵盤按鍵按下或者有觸屏,沒有就繼續掃描判斷,有則將按下的鍵所對應的字符存入數組savedata。在此之中,也在判斷鍵入的字符是否是退格鍵,如果是則將上一個字符清除掉。當檢測到字符“=”時,將savedata數組中所存儲的字符分離,其中,數值存在操作數數組op1中,操作符存在操作符數組op2中,然后進行運算。運算開始時,先掃描op2數組,當檢測到操作符則將op1數組中對應操作符前后的兩個操作數進行運算(先乘除后加減),結果放在兩個操作數的前一個的位置,將op1和op2數組向前移動一個位置以覆蓋已經運算過的操作數和操作符。當繼續進行連續運算時,將字符繼續存到savedata數組后面,否則清除op1的值,將字符存到savedata數組第一個開始的位置。
程序中考慮了各種非法輸入的情況:當連續輸入兩個操作符時、當按“=”時檢測到前一個字符是操作符時、當程序第一個字符不是操作數時,都報錯,自動清屏并重啟計算器。
按照實際中計算器的原則,當按下“=”后,退格鍵不能清除,比如1+2=3;不能將“2”、“+”、“1”退格。如果是連續運算,繼續按下“-3+8/2”時,退格鍵有效,能清“-3+8/2”中的字符。清除后繼續連續運算。
5操作步驟及方法
下載完程序后:
1、普通計算:例如計算123+456,直接在顯示屏上連續觸發“123+456”,然后觸“=” 就可以在第二行顯示=579;
2、連續運算。例如先計算123+456,結果為579,此時再按下“+” “1” 先在第一行顯示123+456+1,在第二行就會顯示=580,再按下“-” “9”,第一行顯示123+456+1-9,在第二行就會顯示=571,依次類推。
3、當輸入的字符是非法輸入時,在LCD第三行顯示 illeagle enter!然后自動清屏重啟計算器。
6設計過程遇到的問題、原因及解決方法
第五篇:飛思卡爾智能車比賽個人經驗總結
先靜下心來看幾篇技術報告,可以是幾個人一起看,邊看邊討論,大致了解智能車制作的過程及所要完成的任務。
看完報告之后,對智能車也有了大概的了解,其實總結起來,要完成的任務也很簡單,即輸入模塊——控制——輸出。
(1)輸入模塊:各種傳感器(光電,電磁,攝像頭),原理不同,但功能都一樣,都是用來采集賽道的信息。這里面就包含各種傳感器的原理,選用,傳感器電路的連接,還有傳感器的安裝、傳感器的抗干擾等等需要大家去解決的問題。
(2)控制模塊:傳感器得到了我們想要的信息,進行相應的AD轉換后,就把它輸入到單片機中,單片機負責對信息的處理,如除噪,篩選合適的點等等,然后對不同的賽道信息做出相應的控制,這也是智能車制作過程中最為艱難的過程,要想出一個可行而又高效的算法,確實不是一件容易的事。這里面就涉及到單片機的知識、C語言知識和一定的控制算法,有時為了更直觀地動態控制,還得加入串口發送和接收程序等等。
(3)輸出模塊:好的算法,只有通過實驗證明才能算是真正的好算法。經過分析控制,單片機做出了相應的判斷,就得把控制信號輸出給電機(控制速度)和舵機(控制方向),所以就得對電機和舵機模塊進行學習和掌握,還有實現精確有效地控制,又得加入閉環控制,PID算法。
明確了任務后,也有了較為清晰的控制思路,接下來就著手弄懂每一個模塊。雖然看似簡單,但實現起來非常得不容易,這里面要求掌握電路的知識,基本的機械硬件結構知識和單片機、編程等計算機知識。最最困難的是,在做的過程中會遇到很多想得到以及想不到的事情發生,一定得細心地發現問題,并想辦法解決這些問題。
興趣是首要的,除此之外,一定要花充足的時間和精力在上面,畢竟,有付出就會有收獲,最后要明確分工和規劃好進度。