1 緒論 1.1 交通燈控制系統的發展1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍兩色的機械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機械工程師納伊特在倫敦威斯敏斯特區的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。由紅綠兩以旋轉式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。 1914年,電氣啟動的紅綠燈出現在美國。這種紅綠燈由紅綠黃三色圓形的投光器組成,裝在紐約5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。 1918年,又出現了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,車輛一接近紅燈便變為綠燈;另一種是用擴音器來啟動紅綠燈,司機遇紅燈時按一下嗽叭,就使紅燈變為綠燈。紅外線紅綠燈當行人踏上對壓力敏感的路面時,它就能察覺到有人要過馬路。紅外光束能把信號燈的紅燈延長一段時間,推遲汽車放行,以免發生交通事故。 信號燈的出現,使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯合國《道路交通和道路標志信號協定》對各種信號燈的含義作了規定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉彎和右轉彎,除非另一種標志禁止某一種轉向。左右轉彎車輛都必須讓合法地正在路口內行駛的車輛和過人行橫道的行人優先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進入交叉路口。 1.2 課題研究的背景 隨著城市機動車輛的不斷增加,許多大城市出現了交通超負荷運行的情況。因此,自80年代后期,這些城市紛紛修建城市高速道路,在高速道路建設完成的初期,它們也曾有效地改善了交通狀況。然而,隨著交通量的快速增長和缺乏對高速道路的系統研究和控制。高速道路沒有充分發揮出預期的作用。而城市高速道路在構造上的特點,也決定了城市高速道路的交通狀況必然受高速道路與普通道路耦合處交通狀況的制約。所以,如何采用合適的控制方法,最大限度利用好耗費巨資修建的城市高速道路。緩解主干道與匝道、城區同周邊地區的交通擁堵狀況,越來越成為交通運輸管理和城市規劃部門亟待解決的主要問題。 目前,國內大部分中小城市仍采用傳統的交通燈控制模式,但隨著城市的不斷發展,基于車流量的智能交通燈控制系統必將受到廣大人民的青睞。傳統的交通信號燈,通常采用定時分配方式控制,主要存在三方面的缺陷:(1)車道放行車輛時,十字路口經常出現不同相位上車輛放行時問相同,車輛多的一方容易出現車輛堆積,造成下一路口的交通阻塞;(2)當某相位上無車時,恰好是該相位上的車輛通行時間,則在這段時間內,就出現了交通指揮盲點;(3)當一路口車流量很大時,不能夠自動延長口的綠燈時間,導致在一個周期內此路口的車輛不能完全通過。 為了更好的解決上述問題,本系統利用傳感器檢測車流量狀態,用單片機AT89C51對路口車流量進行統計,并執行相應的處理程序,來實現智能交通燈控制系統,達到了根據車流量大小實時控制路口的通行情況。該交通系統的設計具有結構簡單、可靠性高、成本低、實時性好、安裝維護方便等優點,具有廣泛的應用前景。 1.3 課題研究的主要內容本課題研究的內容有如下幾個方面: (1)基于車流量的智能交通燈控制系統的工作原理。 (2)基于車流量的智能交通燈控制系統的硬件設計。 (3)車流量檢測原理及其硬件電路設計。 (4)基于車流量的智能交通燈控制系統的程序設計。
2 課題研究方案2.1 具體研究方案2.1.1 系統總體方案通過對課題研究內容的理解,并考慮系統的性價比,得到系統的總體方案。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif 圖2-1 總體方案 2.1.2 車流量檢測方案方案一: 采用遙感微波檢測器(RTMS)。微波交通檢測器是利用雷達線性調頻技術原理,通過發射中心頻率為10.525GHz或24.200GHz的連續頻率調制微波(FMCW);在檢測路面上,投映一個寬度為3-4米,長度為64米的微波帶。每當車輛通過這個微波投映區時,都會向RTMS反射一個微波信號,RTMS接收反射的微波信號,并計算接收頻率和時間的變化參數以得出車輛的速度及長度,提供車流量、道路占有率、速度和車型等實時信息。為了檢測出車道上車的數量,RTMS在微波束的發射方向上以2M為一個層面分展探測物體,微波束在15度范圍內投影形成一個分為32個十層面的橢圓形波束,(橢圓的寬度取決于儀器選擇的工作方式),通過這種方式可檢測出車量數RTMS具有兩種基本的使用模式,分別是路邊側向模式和前方正向模式。路邊側向模式可以使用一臺RTMS同時檢測多至8條車道,并提供每條車道的交通信息。前方正向模式,用一臺RTMS實時檢測一條單一車道的交通情況。RTMS的檢測精度高,且是一個全天候的車輛檢測器。 方案二: 采用磁感應車輛檢測器.這種環形線圈檢測器是傳統的交通檢測器,是目前世界上用量最大的一種檢測設備。這些埋設在道路表面下的線圈可以檢測到車輛通過時的電磁變化進而精確地算出交通流量。交通流量是交通統計和交通規劃的基本數據,通過這些檢測結果可以用來計算占用率(表征交通密度),在使用雙線圈模式時還可以提供速度、車輛行駛方向、車型分類等數據,這些數據對于交通管理和統計是極為重要的。原理方框圖如下: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif 圖2-2 磁檢測器方框圖 該方案測量精度較好,且性能穩定。 方案三: 利用紅外線車輛檢測器。紅外線車輛檢測器是利用被檢測物對光束的遮擋或反射,通過同步回路檢測物體有無。物體不限于金屬,所有能反射光線的物體均可被檢測。光電開關將輸入電流在發射器上轉換為光信號射出,接收器再根據接收到的光線的強弱或有無對目標物體進行探測。如當汽車通過光掃描區域時,部分或全部光束被遮擋,從而實現對車輛數據的綜合檢測。紅外線車輛掃描系統提供了車輛輪廓掃描的解決方案,并提供車輛分離信號,同時還能夠檢測掛鉤是否存在及其位置,由于光學產品的高速響應,當車速低于100公里/小時,系統可對車輛間距0.3米車輛實現可靠的分離檢測并抓取車輛輪廓數據,當車速低于200公里/小時,對車輛間距0.6米的車輛實現可靠的分離檢測并抓取輪廓數據,系統可自動分類超過100種車型,車輛自動分類的準確率超過99%。常利用光電開關技術成熟,高速響應,可輸出豐富的車輛數據信息,能可靠檢測各種特殊車輛。抗干擾性強,不受惡劣氣象條件或物體顏色的影響,安裝簡便。 方案一造價高,且易受環境影響,方案二需將檢測器埋入地底下,對已建成道路使用不方便。方案三性價比高,且設計簡單,權衡利弊,故選用方案三。 2.1.3 主控制器選擇方案一: 采用數字電路設計。通過譯碼器,計數器,以及555定時器等組成一個交通燈控制系統,雖然易于實現,但由于涉及的集成數字芯片較多,且不便于實現車流量檢測信號的輸入,故很難完成系統設計任務。 方案二: 采用AT89C51單片機作為主控制器。AT89C51具有兩個16位定時器/計數器,5個中斷源,便于對車流量進行定時中斷檢測。32根I/O線,使其具有足夠的I/O口驅動數碼管及交通燈。外部存貯器尋址范圍ROM、RAM64K,便于系統擴展。其T0,T1口可以對外部脈沖進行實時計數操作,故可以方便實現車流量檢測信號的輸入。 單片機具有功耗小、速度快、價格低等優點,且編程簡單,故選用方案二。 2.1.4 顯示方案選擇該系統要求完成倒計時、狀態燈等顯示功能。基于上述原因,我們考慮了三種方案: 方案一: 完全采用數碼管顯示。這種方案只顯示有限的符號和數碼字符,無法勝任題目要求。 方案二: 完全采用點陣式LED顯示。這種方案實現復雜,且須完成大量的軟件工作;但功能強大,可方便的顯示各種英文字符,漢字,圖形等。 方案三: 采用數碼管與點陣LED相結合的方法因為設計既要求倒計時數字輸出,又要求有狀態燈輸出等,為方便觀看并考慮到現實情況,用數碼管與LED燈分別顯示時間及狀態信息。 這種方案既滿足系統功能要求,又減少了系統實現的復雜度。權衡利弊,第三種方案可互補一、二方案的優缺,我們決定采用方案三以實現系統的顯示功能。 2.2 單片機概述2.2.1 單片機發展單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。通常,單片機由單塊集成電路芯片構成,內部包含有計算機的基本功能部件:中央處理器、存儲器和I/O接口電路等。因此,單片機只需要和適當的軟件及外部設備相結合,便可成為一個單片機控制系統。 單片機經過1、2、3三代發展,目前單片機正朝著高性能和多品種方向發展,它們的CPU功能在增強,內部資源在增多,引腳的多功能化,以及低電壓低功耗。 2.2.2 AT89C51單片機簡介AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable ReadOnly Memory)的低電壓,高性能的CMOS 8位微處理器,單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。 AT89C51單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線,現在分別加以說明: (1)中央處理器: 中央處理器(CPU)是整個單片機的核心部件,是8位數據寬度的處理器,能處理8位二進制數據或代碼,CPU負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。 (2)數據存儲器(RAM) 89C51內部有128個8位用戶數據存儲單元和128個專用寄存器單元,它們是統一編址的,專用寄存器只能用于存放控制指令數據,用戶只能訪問,而不能用于存放用戶數據,所以,用戶能使用的RAM只有128個,可存放讀寫的數據,運算的中間結果或用戶定義的字型表。 (3)程序存儲器(ROM): 89C51共有4KB掩膜ROM,用于存放用戶程序,原始數據或表格。 (4)定時/計數器(ROM): 89C51有兩個16位的可編程定時/計數器,以實現定時或計數產生中斷用于控制程序轉向。 (5)并行輸入輸出(I/O)口: 89C51共有4組8位I/O口(P0、P1、P2和P3),用于對外部數據的傳輸。 (6)全雙工串行口: 89C51內置一個全雙工串行通信口,用于與其它設備間的串行數據傳送,該串行口既可以用作異步通信收發器,也可以當同步移位器使用。 (7)中斷系統: 89C51具備較完善的中斷功能,有兩個外中斷、兩個定時/計數器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優先級別選擇。 (8)時鐘電路: 89C51內置最高頻率達12MHz的時鐘電路,用于產生整個單片機運行的脈沖時序,但89C51單片機需外置振蕩電容。 單片機的結構有兩種類型,一種是程序存儲器和數據存儲器分開的形式,即哈佛(Harvard)結構,另一種是采用通用計算機廣泛使用的程序存儲器與數據存儲器合二為一的結構,即普林斯頓(Princeton)結構。INTEL的MCS-51系列單片機采用的是哈佛結構的形式,而后續產品16位的MCS-96系列單片機則采用普林斯頓結構。 AT89C51單片機的引腳說明:MCS-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用。其常用封裝形勢如下: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpgfile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg 圖2-3 引腳說明 Pin9:RESET/Vpd復位信號復用腳,當89C51通電,時鐘電路開始工作,在RESET引腳上出現24個時鐘周期以上的高電平,系統即初始復位。初始化后,程序計數器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統即從0000H地址開始執行程序。然而,初始復位不改變RAM(包括工作寄存器R0-R7)的狀態,及89C51的初始態。 89C51的復位方式可以是自動復位,也可以是手動復位,如圖2-4。此外,RESET/Vpd還是一復用腳,Vcc掉電期間,此腳可接備用電源,以保證其內部RAM的數據不丟失。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg 圖2-4 復位電路說明 Pin30:AE/file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif當訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節。而訪問內部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ALE會跳過一個脈沖。 如果單片機是EPROM,在編程其間,file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif將用于輸入編程脈沖。 Pin29:file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數據將出現在P0和P2口上,外部程序存儲器則把指令數據放到P0口上,由CPU讀入并執行。 Pin31:EA/Vpp程序存儲器的內外部選通線,89C51內置有4kB的程序存儲器,當EA為高電平并且程序地址小于4kB時,讀取內部程序存儲器指令數據,而超過4kB地址則讀取外部指令數據。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內部無程序存儲器的8031,EA端必須接地。 在編程時,EA/Vpp腳還需加上21V的編程電壓[2]。 2.3 光電開關概述2.3.1 光電開關的工作原理光電開關(光電傳感器)是光電接近開關的簡稱,它是利用被檢測物對光束的遮擋或反射,由同步回路選通電路,從而檢測物體有無的。物體不限于金屬,所有能反射光線的物體均可被檢測。光電開關將輸入電流在發射器上轉換為光信號射出,接收器再根據接收到的光線的強弱或有無對目標物體進行探測。其工作原理圖如下: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg 圖2-5 光電開關工作原理簡圖 發送器對準目標發射光束,發射的光束一般來于半導體光源,發光二極管(LED)、激光二極管及紅外發射二極管。光束不間斷地發射,或者改變脈沖寬度。接收器有光電二極管、光電三極管、光電池組成。在接收器的前面,裝有光學元件如透鏡和光圈等。在其后面是檢測電路,它能濾出有效信號和應用該信號。 2.3.2 光電開關的分類光電開關按檢測方式可分為反射式、對射式和鏡面反射式三種類型。 對射式檢測距離遠,可檢測半透明物體的密度(透光度)。反射式的工作距離被限定在光束的交點附近,以避免背景影響。鏡面反射式的反射距離較遠,適宜作遠距離檢測,也可檢測透明或半透明物體。下表給出了光電開關的檢測分類方式及特點說明。 表2-1 光電開關的檢測方式
| | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg |
光電開關按結構可分為放大器分離型、放大器內藏型和電源內藏型三種。放大器分離型是將放大器與傳感器分離,并采用專用集成電路和混合安裝工藝制成,由于傳感器具有超小型和多品種的特點,而放大器的功能較多。因此,該類型采用端子臺連接方式,并可交、直流電源通用。具有接通和斷開兩種延時功能,兼有接點和電平兩種輸出方式。放大器內藏型是將放大器與傳感器一體化,采用專用集成電路和表面安裝工藝制成,使用直流電源工作。其響應速度快,有0.1ms和1ms兩種,能檢測狹小和高速運動的物體。兼有電壓和電流兩種輸出方式,能防止相互干擾,在系統安裝中十分方便。電源內藏型是將放大器、傳感器與電源裝置一體化,采用專用集成電路和表面安裝工藝制成,它一般使用交流電源,適用于在生產現場取代接觸式行程開關。可直接用于強電控制電路,也可自行設置自診斷穩定工作區指示燈,輸出備有SSR固態繼電器或繼電器常開、常閉接點,可防止相互干擾。 2.3.3 光電開關的應用隨著我國工業自動化技術的迅速發展,光電開關自動化元件將被普遍采用。應用領域也在不斷擴展,采用集成電路技術和SMT表面安裝工藝而制造的新一代光電開關器件,具有延時、展寬、外同步、抗相互干擾、可靠性高、工作區域穩定和自診斷等智能化功能。這種新穎的光電開關是一種采用脈沖調制的主動式光電探測系統型電子開關,它所使用的冷光源有紅外光、紅色光、綠色光和藍色光等,可非接觸、無損傷地檢測和控制各種固體。新型光電開關具有體積小、功能多、壽命長、精度高、響應速度快、檢測距離遠以及抗光、電、磁干擾能力強等優點。 目前,這種新型的光電開關已被用作物位檢測、液位控制、產品計數、寬度判別、速度檢測、定長剪切、孔洞識別、信號延時、自動門傳感、色標檢出、沖床和剪切機以及安全防護等諸多領域。 在本系統中,采用對射式紅外線光電開關HJS18-M14DNK檢測車流量。HJS18-M14DNK工作電壓為直流10-30V,檢測距離為10m,響應時間小于3ms,能在-25℃~55℃的溫度條件下正常工作。當有車輛通過光電開關之間時,輸出端將輸出一個開關信號,送入單片機,單片機執行相應程序自動對輸入信號進行計數,從而完成對車流量的統計。 2.4 七段數碼管分段式數碼管由分布在同一平面上若干段發光的筆畫組成,如半導體顯示器。其基本結構是PN結,即用發光二極管(LED)組成字型來來顯示數字。這種數碼管的每個線段都是一個發光二極管,因此也稱LED數碼管或LED七段顯示器。共陽數碼管在應用時應將公共極COM接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg 圖2-6 共陽極數碼管結構圖 圖2-7 共陽極數碼管結構圖 2.5 電源電路設計單片機系統電源設計是單片機應用系統設計中的一項重要工作,電源的精度和可靠性等各項指標,直接影響系統的整體性能。為了使單片機正常工作,以5V直流電為單片機供電。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg 圖2-8 電源電路圖 (1)復位電路的設計 復位電路是使單片機的CPU或系統中的其他部件處于某一確定的初始狀態,并從這上狀態開始工作。通常單片機復位電路有兩種:上電復位電路和按鍵復位電路。上電復位是單片機上電時復位操作,保證單片機上電后立即進入規定的復位狀態。它利用的是電容充電的原理來實現的。按鍵復位電路,它不僅具有上電復位電路的功能,同時它的操作比上電復位電路的操作要簡單的多。如果要實現復位的話,只要按下RET鍵即可。它主要是利用電阻的分壓來實現的,在此設計中,采用的按鍵復位電路。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg 圖2-9 復位電路 復位電路的工作原理是,復位鍵接通電源上電后,單片機自動實現復位操作。上電瞬間RET引腳獲得高電平,隨著電容的充電,RET引腳的高電平將逐漸下降。RET引腳的高電平只要能保持足夠的時間即2個機器周期,單片機就可以進行復位操作。有效的復位電路不僅在上電時可以自動復位,而且在單片機運行期間,利用按鍵也可以完成復位操作。 (2)晶振電路的設計 晶振電路用于產生單片機工作所需要的時鐘信號,而時序所研究的是指令執行中各信號之間的相互關系。單片機本身就如一個復雜的同步時序電路,為了保證同步工作方式的實現,電路應在唯一的時鐘信號控制下嚴格地工作。通常在引腳Xl和X2跨接石英晶體和兩個補償電容構成自激振蕩器,如圖2-10中Y1、C1、C2。可以根據情況選擇6MHz、12MHz或24MHz等頻率的石英晶體,,補償電容通常選擇33pF左右的瓷片電容。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image025.jpg 圖2-10 晶振電路 根據系統設計要求,結合各單元電路,得到所需系統原理圖。詳圖見附錄I
3 程序設計 3.1 軟件可靠性設計在單片機軟件程序的設計中,采用一些措施來提高單片機系統工作的可靠性。軟件抗干擾研究的內容主要有:一、消除模擬輸入信號的嗓聲(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。這里針對后者提出幾種有效的軟件抗干擾方法。(1)指令冗余技術 單片機CPU取指令過程是先取操作碼,再取操作數。當PC受干擾出現錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節指令,若取指令時刻落在操作數上,誤將操作數當作操作碼,程序將出錯。若“飛”到了三字節指令,出錯機率更大。 在關鍵地方人為插入一些單字節指令,或將有效單字節指令重寫稱為指令冗余。通常是在雙字節指令和三字節指令后插入兩個字節以上的NOP。這樣即使亂飛程序飛到操作數上,由于空操作指令NOP的存在,避免了后面的指令被當作操作數執行,程序自動納入正軌。 此外,對系統流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執行。 (2)軟件陷阱技術 當亂飛程序進入非程序區,冗余指令便無法起作用。通過設置軟件陷阱,攔截亂飛程序,將其引向指定位置,再進行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復位入口地址0000H的指令。 例如,對于8051單片機,通常在單片機程序存儲器中非程序區填入以下指令作為軟件陷阱: NOP NOP LJMP0000H 在用戶程序區各模塊之間的空余單元也可填入陷阱指令。當使用的中斷因干擾而開放時,在對應的中斷服務程序中設置軟件陷阱,能及時捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式: NOP NOP RETI 返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統自恢復程序的設計可靠、完善,用“LJMP 0000H”作返回指令可直接進入故障診斷程序,盡早地處理故障并恢復程序的運行[11]。 考慮到程序存儲器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。 (3)軟件“看門狗”技術 若失控的程序進入“死循環”,通常采用“看門狗”技術使程序脫離“死循環”。通過不斷檢測程序循環運行時間,若發現程序循環時間超過最大循環運行時間,則認為系統陷入“死循環”,需進行出錯處理。“看門狗”技術可由硬件實現,也可由軟件實現。 在工業應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷。則系統無法定時“喂狗”,硬件“看門狗”電路失效。而軟件“看門狗”可有效地解決這類問題。 3.2 主程序流程圖當車流量小于15的時候執行狀態3,車流量小于25大于15的時候執行狀態2,車流量大于25的時候執行狀態1,其工作流程圖如圖3-1所示 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif 圖3-1 主程序流程圖 3.3 中斷程序流程圖file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image029.gif 圖3-2 中斷程序流程圖 3.4 系統工作狀態說明光電開關將檢測到的車流量脈沖信號送入單片機的T1口,T1對輸入脈沖計數,同時單片機T0口對其定時,在設置的一段時間內(如1分鐘),通過單片機定時器T0的溢出中斷,將計數值送回,單片機通過執行相應的程序,從而控制交通狀態燈切換及數碼管的倒計時時間顯示。單片機根據車流量變化具體工作狀態如下: ① 當定時時間,執行定時中斷T0,單片機將T1的計數值送給車流量檢測變量CAR_NUMBEERS,單片機每執行一次程序,都將掃描該變量的值。當CAR_NUMBERS大于25輛/分,執行狀態Ⅰ:東西方向綠燈,南北方向紅燈,倒計時40秒,然后東西黃燈5秒,南北保持紅燈5秒,緊接著東西紅燈,南北方向綠燈,倒計時25秒后,南北亮黃燈5秒,東西保持紅燈狀態5秒后,重新掃描。 ② 當系統剛開始工作或者CAR_NUMBERS大于或等于15輛/分,小于或等于25輛/分,將執行狀態Ⅱ:東西方向綠燈,南北方向紅燈,倒計時30秒,然后東西黃燈5秒,南北保持紅燈5秒,緊接著東西紅燈,南北方向綠燈,倒計時25秒后,南北亮黃燈5秒,東西保持紅燈狀態5秒后,重新掃描。 ③ 當CAR_NUMBERS小于15輛/分,執行狀態Ⅲ:東西方向綠燈,南北方向紅燈,倒計時50秒,然后東西黃燈5秒,南北保持紅燈5秒,緊接著東西紅燈,南北綠燈,倒計時45秒后,南北亮黃燈5秒,東西保持紅燈5秒后,重新掃描[4]。 (2)相關參數說明 交通量counts:是指在選定的時間段內,通過道路某一地點、某一斷面或某一條車道的車輛實體數。交通量是一個隨機數,不同時間、不同地點的交通量都是變化的,交通量隨時間和空間變化的現象,稱之為交通量的時空分布特性。通常取某一時間段內的平均值作為該時間段內的交通量。 參考時間t:為了更準確地表示某個路口的車流量,選擇一個適合的時間段作為參考值,即參考時間。 車流量CAR_NUMBERS:指單位時間內通過某一地點、某一斷面或某一條車道的車輛實體數。具體關系如下: CAR_NUMBERS = counts/t (輛/分)
4系統仿真與調試4.1 系統仿真4.1.1 Protues仿真軟件簡介Proteus是英國Labcenter公司開發的電路分析與仿真軟件。Proteus是目前最好的模擬單片機外圍器件的工具,它可以仿真51系列、AVR,PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤,馬達,LED,AD/DA,部分SPI器件,部分IC器件)。本文基于Proteus6.7SP3和KEIL uVision3軟件。運行于Windows操作系統上,可以仿真、分析(SPICE)數字電路、模擬電路、數模混合電路,是目前唯一能實現對51、PIC、AVR、HC11等處理器的仿真軟件。該軟件的特點是: (1)集原理圖設計、仿真和PCB設計于一體,實現從概念到產品的完整開發工具。 (2)具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真,是獨一無二的支持處理器與外圍電路的協同仿真電路設計軟件。 (3)具有全速、單步、設置斷點等多種形式的調試功能。 (4)具有各種信號源和電路分析所需的虛擬儀表,是電類教學實驗與創新的平臺。 (5)支持Keil C51 uVision2、MPTLAB等第三方的軟件編譯和調試環境。 (6)具有強大的原理圖到PCB板設計功能,可以輸出多種格式的電路設計報表。 4.1.2 仿真原理圖Proteus軟件具有仿真功能,要仿真首先要繪制原理圖。點擊圖標file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg打開Proteus軟件,進入繪圖界面后點擊file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg按扭,點擊出現的元件列表框上方的按扭file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg,在出現的“pickdevice”中的“keywords”下面的框中輸入元器件的名字,或者在category中找到元器件的名字;雙擊元器件名稱或者點擊file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif,在元件列表框中就會出現所選的元器件。再點擊按扭file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image038.jpg,在元件列表框中選擇地線和電源。選好所有的元器件后單擊元件列表中的圖標就可以把所需要的元件放入編輯窗口中,調整元件的位置,并把地線和電源放入編輯窗口中,最后進行連線。通過在T1口接入一個開關,模擬光電開關信號,手動控制開關的脈沖數,即為需要模擬的車流量,從而達到仿真效果。系統仿真詳圖見附錄II 4.1.3 加載仿真程序單擊“Debug”菜單,在下拉菜單中單擊“Go”選項,(或者使用快捷鍵F5),然后再單擊“Debug”菜單,在下拉菜單中單擊“Stop Running”選項(或者使用快捷鍵Esc);再單擊“View”菜單,再在下拉菜單中單擊“Serial Windows #1”選項,就可以看到程序運行后的結果。 單擊“Project”菜單,在下拉菜單中單擊“file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image039.gif”單擊“Output”中單擊“Create HEX File”選項,使程序編譯后產生HEX代碼,供下載器軟件使用,把程序下載到AT89C51單片機中[4]。
|