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