




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
......嵌入式系統設計專題實踐交通燈控制系統專業:電子信息工程班級:電子1102班學生姓名:王石巖學號:1110910213指導教師:高華.....目錄HYPERLINK一、方案設計與論證3HYPERLINK1.1系統任務描述3HYPERLINK1.2系統方案設計4HYPERLINK1.3系統框圖5HYPERLINK二、硬件電路設計5HYPERLINK2.1K60P144M100SF2RM最小系統設計5HYPERLINK2.2數碼管顯示模塊設計7HYPERLINK2.3交通燈指示模塊設計8HYPERLINK三、系統軟件設計8HYPERLINK3.1系統軟件流程圖8HYPERLINK3.2500ms定時器子程序設計9HYPERLINK3.3計數顯示子程序設計10HYPERLINK四、系統調試12HYPERLINK4.1硬件調試11HYPERLINK4.2軟件調試11HYPERLINK4.3綜合調試12HYPERLINK五、總結12HYPERLINK六、心得體會12HYPERLINK七、附錄13HYPERLINK7.1系統實物圖13HYPERLINK7.2程序代碼14HYPERLINK7.3參考文獻19摘要當前伴隨著信息化社會的快速發展,國家不斷走向繁榮昌盛。與此同時,快節奏也成為當代人們在各大城市的主要特征。當今社會上汽車越來越多,為了減少城市交通阻塞和維持良好穩定的交通次序、加強對道路的管理力度。因此合理設計交通燈控制系統對維護道路安全和社會交通次序有著不可替代的作用。本文主要闡述交通燈控制系統的設計原理和過程,采用飛思卡爾K60作為系統的控制芯片,對系統的軟件和硬件進行模塊化設計,最終實現了基于飛思卡爾K60芯片的交通燈控制系統。該系統用紅、黃、綠三種顏色的發光二極管來代替三種實際中的交通燈,在控制器的驅動下來形象化的演示實際中交通燈的運行模式和工作過程。最終該系統實現了對車輛直行、左轉、停止等待等基本功能。能夠有效地對城市中的車輛產生明確的指導和控制。關鍵詞:交通燈K60P144M100SF2RM數碼管定時顯示一、方案設計與論證系統任務描述本次設計中根據實際需要,結合嵌入式系統的特點,完成對交通燈的控制系統設計。系統功能包括實現對車輛的直行,左拐、停止等待等功能。基于飛思卡爾K60P144M100SF2RM控制器,實現對車輛進行指導控制。本系統中主要由控制器最小系統、數碼管顯示模塊、交通燈模塊等相關模塊構成。系統任務包括三個環節。假設十字路口南北方向為主干車道,東西方向為支干道。狀態一:南北方向、東西方向均設有紅、黃、綠三個指示燈。首先南北方向綠燈亮一分鐘、東西方向紅燈亮一分鐘。此時處于向北方向的車輛處于綠燈狀態,可以直行通過十字路口,而處于向東方向的車輛由于是紅燈等待則不能前行,需在線外等待向東方向的綠燈來臨才能前行。狀態二:一分鐘之后,北方向的綠燈變為黃燈亮,且亮十秒鐘。而在向東方向的紅燈還沒轉變狀態,紅燈此時會連續閃爍10秒鐘,作為東西方向將變成綠燈通行狀態的提示。與此同時,向西方向的左轉指示燈會變亮,也是亮10秒鐘,車輛可以左轉。狀態三:10秒鐘過后,北方向的黃燈滅,紅燈亮60秒,處于主干道上的車輛不能直行通過。與此同時東方向的紅燈會滅,綠燈亮60秒,處于干道上的車輛可以直行。向北方向的車輛不能左轉。左轉指示燈會熄滅。狀態三執行完畢重新進入狀態一開始執行,整過過程在K60控制器上電以后就進入工作狀態,無需人工干預。圖1—1為系統的工作狀態圖:狀態二10秒狀態三60狀態二10秒狀態三60秒狀態一60秒:圖1—1系統的工作狀態圖圖1—2系統的工作方式圖1.2系統方案設計本系統基于K60P144M100SF2RM控制器設計的交通燈控制系統。設計過程主要采用自上向下的設計思路和模塊化設計的設計思想,對軟件和各個硬件模塊進行獨立設計,綜合調試。軟件包括顯示、定時器、GPIO、時鐘等設置。硬件電路包括由三極管驅動的數碼管顯示電路以及交通燈顯示電路。1.3系統框圖電源電源交交通燈指示模塊數碼管顯示計時模塊K60P144M100SF2RM數碼管顯示計時模塊K60P144M100SF2RM控制器最小系統圖1—3系統框圖二、硬件電路設計本系統中硬件系統包括K60P144M100SF2RM最小系統設計、數碼管顯示模塊、交通燈顯示模塊。采用模塊化設計的思想對以上模塊進行設計。2.1K60P144M100SF2RM最小系統設計Kinetis是低功耗可擴展和在工業上使用混合信號ARMCortex-M4系列MCU的最好的組合。Kinetis系列MCU結合了最新的低功耗革新技術和高性能,高精密混合信號功能與連通,人機界面,安全及外設廣泛。Kinetis
MCUs使用了飛思卡爾和ARM第三方合作伙伴的市場領先的捆綁模式。所有Kinetis系列都包涵強大的邏輯、通信和時序陣列和帶有伴隨著閃存大小和I/O數量的集成度等級的控制外圍部件。Kinetis產品組合內核具有以下特點:ARMCortex-M4內核帶DSP指令,性能可達1.25DMIPS/MHz<部分Kinetis系列提供浮點單元>;32通道的DMA可用于外設和存儲器數據傳輸并減少CPU干預;提供不同級別的CPU頻率50MHz、72MHz和100MHz〔部分Kinetis系列提供120MHz和150MHz>;10種低功耗操作模式用于優化外設活動和喚醒時間以延長電池的壽命;行業領先的快速喚醒時間。正是由于K60控制器在性能上有較多的優點和較低的功耗,因而適合用來開發交通燈控制系統。以下為本控制器的最小系統原理圖:<1><2><3>圖2—1最小系統原理圖2.2數碼管顯示模塊設計數碼管分為七段和八段兩種。根據極性也可分為共陰和共陽兩種類別。其原理是根據發光二極管的組合成顯示0~9,還包括字母A,B,C,D,E,F等。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極<COM>的數碼管,共陰數碼管在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮,當某一字段的陽極為低電平時,相應字段就不亮。圖2—2數碼管工作原理圖分別對三個狀態進行計時,個位和十位分別用一個數碼管顯示,每次計時加一的時間是1s。以下是本模塊的原理圖:圖2—3數碼管顯示模塊原理圖其中由數碼管的位選端和段選端進行控制數碼管的顯示程序。根據PNP三極管的導通原理,當位選端為低電平時,三極管導通,根據共陽極編碼進行合理設置即可。此外用三極管驅動數碼管的原因是三極管顯示更明亮一些。用數碼管顯示效果比較直觀。2.3交通燈指示模塊設計本模塊用紅、黃、綠三種顏色的發光二極管來代替實際中的交通指示燈。紅燈亮則表示車輛停止等待,黃燈亮則表示綠燈在向紅燈的跳變過程中允許已經越過規定線的車輛繼續前行。綠燈則表示車輛可以直行通過。在此系統中,一共有7個指示燈。圖2—4交通燈指示模塊原理圖三、系統軟件設計3.1系統軟件流程圖在系統的軟件設計時,需要對系統時鐘進行設計,以滿足對本次系統的功能需求。還需對GPIO端口進行初始化設置,500ms定時延遲設置。然后需要考慮交通燈的三個工作狀態,合理安排顯示與計數的時序關系。開始開始系統初始化程序系統初始化程序交通指示燈交替亮滅交通指示燈交替亮滅時鐘設置500ms500ms定時器設置計數結束?計數結束? N計數程序計數程序數碼管顯示數碼管顯示 Y結束結束圖3—1系統軟件流程圖3.2500ms定時器子程序設計開始本模塊是將產生500ms定時器,讓在計數器計數時提供計時間隔,同時也可作為數碼管個位和十位的刷新時間,即每次數碼管顯示更新遞增一個數字經過的時間是1s。以下是本模塊的子程序軟件流程圖:開始設置設置LPTMR定時器設置count_val設置count_val比較值觸發輸出觸發輸出1KHzLPO時鐘計數1KHzLPO時鐘計數清除標志位清除標志位ReachReachcount_v值?結束Y結束 N圖3—2定時器子程序軟件流程圖3.3計數顯示子程序設計計數顯示是在定時器運行前提下進行工作的。數碼管每刷新一個數時,時間是1s。這樣的好處是顯示與指示燈狀態同步起來。同時也能做到效果比較直觀。以下是此部分模塊的流程圖:開始開始dis_0=0dis_1=0dis_0=0dis_1=0dis_2=0初始化1000ms定時器1000ms定時器數碼管譯碼指示燈亮數碼管譯碼指示燈亮dis_0++dis_0++dis_0<60dis_0<60Y1000ms1000ms定時器數碼管譯碼指示燈亮1000ms數碼管譯碼指示燈亮1000ms定時器數碼管譯碼指示燈亮 N數碼管譯碼指示燈亮dis_2++dis_2++dis_2<60?dis_1++dis_2<60?dis_1++dis_1<10?Ydis_1<10?Y N結束結束N圖3—3計數顯示模塊流程圖四、系統調試4.1硬件調試在硬件調試時,K60最小系統的調試就是用集成Mini核心板進行調試,當系統上電后,將系統示例程序下載到開發板中,用一個示例LED等進行測試能否正常運行。在GPIO端口進行初始化后,應對端口進行合理設置。在對核心板程序下載成功后,在程序能正確運行時,可以根據共陽數碼管的特點進行測試,對顯示電路能否正常工作進行測試。驗看數碼管計數時是否與預想的一樣,若不一樣營及時修正程序。最終使結果出現與預期一樣。4.2軟件調試在軟件調試時,在IARforARM6.30版本平臺上進行編程下載,通過J—LinkJI進行下載到K60核心板中。在調試時可以用單步調試,全速運行,設置斷點等方式。與此同時觀看寄存器和變量的值在調試中常常發揮著重要作用。在修改和完善程序后,最終下載到核心板中運行。以下是IAR開發界面:圖4—1IAR開發界面圖4.3綜合調試在綜合調試時,首先應確保硬件和軟件都調試完畢,將程序下載到硬件系統中后,首先應注意以下事項;在上電之前應用數字萬用表檢測硬件電路的電源VCC和地是否導通,若導通,應及時檢查后確保不能讓電源和地短路;同時檢測電路是否有虛焊現象,應及時解決這些可能對結果造成不良影響的問題,然后才能上電。上電之后,觀看實驗效果,看數碼管刷新時間和交通指示燈亮滅是否和預期相同,若時序不符合要求,應及時調整硬件或者軟件。在與核心板連接線時,應避免與IO口短接,造成數碼管顯示亂碼或者顯示效果不佳。五、總結本次基于飛思卡爾K60P144M100SF2RM控制器設計的交通燈控制系統,通過合理的軟件設計和硬件設計,實現了交通燈綠燈亮60秒,黃燈亮10秒,紅燈亮60秒,對南北主干道方向和東西支干道車輛進行直行和左轉控制。用紅、綠、黃LED發光二極管代替實際中的交通指示燈,用數碼管對亮滅時間進行計時,使結果直觀。六、心得體會本次關于嵌入式系統設計專題實踐,通過用基于Cortex-M4內核的K60P144M100SF2RM控制器,我對嵌入式系統設計有了進一步的認識。在本次系統設計過程中,主要采用的是模塊化設計的思想和自頂向下的設計原則,將功能細化,每一功能對應一個功能子程序。在軟件設計時我進一步體會到了畫流程圖的重要性。面對一個系統設計時,我們首先應該將功能劃分和細化,每一部分可以畫一些單個的子程序流程圖,這樣在軟件設計時可以會在思緒上要清晰一些。調試步驟則采用硬件和軟件分開調試,最后再綜合調試的方案。在軟件調試時,我們首先將程序編譯通過后,經過J-Link下載到核心板中,然后可以在線仿真和調試。在調試時,除了首先全速運行程序外,如果運行結果不太理想,這時我們可以采用單步調試,設置斷點等方式進行調試。還有需要注意的是,在燒寫程序時,不能直接從核心板上拔下J-Link,應斷電后小心取下。關于軟件調試和軟件編寫在本次實踐中我的感悟還是挺多的。在硬件調試時,一開始在程序正常運行時數碼管始終效果不明顯,后來分析得知是驅動電流不大造成數碼管顯示比較暗的。最后的解決辦法是在數碼管的位選端加了三極管進行放大,最終數碼管顯示的效果才會直觀,明亮。在測試LED燈的好壞時,我由于沒有考慮到發光二極管的導通電壓,以為這個直徑較大的發光二極管應該在3.3V電壓時是不會擊穿的。因而也為了簡易就沒有加上限流電阻。最后在測試時,在接上3.3V電壓時,紅色和黃色的LED發光二極管都在瞬間被擊穿,只有綠燈能夠正常導通發光。所幸的是核心板有短路保護模式,不然結果是比較嚴重的。最終我還是都接上了330歐姆的限流電阻,才解決這個問題。這些都是我在不了解元器件的前提下所犯的錯誤。通過此次實踐,也讓我吸取了這一點教訓。在實驗之前,應對元器件有了基本的了解才能去利用它們進行設計。通過這次交通燈的實驗,我學會并了解了一些嵌入式與單片機的相同和不同之處,更讓我感到了嵌入式的強大。以往在單片機的學習和課程設計中,一些知識點并不會顯的十分復雜,而現在的嵌入式系涉及到了更多的知識和復雜的理論。因為嵌入式不僅僅是一個高級的一些的單片機,而是涉及到了系統的概念,從功能上還是應用、實時、穩定上都要優于單片機。另外,從做交通燈的實驗中,學習和鞏固了以前的編程知識,還有對天一些電路的分析,數電模電的知識等。更重要的是在這次實驗中,得到了動手能力和思維方式的鍛煉。做為一名自動化專業的學生,動手能力和思維方式的鍛煉是成為得要的,特別在以后遇到問題時要有解決問題的能力。七、附錄7.1系統實物圖·〔1〔2〔3圖7—1系統實物圖7.2程序代碼:voidmain<void>{//intm=0;//printf<"TWR-K60N512GPIOExample!\n">;//uinti=0;/*Turnonallportclocks*/SIM_SCGC5=SIM_SCGC5_PORTA_MASK|SIM_SCGC5_PORTB_MASK|SIM_SCGC5_PORTC_MASK|SIM_SCGC5_PORTD_MASK|SIM_SCGC5_PORTE_MASK;/*EnableGPIOAandGPIOEinterruptsinNVIC*///enable_irq<87>;//GPIOAVectoris103.IRQ#is103-16=87//enable_irq<91>;//GPIOEVectoris107.IRQ#is107-16=91/*InitializeGPIOonTWR-K60N512*/init_gpio<>;gpio_set<PORTB,21,1>;gpio_set<PORTB,20,1>;gpio_set<PORTA,17,0>;gpio_set<PORTA,16,0>;gpio_set<PORTA,15,0>;gpio_set<PORTA,14,0>;gpio_set<PORTA,13,0>;gpio_set<PORTA,12,0>;data7<>;while<1>{for<dis_0=0;dis_0<62;dis_0++>{if<dis_0<=60>{gpio_set<PORTA,17,1>;gpio_set<PORTA,16,1>;data7<>;//time_delay_ms<1000>;gpio_set<PORTB,20,0>;//time_delay_ms<1000>;Gpio_set_Pin<PORT_D,dis_code[dis_0%10]>;//gpio_set<PORTB,20,1>;time_delay_ms<500>;//data7<>;//delay<>;gpio_set<PORTB,20,1>;data7<>;gpio_set<PORTB,21,0>;Gpio_set_Pin<PORT_D,dis_code[dis_0/10]>;//time_delay_ms<100>;//data7<>;//delay<>;time_delay_ms<500>;data7<>;gpio_set<PORTB,21,1>;//time_delay_ms<1000>;}if<dis_0>60>{gpio_set<PORTB,21,1>;gpio_set<PORTB,20,1>;gpio_set<PORTA,17,0>;//gpio_set<PORTA,13,1>;for<dis_1=0;dis_1<12;dis_1++>{if<dis_1<=10>{gpio_set<PORTA,15,1>;gpio_set<PORTA,13,1>;data7<>;//time_delay_ms<1000>;gpio_set<PORTB,20,0>;//time_delay_ms<1000>;Gpio_set_Pin<PORT_D,dis_code[dis_1]>;//gpio_set<PORTB,20,1>;time_delay_ms<500>;gpio_set<PORTA,16,1>;//delay<>;time_delay_ms<500>;gpio_set<PORTA,16,0>;//data7<>;//delay<>;///io_set<PORTB,20,1>;//data7<>;//gpio_set<PORTB,21,0>;//Gpio_set_Pin<PORT_D,dis_code[dis_1/10]>;//time_delay_ms<100>;//data7<>;//delay<>;//time_delay_ms<500>;//data7<>;//gpio_set<PORTB,21,1>;//time_delay_ms<1000>;}if<dis_1>10>{gpio_set<PORTB,20,1>;gpio_set<PORTB,21,1>;gpio_set<PORTA,16,0>;gpio_set<PORTA,15,0>;gpio_set<PORTA,13,0>;for<dis_2=0;dis_2<61;dis_2++>{if<dis_2<60>{gpio_set<PORTA,14,1>;gpio_set<PORTA,12,1>;data7<>;//time_delay_ms<1000>;gpio_set<PORTB,20,0>;//time_delay_ms<1000>;Gpio_set_Pin<PORT_D,dis_code[dis_2%10]>;//gpio_set<PORTB,20,1>;time_delay_ms<500>;//data7<>;//delay<>;gpio_set<PORTB,20,1>;data7<>;gpio_set<PORTB,21,0>;Gpio_set_Pin<PORT_D,dis_code[dis_2/10]>;//time_delay_ms<100>;//data7<>;//delay<>;time_delay_ms<500>;data7<>;gpio_set<PORTB,21,1>;}if<dis_2>=60>{gpio_set<PORTB,20,1>;gpio_set<PORTB,21,1>;gpio_set<PORTA,14,0>;gpio_set<PORTA,12,0>;//gpio_set<PORTA,13,0>;}//time_delay_ms<1000>;}}}}}}}voidinit_gpio<>{//SetPTA19andPTE26<connectedtoSW1andSW2>forGPIOfunctionality,fallingIRQ,//andtouseinternalpull-ups.<pindefaultstoinputstate>//PORTA_PCR19=PORT_PCR_MUX<1>|PORT_PCR_IRQC<0xA>|PORT_PCR_PE_MASK|PORT_PCR_PS_MASK;//PORTE_PCR26=PORT_PCR_MUX<1>|PORT_PCR_IRQC<0xA>|PORT_PCR_PE_MASK|PORT_PCR_PS_MASK;//SetPTB10,PTB21,PTB21,andPTB23<connectedtoLED's>forGPIOfunctionality//修改適合本電路板PORTB_PCR20=<0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論