帶數(shù)碼管的交通指示燈系統(tǒng)設(shè)計(jì)_第1頁
帶數(shù)碼管的交通指示燈系統(tǒng)設(shè)計(jì)_第2頁
帶數(shù)碼管的交通指示燈系統(tǒng)設(shè)計(jì)_第3頁
帶數(shù)碼管的交通指示燈系統(tǒng)設(shè)計(jì)_第4頁
帶數(shù)碼管的交通指示燈系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

侈.1h<期末大作業(yè)題目:帶數(shù)碼管的交通指示燈系統(tǒng)設(shè)計(jì)院(系):物聯(lián)網(wǎng)工程學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級:計(jì)科1105班姓名:學(xué)號:03041105指導(dǎo)老師: 莊春興 設(shè)計(jì)時(shí)間:13-14學(xué)年2學(xué)期2014年5月目錄0 ||~i??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????3TOC\o"1-5"\h\z\o"CurrentDocument"1設(shè)計(jì)原理 3\o"CurrentDocument"1.1交通信號燈的工作原理 31./]????????????????????????????????????????????????????????????????????????????????????????????????????????..3\o"CurrentDocument"1.2.1GPxCON寄存器 41.2計(jì)????????????????????????????????????????????????????????????????????????????????????????????????????.\o"CurrentDocument"1.2.3GPxUP寄存器 4\o"CurrentDocument"1.3帶數(shù)碼管的交通信號燈設(shè)計(jì) 4\o"CurrentDocument"2設(shè)計(jì)步驟 5\o"CurrentDocument"2.1設(shè)計(jì)思路 5\o"CurrentDocument"2.2設(shè)計(jì)框圖 5\o"CurrentDocument"2.3顯不模塊 6\o"CurrentDocument"2.4刷新與延時(shí)模塊 7\o"CurrentDocument"3實(shí)驗(yàn)結(jié)果及結(jié)果分析 7\o"CurrentDocument"3.1實(shí)驗(yàn)代碼 7\o"CurrentDocument"3.2實(shí)驗(yàn)步驟 11\o"CurrentDocument"3.3結(jié)果分析 12\o"CurrentDocument"4心得體會 12\o"CurrentDocument"參考文獻(xiàn) 120引言隨著科學(xué)技術(shù)發(fā)展的日新日異,ARM嵌入式系統(tǒng)⑴己經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握嵌入式的開發(fā)技術(shù)是十分重要的。本文硬件設(shè)計(jì),實(shí)現(xiàn)了利用S3C2440芯片來完成帶數(shù)碼管的交通指示燈設(shè)計(jì)[2】,培養(yǎng)自己綜合運(yùn)用所學(xué)知識、獨(dú)立分析和解決實(shí)際問題的能力,培養(yǎng)創(chuàng)新意識和創(chuàng)新能力,并獲得科學(xué)研究的基礎(chǔ)訓(xùn)練,加深對ARM芯片的了解;熟悉ARM芯片各個(gè)引腳的功能,工作方式,計(jì)數(shù)/定時(shí),IO口,中斷等相關(guān)原理,鞏固學(xué)習(xí)嵌入式的相關(guān)內(nèi)容知識。學(xué)習(xí)LED顯示控制方法并掌握基于ARM開發(fā)板對I/O編程的方法卩】。通過實(shí)驗(yàn)測試可以證明本文的設(shè)計(jì)原理和設(shè)計(jì)步驟都是正確的。1設(shè)計(jì)原理1.1交通信號燈的工作原理一般情況下,紅綠燈設(shè)在十字路口,或在多干道的交叉口上,目的是為了調(diào)整交義口的交通秩序使各干道來往車輛能夠有條不紊地行駛,否則將造成意想不到的嚴(yán)重后果。當(dāng)然在交叉口設(shè)置合理的紅綠燈后,也可以大大減少交通管理部門的人力、屋里。交叉口交通信號等的基本作用:紅燈亮表示車輛、行人禁止通行,綠燈亮表示車輛、行人可以通行,綠燈轉(zhuǎn)換成紅燈前兒秒,可用黃燈亮來暗示駕駛員或行人即將禁止通行。該系統(tǒng)的屏幕時(shí)間顯示用倒計(jì)時(shí)方式表示紅綠燈的切換時(shí)間,時(shí)間顯示其的作用是協(xié)助紅綠燈工作,跟隨紅、綠燈反復(fù)地進(jìn)行切換。目的是為了使駕駛員和行人能夠看見紅綠燈亮的時(shí)間還剩兒秒,以便停車線以內(nèi)的駕駛員和行人能夠更清楚地知道此時(shí)該繼續(xù)通行或減速,才不會使駕駛員盲目地加速或減速停車而阻礙另一干道車輛或行人的通行,從而可以提高交叉口車輛及行人的流通率,當(dāng)然也可以減少事故的發(fā)生,為交通安全提供保障。交通信號燈的工作原理:當(dāng)東西組紅燈亮綠燈滅時(shí),南北組就會綠燈亮紅燈滅。對東西組或南北組而言,每當(dāng)綠燈亮轉(zhuǎn)換成紅燈亮前兒秒(具體時(shí)間視實(shí)際情況而定)黃燈亮,當(dāng)綠燈滅時(shí)黃燈也同時(shí)熄滅。S3C2440-GPIO介紹GPIO,通用輸入輸tB(GeneralPurposeLO)W簡稱⑷,其引腳可以供編程使用。隕入式系統(tǒng)中常常有數(shù)量眾多,但是結(jié)構(gòu)卻比較簡單的外部設(shè)備,對這些設(shè)備的控制,有時(shí)只需要一位控制信號就夠了,即只需要開/關(guān)兩種狀態(tài)就夠了,比如燈亮與滅。對這些設(shè)備的控制,使用傳統(tǒng)的串行口和并行口都不合適。所以在微控制器芯片上一般都會提供一個(gè)“通用可編程I/O接口”,即GPIOoS3C2440有130個(gè)GPIO口,分為A到J共9組:GPA、GPB、GPC...GPJ。通過設(shè)置相應(yīng)寄存器,可以選擇某個(gè)GPIO口是用于輸入、輸出還是其他特殊功能。例如可以設(shè)置GPH6作為一般的輸入、輸出端口,或者用于串口。每組GPIO(GPA?GPJ),都可以通過3個(gè)寄存器來控制與訪問,這3個(gè)寄存器分別為:GPxCON:GPIO配置寄存器、GPxDATGPIO數(shù)據(jù)寄存器、GPxUP上拉電阻控制寄存器(其中x為:A、J)。GPxCON寄存器從寄存器的名字可以看出它屬于配置(Conftiguie)寄存器——選擇GPIO口的功能。其中PORTA與PORTB-PORTJ在功能選擇方面有所不同。GPACON中每一位對應(yīng)一個(gè)IO口(共23個(gè))。當(dāng)某位為0時(shí),相應(yīng)的10為輸出;當(dāng)某位被置為1時(shí),相應(yīng)的引腳為地址線或用于地址控制。PORTB-PORTJ在寄存器操作方面完全相同,GPxCON中每兩位控制一個(gè)引腳:00表示輸入,01表示輸出,10表示特殊功能,11保留不用。GPxDAT寄存器GPxDAT寄存器用于讀/寫引腳:當(dāng)引腳被設(shè)置為輸入時(shí),讀此寄存器可知相應(yīng)引腳電瓶狀態(tài)是高還是低;當(dāng)引腳被設(shè)為輸出時(shí),寫此寄存器相應(yīng)的位可令此引腳輸出高電平或低電平。GPxUP寄存器GPxUP寄存器某位為1時(shí),相應(yīng)引腳無內(nèi)部上拉電阻;為0時(shí)相應(yīng)的引腳使用內(nèi)部上拉電阻。(上拉電阻:由于管腳懸空比較容易受到外界的電磁干擾,因此通過一個(gè)電阻來將此管腳與高電平相連,讓其固定在高電平,這樣的電阻稱之為上拉電阻。)1-3帶數(shù)碼管的交通信號燈設(shè)計(jì)本文通過利用ARM芯片模擬來實(shí)現(xiàn)帶數(shù)碼管的交通信號燈設(shè)計(jì)。用ARM實(shí)驗(yàn)箱的LED和七段數(shù)碼管模擬十字路口的交通燈。將LED的數(shù)碼管分成兩組,分別代表一個(gè)路口的東西向和南北向紅黃綠三色交通燈。數(shù)碼管計(jì)時(shí)顯示剩余時(shí)間,綠燈顯示27秒,然后黃燈顯示3秒,紅燈顯示30秒。南北與東西向的交通燈協(xié)同工作,循環(huán)顯示,一個(gè)周期一分鐘。一個(gè)復(fù)位按鈕,按一下雙向黃燈閃爍,計(jì)時(shí)20秒后恢復(fù)到初始狀態(tài),然后繼續(xù)工作[習(xí)。

2設(shè)計(jì)步驟2.1設(shè)計(jì)思路本文是利用S3C2440ARM芯片來實(shí)現(xiàn)帶數(shù)碼管的交通信號燈設(shè)計(jì)。在實(shí)現(xiàn)紅、綠、黃燈的循環(huán)控制上,通過使用紅、黃、綠三種不同顏色的LED燈實(shí)現(xiàn)此功能。南北方向綠、黃、紅三個(gè)燈依次接在P0.20、P0.21、P0.22上,東西方向的綠、黃、紅三個(gè)燈依次接在P0.16、P0.17、P0.18±,用軟件控制燈的亮與滅來控制車輛和行人的通行。在實(shí)現(xiàn)用數(shù)碼管顯示倒計(jì)時(shí)的過程中,可以利用動態(tài)顯示或靜態(tài)顯示,串行并出或者并行并出實(shí)現(xiàn)。采用兩位數(shù)碼顯示器顯示南北方向時(shí)間,采用兩位數(shù)碼顯示器顯示東西方向時(shí)間,交通燈控制器工作流程如圖1所示:圖1交通燈控制器工作流程圖2.2圖1交通燈控制器工作流程圖2.2設(shè)計(jì)框本設(shè)計(jì)釆用S3C2440作為系統(tǒng)的主控芯片,控制交通燈的循環(huán)點(diǎn)亮?xí)r間,并釆用倒計(jì)時(shí)顯示?;究驁D是主要有三部分組成:S3C2440最小系統(tǒng)、交通燈循環(huán)模塊、倒計(jì)時(shí)顯示模塊。其系統(tǒng)框圖如圖2所示:

圖2系統(tǒng)框圖其主程序流程圖如圖3所示:圖3主程序流程圖2.3顯示模塊釆用共陽極七段數(shù)碼管顯示交通燈倒計(jì)時(shí),東西、南北兩個(gè)方向各用兩個(gè)數(shù)碼管顯示時(shí)間。設(shè)置紅綠燈時(shí)間為27秒,當(dāng)南北方向綠燈倒計(jì)時(shí)為0后,黃燈倒計(jì)時(shí)延時(shí)3秒。3秒后,南北方向交通燈變?yōu)榧t燈,而東西方向交通燈變?yōu)榫G燈,倒計(jì)時(shí)3秒整個(gè)交通燈倒計(jì)時(shí)用循環(huán)模塊無限制循環(huán)。南北方向綠、黃、紅三個(gè)燈依次接在P0.20、P0.21、P0.22上,東西方向的綠、黃、紅三個(gè)燈依次接在PO.16、PO.17、PO.18上,PO.O-PO.7引腳連接數(shù)碼管段選位,PO.12-PO.15引腳連接數(shù)碼管位選位。本設(shè)計(jì)釆用共陽七段數(shù)碼管,故有效電平為低電平,根據(jù)引腳OXFFBFFFFF或者OXFFFBFFFF代表紅燈亮,其中B(1011);OXFFEFFFFF或者OXFFFEFFFF代表紅燈亮,其中E(1110);OXFFDFFFFF或者OXFFFDFFFF代表紅燈亮,其中D(1101)。通過IOOPIN=(IOOPIN&OXFFFFOFFF)I(wei[weishu]?8),將100的32位接口按位與“FFFFOFFF”,把PO.12-P0.15端口清零,同時(shí)將位碼左移8位,因?yàn)樵陂_始的位碼數(shù)組中定義的值是在4-7位,但是在芯片上接口在12-15位,所以需要左移8位。IOOPIN二(IOOPIN&OXFFFFFFOO)丨(LED_num[shu]?8)將P0.0-P0.7變?yōu)榈碗娖?,芯片接口就是在最?位,所以不用左移。其交通燈顯示情況如下表所示:南北方向綠燈27秒黃燈3秒紅燈27秒紅燈3秒東西方向紅燈27秒紅燈3秒綠燈27秒黃燈3秒2.4刷新與延時(shí)模塊延時(shí)子程序可以消除抖動,防止因硬件不穩(wěn)定而造成顯示不穩(wěn)定。3實(shí)驗(yàn)結(jié)果及結(jié)果分析3.1實(shí)驗(yàn)代碼include,,..\ucos-ii\iiicludes.hHinclude^..Xucos-ii^ddXosaddition.h^#iiiclude二?\inc\drv.h”〃設(shè)備驅(qū)動include"stiing.h”#iiiclude".Ainc'exio.h”//系統(tǒng)輸入輸出〃定義數(shù)碼管段碼UnsignedcharLed[]={ox3f,0x0610x5b、ox4e、0x66,0x6d,Ox7d,x07.0x7f,0x6f,ox77,0x39,0x5e,0x79,0x71};〃定義全局變量BOOLEAN Is_Working;〃工作狀態(tài)iiitCount; //計(jì)時(shí)器

voidonKey(intnkey,iiitfiikey); 〃鍵盤消息處理函數(shù)聲明〃任務(wù)定義〃OS.STKMam_Stack[STACKSIZE*8];〃任務(wù)堆棧voidkey_Task(void*Id):^definekey_Task_Prio12 〃定義任務(wù)優(yōu)先級OS.STKLed_Flash_Stack[STACKSIZE];〃任務(wù)堆棧VoidLed_Flash_Task(void*Id);^defineLed_Flash_Piio60OS.STKDisplay_Task_Stack[STACKSIEZ*8]〃任務(wù)堆棧VoidDisplay_Task(void*Id);#defineDisplay_Task_P】io52/己經(jīng)定義的任務(wù)/191912585960〃讀寫控制權(quán)信號量//uart讀寫控制信號量^defineTouch.Screen^Task_Prio^definekey_Task_Prio^definekey_SCan_Task_PiiO^defineLcd_Fresh_piio^defineL亡d_Flash_Prio/爭件定義/OSEVENT*NandRwSem;OSEVENT*UartRwSem;VoidLed_Flash_Task(void*Id)〃指示ROTS處于正常工作中(ursignedcliarled_state;Uart_piiiitf(O,n\iilOM);For(;;)//消息死循壞{_Led_Displav(led_state);//顯示LED燈狀態(tài)ledstate=-ledstate;OSTime(250);〃時(shí)間設(shè)置}voidliutOSGUIQ〃初始化圖形界面{iiiitOSMeasage():iiiitOSList();mitOSDC();iiiitOSCtrl();iiutOSFileQ;}liltMam(iiitaigc,char**argv)ARMTargetnut(); 〃系統(tǒng)碩件初始化OSImt(); 〃操作系統(tǒng)初始化LCD_Iiut(); //初始化LCD模塊LEC_pnntf(”LCD初始化完成5”):LoadFont(); //裝載字庫LoadConfigSysO;〃裝載coiifig.sys配置文件LCD_Pimtf(4<CreatetaskonUcos_ii \n”);//顯示液晶屏信息〃建立任務(wù)OSTaskCreate(key_Task,(void*)0,(OS_STK*)&key_stack[SATCKSIZE*8-l].kev_Task_prio);/建立任務(wù)OSTaskCieate(Led_Flash_Task,(void*)0.(OS_STK*)&Led_Fbsh_stack[SATCKSIZE*8-l],Led_Flash_prio);/建立任務(wù)OSTaskCreate(Led_Task,(void*)0,(OS_STK*)&Led_stack[SATCKSIZE*8-l],Led_Task_pno);/建立任務(wù)OSTaskCreate(Display_Task,(void*)0,(OS_STK*)&Display_Task_stack[SATCKSIZE*8-l],Display_Task_prio);〃添加任務(wù)OSAddTask_Lut();〃輸出LCD_Priiitf("startingucos-II…\n");LCD_Priiitf(^enteringgraphmode.. ):LCE_ChangeMode(DspGraMode);//設(shè)置液晶屏顯示為圖形模式LutOSGUIO;//初始化圖形界面LutRtcO;//初始化系統(tǒng)時(shí)鐘Nand_Rw_Sem=OSSemCreate(l)//創(chuàng)建Nand-Flash讀寫控制權(quán)旗語,初值為1,滿足互斥條件OSStai-tQ;//啟動操作系統(tǒng)voidkey_Task(void*Id)〃創(chuàng)建并發(fā)送到系統(tǒng)的任務(wù)隊(duì)列{POSMSGpMsg=0;〃創(chuàng)建消息結(jié)構(gòu)Is_workHig=TURE;〃工作狀態(tài)For(;;) 〃死循環(huán){pMsg=WaitMessage(O);〃等待消息switch(pMsg->Message)//比較{CaseOSM_KEY:Onkey(pMsg->\vparam,pMsg->LParam);//?盤消息響應(yīng)Break;OSTmiDly(1000);//修改任務(wù)時(shí)間參數(shù)}DeleteMessage(pMsg);//刪除消息}}voidLED_Task{void*id)//創(chuàng)建數(shù)碼管任務(wù)隊(duì)列{mteasnvest=l;〃正為東西綠燈亮,負(fù)為難背綠燈亮Count=30;//紅綠燈備亮30秒for(;;) 〃死循壞{if(Count>0){if(Is_woikiiig==TRUE){〃東西通行If(eastwest>0)If(count<4)IOODIR=OXEB;〃東西綠燈,南北黃燈ElseIOODIR=Oxe7;〃東西綠燈,南北紅燈}Else{〃南北通行If(count<4)IOODIR=OXBE;〃東西黃燈,南北綠燈ElseIOODIR=0x7e;〃東西紅燈,南北綠燈}OSTimeDly(1500);〃修改任務(wù)時(shí)間參數(shù)Else{IOODIR=Oxbb: //黃燈亮OSTimeDly(500);〃修改任務(wù)時(shí)間參數(shù)IOODIR=Oxff://黃燈滅OSTimeDly(l000);//修改任務(wù)時(shí)M參數(shù)}Count-;elseIs_working=TURE〃工作狀態(tài)Eastwest=-easiest;Count=30;}voidonKey(mtnkey,mtfiikey)〃鍵盤消息處理函數(shù)If(iikev==15){Is_wodong=FALSE;//工作狀態(tài)為復(fù)位狀態(tài)Count=20;〃計(jì)時(shí)設(shè)為20秒}3.2實(shí)驗(yàn)步在ADS1.2中,使用己經(jīng)創(chuàng)建好的模板,新建一個(gè)項(xiàng)目gffic。把操作系統(tǒng)所需要的頭文件和庫文件加入工程中。把交通燈文件夾中的C語言源文件加入。打開main.c文件,在Main()數(shù)中創(chuàng)建3個(gè)任務(wù):(1)key_Task負(fù)責(zé)接收鍵盤消息,執(zhí)行工作狀態(tài)的控制;⑵LED_Task負(fù)責(zé)發(fā)光二極管的顯示,同時(shí)負(fù)責(zé)每秒將Count時(shí)間計(jì)數(shù)器減1;Display_Task負(fù)責(zé)數(shù)碼管的動態(tài)顯示,顯示Count剩余時(shí)間。全丿』變量Count用來記錄剩余時(shí)間;全局變量Is_woiking用來控制工作狀態(tài)。LED_Task任務(wù)局部變量eastwest用來記錄當(dāng)前通行方向,1為東西向,-1為南北向。4?在key_Task任務(wù)中添加代碼,主要任務(wù)是初始化一些變量,啟動消息循環(huán),等待鍵盤掃描任務(wù)發(fā)來的消M(OSM_KEY),并調(diào)用onKey函數(shù)進(jìn)行處理。完成交通燈控制任務(wù)和數(shù)碼管顯示任務(wù)。數(shù)碼管顯示任務(wù)交替顯示計(jì)時(shí)的十位和個(gè)位。交通燈控制任務(wù)實(shí)現(xiàn)通行方向的控制。用ADS1.2編譯、下載并調(diào)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論