




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、題目 交通控制系統(tǒng)之軟件程序設(shè)計(jì)與實(shí)現(xiàn) 摘要十字路口車輛穿梭,車行車道,人行人道,有條不紊。那么靠什么來實(shí)現(xiàn)這井然秩序呢? 靠的就是交通信號(hào)燈的自動(dòng)指揮系統(tǒng)。本系統(tǒng)以SPCE061A為主控制器,配合交通燈模組V3.0,實(shí)現(xiàn)交通燈的基本控制功能。系統(tǒng)的硬件部分包括SPCE061A板和交通燈模組v3.0。SPCE061A板部分主要是通過I/O口控制交通燈模組中各LED板的數(shù)碼管和發(fā)光二極管的顯示;交通燈模組v3.0部分由交通LED燈和數(shù)碼管組成。軟件部分應(yīng)用單片機(jī)C語言實(shí)現(xiàn)了本設(shè)計(jì)的全部控制功能,包括進(jìn)行設(shè)置與顯示狀態(tài)的切換,數(shù)碼管倒計(jì)時(shí)功能,以及相應(yīng)狀態(tài)是數(shù)碼管的倒計(jì)時(shí)和交通指示燈的顯示。關(guān)鍵字
2、: SPCE061A;交通燈模組v3.0;數(shù)碼管;倒計(jì)時(shí);AbstractCrossing transports,garage,pedestrian humanitarian,orderly driveway. So what to realize it in order? The traffic light automatic command system. This system mainly in SPCE061A traffic controller, cooperating light module V3.0 , realize the basic control functions
3、 of lights.The system includes hardware SPCE061A plate and light module v3.0. SPCE061A board part mainly through the I/O port traffic control in each module of the board and LED digital display light emitting diode, Light module v3.0 part by traffic leds and digital pipe.Application software of sing
4、le-chip C realized the design of all control functions, including setting and display, digital switching status, and the corresponding pipe countdown function of state is digital countdown and traffic lights.Keywords: SPCE061A; light module v3.0; digital pipe; countdown;目錄摘要IAbstractII目錄I第一章引言1第二章單片
5、機(jī)的概述22.1單片機(jī)的發(fā)展22.2單片機(jī)的應(yīng)用2第三章系統(tǒng)硬件設(shè)計(jì)43.1SPCE061A簡(jiǎn)介43.2SPCE061A 精簡(jiǎn)開發(fā)板簡(jiǎn)介63.3交通燈模組v3.0簡(jiǎn)介73.4交通燈模型及功能83.5交通燈控制系統(tǒng)框圖103.6 交通燈控制系統(tǒng)模塊12第四章 系統(tǒng)軟件設(shè)計(jì)164.1 主程序設(shè)計(jì)164.2系統(tǒng)狀態(tài)194.3倒計(jì)時(shí)功能204.4 子程序設(shè)計(jì)22第五章 系統(tǒng)調(diào)試345.1 操作步驟及流程圖345.2 系統(tǒng)調(diào)試中現(xiàn)的問題及解決的辦法36結(jié)束語38參考文獻(xiàn)39致謝40第1章 引言隨著社會(huì)經(jīng)濟(jì)的發(fā)展,城市交通越來越成為人們不可忽視的問題。人、車、路之間的協(xié)調(diào),已經(jīng)成為交通管理部門主要解決的問
6、題。城市交通控制系統(tǒng)是用于城市交通數(shù)據(jù)監(jiān)測(cè)、交通信號(hào)燈控制與交通疏導(dǎo)的計(jì)算機(jī)綜合管理系統(tǒng),它是現(xiàn)代城市交通監(jiān)控指揮系統(tǒng)中最重要的組成部分。而交通信號(hào)燈是我們常見的交通管理系統(tǒng)。本方案利用SPCE061A為主控制器,配合交通燈模組V3.0設(shè)計(jì)的交通燈控制系統(tǒng)。該系統(tǒng)在適當(dāng)?shù)臅r(shí)候控制點(diǎn)亮綠色、黃色或者紅色的LED燈,示意行人或者車輛可以通行或者不可以通行;另外通過數(shù)碼管倒計(jì)時(shí),示意車輛或者行人不可以通行時(shí)需要等待的時(shí)間或者通行時(shí)還有多少的剩余時(shí)間。第2章 單片機(jī)的概述2.1 單片機(jī)的發(fā)展單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),特別適用于控制領(lǐng)域
7、,故又稱為微控制器。通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器、存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SoC三大階段:1.SCM即單片微型計(jì)算機(jī)(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)。2. MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對(duì)象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對(duì)象的智能化控制能力。3.
8、 單片機(jī)是嵌入式系統(tǒng)的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢(shì)。單片機(jī)經(jīng)過1、2、3、3代的發(fā)展,目前單片機(jī)正朝著高性能和多品種方向發(fā)展,它們的CPU功能在增強(qiáng),內(nèi)部資源在增多,引角的多功能化,以及低電壓底功耗。2.2 單片機(jī)的應(yīng)用單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可分如下幾個(gè)范疇:1.在智能儀器儀表上的應(yīng)用單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速
9、度等物理量的測(cè)量。2.在工業(yè)控制中的應(yīng)用用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制,與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)等。3.在家用電器中的應(yīng)用現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯褒、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、再到電子秤量設(shè)備,五花八門,無所不在。4.在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),列車無線通信、再到隨處可見的移動(dòng)電話,集群移動(dòng)通信,無線電對(duì)講機(jī)等。5.單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分
10、析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。6.在各種大型電器中的模塊化應(yīng)用某些專用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能,從而在各種電路中進(jìn)行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡(jiǎn)化了電路,降低了損壞、錯(cuò)誤率,也方便于更換。此外,單片機(jī)在工商,金融,科研、教育,國防航空航天等領(lǐng)域都有著十分廣泛的用途。第3章 系統(tǒng)硬件設(shè)計(jì)3.1 SPCE061A簡(jiǎn)介 SPCE061A 概述SPCE061A 是凌陽科技研發(fā)生產(chǎn)的性價(jià)比很高的一款十六位單片機(jī),使用它可以非常方便靈活的實(shí)現(xiàn)語音的錄放系統(tǒng),該芯片擁有8 路10 位精度的ADC,其中一路為音頻轉(zhuǎn)換通道,并且內(nèi)
11、置有自動(dòng)增益電路。這為實(shí)現(xiàn)語音錄入提供了方便的硬件條件。兩路10 精度的DAC,只需要外接功放(SPY0030A)即可完成語音的播放。另外凌陽十六位單片機(jī)具有易學(xué)易用的效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標(biāo)準(zhǔn)C 語言,可以實(shí)現(xiàn)C 語言與凌陽匯編語言的互相調(diào)用,并且,提供了語音錄放的庫函數(shù),只要了解庫函數(shù)的使用,就會(huì)很容易完成語音錄放,這些都為軟件開發(fā)提供了方便的條件:SPCE061A 片內(nèi)還集成了一個(gè)ICE(在線仿真電路)接口,使得對(duì)該芯片的編程、仿真都變得非常方便,而ICE 接口不占用芯片上的硬件資源,結(jié)合凌陽科技提供的集成開發(fā)環(huán)境(unSP IDE)用戶可以利用它對(duì)芯片進(jìn)
12、行真實(shí)的仿真;而程序的下載(燒寫)也是通過該接口進(jìn)行下載。 下圖為 SPCE061A 單片機(jī)的內(nèi)部結(jié)構(gòu)框圖:圖 3-1 SPCE061A 內(nèi)部結(jié)構(gòu)圖 SPCE061A特性 16 位nSP 微處理器; 工作電壓:內(nèi)核工作電壓VDD 為3.03.6V(CPU),IO 口工作電壓VDDH 為VDD5.5V(I/O); CPU 時(shí)鐘:0.32MHz49.152MHz; 內(nèi)置2K 字SRAM; 內(nèi)置32K 閃存ROM; 可編程音頻處理; 晶體振蕩器; 系統(tǒng)處于備用狀態(tài)下(時(shí)鐘處于停止?fàn)顟B(tài)),耗電小于2A3.6V; 2 個(gè)16 位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值); 2 個(gè)10 位DAC(數(shù)-模
13、轉(zhuǎn)換)輸出通道; 32 位通用可編程輸入/輸出端口; 14 個(gè)中斷源可來自定時(shí)器A / B,時(shí)基,2 個(gè)外部時(shí)鐘源輸入,鍵喚醒; 具備觸鍵喚醒的功能; 使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數(shù)據(jù); 鎖相環(huán)PLL 振蕩器提供系統(tǒng)時(shí)鐘信號(hào); 32768Hz 實(shí)時(shí)時(shí)鐘; 7 通道10 位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)換器; 聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動(dòng)增益控制(AGC)功能; 具備串行設(shè)備接口; 低電壓復(fù)位(LVR)功和低電壓監(jiān)測(cè)(LVD)功能; 內(nèi)置在線仿真(ICE,In- Circuit Emulator)接口3.2 SP
14、CE061A 精簡(jiǎn)開發(fā)板簡(jiǎn)介SPCE061A 精簡(jiǎn)開發(fā)板(簡(jiǎn)稱61 板),是以凌陽16 位單片機(jī)SPCE061A 為核心的精簡(jiǎn)開發(fā)仿真實(shí)驗(yàn)板,大小相當(dāng)于一張撲克牌,是“凌陽科技大學(xué)計(jì)劃”專為大學(xué)生、電子愛好者等進(jìn)行電子實(shí)習(xí)、課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、電子制作及電子競(jìng)賽所設(shè)計(jì)的,也可作為單片機(jī)項(xiàng)目初期研發(fā)使用。61 板除了具備單片機(jī)最小系統(tǒng)電路外,還包括有電源電路、音頻電路、復(fù)位電路等,采用電池供電,方便學(xué)生隨身攜帶!使學(xué)生在掌握軟件的同時(shí),熟悉單片機(jī)硬件的設(shè)計(jì)制作,鍛煉學(xué)生的動(dòng)手能力,也為單片機(jī)學(xué)習(xí)者和開發(fā)者創(chuàng)造了一個(gè)良好的學(xué)習(xí)條件和開發(fā)新產(chǎn)品的機(jī)會(huì)!61 板上有調(diào)試器接口(Probe 接口)以及下
15、載線(EZ_Probe)接口,分別可接凌陽科技的在線調(diào)試器、簡(jiǎn)易下載線,配合unSP IDE,可方便地在板上實(shí)現(xiàn)程序的下載、在線仿真調(diào)試。61 板上的主要功能模塊如下: SPCE061A 單片機(jī)最小系統(tǒng)外圍電路模塊; 電源輸入模塊; 音頻電路(包含MIC 輸入、DAC 音頻功放輸出)模塊; 按鍵模塊; I/O 端口接口模塊; 調(diào)試、下載接口模塊;下圖為61板的實(shí)物圖:圖3-2 61板實(shí)物圖3.3交通燈模組v3.0簡(jiǎn)介交通燈模組V3.0包括一塊驅(qū)動(dòng)電路板(交通燈模組V3.0_驅(qū)動(dòng)板)和四塊LED板(交通燈模組V3.0_LED板)。n LED板中每個(gè)方向提供四組交通LED燈(包括左轉(zhuǎn)、直行、右轉(zhuǎn)、
16、人行道四組),每組交通燈包括紅、黃、綠三個(gè)燈,可以實(shí)現(xiàn)交通的通行控制. n LED板中每個(gè)方向提供兩個(gè)數(shù)碼管,可以實(shí)現(xiàn)100以內(nèi)的倒計(jì)時(shí). 交通燈模組實(shí)物圖如圖 3.2,使用時(shí),直接用10pin排線連接驅(qū)動(dòng)板的單片機(jī)接口和61板的I/O口即可使用。圖3-3 交通燈模組實(shí)物圖3.4交通燈模型及功能路口交通模型介紹一個(gè)典型的十字路口,分別用1,2,3,4(表示東、南、西、北4方向)表示4個(gè)流向的主車道,用L,S,R,P分別表示各主車道的左行車道、直行車道、右行車道以及人行橫道,其實(shí)際路口交通示意圖如圖3-4所示: 圖3-4 路口交通示意圖上圖中,常規(guī)交通燈的綠燈亮狀態(tài)(通行)順序?yàn)椋簣D3-5 通行
17、順序圖其中,“1-2”表示1P和2P可以通過路口2通行;“2-3”表示2P和3P可以通過路口3通行;“3-4”表示3P和4P可以通過路口4通行;“4-1”表示4P和1P可以通過路口1通行。 交通燈功能簡(jiǎn)介本方案的交通燈就是一個(gè)簡(jiǎn)易的交通指示燈控制系統(tǒng), 由一套SPCE061A精簡(jiǎn)開發(fā)板(簡(jiǎn)稱61板)和一套交通燈模組構(gòu)成,功能有: 1.系統(tǒng)有兩個(gè)狀態(tài),設(shè)置狀態(tài)和顯示狀態(tài),利用61板的鍵盤的KEY1鍵盤可以進(jìn)行兩個(gè)狀態(tài)間的切換;2.開機(jī)時(shí),系統(tǒng)為顯示狀態(tài),四個(gè)路口數(shù)碼管從默認(rèn)的倒計(jì)時(shí)時(shí)間(本系統(tǒng)四個(gè)路口分別為24、24、49、74)開始倒計(jì)時(shí);3.設(shè)置狀態(tài)時(shí)利用61板的KEY1KEY3鍵盤可以設(shè)置
18、各路口直行通行倒計(jì)時(shí)時(shí)間,設(shè)置的路口數(shù)碼管閃爍顯示,各路口的通行時(shí)間可以不相等,其中KEY2為加1鍵,KEY3為減1鍵,KEY1為確定鍵;4.顯示狀態(tài)時(shí),交通燈模組的四個(gè)LED板的數(shù)碼管進(jìn)行倒計(jì)時(shí);LED板各組的紅綠燈交通指示;如果一個(gè)LED板上有三個(gè)綠燈亮,這時(shí)候數(shù)碼管顯示的是通行時(shí)間,否則,數(shù)碼管顯示的是等待時(shí)間;顯示過程中按KEY1鍵可以重新進(jìn)入設(shè)置狀態(tài)。下圖為功能框圖:圖3-6 功能框圖3.5交通燈控制系統(tǒng)框圖本系統(tǒng)由一套61板和一套交通燈模組構(gòu)成,如圖3-7,SPCE061A通過I/O口控制交通燈模組中各LED板的數(shù)碼管和發(fā)光二極管的顯示;通過61板上的三個(gè)鍵盤KEY1KEY3可以設(shè)
19、置各LED板指示的路口通行倒計(jì)時(shí)時(shí)間。圖3-7 系統(tǒng)結(jié)構(gòu)框圖系統(tǒng)硬件連接如圖3-8,把四個(gè)LED板連接到驅(qū)動(dòng)板上,利用三根10pin排線分別連接交通燈模組和61板的J5與J9、J6與J6、J7與J7;連接61板電源,注意要把61板的J5接口選擇為5V。圖3-8 系統(tǒng)硬件連接圖3.6 交通燈控制系統(tǒng)模塊由圖3-7的框圖可以看出,本系統(tǒng)硬件主要由兩大模塊組成:控制模塊和交通燈指示模塊。3.6.1 控制模塊本系統(tǒng)中控制模塊主要是61板,控制系統(tǒng)運(yùn)行的三個(gè)按鍵直接使用61板上的KEY1KEY3,如圖 3-9。在61板電路中,已經(jīng)和IOA02連接。圖 3-9 61板鍵盤電路圖另外,SPCE061A通過I
20、/O口控制交通燈模組的數(shù)碼管的顯示和紅、黃、綠LED燈的亮/滅。61板的I/O口電路如圖3-A。使用時(shí),可以直接用10pin的排線和交通燈模組驅(qū)動(dòng)板的單片機(jī)接口連接。圖3-A 61板接口電路圖 指示模塊本系統(tǒng)中交通燈指示燈模塊就是交通燈模組V3.0,包括驅(qū)動(dòng)板和LED板,驅(qū)動(dòng)板電路如圖3-B,其中,J1J4為LED板的接口,使用時(shí),可以直接把 LED板插接在這四個(gè)接口上;J5J7為單片機(jī)接口,使用時(shí)可以使用10pin排線直接和61板連接。圖3-B 交通燈模組驅(qū)動(dòng)板電路圖LED板電路如圖4-12,J1為LED板和驅(qū)動(dòng)板的接口。本系統(tǒng)中使用的四塊LED板完全相同,注意每一個(gè)LED板插接時(shí)與驅(qū)動(dòng)板接
21、口中ag,G1G4的連接順序。圖3-B 交通燈模組LED板電路 第四章 系統(tǒng)軟件設(shè)計(jì)4.1 主程序設(shè)計(jì)主程序流程圖圖4-1 主程序流程圖代碼編寫用來控制系統(tǒng)在兩個(gè)狀態(tài)(設(shè)置狀態(tài)與顯示狀態(tài))的切換,設(shè)置狀態(tài)時(shí)通行時(shí)間的設(shè)置和顯示狀態(tài)時(shí)各數(shù)碼管的倒計(jì)時(shí)和發(fā)光二極管的點(diǎn)亮與熄滅。其代碼如下: int main(void)DIG_Initial();/端口初始化,該函數(shù)在DIG.asm中定義,在DIG.h申明*P_INT_Ctrl_New |= C_IRQ5_2Hz;/開2Hz中斷,以便系統(tǒng)進(jìn)行倒計(jì)時(shí)_asm(int irq);Nnum = ENUM+SNUM+WNUM-1;Wnum = ENUM+S
22、NUM-1;Snum = ENUM-1;Enum = ENUM-1;/設(shè)置各方向路口初始時(shí)的倒計(jì)時(shí)時(shí)間,倒計(jì)時(shí)時(shí)間可以在DIGuser.h文件中修改max = Nnum;/保存各向初始倒計(jì)時(shí)時(shí)間中最大的數(shù)據(jù),以便計(jì)時(shí)過程中使用min = Enum;/保存各向初始倒計(jì)時(shí)時(shí)間中最小的數(shù)據(jù),以便計(jì)時(shí)過程中使用while(1)/交通燈控制DirFlag = EAST_G;/設(shè)置方向狀態(tài)標(biāo)志為東邊路口車輛直行通行狀態(tài),EAST_G為EAST GreenEnum = min;/東邊路口數(shù)碼管從min開始倒計(jì)時(shí)EastSTrough();/進(jìn)入1L,1S,1P,3R,4R(通行25s)狀態(tài),該函數(shù)在DIGu
23、ser.c文件中定義DirFlag = SOUTH_G;/設(shè)置方向狀態(tài)標(biāo)志為南邊路口車輛直行通行狀態(tài),SOUTH_G為SOUTH GreenSnum = min;/南邊路口數(shù)碼管從min開始倒計(jì)時(shí)SouthSTrough();/進(jìn)入2L,2S,2P,4R,1R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義DirFlag = WEST_G;/設(shè)置方向狀態(tài)標(biāo)志為西邊路口車輛直行通行狀態(tài),WEST_G為WEST GreenWnum = min;/西邊路口數(shù)碼管從min開始倒計(jì)時(shí)WestSTrough();/進(jìn)入3L,3S,3P,1R,2R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中
24、定義DirFlag = NORTH_G;/設(shè)置方向狀態(tài)標(biāo)志為北邊路口車輛直行通行狀態(tài),NORTH_G為NORTH GreenNnum = min;/北邊路口數(shù)碼管從min開始倒計(jì)時(shí)NorthSTrough();/進(jìn)入4L,4S,4P,1R,2R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義*P_Watchdog_Clear = 0x0001;4.2系統(tǒng)狀態(tài) 狀態(tài)設(shè)計(jì)本系統(tǒng)有2個(gè)狀態(tài):設(shè)置狀態(tài)和顯示狀態(tài),設(shè)置狀態(tài)時(shí)通過鍵盤來設(shè)置4個(gè)路口的通行時(shí)間,被設(shè)置的路口數(shù)碼管會(huì)閃爍顯示;顯示狀態(tài)中又分了東邊路口指示直行通行,南邊路口指示直行通行,西邊路口指示直行通行,北邊路口指示直行通行4個(gè)顯示
25、狀態(tài);4個(gè)路口用數(shù)碼管顯示倒計(jì)時(shí)時(shí)間,紅黃綠發(fā)光二極管按照?qǐng)D34通行示意圖進(jìn)行亮滅指示。主程序文件,控制系統(tǒng)在兩個(gè)狀態(tài)的切換。主程序流程圖如圖4-1所示。主程序上電后為顯示狀態(tài),系統(tǒng)按照默認(rèn)(25s)的倒計(jì)時(shí)時(shí)間進(jìn)行倒計(jì)時(shí)顯示,從東邊路口通行狀態(tài)開始,按照東、南、西、北的方式順序進(jìn)行;在顯示的過程中,如果有KEY1鍵按下,則進(jìn)入設(shè)置狀態(tài)4.2.2 設(shè)置狀態(tài)設(shè)置狀態(tài)時(shí),按KEY1進(jìn)入第一個(gè)路口的指示通行時(shí)間設(shè)置,按KEY2和KEY3進(jìn)行時(shí)間的調(diào)整,設(shè)置完成后按KEY1切換到下一個(gè)路口設(shè)置。4個(gè)路口都設(shè)置完成后,先判斷設(shè)置是否正確,如果不正確,返回繼續(xù)設(shè)置。4.2.3 顯示狀態(tài)圖 4-1中,顯示狀
26、態(tài)時(shí),各路口的直行狀態(tài),其實(shí)是圖3-5通行示意圖四個(gè)通行狀態(tài)的其中一個(gè)狀態(tài),所以這個(gè)狀態(tài)不但要允許直行通行,同時(shí)要允許圖3-5中各狀態(tài)下其他方向通行。比如在東邊路口直行通行狀態(tài)下,事實(shí)上該狀態(tài)函數(shù)里,按照?qǐng)D3-5,應(yīng)該是1L、1S、1-2P、3R、4R狀態(tài),所以不但要允許東邊路口指示直行通行,也要允許東邊路口左拐和人行道指示通行,還要允許西邊和北邊路口右拐指示通行,程序段如下:LEDShow(EAST_L,LeftGrn,StrtGrn,RigtRed,MansGrn); /東邊路口左拐、直行、人行道綠燈亮,右拐紅燈亮 LEDShow(SOUTH_L,LeftRed,StrtRed,RigtR
27、ed,MansRed); /南邊路口全部紅燈亮 LEDShow(WEST_L,LeftRed,StrtRed,RigtGrn,MansRed); /西邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮 LEDShow(NORTH_L,LeftRed,StrtRed,RigtGrn,MansRed); /北邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮另外,在四個(gè)顯示狀態(tài)里,都調(diào)用了鍵盤掃描函數(shù),如果KEY1按下,結(jié)束顯示狀態(tài),進(jìn)入設(shè)置狀態(tài)。程序段如下:iKey=KeyScan(); /取鍵值if(iKey=1) /判斷KEY1是否按下 DirFlag = 0; status=1; /是,進(jìn)入設(shè)置狀態(tài)這也是
28、每次進(jìn)入一個(gè)顯示狀態(tài)前,先判斷是否為顯示狀態(tài)的原因。4.3倒計(jì)時(shí)功能每個(gè)顯示狀態(tài)的直行通行路口從設(shè)置好的通行時(shí)間開始倒計(jì)時(shí),倒計(jì)時(shí)到0時(shí),從其他三個(gè)路口的通行時(shí)間之和開始倒計(jì)時(shí);其他路口正常減1倒計(jì)時(shí)。程序段如下:while(status=SHOW) max = Snumset+Wnumset+Nnumset-1;/設(shè)置通行后的等待時(shí)間DirFlag = EAST_G; /設(shè)置方向狀態(tài)標(biāo)志為東邊路口車輛直行通行狀態(tài),EAST_G為EAST Green Enum = Enumset-1; /東邊路口數(shù)碼管從Enumset(設(shè)置通行時(shí)間)-1開始倒計(jì)時(shí) EastSTrough(); /進(jìn)入1L,1
29、S,1P,3R,4R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義if(status=SHOW) max = Wnumset+Nnumset+Enumset-1; /設(shè)置通行后的等待時(shí)間 DirFlag = SOUTH_G; /設(shè)置方向狀態(tài)標(biāo)志為南邊路口車輛直行通行狀態(tài),SOUTH_G為SOUTH Green Snum = Snumset-1; /南邊路口數(shù)碼管從Snumset(設(shè)置通行時(shí)間)-1開始倒計(jì)時(shí) SouthSTrough(); /進(jìn)入2L,2S,2P,4R,1R(通行25s)狀態(tài),該函數(shù)在DIGuser.c中定義 if(status=SHOW) max = Nnumset
30、+Enumset+Snumset-1; /設(shè)置通行后的等待時(shí)間 DirFlag = WEST_G; /設(shè)置方向狀態(tài)標(biāo)志為西邊路口車輛直行通行狀態(tài),WEST_G為WEST Green Wnum = Wnumset-1; /西邊路口數(shù)碼管從Wnumset(設(shè)置通行時(shí)間)-1開始倒計(jì)時(shí) WestSTrough(); /進(jìn)入3L,3S,3P,1R,2R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義 if(status=SHOW) max = Enumset+Snumset+Nnumset-1; /設(shè)置通行后的等待時(shí)間 DirFlag = NORTH_G; /設(shè)置方向狀態(tài)標(biāo)志為北邊路口車輛直行
31、通行狀態(tài),NORTH_G為NORTH Green Nnum = Nnumset-1; /北邊路口數(shù)碼管從Nnumset(設(shè)置通行時(shí)間)-1開始倒計(jì)時(shí) NorthSTrough(); /進(jìn)入4L,4S,4P,1R,2R(通行25s)狀態(tài),該函數(shù)在DIGuser.c中定義 *P_Watchdog_Clear = 0x0001; 4.4 子程序設(shè)計(jì)本系統(tǒng)軟件包括main.c、DIGuser.c、DIG.asm、Key.c、isr.asm 5個(gè)源文件,其中:其中main.c為主程序文件,其余為子程序。 用戶函數(shù)文件DIGuser.c為一個(gè)用戶函數(shù)文件,這個(gè)函數(shù)里定義了倒計(jì)時(shí)、顯示、熄滅等與數(shù)碼管和發(fā)光
32、二極管相關(guān)的函數(shù)。代碼如下:#include SPCE061A.h#include DIG.h#include DIGuser.hunsigned int cn = 0;/IRQ5中斷計(jì)數(shù)變量,該變量在IRQ5函數(shù)中改變unsigned int DirFlag = 0;/通行狀態(tài)標(biāo)志unsigned int iTable10 = 0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007c,0x0007,0x007f,0x006f;/0,1,2,3,4,5,6,7,8,9unsigned int Enum,Snum,Wnum,Nnum;/四個(gè)變量分別用來存儲(chǔ)
33、倒計(jì)時(shí)過程中四個(gè)路口數(shù)碼管顯示的時(shí)間unsigned int max,min;/存儲(chǔ)初始設(shè)置的四個(gè)路口倒計(jì)時(shí)時(shí)間中最大值和最小值/函數(shù)名:void DIGShow(unsigned int DIGDir,unsigned int Num)/功能描述:數(shù)碼管顯示函數(shù),某一個(gè)方向的兩位數(shù)碼管顯示Num數(shù)據(jù),第一位顯示十位,第二位顯示個(gè)位void DIGShow(unsigned int DIGDir,unsigned int Num)unsigned int sw,gw;sw = Num/10;/Num的十位gw = Num%10;/Num的個(gè)位R_DIG_BufDIGDir = iTablesw
34、;/向緩沖區(qū)送顯示十位數(shù)據(jù)R_DIG_BufDIGDir+1 = iTablegw;/向緩沖區(qū)送顯示個(gè)位數(shù)據(jù)/函數(shù)名:void LEDShow/功能描述:發(fā)光二極管點(diǎn)亮函數(shù)void LEDShow(unsigned int LEDDir,unsigned int led1,unsigned int led2,unsigned int led3,unsigned int led4)R_DIG_BufLEDDir = led1 | led2;/向緩沖區(qū)送點(diǎn)亮左拐和直行的發(fā)光二極管數(shù)據(jù)R_DIG_BufLEDDir+1 = led3 | led4;/向緩沖區(qū)送點(diǎn)亮右拐和人行道的發(fā)光二極管數(shù)據(jù)/函數(shù)名
35、:void DIGOff(unsigned int DIGDir)/功能描述:熄滅DIGDir方向路口的數(shù)碼管void DIGOff(unsigned int DIGDir)R_DIG_BufDIGDir = 0;R_DIG_BufDIGDir+1 = 0;/函數(shù)名:void LEDOff(unsigned int LEDDir,unsigned int led)/功能描述:熄滅LEDDir方向路口的某一個(gè)LED燈void LEDOff(unsigned int LEDDir,unsigned int led)led = 0xffff;R_DIG_BufLEDDir &= led; 驅(qū)動(dòng)函數(shù)文
36、件DIG.asm是一個(gè)針對(duì)交通燈模組專門寫的一個(gè)數(shù)碼管和發(fā)光二極管寫的驅(qū)動(dòng)函數(shù)文件,包括初始化函數(shù)和動(dòng)態(tài)掃描函數(shù),其中動(dòng)態(tài)掃描函數(shù)要求在1KHz的中斷服務(wù)函數(shù)中調(diào)用;同時(shí),通過這個(gè)文件可以設(shè)置I/O口。其代碼如下:/文件名:DIG.asm/功能描述:數(shù)碼管顯示及LED燈點(diǎn)亮驅(qū)動(dòng)程序/.DEFINE SEG_IO_Port0/若LED段選用IOA則采用該定義.DEFINE SEG_IO_Port1/若LED段選用IOB則采用該定義.DEFINE SEG_Data0/若LED段選用I/O口低8位則用該定義/.DEFINE SEG_Data1/若LED段選用I/O口高8位則用該定義/=數(shù)碼管及LED
37、燈位選定義/.DEFINE DIG_IO_Port0/若數(shù)碼管及LED管位選選用IOA則采用該定義/.DEFINE DIG_IO_Port1/若數(shù)碼管及LED管位選選用IOB則采用該定義/數(shù)碼管及LED段選I/O口定義.IF SEG_IO_Port=0.DEFINE P_SEG_Data0x7000.DEFINE P_SEG_Buffer0x7001.DEFINE P_SEG_Dir0x7002.DEFINE P_SEG_Attrib0x7003.ELSE.DEFINE P_SEG_Data0x7005.DEFINE P_SEG_Buffer0x7006.DEFINE P_SEG_Dir0x7
38、007.DEFINE P_SEG_Attrib0x7008.ENDIF.IF SEG_Data=0.DEFINE P_SEG_Byte 0x00ff.ELSE.DEFINE P_SEG_Byte 0xff00.ENDIF/數(shù)碼管及LED位選I/O口定義.IFDIG_IO_Port=0.DEFINE P_DIG_Data0x7000.DEFINE P_DIG_Buffer0x7001.DEFINE P_DIG_Dir0x7002.DEFINE P_DIG_Attrib0x7003.ELSE.DEFINE P_DIG_Data0x7005.DEFINE P_DIG_Buffer0x7006.DEF
39、INE P_DIG_Dir0x7007.DEFINE P_DIG_Attrib0x7008.ENDIF/中斷定義.DEFINE P_INT_Ctrl_New0x702d.DEFINE C_IRQ4_1KHz0x0010/變量定義.PUBLIC _R_DIG_Buf.RAM_R_DIG_Buf:.DW 16 DUP (?)/ 數(shù)碼管顯示緩沖區(qū).VAR _Counter/存儲(chǔ)調(diào)用DIG_ScanDrive函數(shù)的次數(shù).CODE/ 函數(shù)名稱:DIG_Initial/ 實(shí)現(xiàn)功能: 數(shù)碼管顯示及LED燈點(diǎn)亮初始化,該函數(shù)將開啟IRQ4_1KHz.PUBLIC _DIG_Initial.PUBLIC F_D
40、IG_Initial _DIG_Initial:F_DIG_Initial:r1 = P_SEG_Attribr1 |= P_SEG_ByteP_SEG_Attrib = r1r1 = P_SEG_Dirr1 |= P_SEG_ByteP_SEG_Dir = r1 r1 = P_SEG_Datar1 &= P_SEG_ByteP_SEG_Buffer = r1r1 = 0xffffP_DIG_Attrib = r1P_DIG_Dir = r1r1 = 0x0001P_DIG_Buffer = r1r1 = P_INT_Ctrl_Newr1 |= C_IRQ4_1KHz P_INT_Ctrl_N
41、ew = r1int fiq,irqretf/ 函數(shù)名稱:DIG_ScanDrive/ 實(shí)現(xiàn)功能: 數(shù)碼管及LED燈刷新點(diǎn)亮函數(shù),該函數(shù)在IRQ4_1KHz中調(diào)用.PUBLIC _DIG_ScanDrive.PUBLIC F_DIG_ScanDrive_DIG_ScanDrive:F_DIG_ScanDrive:r1 = P_DIG_Datacmp r1,0x8000jnz ?LeftShiftr1 = 0x0001r2 = 0_Counter = r2jmp ?ShiftOver?LeftShift:r1 = r1 lsl 1?ShiftOver:P_DIG_Buffer = r1r1 =
42、_R_DIG_Bufr1 += _Counterr2 = r1r2 &= P_SEG_ByteP_SEG_Buffer = r2 r1 = _Counter r1 += 1_Counter = r1Retf鍵盤掃描文件Key.c是一個(gè)鍵盤掃描文件,包含鍵盤I/O口的初始化和鍵掃描函數(shù)。/文件名稱:Key.c/功能描述:初始化鍵盤函數(shù)和掃描鍵盤函數(shù)#include SPCE061A.h/語法格式:void Key_Init(void)/實(shí)現(xiàn)功能:鍵盤初始化void Key_Init(void)*P_IOA_Dir &= 0xfff8;/初始化IOA2為帶下拉電阻輸入口*P_IOA_Attrib
43、&= 0xfff8;*P_IOA_Data &= 0xfff8;/=/語法格式:void Delay(void)/實(shí)現(xiàn)功能:延時(shí)void delay(void)unsigned int uiCount;for(uiCount = 0;uiCount = 0x3fff;uiCount+)*P_Watchdog_Clear = 0x0001; /清看門狗/=/語法格式:unsigned int KeyScan(void)/實(shí)現(xiàn)功能:獲得鍵盤值并返回unsigned int KeyScan(void)unsigned int uiData;unsigned int uiTemp;uiData = *
44、P_IOA_Data;/讀取IOA端口輸入uiData = uiData&0x0007;/僅取低八位有效值if(uiData!=0)/非零則表示有鍵按下delay();/延時(shí)消抖uiTemp = *P_IOA_Data;uiTemp = uiTemp&0x0007; /僅取低八位有效值if(uiData != uiTemp)uiData = 0;/兩次讀數(shù)不相等,則置返回值為0return uiData; /返回鍵值中斷服務(wù)函數(shù)文件isr.asm是中斷服務(wù)函數(shù)文件,本系統(tǒng)中用到了兩個(gè)中斷服務(wù)函數(shù)文件,其中2Hz中斷用來倒計(jì)時(shí),1KHz中斷用來刷新顯示。其代碼如下: .INCLUDE SPCE0
45、61A.inc.INCLUDE DIG.inc.EXTERNAL _cn.TEXT/匯編語言格式:_BREAK/功能描述:BREAK的中斷服務(wù)函數(shù).PUBLIC _BREAK_BREAK:reti /匯編語言格式:_FIQ/功能描述:FIQ的中斷服務(wù)函數(shù).PUBLIC _FIQ_FIQ:reti /匯編語言格式:_IRQ0/功能描述:IRQ0的中斷服務(wù)函數(shù).PUBLIC _IRQ0_IRQ0:reti /匯編語言格式:_IRQ1/功能描述:IRQ1的中斷服務(wù)函數(shù).PUBLIC _IRQ1_IRQ1:reti/匯編語言格式:_IRQ2/功能描述:IRQ2的中斷服務(wù)函數(shù).PUBLIC _IRQ2_
46、IRQ2:reti /匯編語言格式:_IRQ3/功能描述:IRQ3的中斷服務(wù)函數(shù).PUBLIC _IRQ3_IRQ3:reti /匯編語言格式:_IRQ4/功能描述:IRQ4的中斷服務(wù)函數(shù)/ 調(diào)用F_DIG_ScanDrive程序進(jìn)行動(dòng)態(tài)掃描.PUBLIC _IRQ4_IRQ4:push r1,r5 tospr1 = 0x0010test r1,P_INT_Ctrljnz ?IRQ4_1KHzr1 = 0x0020test r1,P_INT_Ctrljnz ?IRQ4_2KHzr1 = 0x0040P_INT_Clear = r1jmp ?exit?IRQ4_1KHz:P_INT_Clear
47、= r1call F_DIG_ScanDrive/調(diào)用F_DIG_ScanDrivejmp ?exit?IRQ4_2KHz:P_INT_Clear = r1?exit:pop r1,r5 fromspreti /匯編語言格式:_IRQ5/功能描述:IRQ5的中斷服務(wù)函數(shù),改變中斷計(jì)數(shù)器cn.PUBLIC _IRQ5_IRQ5:push r1,r5 tospr1 = 0x0004test r1,P_INT_Ctrljnz ?IRQ5_2Hzr1 = 0x0008P_INT_Clear = r1jmp ?exit?IRQ5_2Hz:P_INT_Clear = r1r1 = _cnr1 += 1_c
48、n = r1?exit:pop r1,r5 fromspreti /匯編語言格式:_IRQ6/功能描述:IRQ6的中斷服務(wù)函數(shù).PUBLIC _IRQ6_IRQ6:reti /匯編語言格式:_IRQ7/功能描述:IRQ7的中斷服務(wù)函數(shù).PUBLIC _IRQ7_IRQ7:Reti第五章 系統(tǒng)調(diào)試5.1 操作步驟及流程圖 硬件功能模塊連接系統(tǒng)的硬件連接如圖3-8所示,把四個(gè)LED板連接到驅(qū)動(dòng)板上,每個(gè)在連接時(shí)注意要按照順序(驅(qū)動(dòng)板和LED板都有標(biāo)號(hào));利用三根10pin排線分別連接交通燈模組和61板的J5與J9、J6與J6、J7與J7;連接61板電源,注意要把61板的J5接口選擇為5V。 操作步
49、驟及流程操作步驟:第一步:按照?qǐng)D3-8所示連接硬件,連接好下載線或者Probe,打開電源。注意61板上的J5要選擇5V;LED板不要插反。第二步:打開Traffic.spj工程(交通燈控制系統(tǒng)禮包(B版)CodeTraffic),rebuild all,沒有錯(cuò)誤時(shí)下載,全速運(yùn)行。這時(shí)候交通燈模組4個(gè)LED板的數(shù)碼管按照默認(rèn)的通行時(shí)間(各路口的通行時(shí)間均為25s)進(jìn)行倒計(jì)時(shí),并各自進(jìn)行紅、綠燈顯示。開始倒計(jì)時(shí)的時(shí)間和紅綠燈狀態(tài)分別為: J1接口的LED板:倒計(jì)時(shí)時(shí)間:24s(通行時(shí)間);紅綠燈狀態(tài):左拐:綠,直行:綠,右拐:紅,人行道:綠; J2接口的LED板:倒計(jì)時(shí)時(shí)間:24s(等待時(shí)間);紅
50、綠燈狀態(tài):左拐:紅,直行:紅,右拐:紅,人行道:紅; J3接口的LED板:倒計(jì)時(shí)時(shí)間:49s(等待時(shí)間);紅綠燈狀態(tài):左拐:紅,直行:紅,右拐:綠,人行道:紅; J4接口的LED板:倒計(jì)時(shí)時(shí)間:74s(等待時(shí)間);紅綠燈狀態(tài):左拐:紅,直行:紅,右拐:綠,人行道:紅。第三步:如果要自己設(shè)置各路口的通行時(shí)間,按61板上的KEY1鍵進(jìn)入設(shè)置狀態(tài)。按KEY1開始設(shè)置第一個(gè)(J1)LED板的數(shù)碼管顯示的通行時(shí)間,此時(shí)第一個(gè)LED板的數(shù)碼管閃爍,KEY2為加1鍵,KEY3位減1鍵;設(shè)置完第一個(gè),按KEY1鍵設(shè)置第二個(gè)LED板,設(shè)置方法和設(shè)置第一個(gè)LED板相同;設(shè)置完成后設(shè)置第三個(gè)、第四個(gè),全部設(shè)置完成后,如果設(shè)置正確,按KEY1鍵后4個(gè)LED板的數(shù)碼管開始顯示,且其發(fā)光二極管進(jìn)行相應(yīng)指示;如果沒有設(shè)置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- fca外貿(mào)合同標(biāo)準(zhǔn)文本
- 冷凍海鮮銷售合同標(biāo)準(zhǔn)文本
- 辦公房屋租賃標(biāo)準(zhǔn)合同標(biāo)準(zhǔn)文本
- 公司責(zé)任合同標(biāo)準(zhǔn)文本
- 買賣合同做抵押合同標(biāo)準(zhǔn)文本
- 農(nóng)村涉牧合同標(biāo)準(zhǔn)文本
- 學(xué)校運(yùn)動(dòng)會(huì)組織與實(shí)施流程
- 2025年中國電力科學(xué)研究院有限公司高校畢業(yè)生招聘(第二批)筆試參考題庫附帶答案詳解
- 2025四川內(nèi)江慶隆機(jī)床有限公司招聘11人筆試參考題庫附帶答案詳解
- 宇宙的奧秘與人類信仰的交織
- 《光電對(duì)抗原理與應(yīng)用》課件第6章
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)知能訓(xùn)練與指導(dǎo)知到智慧樹章節(jié)測(cè)試課后答案2024年秋西北農(nóng)林科技大學(xué)
- 2025山東能源集團(tuán)中級(jí)人才庫選拔高頻重點(diǎn)提升(共500題)附帶答案詳解
- 技術(shù)-浙江省2024年12月五校(杭州二中、溫州中學(xué)、金華一中、紹興一中、衢州二中)高三第一次聯(lián)考試題和答案
- focus-pdca改善案例-提高護(hù)士對(duì)糖尿病患者胰島素注射部位正確輪換執(zhí)行率
- 建筑工程竣工驗(yàn)收消防設(shè)計(jì)質(zhì)量檢查報(bào)告(表格填寫模板)
- 《ipf診治共識(shí)》課件
- 項(xiàng)目施工-三級(jí)動(dòng)火許可證(范本)
- 2024年遼寧省第二屆職業(yè)技能大賽(信息網(wǎng)絡(luò)布線賽項(xiàng))理論參考試題庫(含答案)
- 二零二四年商務(wù)考察團(tuán)組織合同
- 《湯姆叔叔的小屋》課件
評(píng)論
0/150
提交評(píng)論