基于ARM的交通燈設(shè)計_第1頁
基于ARM的交通燈設(shè)計_第2頁
基于ARM的交通燈設(shè)計_第3頁
基于ARM的交通燈設(shè)計_第4頁
基于ARM的交通燈設(shè)計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 sfe攀枝花學(xué)院本科課程設(shè)計基于ARM的交通燈設(shè)計學(xué)生姓名: 學(xué)生學(xué)號: 院(系): 電氣信息工程學(xué)院 年級專業(yè): 指導(dǎo)教師: 二一四年十二月攀枝花學(xué)院畢業(yè)論文 摘要摘 要本設(shè)計是基于STM32微控制器進(jìn)行的交通燈設(shè)計,STM32是意法半導(dǎo)體以ARM為核心的微控制器。交通燈通常指由紅、黃、綠三種顏色燈組成用來指揮交通的信號燈。綠燈亮?xí)r,準(zhǔn)許車輛通行,黃燈亮?xí)r,已越過停止線的車輛可以繼續(xù)通行;紅燈亮?xí)r,禁止車輛通行。 交通燈的硬件設(shè)計主要由三部分組成:微控制器最小系統(tǒng),交通燈的信號燈,顯示時間的數(shù)碼管。軟件部分由三部分組成:數(shù)碼管顯示函數(shù),交通燈切換函數(shù),時間計時函數(shù)。交通燈工作的流程是計數(shù)器

2、每秒鐘減一,減到零時切換信號燈,在主函數(shù)中調(diào)用數(shù)碼管顯示函數(shù),以便快速掃描顯示。交通燈設(shè)計的關(guān)鍵問題是實現(xiàn)信號燈切換、計數(shù)器自減、數(shù)碼管掃描顯示等功能。同時該設(shè)計具有設(shè)計方法合理,簡單易行,成本低,安全實用等特點,具有推廣價值。關(guān)鍵詞 微控制器,交通燈,數(shù)碼管,STM32,ARM第 1 頁攀枝花學(xué)院畢業(yè)論文 目錄目 錄摘 要11 緒論31.1本課題研究的背景及意義31.2國內(nèi)外研究現(xiàn)狀、水平31.3本課題的發(fā)展趨勢31.4本課題的研究內(nèi)容32 方案設(shè)計52.1微控制器選擇52.2顯示設(shè)備的選擇52.3信號燈的選擇52.4系統(tǒng)設(shè)計思路52.5方案框圖62.6方案論證63 硬件設(shè)計與實現(xiàn)63.1電

3、路設(shè)計框圖63.2最小系統(tǒng)設(shè)計73.3 LED模塊73.4數(shù)碼管模塊73.5系統(tǒng)總電路圖84 軟件設(shè)計94.1軟件的設(shè)計架構(gòu)94.2軟件設(shè)計過程94.3 MDK工程建立及配置104.4主要函數(shù)代碼115 系統(tǒng)仿真與調(diào)試13體會14參 考 文 獻(xiàn)15攀枝花學(xué)院本科課程設(shè)計論文1 緒論1.1本課題研究的背景及意義隨著社會的發(fā)展,人們不斷地從農(nóng)村涌入城市,城市人口越來越多,現(xiàn)在中國的千萬級人口的城市越來越多。人口多伴隨的是車輛越來越多,而且我們的生活越來越好,私家車越來越多,如果沒有一個良好的交通規(guī)則,那么城市的交通系統(tǒng)必然會癱瘓。交通警察是有限的,這種情況下永不下崗的“交通警察”交通燈就派上大用場

4、了。現(xiàn)在的交通燈已經(jīng)是城市中不可缺少的基礎(chǔ)設(shè)施。交通燈通常指由紅、黃、綠三種顏色燈組成用來指揮交通的信號燈。綠燈亮?xí)r,準(zhǔn)許車輛通行,黃燈亮?xí)r,已越過停止線的車輛可以繼續(xù)通行;紅燈亮?xí)r,禁止車輛通行。1.2國內(nèi)外研究現(xiàn)狀、水平目前設(shè)計交通燈的方案有很多,西方國家已經(jīng)有應(yīng)用CPLD設(shè)計實現(xiàn)交通信號燈控制器方法;有應(yīng)用PLC實現(xiàn)對交通燈控制系統(tǒng)的設(shè)計;有應(yīng)用單片機(jī)實現(xiàn)對交通信號燈設(shè)計的方法。目前,國內(nèi)的交通燈一般設(shè)在十字路門,在醒目位置用紅、綠、黃三種顏色的指示燈。加上一個倒計時的顯示計時器來控制行車。對于一般情況下的安全行車,車輛分流尚能發(fā)揮作用,但根據(jù)實際行車過程中出現(xiàn)的情況,還存在以下缺點:1

5、 兩車道的車輛輪流放行時間相同,在十字路口,經(jīng)常一個車道為主干道,車輛較多,放行時間應(yīng)該長些;另一車道為副干道,車輛較少,放行時間應(yīng)該短些。2 兩條干道的紅綠時間不能隨時間的改變而修改。1.3本課題的發(fā)展趨勢隨著智能時代的到來,讓交通燈也智能的想法已經(jīng)不是難事,智能的表現(xiàn)方式主要是擁有自動調(diào)整亮燈時間長短的功能。譬如說,它能自動感應(yīng)該地區(qū)的交通情況,如果塞車的話該交通燈能自行控制紅、黃與綠等的亮燈時間長短。而這個檢測道路車輛數(shù)量的方案有很多種,技術(shù)上比較難施工上比較容易的是在交通的上加上攝像頭,運(yùn)用數(shù)字圖像處理技術(shù)來識別車輛的數(shù)量。另一種方法是可以在公路下面埋上壓力傳感器,這種方法技術(shù)上沒什么

6、難度,但施工比較麻煩。1.4本課題的研究內(nèi)容本設(shè)計是基于STM32F407的交通燈設(shè)計,交通燈的硬件設(shè)計主要由三部分組成:微控制器最小系統(tǒng),最小系統(tǒng)的構(gòu)建有主控芯片STM32,晶振,濾波電容,復(fù)位電路;交通燈的信號燈,信號燈由超低功耗的LED組成,LED的正極接電源正極,負(fù)極連接STM32I/O口,并且要串聯(lián)一個限流電阻;顯示時間的數(shù)碼管數(shù)碼管用以顯示倒計時,倒計時只有幾十秒,所以只用2個數(shù)碼管就夠了,數(shù)碼管采用動態(tài)掃描顯示方式,所以在程序中需要不斷的刷新顯示,給程序增加了難度。軟件部分由三部分組成:數(shù)碼管顯示函數(shù),函數(shù)輸入一個數(shù)字,數(shù)碼管就可以顯示該數(shù)字;交通燈切換函數(shù),倒計時為0時,就要執(zhí)

7、行該函數(shù),實現(xiàn)紅綠燈的切換;時間計時函數(shù),該函數(shù)實現(xiàn)倒計時,是本設(shè)計的核心。交通燈工作的流程是計數(shù)器每秒鐘減一,減到零時切換信號燈,在主函數(shù)中調(diào)用數(shù)碼管顯示函數(shù),以便快速掃描顯示。ARM處理器是Acorn計算機(jī)有限公司面向低預(yù)算市場設(shè)計的第一款RISC微處理器。更早稱作Acorn RISC Machine。ARM處理器本身是32位設(shè)計,但也配備16位指令集,一般來講比等價32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的所有優(yōu)勢。早期的ARM以ARM7、ARM9等命名,在推出了ARM11之后的ARM核心采用了不同的命名方式,這就是新型的Cortex內(nèi)核,分為三個系列,A系主打高端市場,R系用于實時性

8、要求很高的領(lǐng)域,M系是面向控制的內(nèi)核,與單片機(jī)一樣,Cortex-M核目前有M0、M3、M4,前不久ARM推出了最新的ARM7,為可穿戴設(shè)備設(shè)計。STM32是意法半導(dǎo)體基于ARM核心加上外圍模塊構(gòu)成的新型微控制器。STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M內(nèi)核,STM32F1等基于Cortex-M3,STM32F4等基于Cortex-M4。STM32F407采用了90 納米的NVM 工藝和ART,ART技術(shù)使得程序零等待執(zhí)行,提升了程序執(zhí)行的效率,將Cortex-M4的性能發(fā)揮到了極致,該芯片最高工作頻率可達(dá)到168MHz,運(yùn)行速度接近低端微

9、處理器,STM32F407集成了單周期DSP指令和FPU(浮點單元),提升了計算能力,可以進(jìn)行一些復(fù)雜的計算和控制。2 方案設(shè)計2.1微控制器選擇ARM體系是一個很大的體系,基于ARM設(shè)計的微控制器、微處理器很多,由于交通燈設(shè)計主要是控制而非處理,所以我們選擇微控制器作為主控芯片基于ARM的微控制器有很多,主要有意法半導(dǎo)體的STM32系列,飛思卡爾公司的K系列,以及愛特梅爾、TI等公司都在做基于ARM的微控制器。由于意法半導(dǎo)體的STM32性價比非常高且容易買到,所以我們選擇STM32作為本次設(shè)計的主控芯片。STM32也是一個家族,有F1系列、F2系列、F3及F4系列,其中F4系列基于ARM C

10、ortex-M4內(nèi)核,比Cortex-M3要先進(jìn),而且具有學(xué)習(xí)價值,所以我們選擇STM32F407作為主控芯片。2.2顯示設(shè)備的選擇顯示設(shè)備有很多種,有LED、LCD、OLED、數(shù)碼管、TFT等。由于本設(shè)計中顯示設(shè)備只用顯示數(shù)字,所以用高級顯示設(shè)備就會造成資源浪費(fèi),增加設(shè)計成本。所以我們這里選擇地端的顯示設(shè)備,低端的顯示設(shè)備主要有LED和數(shù)碼管。LED只能顯示點,要顯示數(shù)字的話就得用很多LED組成點陣,所以我們選擇數(shù)碼管作為本設(shè)計的顯示設(shè)備,在實際運(yùn)用中,數(shù)碼管的大小以及亮度達(dá)不到實際要求,所以可以采用大量LED組成的點陣來顯示。實驗中采用數(shù)碼管顯示是為了降低成本。2.3信號燈的選擇由于信號燈

11、需要紅、黃、綠三種顏色,而且是一天24小時顯示,不能選擇功率大的信號燈,信號燈的亮度不能太低,不然司機(jī)看不清楚,基于以上情況我們選擇超低功耗的LED作為信號燈。實驗中我們采用一個LED,在實際中為了增加亮度可以采用很多LED組成LED群,以此增加顯示亮度。2.4系統(tǒng)設(shè)計思路由于采用了高性能的STM32作為主控芯片,所以在資源上不必?fù)?dān)心,芯片得有一個最小系統(tǒng)才能運(yùn)作。交通燈有一個倒計時器,所以必須有一個定時器作為時鐘。還有顯示倒計時的設(shè)備,這里用數(shù)碼管代替,實際中得用LED做成的顯示面板。信號燈用單個LED燈代替,實際中要用大量LED同時顯示,LED的顏色要有紅、黃。綠三種。定時器一上電就不斷地

12、運(yùn)行,為交通燈提供時間信息,在定時器中會控制2個計數(shù)變量,一個變量代表一組信號燈的時間,當(dāng)計數(shù)變量倒計時為0時,就執(zhí)行信號燈切換函數(shù),實現(xiàn)紅黃綠燈的切換。另外外需要實時顯示時間,所以每當(dāng)計數(shù)變量減一時數(shù)碼管就要變化。2.5方案框圖定時器數(shù)碼管2數(shù)碼管1計數(shù)變量2計數(shù)變量1信號燈1信號燈2圖2.2 方案框圖2.6方案論證本方案簡單易行,且性價比高,高性能STM32芯片能穩(wěn)定地運(yùn)行,而且由于設(shè)計中所用的LED、數(shù)碼管、STM32都是低功耗器件,所以整個系統(tǒng)的功耗都很低。3 硬件設(shè)計與實現(xiàn)3.1電路設(shè)計框圖本設(shè)計主要由ARM微控制器STM32F407、LED燈、數(shù)碼管等部分組成。其中STM32F40

13、7是主控芯片,是整個硬件電路的核心,主要完成LED燈、數(shù)碼管的控制。其系統(tǒng)原理框圖如圖3.1所示。 STM32F407LED數(shù)碼管定時器 圖3.1 系統(tǒng)原理框圖3.2最小系統(tǒng)設(shè)計STM32有眾多系列和型號,我們選擇STM32F407作為主控芯片,因為這款芯片是基于最新的Cortex-M4,具有比較高的學(xué)習(xí)價值和代表性。對于STM32這種高級的微控制器來說,最小系統(tǒng)比較復(fù)雜,不像51單片機(jī)那樣簡單,因為其速度非??欤梢赃_(dá)到168MHz,速度快就對信號的穩(wěn)定和抗干擾有較高的要求,又由于現(xiàn)在的集成電路工藝技術(shù)并不能集成較大的電容,所以SOC設(shè)計者們將需要電容的電路接上引腳,在芯片外部接上電容,這樣

14、就解決了上面的問題,不過使最小系統(tǒng)變復(fù)雜了。由于STM32內(nèi)部集成了震蕩源,所以沒有外部晶振也可以工作。不過內(nèi)部震蕩源有著不精確地缺點,在高精度場合我們還是有必要接上外部晶振,一般為8M或16M,晶振需要接上2個電容幫助其起振。3.3 LED模塊LED模塊比較簡單,STM32的IO口足以驅(qū)動LED,為了有更大的電流,我們采用灌電流輸出方式,LED負(fù)極接IO口,正極接電源,中間還要加上限流電阻。本設(shè)計中總共有2組信號燈,一組信號燈有紅、黃、綠三顆LED,所以總共需要6顆LED。3.4數(shù)碼管模塊本設(shè)計中采用的數(shù)碼管功率比較大,所以不能像LED模塊那樣直接接在IO口上,需要加上驅(qū)動電路,我們有兩套驅(qū)

15、動方案,方案一是用三極管驅(qū)動,這樣需要4個三極管。方案二是用鎖存器。鑒于三極管便宜且容易找到,所以我們采用三極管驅(qū)動方案。3.5系統(tǒng)總電路圖圖3.5 系統(tǒng)總圖4 軟件設(shè)計4.1軟件的設(shè)計架構(gòu) 開始芯片初始化定時器初始化與配置IO口初始化倒計時為0信號燈切換yes no顯示刷新圖4.1 程序流程圖4.2軟件設(shè)計過程STM32的C語言開發(fā)思想與51有重大差別,51只需要一個reg52.h和一個C文件就可以開發(fā)。STM32芯片非常復(fù)雜,而且是32位芯片,內(nèi)部的寄存器數(shù)量巨大,我們不能像開發(fā)51那樣直接操作寄存器,51的寄存器比較少且是8位機(jī)。所以工程師們引入了一種新的開發(fā)方式-庫開發(fā),ST公司為每一

16、款STM32開發(fā)了一個固件庫,開放給開發(fā)人員免費(fèi)使用,我們只需建好工程,然后添加這個庫,在用戶文件中直接調(diào)用這些庫函數(shù)就可以了,這種開發(fā)方式非常方便,我們不必去記那么多寄存器或者翻數(shù)據(jù)手冊。加快了開發(fā)速度,減小了開發(fā)成本。在主函數(shù)中,我們需要對外設(shè)進(jìn)行初始化,首先要定義一個GPIO初始化函數(shù)GPIO_init(void),在函數(shù)中調(diào)用庫函數(shù)對IO口進(jìn)行初始化。函數(shù)定義好后就在主函數(shù)中首先調(diào)用它,然后調(diào)用定時器初始化函數(shù)SysTick_Config(168000),并開啟定時中斷,至此初始化完成。接下來進(jìn)入一個死循環(huán),在循環(huán)中主要檢測倒計時是否為0,如果為0則進(jìn)行紅黃綠燈的切換,另外循環(huán)中還調(diào)用

17、顯示函數(shù),不斷的刷新顯示,一是由于數(shù)碼管采用的是動態(tài)掃描顯示方式,需要不斷地刷新,二是顯示需要一定的實時性。在定時中斷服務(wù)函數(shù)中主要完成計數(shù)變量的自減。4.3 MDK工程建立及配置建立STM32的工程很麻煩,需要將庫函數(shù)移植到工程中,但是一旦移植好后,以后就不用再做同樣的工作,只需將該工程拷貝就行,然后在里面修改代碼。我們這里就是用的工程模板,固件庫有很多版本,我們用的是1.1版本。一個完整的工程框架如圖4.3.1所示。圖4.3.1 工程框架圖4.3.1中DEMO是工程名,user里面放的是用戶文件,CMISI里面放的是啟動代碼,F(xiàn)Wlib里面放的是外設(shè)驅(qū)動與配置函數(shù),它占據(jù)了整個庫的大部分。

18、建立好工程后就要對其進(jìn)行配置,鼠標(biāo)右鍵點擊工程名,選擇Options選項,出現(xiàn)工程配置界面,如圖4.3.2。圖4.3.2 工程配置配置界面有很多選項,Device選項是選擇工程的目標(biāo)芯片,我們選的是STM32F407,Output選項是選擇工程輸出文件的目錄,C/C+選項是選擇頭文件的查詢目錄。Bebug選項是選擇仿真模式,我們有一個硬件仿真器STlink,所以這里選擇硬件仿真,仿真器選STlink,如圖4.3.3。圖4.3.3 仿真模式工程配置完成后就進(jìn)行程序編寫,編寫程序是一個漫長的過程,本設(shè)計的核心內(nèi)容就是編寫程序,程序主要有3個函數(shù),main函數(shù)實現(xiàn)信號燈的切換,定時器中斷服務(wù)函數(shù)實現(xiàn)

19、倒計時,顯示函數(shù)實現(xiàn)數(shù)碼管的動態(tài)掃描顯示。具體程序在后面列出。編寫好程序后就可以進(jìn)行編譯了,依次點擊后就完成了編譯匯編鏈接,出現(xiàn)如圖4.3.4的情況就編譯完成了。圖4.3.4 編譯完成4.4主要函數(shù)代碼/*主函數(shù)*說明:本函數(shù)中主要完成系統(tǒng)初始化、信號燈切換和顯示刷新*/int main()unsigned char light_1 = YELLOW,light_2 = RED;SysTick_Config(168000); /滴答定時器初始化,周期1毫秒GPIO_init();/GPIO初始化GPIO_Write(GPIOE, 0xff);/關(guān)閉全部LED燈while(1) if(time_

20、1 = 0)/如果1組倒計時為0 if(light_1 = RED)/如果1組為紅燈time_1 = 54;/綠燈倒計時55秒light_1 = GREEN;/紅燈轉(zhuǎn)換成綠燈GPIO_Write(GPIOE, 0xf6);else if(light_1 = GREEN)/如果1組為綠燈time_1 = 4;/黃燈倒計時5秒light_1 = YELLOW;/綠燈轉(zhuǎn)換為黃燈GPIO_Write(GPIOE, 0xf5);else if(light_1 = YELLOW)/如果1組為黃燈time_1 = 59;/紅燈倒計時60秒light_1 = RED;/轉(zhuǎn)換為紅燈GPIO_Write(GPIO

21、E, 0xde); if(time_2 = 0)/如果2組倒計時為0 if(light_2 = RED)/如果2組為紅燈time_2 = 54;/綠燈倒計時55秒light_2 = GREEN;/轉(zhuǎn)換為綠燈GPIO_Write(GPIOE, 0xde);else if(light_2 = GREEN)/如果2組為綠燈time_2 = 4;/黃燈倒計時5秒light_2 = YELLOW;/轉(zhuǎn)換為黃燈GPIO_Write(GPIOE, 0xee);else if(light_2 = YELLOW)/如果2組為黃燈time_2 = 59;/紅燈倒計時60秒light_2 = RED;/轉(zhuǎn)換為紅燈G

22、PIO_Write(GPIOE, 0xf3); Display(time_1,time_2);/調(diào)用顯示函數(shù),刷新數(shù)碼管顯示 /*定時中斷服務(wù)函數(shù)*說明:本函數(shù)主要完成倒計時減一*/void SysTick_Handler(void)static unsigned int mill = 0;/定義毫秒變量mill+;/每次進(jìn)中斷毫秒變量加1if(mill >= 1000)/如果達(dá)到1000毫秒,也就是1秒mill = 0;/毫秒變量清0if(time_1>0)time_1-;/倒計時減1if(time_2>0)time_2-;5 系統(tǒng)仿真與調(diào)試STM32有硬件仿真和軟件仿真模式,由于我們有硬件,而且有調(diào)試器,所以這里選擇硬件仿真模式。點擊進(jìn)行硬件調(diào)試出現(xiàn)如圖5.1所示界面。寄存器區(qū)觀察窗口主界面區(qū) 圖5.1 調(diào)試界面點擊實現(xiàn)程序單步運(yùn)行,點擊實現(xiàn)全速運(yùn)行,點擊實現(xiàn)程序復(fù)位。在觀察窗口輸入相應(yīng)的變量名,就可以實時監(jiān)控該變量。主要監(jiān)控的變量有time_1、time_2,light_1、light_2。每次單步運(yùn)行后都可以查看變量的變化。第 14 頁 體會這次課程設(shè)計總的來說還是比較成功,雖然花費(fèi)了很多時間和精力,但是收獲頗多,也激起了我對這方面的興趣。從不知道課程設(shè)計論文怎樣寫,我開始了獨立的學(xué)習(xí)和實驗,查看相關(guān)的資

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論