




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于SPCE061A的模擬交通燈鍵盤掃描控制模塊設(shè)計(jì)完成日期:指導(dǎo)教師簽字:答辯小組成員簽字:緒論1.1研究背景隨著社會(huì)的不斷發(fā)展以及城市化進(jìn)程的加快,機(jī)動(dòng)車越來越普及,城市所面臨的交通問題也越來越嚴(yán)重。交通擁擠以及由之所導(dǎo)致的時(shí)間損失、能源消耗、交通事故和環(huán)境問題等所造成的巨大損失已成為一個(gè)急待解決的難題。解決好城市交通信號(hào)燈控制問題將是保障交通有序、安全、快速運(yùn)行的重要環(huán)節(jié)。交通是城市經(jīng)濟(jì)活動(dòng)的命脈,對(duì)城市經(jīng)濟(jì)的發(fā)展、人民生活水平的提高都起著十分重要的作用。智能交通系統(tǒng)作為21世紀(jì)交通運(yùn)輸體系的發(fā)展方向,受到了世界各國的廣泛重視,它是解決現(xiàn)代交通擁擠、有效提高道路利用率的根本出路。因此設(shè)計(jì)新型的交通燈控制系統(tǒng),對(duì)緩解交通阻塞,提高暢通率具有十分現(xiàn)實(shí)的意義。目前,為了解決城市交通需求量迅速增加的問題,主要采用以下兩種方法:一是在“硬件”方面,加強(qiáng)交通基礎(chǔ)設(shè)施建設(shè),新建道路、互通立交橋或?qū)ΜF(xiàn)有的公路進(jìn)行改造以增加車輛通行能力;二是在“軟件”方面,對(duì)交通流進(jìn)行智能化的管理控制,充分發(fā)揮現(xiàn)有路網(wǎng)的通行潛力,最大程度上使交通流做到有序流動(dòng)。因此,采用先進(jìn)的自動(dòng)化控制方法對(duì)交通進(jìn)行控制成為必須要解決的問題。結(jié)合先進(jìn)的智能控制算法和先進(jìn)的嵌入式系統(tǒng)研究開發(fā)出適合中國國情、性能價(jià)格比高的交通控制器成為一項(xiàng)特別緊迫的任務(wù)?;谝陨厦枋鲆约敖Y(jié)合我國現(xiàn)階段自身特點(diǎn),語音識(shí)別系統(tǒng)交通信號(hào)燈的研究具有重大的社會(huì)意義。本設(shè)計(jì)是基于SPCE061A語音識(shí)別交通信號(hào)燈系統(tǒng),可以在交通信號(hào)燈轉(zhuǎn)換過程中加有語音提示,根據(jù)各地交警提出不同的語音要求進(jìn)行個(gè)性化的設(shè)計(jì),能夠有效的減少交通事故的發(fā)生,提高道路通行能力,疏導(dǎo)交通的作用。同時(shí)與其他的交通燈系統(tǒng)相比該系統(tǒng)更具功能化和人性化。因此語音識(shí)別交通信號(hào)燈系統(tǒng)必將獲得長足的發(fā)展。1.2當(dāng)今國內(nèi)外交通信號(hào)燈控制系統(tǒng)發(fā)展?fàn)顩r近百年來,伴隨著經(jīng)濟(jì)的發(fā)展,全球汽車業(yè)以驚人的速度發(fā)展,汽車已經(jīng)成為人們?nèi)粘I畈豢扇鄙俚慕煌üぞ?。但是,隨著城市化進(jìn)程的加快,機(jī)動(dòng)車日益普及,人們在享受機(jī)動(dòng)車所帶來的巨大便利的同時(shí),也面臨著交通擁擠的煩惱。目前,交通擁擠問題不同程度的普遍存在于各個(gè)國家和地區(qū),由此產(chǎn)生了一系列的問題,如環(huán)境污染、交通事故頻繁發(fā)生、交通擁擠等,給國家和人們的生命財(cái)產(chǎn)帶來了很大的損失。解決交通擁擠的直接辦法就是修建更多的路橋以提高路網(wǎng)的通行能力。然而,由于修建路橋的巨額投資和城市空間的嚴(yán)格限制等原因,使這一方法的有效性大打折扣。因此,解決交通問題的最有效的方法之一就是建立城市交通信號(hào)燈系統(tǒng)。1.2.1國外交通信號(hào)燈控制系統(tǒng)發(fā)展?fàn)顩r國外對(duì)城市交通信號(hào)燈系統(tǒng)研究的比較早,1858年英國倫敦主要街頭上就安裝了以燃煤氣為光源的紅藍(lán)兩色的機(jī)械扳手式信號(hào)燈,用以指揮馬車通行。這是世界上最早的交通信號(hào)燈。1868年英國機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會(huì)大廈前的廣場上安裝了世界上最早的煤氣紅綠燈。它由紅綠兩色以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1914年電氣啟動(dòng)的紅綠燈出現(xiàn)在美國。這種紅綠燈由紅黃綠三色圓形的投光器組成,安裝在紐約市5號(hào)大街的一座高塔上。紅燈表示“停止”,綠燈表示“通行”。1918年又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。1963年加拿大多倫多市建立了一套使用IBM650型計(jì)算機(jī)作為交通控制器的集中協(xié)調(diào)感應(yīng)控制信號(hào)系統(tǒng),實(shí)現(xiàn)了1000多個(gè)交通路口的聯(lián)網(wǎng),標(biāo)志著城市道路交通信號(hào)燈控制系統(tǒng)的發(fā)展進(jìn)入了一個(gè)新的階段。到目前為止,人們相繼完成了很多區(qū)域交通控制系統(tǒng),其中最有代表性的有TRANSYT、SCOOT、SCATS、RHODES等。世近年來,英國、澳大利亞、歐洲和美國等均在某些城市建立了交通信號(hào)燈控制系統(tǒng)。在這些系統(tǒng)中,大部分都在各路口附近安裝有磁性環(huán)路檢測器,并由各路口的控制裝置或工作人員將交通控制參數(shù)通過線、電纜、閉路電視線等通訊網(wǎng)絡(luò)輸入微處理器,用小型計(jì)算機(jī)進(jìn)行集中控制。1.2.2國內(nèi)交通信號(hào)燈控制系統(tǒng)發(fā)展?fàn)顩r我國對(duì)城市交通信號(hào)燈系統(tǒng)的應(yīng)用和研究工作起步較晚。隨著我國城市道路交通問題越來越嚴(yán)重,政府對(duì)城市交通控制系統(tǒng)日益重視并采取相應(yīng)的解決措施,采用引進(jìn)與開發(fā)相結(jié)合的方針,使我國的交通系統(tǒng)在一定程度上起了緩解交通擁擠的作用,提高了城市道路的運(yùn)行率。我國自上世紀(jì)70年代開始自己研發(fā)智能交通系統(tǒng),交通系統(tǒng)中信號(hào)機(jī)的質(zhì)量水平有了明顯的提高。從整體上看,我國信號(hào)機(jī)產(chǎn)品制造和研發(fā)水平及信號(hào)機(jī)的技術(shù)水平得到了明顯提高。國內(nèi)不少研發(fā)機(jī)構(gòu)相繼研發(fā)建立了一系列的交通系統(tǒng),其中應(yīng)用比較成功的有公安部交通管理研究所HTUTC系統(tǒng)、浙大中控ACS系統(tǒng)、青島海信HICON系統(tǒng)、深圳市自行研發(fā)的SMOOTH系統(tǒng)、上海寶康MITCO系統(tǒng)以及金科交通科技JK-C系列小型交通控制系統(tǒng)。這些系統(tǒng)都不同程度的發(fā)揮著改善交通擁擠的作用,這些系統(tǒng)跟國外的系統(tǒng)相比,價(jià)格有所下降,但是目前還是最主要應(yīng)用在國內(nèi)的一些大城市的繁華路口。2系統(tǒng)硬件設(shè)計(jì)2.1交通燈功能介紹本方案的交通燈就是一個(gè)簡易的交通指示燈控制系統(tǒng),由一套SPCE061A精簡開發(fā)板(簡稱61板)和一套交通燈模組構(gòu)成,功能有:●系統(tǒng)有兩個(gè)狀態(tài),設(shè)置狀態(tài)和顯示狀態(tài),利用61板的鍵盤的KEY1鍵盤可以進(jìn)行兩個(gè)狀態(tài)間的切換;●開機(jī)時(shí),系統(tǒng)為顯示狀態(tài),四個(gè)路口數(shù)碼管從默認(rèn)的倒計(jì)時(shí)時(shí)間(本系統(tǒng)四個(gè)路口分別為24、24、49、74)開始倒計(jì)時(shí);●設(shè)置狀態(tài)時(shí)利用61板的KEY1~KEY3鍵盤可以設(shè)置各路口直行通行倒計(jì)時(shí)時(shí)間,設(shè)置的路口數(shù)碼管閃爍顯示,各路口的通行時(shí)間可以不相等,其中KEY2為加1鍵,KEY3為減1鍵,KEY1為確定鍵;●顯示狀態(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)。下圖2-1為功能框圖:圖2-1功能框圖2.2系統(tǒng)結(jié)構(gòu)框圖及硬件連接圖本系統(tǒng)由一套61板和一套交通燈模組構(gòu)成,如圖2-2,SPCE061A通過I/O口控制交通燈模組中各LED板的數(shù)碼管和發(fā)光二極管的顯示;通過61板上的三個(gè)鍵盤KEY1~KEY3可以設(shè)置各LED板指示的路口通行倒計(jì)時(shí)時(shí)間。圖2-2系統(tǒng)結(jié)構(gòu)框圖系統(tǒng)硬件連接如圖2-3,把四個(gè)LED板連接到驅(qū)動(dòng)板上,利用三根10pin排線分別連接交通燈模組和61板的J5與J9、J6與J6、J7與J7;連接61板電源,注意要把61板的J5接口選擇為5V。圖2-3系統(tǒng)硬件連接圖2.3路口交通示意圖一個(gè)典型的十字路口,分別用1,2,3,4(表示東、西、南、北4方向)表示4個(gè)流向的主車道,用L,S,R,P分別表示各車到的左行車道、直行車道、右行車道一級(jí)人行橫道,其實(shí)路口交通示意圖如2-4所示:圖2-4路口交通示意圖上圖中,常規(guī)交通燈的綠燈亮狀態(tài)(通行)順序?yàn)椋簣D2-5通行示意圖其中,“1-2”表示1P和2P可以通過路口2通行;“2-3”表示2P和3P可以通過路口3通行;“3-4”表示3P和4P可以通過路口4通行;“4-1”表示4P和1P可以通過路口1通行。3模塊特性簡介3.1SPCE061A簡介SPCE061A是凌陽科技研發(fā)生產(chǎn)的性價(jià)比很高的一款十六位單片機(jī),使用它可以非常方便靈活的實(shí)現(xiàn)語音的錄放系統(tǒng),該芯片擁有8路10位精度的ADC,其中一路為音頻轉(zhuǎn)換通道,并且內(nèi)置有自動(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)用。下圖3-1為SPCE061A的內(nèi)部結(jié)構(gòu)框圖:圖3-1SPCE061A系統(tǒng)內(nèi)部結(jié)構(gòu)框圖3.2SPCE061A精簡開發(fā)板簡介SPCE061A精簡開發(fā)板(簡稱61板),是以凌陽16位單片機(jī)SPCE061A為核心的精簡開發(fā)-仿真-實(shí)驗(yàn)板,是“凌陽科技大學(xué)計(jì)劃”專為大學(xué)生、電子愛好者等進(jìn)行電子實(shí)習(xí)、課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、電子制作及電子競賽所設(shè)計(jì)的,也可作為單片機(jī)項(xiàng)目初期研發(fā)使用。61板除了具備單片機(jī)最小系統(tǒng)電路外,還包括有電源電路、音頻電路(含MIC輸入部分和DAC音頻輸出部分)、復(fù)位電路等,采用電池供電,方便隨身攜帶。61板上有調(diào)試器接口(Probe接口)以及下載線(EZ_Probe)接口,分別可接凌陽科技的在線調(diào)試器、簡易下載線,配合unSPIDE,可方便地在板上實(shí)現(xiàn)程序的下載、在線仿真調(diào)試。61板(V1.6版)的實(shí)物圖如3-2,各區(qū)功能模塊簡介如下:●電源區(qū):為整個(gè)系統(tǒng)提供電源,通常采用系統(tǒng)配套的電池盒進(jìn)行供電,只要放入3節(jié)5號(hào)電池就可以滿足供電需求了。●下載區(qū):程序就是通過這邊的接口下載到SPCE061A單片機(jī)的?!褚纛l區(qū):這里的麥克風(fēng)是用來進(jìn)行語音輸入的,還有一個(gè)喇叭的接口用來進(jìn)行語音播放?!馭PCE061A與周邊:這就是整塊板子的大腦,所有控制信息都是從這里發(fā)出的,那些周邊器件用來協(xié)助SPCE061A單片機(jī)正常工作?!矜I控區(qū):采用這幾個(gè)按鍵我們可以做一些簡單的試驗(yàn)?!駨?fù)位區(qū):當(dāng)按下這里面的按鍵后,單片機(jī)就重新開始工作。●端口區(qū):用于對(duì)外掛硬件的控制,或者獲取外部硬件的一些狀態(tài)以便SPCE061A來進(jìn)行處理。圖3-261板實(shí)物圖3.3SPCE061A最小系統(tǒng)SPCE061A最小系統(tǒng)中,包括SPCE061A芯片及其外圍的基本模塊,其中外圍的基本模塊有:晶振輸入模塊(OSC)、鎖相環(huán)外圍電路(PLL)、復(fù)位電路(RESET)、指示燈(LED)等,如圖3-3所示。圖3-3SPCE061A最小系統(tǒng)3.4交通燈模組V3.0簡介交通燈模組V3.0包括一塊驅(qū)動(dòng)電路板(交通燈模組V3.0_驅(qū)動(dòng)板)和四塊LED板(交通燈模組V3.0_LED板)?!馤ED板中每個(gè)方向提供四組交通LED燈(包括左轉(zhuǎn)、直行、右轉(zhuǎn)、人行道四組),每組交通燈包括紅、黃、綠三個(gè)燈,可以實(shí)現(xiàn)交通的通行控制;●LED板中每個(gè)方向提供兩個(gè)數(shù)碼管,可以實(shí)現(xiàn)100以內(nèi)的倒計(jì)時(shí)。交通燈模組實(shí)物圖如圖3-4使用時(shí),直接用10pin排線連接驅(qū)動(dòng)板的單片機(jī)接口和61板的I/O口即可使用。圖3-4交通燈模組實(shí)物圖4鍵盤掃描控制模塊4.1鍵盤結(jié)構(gòu)鍵盤一般有獨(dú)立式和行列式(矩陣式)兩種。當(dāng)然還有其它的結(jié)構(gòu),比如交互式結(jié)構(gòu)等等,不過其它的結(jié)構(gòu)比較少用。在中穎的單片機(jī)中,有些單片機(jī)的LCD驅(qū)動(dòng)引腳的SEGMENT口可以共享按鍵掃描口,當(dāng)選擇為按鍵掃描口時(shí),可以使用這些口來掃描按鍵,所以在外部電路可以連接LCD和按鍵矩陣,采用分時(shí)掃描進(jìn)行處理,下面也將介紹這個(gè)特殊應(yīng)用的方法和注意的地方。4.1.1獨(dú)立式鍵盤結(jié)構(gòu)獨(dú)立式鍵盤是指各個(gè)按鍵相互獨(dú)立地連接到各自的單片機(jī)的I/O口,I/O口只需要做輸入口就能讀到所有的按鍵。盤可以使用上拉電阻也可以使用下拉電阻,基本原理是一樣的。使用上拉電阻的獨(dú)立式鍵盤結(jié)構(gòu)如圖4-1所示。圖4-1獨(dú)立式鍵盤結(jié)構(gòu)圖4-1所示的是利用PB口和PC口共8個(gè)I/O口獨(dú)自連接8個(gè)按鍵,使用外部上拉電阻構(gòu)成的獨(dú)立式鍵盤。在一些單片機(jī)中,有很多型號(hào)的單片機(jī)有I/O內(nèi)部上拉電阻或內(nèi)部下拉電阻,所以在實(shí)際應(yīng)用,若是使用到這樣的單片機(jī),是不需要接外部上拉電阻或下拉電阻了,只需在程序中把內(nèi)部上拉電阻或內(nèi)部下拉電阻打開即可。從圖4-1可以看出,當(dāng)按鍵沒有被按下的時(shí)候,連接到該按鍵的I/O口輸入電平為高電平,當(dāng)按鍵按下去之后,輸入電平則變?yōu)榈碗娖?。所以要判別有無按鍵按下,只需判斷輸入口的電平即可,程序?qū)懫饋硎址奖?。這種鍵盤雖然有電路簡單、程序容易寫的優(yōu)點(diǎn),但是也有缺點(diǎn):當(dāng)按鍵個(gè)數(shù)較多的時(shí)候,要占用較多的I/O口資源。所以當(dāng)按鍵個(gè)數(shù)比較多的時(shí)候,比較少用這樣的按鍵結(jié)構(gòu),而是使用行列式結(jié)構(gòu)。4.1.2行列式鍵盤結(jié)構(gòu)為了減少鍵盤占用太多的單片機(jī)I/O口資源,當(dāng)按鍵個(gè)數(shù)較多的時(shí)候,通常都使用行列式鍵盤。行列式鍵盤同樣可以使用上拉電阻或是下拉電阻,使用上拉電阻的行列式鍵盤結(jié)構(gòu)如圖4-2所示。圖4-2行列式鍵盤結(jié)構(gòu)跟獨(dú)立式鍵盤一樣,若是使用有內(nèi)部上拉電阻或是下拉電阻的單片機(jī)時(shí),外面不需連接上拉電阻或是下拉電阻,只需在程序內(nèi)打開內(nèi)部上拉電阻或是內(nèi)部下拉電阻即可。行列式鍵盤的原理就是每一行線與每一列線的交叉地方不相通,而是接上一個(gè)按鍵,通過按鍵來接通。所以利用這種結(jié)構(gòu)a個(gè)I/O口可以接a個(gè)行線,另外的b個(gè)I/O可以接b個(gè)列線,總共可以組成a×b個(gè)按鍵的鍵盤。共有4個(gè)行線,4個(gè)列線,可以組成4×4=16個(gè)按鍵的鍵盤??梢钥闯?,行列式的鍵盤結(jié)構(gòu)可以省出不少的I/O口資源。對(duì)行列式的鍵盤進(jìn)行掃描的時(shí)候,要先判斷整個(gè)鍵盤是否有按鍵按下,有按鍵按下才對(duì)哪一個(gè)按鍵按下進(jìn)行判別掃描。對(duì)按鍵的識(shí)別掃描通常有兩種方法:一種是比較常用的逐行(或逐列)掃描法,另一種是線反轉(zhuǎn)法。4.2鍵盤掃描工作原理以圖4-2為例介紹兩種掃描方法的工作原理。4.2.1逐行(或逐列)掃描法的工作原理首先要先判別整個(gè)鍵盤中是否有按鍵按下,由單片機(jī)連接到列線的PC口輸出低電平,然后讀取連接到行線的PB口的電平狀態(tài)。若是沒有按鍵按下,則PB口讀進(jìn)來的數(shù)據(jù)為0FH;若讀進(jìn)來的數(shù)據(jù)不是0FH,那就是有按鍵按下,因?yàn)橹灰邪存I按下,該按鍵連接到的行線電平就會(huì)被拉至低電平。若是有判斷到按鍵按下之后就要進(jìn)行對(duì)按鍵的識(shí)別掃描。掃描的方法是將列線逐列置低電平,并檢測行線的電平狀態(tài)來實(shí)現(xiàn)的。依次向PC口的每個(gè)列線送低電平,然后檢測所有行線PC口的狀態(tài),若是全為1,則所按下的按鍵不在此列,進(jìn)入下一列的掃描;若是不全為1,則所按下的按鍵必在此列,并且按鍵正是此列與讀取到為低電平的行線的交點(diǎn)上。4.2.2線反轉(zhuǎn)法工作原理線反轉(zhuǎn)法的優(yōu)點(diǎn)是掃描速度比較快,但是程序處理起來卻是比較不方便。線反轉(zhuǎn)法最好是將行、列線按二進(jìn)制順序排列。線反轉(zhuǎn)法同樣也要先判別整個(gè)鍵盤有無按鍵按下,有按鍵按下才對(duì)鍵盤進(jìn)行掃描。當(dāng)有某一按鍵按下時(shí),鍵盤掃描掃到給該列置低電平時(shí),讀到了行狀態(tài)為非全1,這個(gè)時(shí)候就可以將行數(shù)據(jù)和列數(shù)據(jù)組合成一個(gè)鍵值。鍵盤從左到右、從上到下的鍵值依次是EE,ED,EB,E7;DE,DD,DB,D7;…;7E,7D,7B,77。這是負(fù)邏輯的排列,可以通過軟件的取反指令把這些數(shù)據(jù)變成正邏輯:11,12,14,18;21,22,24,28;…;81,82,84,88。不過不管是正邏輯還是負(fù)邏輯的數(shù)據(jù),可以看出這樣的數(shù)據(jù)是很難使用散轉(zhuǎn)指令的。所以一般都要想辦法把這樣的鍵值數(shù)據(jù)再修正一下成為等距能用于散轉(zhuǎn)指令的鍵值數(shù)據(jù)。若是所使用的單片機(jī)內(nèi)部具有上拉電阻的話,還不需要逐列去置低電平,外部無上拉電阻。先使用PB口作為輸入口,打開PB口上拉電阻,而PC口作為輸出口輸出低電平,讀PB口得到列數(shù)據(jù);再使用PC口作為輸入口,打開PC口上拉電阻,而PB口作為輸出口輸出低電平,讀PC口得到行數(shù)據(jù)。這樣就可直接得到行數(shù)據(jù)和列數(shù)據(jù),而得組合的鍵值。線反轉(zhuǎn)法一般用于4的倍數(shù)的鍵盤,比如4×4鍵盤、4×8鍵盤、8×8鍵盤。5系統(tǒng)軟件設(shè)計(jì)5.1主程序設(shè)計(jì)5.1.1主程序流程圖圖5-1主程序流程圖5.1.2主程序代碼#include"SPCE061A.h" //包含SPCE061A.h頭文件#include"DIGuser.h" //包含DIGuser.h頭文件,通過該文件,可以改變該系統(tǒng)的一些參數(shù)#include"DIG.h" //externunsignedintKeyScan(void);unsignedintKey=0; //變量保存鍵值unsignedintstatus=0; //變量保存狀態(tài)intmain(void){ unsignedintSetflag=0; //變量保存設(shè)置的路口標(biāo)志 unsignedintiNum=0; //變量保存設(shè)置過程中的數(shù)據(jù) unsignedintEnumset,Snumset,Wnumset,Nnumset; //變量保存最終的設(shè)置數(shù)據(jù) DIG_Initial(); //端口初始化,該函數(shù)在DIG.asm中定義,在DIG.h申明 *P_INT_Ctrl_New|=C_IRQ5_2Hz; //開2Hz中斷,以便系統(tǒng)進(jìn)行倒計(jì)時(shí) __asm("intirq"); Enum=ENUM; //設(shè)置各方向路口初始時(shí)的直行通行倒計(jì)時(shí)時(shí)間,倒計(jì)時(shí)時(shí)間可以在DIGuser.h文件中修改 Snum=SNUM; Wnum=WNUM; Nnum=NNUM; Enumset=ENUM; //保存初始設(shè)置數(shù)據(jù) Snumset=SNUM; Wnumset=WNUM; Nnumset=NNUM; status=SHOW; //初始狀態(tài)設(shè)置為顯示狀態(tài) while(1) //交通燈控制 { while(status==SET) //設(shè)置狀態(tài) { Key=KeyScan(); //掃描鍵盤,取鍵值 switch(Key) { case0x0001: //如果是KEY1按下 Setflag++; //設(shè)置下一個(gè)路口直行通行時(shí)間 if(Setflag==1) iNum=Enumset; //如果正在設(shè)置的是東邊路口,顯示上一次設(shè)置數(shù)據(jù) if(Setflag==2) iNum=Snumset; //如果正在設(shè)置的是南邊路口,顯示上一次設(shè)置數(shù)據(jù) if(Setflag==3) iNum=Wnumset; //如果正在設(shè)置的是西邊路口,顯示上一次設(shè)置數(shù)據(jù) if(Setflag==4) iNum=Nnumset; //如果正在設(shè)置的是北邊路口,顯示上一次設(shè)置數(shù)據(jù) if(Setflag==5) { Setflag=0; //設(shè)置完成 Enumset=Enum; //保存最終設(shè)置數(shù)據(jù) Snumset=Snum; Wnumset=Wnum; Nnumset=Nnum; max=Enumset+Snumset+Nnumset; // if(max>100); max=Snumset+Wnumset+Nnumset; // if(max>100); max=Wnumset+Nnumset+Enumset; // if(max>100); max=Nnumset+Enumset+Snumset; // if(max>100); else status=SHOW; //設(shè)置為顯示狀態(tài) } break; case0x0002: //如果是KEY2按下 iNum++; //加1 if(iNum==100) iNum=0; break; case0x0004: //如果是KEY3按下 iNum--; //減1 if(iNum==0xffff) iNum=99; break; default: break; } if(Setflag==1) { Enum=iNum; //保存東邊路口設(shè)置數(shù)據(jù) if((cn%2)==1) { DIGOff(EAST_D); } } if(Setflag==2) { if((cn%2)==1) { DIGOff(SOUTH_D); } Snum=iNum; //保存南邊路口設(shè)置數(shù)據(jù) } if(Setflag==3) { if((cn%2)==1) { DIGOff(WEST_D); } Wnum=iNum; //保存西邊路口設(shè)置數(shù)據(jù) } if(Setflag==4) { if((cn%2)==1) { DIGOff(NORTH_D); } Nnum=iNum; //保存北邊路口設(shè)置數(shù)據(jù) } if(cn%2==0) { DIGShow(EAST_D,Enum); //東邊路口數(shù)碼管顯示 DIGShow(SOUTH_D,Snum); //南邊路口數(shù)碼管顯示 DIGShow(WEST_D,Wnum); //西邊路口數(shù)碼管顯示 DIGShow(NORTH_D,Nnum); //北邊路口數(shù)碼管顯示 } *P_Watchdog_Clear=0x0001; Key=0; } Nnum=Wnum+Snum+Enum-1; //計(jì)算開始時(shí)各路口的倒計(jì)時(shí)時(shí)間,北邊的等待時(shí)間是其他三方的通行時(shí)間之和 Wnum=Snum+Enum-1; //西邊的等待時(shí)間是南邊和東邊的通行時(shí)間之和 Snum=Enum-1; //南邊的等待時(shí)間是東邊的通行時(shí)間 Enum=Enum-1; //東邊通行時(shí)間 while(status==SHOW) { max=Snumset+Wnumset+Nnumset-1; DirFlag=EAST_G; //設(shè)置方向狀態(tài)標(biāo)志為東邊路口車輛直行通行狀態(tài),EAST_G為EASTGreen Enum=Enumset-1; //東邊路口數(shù)碼管從Enumset-1開始倒計(jì)時(shí) EastSTrough(); //進(jìn)入1L,1S,1P,3R,4R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義 if(status==SHOW) { max=Wnumset+Nnumset+Enumset-1; DirFlag=SOUTH_G; //設(shè)置方向狀態(tài)標(biāo)志為南邊路口車輛直行通行狀態(tài),SOUTH_G為SOUTHGreen Snum=Snumset-1; //南邊路口數(shù)碼管從Snumset-1開始倒計(jì)時(shí) SouthSTrough(); //進(jìn)入2L,2S,2P,4R,1R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義 } if(status==SHOW) { max=Nnumset+Enumset+Snumset-1; DirFlag=WEST_G; //設(shè)置方向狀態(tài)標(biāo)志為西邊路口車輛直行通行狀態(tài),WEST_G為WESTGreen Wnum=Wnumset-1; //西邊路口數(shù)碼管從Wnumset-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; DirFlag=NORTH_G; //設(shè)置方向狀態(tài)標(biāo)志為北邊路口車輛直行通行狀態(tài),NORTH_G為NORTHGreen Nnum=Nnumset-1; //北邊路口數(shù)碼管從Nnumset-1開始倒計(jì)時(shí) NorthSTrough(); //進(jìn)入4L,4S,4P,1R,2R(通行25s)狀態(tài),該函數(shù)在DIGuser.c文件中定義 } *P_Watchdog_Clear=0x0001; } *P_Watchdog_Clear=0x0001; }}5.2子程序鍵盤掃描控制模塊Key.c是一個(gè)鍵盤掃描文件,包含鍵盤I/O口的初始化和鍵掃描函數(shù)。代碼如下://文件名稱:Key.c//功能描述:初始化鍵盤函數(shù)和掃描鍵盤函數(shù)#include"SPCE061A.h"http:// 語法格式: voidKey_Init(void)// 實(shí)現(xiàn)功能: 鍵盤初始化voidKey_Init(void){ *P_IOA_Dir&=0xfff8; //初始化IOA2為帶下拉電阻輸入 *P_IOA_Attrib&=0xfff8; *P_IOA_Data&=0xfff8; }//========================================================// 語法格式: voidDelay(void)// 實(shí)現(xiàn)功能: 延時(shí)voiddelay(void){ unsignedintuiCount; for(uiCount=0;uiCount<=0x3fff;uiCount++) { *P_Watchdog_Clear=0x0001;//清看門狗 }}//========================================================// 語法格式: unsignedintKeyScan(void)// 實(shí)現(xiàn)功能: 獲得鍵盤值并返回unsignedintKeyScan(void){ unsignedintuiData; unsignedintuiTemp; uiData=*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ù)不相等,則置返回值為0 } returnuiData; //返回鍵值 }6系統(tǒng)調(diào)試6.1操作步驟及流程圖第一步:按照?qǐng)D2.2所示連接硬件,連接好下載線或者Probe,打開電源。注意61板上的J5要選擇5V;LED板不要插反。如圖6-1和圖6-2為正確連接。圖6-161板上J5的選擇圖6-2LED板與驅(qū)動(dòng)板的連接第二步:打開Traffic.spj工程,rebuildall,沒有錯(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í)間);紅綠燈狀態(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è)置正確,系統(tǒng)不會(huì)進(jìn)行倒計(jì)時(shí),這時(shí)候需要按KEY1鍵重新進(jìn)行設(shè)計(jì)。注意:由于每個(gè)路口只有兩位數(shù)碼管顯示倒計(jì)時(shí)時(shí)間,所以無論是通行時(shí)間,還是等待時(shí)間,都不能超過99;一個(gè)路口的等待時(shí)間等于其他三個(gè)路口通行時(shí)間之和,如果相鄰三個(gè)路口設(shè)置的通行時(shí)間之和大于99,則設(shè)置錯(cuò)誤,需要重新設(shè)置,按KEY1會(huì)自動(dòng)進(jìn)入設(shè)置狀態(tài)進(jìn)行設(shè)置。四個(gè)路口的通行時(shí)間可以設(shè)置相同,也可以不同。操作流程如圖6-3圖6-3操作流程圖6.2系統(tǒng)調(diào)試時(shí)遇到的問題及解決的方法1:上電后數(shù)碼管不顯示,LED燈也不點(diǎn)亮,為什么?答:檢查交通燈模組的驅(qū)動(dòng)板電源指示燈是否點(diǎn)亮,如果沒有點(diǎn)亮,切斷電源,檢查是否正負(fù)極接反。2:驅(qū)動(dòng)板電源指示燈亮,可是數(shù)碼管和發(fā)光二極管顯示不正常,或者發(fā)光二極管變化顯示,數(shù)碼管顯示亂七八糟。答:可能由兩種情況造成:第一,交通燈模組和61板連接不正確,注意61板和交通燈模組驅(qū)動(dòng)板的連接順序是J5接J9、J6接J6、J7接J7;第二,LED板和驅(qū)動(dòng)板的插接不正確,注意LED板和驅(qū)動(dòng)板的插接順序?yàn)閳D2.4。3:數(shù)碼管和發(fā)光二極管的亮度很暗,不明顯。答:首先確認(rèn)61板的J5是否選擇了5V,如果選擇,可能是電池盒供電不足,換新電池或者5V的穩(wěn)壓源即可解決。4:按KEY1、KEY2、KEY3設(shè)置完成后,按KEY1系統(tǒng)不會(huì)進(jìn)入倒計(jì)時(shí)顯示狀態(tài),再按KEY1后,第一個(gè)LED板的數(shù)碼管又開始像設(shè)置狀態(tài)時(shí)那樣閃爍,為什么?答:設(shè)置錯(cuò)誤造成,一定有相鄰三個(gè)路口的設(shè)置數(shù)據(jù)之和大于100,重新進(jìn)入了設(shè)置狀態(tài),注意由于每個(gè)路口只有兩位數(shù)碼管顯示倒計(jì)時(shí)時(shí)間,所以無論是通行時(shí)間,還是等待時(shí)間,都不能超過99;一個(gè)路口的等待時(shí)間等于其他三個(gè)路口通行時(shí)間之和,所以相鄰三個(gè)路口設(shè)置的通行時(shí)間之和不能大于大于100。參考文獻(xiàn)[1]羅亞非,凌陽16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2021.[2]薛鈞義,張彥斌,虞鶴松,樊波.凌陽十六位單片機(jī)原理及應(yīng)用[M].北京航空航天出版社,2021.[3]曹東源,高愛坤,田小平.智能交通與城市交通緩堵[J].中國期刊網(wǎng),2021,(23).[4]沈鴻星.LED交通信號(hào)燈系統(tǒng)的硬件設(shè)計(jì)[J].電子工程師,2021(03).[5]余錫存,曹國華.單片機(jī)原理及接口技術(shù)[M].陜西:西安電子科技大學(xué)出版社,2021.[6]雷麗文,微機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版社,2021.2.[7]葉挺秀.應(yīng)用電子學(xué)[M].杭州:浙江大學(xué)出版社,2021.[8]譚浩強(qiáng),C程序設(shè)計(jì)[M].清華大學(xué)出版社,2021.[9]肖業(yè)偉.城市智能交通信號(hào)控制系統(tǒng)的研究[D].湘潭:湘潭大學(xué),2021.[10]凌陽科技.凌陽l6位單片機(jī)及其開發(fā)實(shí)例[M].北京:北京航空航天大學(xué)出版社,2021.[11]DS18B20ProgrammableResolution1-WireDigitalThermometer.[OL].www.maxim_.[12]Porterscanguidetopyroelectricdetector.Ferroclectrics.[M]1981.致謝四年的艱苦跋涉,幾個(gè)月的精心準(zhǔn)備,畢
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版語文三年級(jí)上冊語文園地六課件
- 云軌可行性報(bào)告
- 2025年五小金項(xiàng)目投資可行性研究分析報(bào)告
- 公共設(shè)施消防維保崗位職責(zé)
- 冀教版一年級(jí)上冊信息技術(shù)教學(xué)計(jì)劃
- 國際武術(shù)交流活動(dòng)計(jì)劃
- 高校輔導(dǎo)員師德師風(fēng)自查與改進(jìn)措施
- 小學(xué)品德與生活教育計(jì)劃
- 浦東制造業(yè)轉(zhuǎn)型升級(jí)的心得體會(huì)
- 正面管教與學(xué)生自主學(xué)習(xí)的心得體會(huì)
- 漢代文化課件圖片高清
- 【四川卷】【高二】四川省成都市蓉城名校聯(lián)盟2023-2024學(xué)年高二下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 2025年中南出版?zhèn)髅郊瘓F(tuán)湖南教育出版社分公司招聘筆試參考題庫含答案解析
- 艾滋病病人的心理護(hù)理
- 鐵路旅客運(yùn)輸服務(wù)鐵路客運(yùn)車站服務(wù)工作課件
- 廣東惠州事業(yè)單位招聘醫(yī)療衛(wèi)生崗考試模擬題帶答案2025年
- 《面試技巧與策略》課件
- 2023年貴州省糧食儲(chǔ)備集團(tuán)有限公司面向社會(huì)公開招聘工作人員15人筆試參考題庫附帶答案詳解
- 公司注冊合同協(xié)議
- 心功能分級(jí)課件
- 統(tǒng)編版一年級(jí)下冊道德與法治第四單元學(xué)先鋒做先鋒第一課時(shí)教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論