第一篇:基于單片機的交通信號燈模擬控制系統
本畢業論文由單片機系統、LED 顯示、交通燈演示系統組成。系統包括基本的交通燈的功能,還具有倒計時、時間設置、緊急情況處理、分時段調整信號燈的點亮時間以及根據具體情況手動控制等功能。
關鍵詞:倒計時 89C51芯片
MCU-based simulation system for traffic lights(Major of Applied Electronic Technology, Information and Engineering College Biao Zhang)Abstract:This system consists of single-chip microcomputer system, LED display, traffic light presentation system.System includes the basic functions of traffic lights, also has a countdown, the time setting, emergency handling, at times to adjust the light signal in accordance with the specific circumstances of time and manual control functions.Keywords:countdown 89C51 引言
隨著我國國民經濟的迅速發展,城市街道車輛大幅度增長,給城市交通帶來巨大壓力,交通擁堵已經成為影響城市可持續發展的一個全局性問題。而街道各十字路口,又是車輛通行的瓶頸所在。已有的許多建立在精確模型基礎上的交通系統控制方案都存在著一定的局限性。研究車輛通行規律,找出提高十字路口車輛通行效率的有效方法,對緩解交通阻塞,提高暢通率具有十分現實的意義。地面道路是一個龐大的網絡,交通狀況十分復雜,使目前交通燈控制器的單一時段控制已不能滿足現代交通流量的多變性,特別是在交通流量高峰時,往往會造成交通路口的通過率下降,甚至出現交通混亂現象,城市的交通擁擠問題正逐漸引起人們的注意。道路平面交叉口(簡稱交叉口)是交通網中通行能力的“隘口”和交通事故的“多發源”,國內外城市的交通事故約有一半發生在交叉口。因此,交叉口這個事故多發源不能不引起人們的高度關注。隨著交通技術、電子技術的發展及微機技術的應用,人們設計出了適應各種需要的交通檢測器、信號控制機和交通信號燈。1 方案的論證及確定
題目要求系統緊急情況處理,我們討論了兩種方案。
方案一:采用8255擴展I/O口及鍵盤,顯示等。該方案的優點是:使用靈活可編程,并且有 RAM,及計數器。若用該方案,可提供較多I/O口,但操作起來稍顯復雜。方案二:采用89C51來控制鍵盤及數碼管顯示。該芯片有較寬的工作電壓(2.7V-6V),128*8B內置RAM,4KB可在線重復編程的閃爍存儲器。完全可以滿足系統需求,由于不需要外部EPROM芯片,可以簡化電路設計。由于該系統對于交通燈及LED的控制,只用單片機本身的I/O口就可實現,且本身的計數器及RAM已經夠用,故選擇方案二。2 電路的設計及原理的分析 2.1 系統總框圖及工作原理
設計思路:設一個字路口,1,3為南北方向,2,4為東西方向。一開始1,3路口紅綠燈亮通車,2,4路口紅燈亮,同時LED開始倒計時。一段時間后,1,3路口綠燈滅,黃燈開始閃爍,然后等LED倒計時完畢1,3路口紅燈亮,同時2,4路口綠燈亮通車,LED重新倒計時開始。一段時間后2,4路口綠燈滅,黃燈開始閃爍,等LED倒計時完畢2,4路口紅燈亮,同時1,3路口綠燈亮通車。接下去重復上述過程。LED倒計時的手動控制:設計根據車流量的大小,設置了6個倒計時時間。分別是15s,30s,45s,60s,75s,90s。系統正常工作時,按一下按鍵2,LED閃爍,這時便可以通過按鍵1調節倒計時時間。按照按的次數不同循環顯示。選定時間后按按鍵2系統開始正常工作。警車情況:警車情況由按鍵1來模擬。當系統正常工作時,按下按鍵1,黃燈閃爍,然后四路燈全部紅燈。再按下按鍵1系統開始重新工作;按鍵3為復位鍵。2.2 硬件電路的設計
由于整個系統由AT89C51芯片控制。簡單模擬一個十字路口的交通燈的工作情況。四路共12盞交通燈(4紅,4黃,4綠)采用發光二極管模擬。倒計時功能用兩個共陽LED數碼管來實現。按鍵1用來模擬警車通過時的情況。按鍵2用來確定是否根據不同的車流量調節LED數碼管倒計時的時間。所以本系統主要的驅動電路有兩部分,分別是數碼管的驅動電路和紅綠燈驅動電路。
2.2.1 數碼管顯示驅動電路
數碼管顯示驅動電路采用“三極管驅動的并行LED數碼管動態掃描顯示”(圖2)。三極管用于位選起到開關的作用,P1口作為段選。當三極管基極高電平時,三極管截止,數碼管不工作。基極低電平時,三極管導通,數碼管公共端為高電平,數碼管工作同時點亮。然后通過程序的設置使用按鍵1和按鍵2來改變數碼管上顯示的數字。2.2.2 紅綠燈顯示驅動電路 2.2.3 系統整體電路圖
本設計主要是由LED數碼管驅動電路,紅綠燈驅動電路,AT89C51微控制器三部分組成。系統的整體電路如圖4: 3 硬件主要器件的介紹 主芯片:AT89C51單片機由中央處理器(CPU),內部數據存儲器(內RAM),內部程序存儲器(內部ROM),2個16位的定時器/計數器,4個8位的I/O口(PO、Pl、PZ、P3),1個全雙工的可編程串行口,時鐘電路,中斷系統,8部分組成。結構圖如圖5:
發光二極管:本設計使用的是普通單色發光二極管,它具有體積小、工作電壓低、工作電流小、發光均勻穩定、響應速度快、壽命長等優點,可用各種直流、交流、脈沖等電源驅動點亮。由于它屬于電流控制型半導體器件,使用時需串接合適的限流電阻。4 系統的實際應用
本系統只是對一個十字路口交通燈工作情況的簡單模擬,如果要應用到實際中去,還要改進。首先是燈的改進,如果要應用到實際中去的話,燈就得用大功率高亮度的LED。其次是倒計時LED數碼管也要改為大型的LED數碼管。這樣一來原本的驅動電路就要改進。此外在倒計時時間的調整和警車通過等特殊情況的功能上要改進為自動檢測和控制功能。這樣才能達到實際應用的目的。
4.1 實際應用的驅動電路
由于實際交通信號燈的功率都在10W~20W,因此要使用高功率驅動電路。下面是驅動芯片AMC7150的實際應用電路圖(圖6):
AMC7150 最多可以驅動8個 LED 可以調節頻率 AMC7150則內建PWM(脈沖寬度調變)與功率晶體管,只需五顆外部零件。該組件輸入工作電壓在4V~40V間,最高驅動電流達1.5安培,可以驅動24W的高功率LED。工作頻率可由外部電容控制而達200KHz,只要調整外部電阻值即可達到變更輸出電流的目的。4.2 動態車輛檢測
實際應用中根據車流量大小來調整倒計時時間的長短是全自動的,這就需要一個能對過往車輛檢測的電路系統,以隨時確定車流量的大小,以便對倒計時時間的調整,使交通秩序達到最好狀態。
為此,系統將加入一個動態車輛檢測電路(圖7)。其工作情況是埋設在各車道安全線前方路面下的環形線圈傳感器與振蕩器匹配,形成一定頻率的周期信號。該信號經施密特整形電路轉化為脈寬信號后可作為計數脈沖。當有車輛通過該環形線圈時,線圈磁場發生變化,從而導致計數脈沖數量的變化。將100ms時間內沒有車通過時的頻率計數作為基準計數Base,實際計數為Num。當NumBase>0時,就可判定有車輛通過。4.3 警車聲的自動識別
由于警車聲的頻率是特定的,因此只要將收集的頻率和警車頻率比較,如果相同,則可以判定有警車開過路口,此時交通燈就可以作出相應的反映。如果不同則判定無警車通過。為了提高判定的精確度,可以取警車的三個不同頻率來做判定。程序流程圖 6 系統調試
本畢業論文調試分鍵盤模塊、信號燈模塊、倒計時模塊。各個獨立模塊功能調試成功后,將這些模塊程序通過主程序合并在一起,最后再對合并后的總程序進行調試。各軟件模塊首先要通過PC和仿真器進行軟件調試,當仿真效果符合要求后,再燒寫進單片機看能否在實際電路板上正常工作。編程語言的軟件設計采用MCS-51匯編語言編寫,所使用的調試軟件包括偉福Keil uVision2和MedWin2.39,所使用的仿真器有INSIGHT公司的ME-52A仿真器。數碼管問題:雖然本次設計的最終方案是采用共陽極的七段數碼管實現顯示功能,最初數碼管顯示不正常,出現閃爍現象。通過調試發現這是由于延時時間選擇不當造成的和一些電源的電壓可能不夠的原因夠成的。由于數碼管是采用動態顯示方式,為了使人眼產生視覺暫留效果,每一次顯示時都必須加入適當的時間。通過上述的改變,以基本實現正常。
發光二極管的問題:在設計調試的時候由于一接電源,數個二極管始終不亮,最后用萬用表測試了下,才知道原來因為電流過大,二極管被擊穿了!于是我在二極管和芯片之間連上了限流電阻,結果表明上述問題基本解決,但還是有個別的二極管還是存在少許問題,我個人認為是二極管本身的材質引起的,而不是軟件問題。結論與謝辭
系統采用51系列單片機AT89C51為中心器件來設計交通燈控制器,實現了能根據實際車流量通過按鍵的P3口設置紅、綠燈燃亮時間的功能;顯示時間直接通過P1口輸出;交通燈信號通過平常PC口輸出;系統設計簡便、實用性強、操作簡單、程序設計簡便。系統不足之處不能控制車的左、右轉、以及自動根據車流改變紅綠燈時間等。這是由于本身地理位置以及車流量情況所定,如果有需要可以設計擴充原系統來實現。由于個人的能力有限有些地方還有不足,但此畢業設計鍛煉了個人的能力和處理事情的能力,對以前所學的一些軟件個程序的編寫也有了很大的認識。通過這次畢業設計,使我得到了一次用專業知識、專業技能分析和解決問題全面系統的鍛煉。使我在單片機的基本原理、單片機應用系統開發過程,以及在常用編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格的應用型人才打下良好的基礎。
在本文即將結束之際,我要由衷地感謝在我畢業設計階段,乃至3年大學學習生活中幫助過我的師長與同學。在畢業設計完成的過程中得到了許多老師和單位領導的幫助,學院的老師們嚴謹治學的教學使我受益非淺。本論文的選題、研究內容、研究方法及論文的形成是在范靈芝老師支持、鼓勵和悉心指導下完成的,她是我獲得深思熟慮的意見和概念清晰的見解的來源,她不惜花費自己時間對本論文提出許多意見和建議,既激發了我的靈感,又給了我持久不斷的鼓勵。在論文完成的過程中傾注了導師大量的心血,在論文完成之際,特向我尊敬的老師表示衷心的感謝。***
組裝及調試 劃分出相互獨立的電路模塊,便于分別安裝調試。每安裝好一個模塊,就上電測試一下。(1)硬件調試:
硬件調試是利用DVCC實驗與開發系統、基本測試儀器(萬用表、示波器等),檢查用戶系統硬件中存在的故障。其中硬件調試可分為靜態調試與動態調試兩步進行。靜態調試是在用戶系統未工作時的一種硬件檢測。
第一步:目測。檢查外部的各種元件或者是電路是否有斷點。第二步用萬用表測試。先用萬用表復核目測中有疑問的連接點,再檢測各種電源線與地線之間是否有短路現象。
第三步加電檢測。給板加電,檢測所有插座或是器件的電源端是否符合要求的值 第四步是聯機檢查。因為只有用單片機開發系統才能完成對用戶系統的調試。
動態調試是在用戶系統工作的情況下發現和排除用戶系統硬件中存在的器件內部故障、器件連接邏輯錯誤等的一種硬件檢查。動態調試的一般方法是由近及遠、由分到合。由分到合是指首先按邏輯功能將用戶系統硬件電路分為若干塊,當調試電路時,與該元件無關的器件全部從用戶系統中去掉,這樣可以將故障范圍限定在某個局部的電路上。當各塊電路無故障后,將各電路逐塊加入系統中,在對各塊電路功能及各電路間可能存在的相互聯系進行調試。由分到合的調試既告完成。由近及遠是將信號流經的各器件按照距離單片機的邏輯距離進行由近及遠的分層,然后分層調試。調試時,仍采用去掉無關元件的方法,逐層調試下去,就會定位故障元件了。(2)軟件調試:
軟件調試是通過對程序的匯編、連接、執行來發現程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。用軟件WAVE6000進行調試。
設計總結
這次課程設計碰到了不少困難,也走了不少彎路。因此想給參考者講述自己的一些經驗:(1)在設計電路圖時除了要擇優電路之外,還應當考慮經濟性。因為課程設計的目的是為了提高我們的動手能力,所以應把經濟作為第一考慮要素。
(2)用protel 99SE制作原理圖時一定要清楚管腳標號的順序,這是為讓封裝做得更好而做的準備。當然最好的是自己建立一個元件庫,這樣做可使自己做的原理圖可讀性更好,可移植性也更好。另外要注意的是一定要有控制元件工作的電源(一般都是5v左右)。還有就是網絡標號一定要保證正確。總之一定要按部就班,不可跳步驟,這會對接下來的工作繁瑣度有很大的影響。(3)在做PCB板圖時,針對這個電路最好先自動布局看清大概,然后手工布局。要手工布線。這是因為電路元件較少,人工布局排線更好。單層布線最好先手工布線后自動布線。為保證后期制作電路板的質量,要注意焊孔的類型及尺寸。針對現有技術及考慮到發熱量等各方面,電線寬度最好要大于15mil。
(4)電路板的制作過程沒什么感想,就按步驟來就可以了。在焊接過程中一定要保證焊接質量,這對以后的調試有重大影響。同時焊接質量好壞對儀器的精度有一定的影響。在焊接過程中一定要注意管腳標號。注意不要焊得太久,以免燒壞元器件。
通過這次對單片機交通信號燈的設計與制作,使我了解了設計一個嵌入式產品的大概流程,在這次設計中讓我學到了不少東西。本系統是以單片機AT89S52芯片為核心部件,實現了能根據實際車流量通過AT89S52芯片設置紅、綠燈燃亮時間的功能。此次在軟件上是花費時間最多的,我們上網找資料,上圖書館,盡可能的了解有關于交通燈這方面的知識。通過這次計算機課程設計,使我得到了一次用理論知識、實踐技能和解決問題全面系統的鍛煉。使我在單片機的基本原理、單片機應用系統開發過程,以及在常用編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步。在實際接線中有著各種各樣的條件制約著,因此結果并不重要,我們要重視過程,我們懂得了過程,學到了方法就是我們最大的收獲。在設計時應考慮諸多因素與實際的差異,從諸多方法中選擇最優的就可以了。單片機課程設計與總結報告 摘要
近年來隨著科技的飛速發展,單片機的應用正在不斷地走向深入,同時帶動傳統控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。交通信號燈的出現,使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。本系統采用單片機AT89C51為中心器件來設計交通燈控制器,系統實用性強、操作簡單、擴展性強。目錄
一.設計任務??????????
二.交通燈的設計程序框圖??????
三.交通燈程序的主程序??????
四.系統硬件電路的設計????????
五.原理圖??????
六.檢測與調試???????????.七.總結與體會????????????.八.致謝????????????.一.設計任務
(一)、功能及技術指標要求 設計交通燈的基本要求:設計一個交通燈,要應用DVCC實驗系統。
(二)、設計內容
按設計技術指標進行交通燈的硬件和軟件設計。
(三)設計思路及關鍵技術
一個完整的交通燈相當于一個簡單的單片機系統,該系統有交通燈設置電路、單片機、顯示電路等構成。單片機是集成的IC芯片,只需根據實際設計要求選型。其他部分都需要根據應用要求和性能指標自行設計。
基于單片機的交通燈的設計時要充分的認識以下兩個問題:
1.因為本實驗是交通燈控制實驗,所以要先了解實際交通燈的變化規律。假設一個十字路口為東西南北走向。初始狀態0為東西紅燈,南北紅燈。然后轉狀態1南北綠燈通車,東西紅燈。過一段時間轉狀態2,南北綠燈閃幾次轉亮黃燈,延時幾秒,東西仍然紅燈。再轉狀態3,東西綠燈通車,南北紅燈。過一段時間轉狀態4,東西綠燈閃幾次轉亮黃燈,延時幾秒,南北仍然紅燈。最后循環至狀態1。
2.雙色LED是由一個紅色LED管芯和一個綠色LED管芯封裝在一起,公用負端。當紅色正端加高電平,綠色正端加低電平時,紅燈亮;紅色正端加低電平,綠色正端加高電平時,綠燈亮;兩端都加高電平時,黃燈亮。二.交通燈的設計程序框圖 開始 ↓
四個路口紅燈亮 ↓
東西綠燈亮,南北紅燈亮,延時 ↓
東西黃燈閃爍,南北紅燈亮,延時 ↓
東西紅燈亮,南北綠燈亮,延時 ↓
東西紅燈亮,南北黃燈閃爍,延時 ↓
三.交通燈程序的主程序 程序如下:
ORG 0000H
SJMP A3
;四盞紅燈亮 A3:MOV SP,#60H
MOV A, #24H
MOV P1, A
CLR P3.4
CLR P3.3
SETB P3.5
SETB P3.2
;顯示5秒
MOV R4,#05H LOOP1:MOV R2,#03H
LCALL xian
;調顯示子程序
DJNZ R4,LOOP1
MOV R4,#00H
MOV R2,#03H
LCALL xian
;東西綠燈亮,南北紅燈亮 A2:MOV A,#0CH
CLR P3.5
MOV P1,A
SETB P3.3 CLR P3.4
SETB P3.2
;顯示20秒
MOV R4,#14H
LOOP2 :MOV R2,#03H
LCALL xian
;調顯示子程序
DJNZ R4,LOOP2
MOV R4,#00H
MOV R2,#03H
LCALL xian
;調顯示子程序
SETB P3.2
CLR P3.3
;顯示5秒
MOV R4 ,#05H
;東西黃燈亮,南北紅燈亮 LOOP9:MOV A,#14H
MOV P1 ,A
CLR P3.5
SETB P3.4
MOV R2,#02H
LCALL xian
;調顯示子程序
MOV R2,#01H
;定時
LCALL DELAY
;調延時子程序
;南北紅燈亮
MOV A ,#04H
MOV P1 ,A
CLR P3.4
CLR P3.5
MOV R2,#01H
;定時
LCALL DELAY
;調延時子程序
DJNZ R4,LOOP9
MOV R4,#00H
MOV R2,#03H
LCALL xian
;調顯示子程序
;東西紅燈亮,南北綠燈亮 A8: MOV A, #61H
MOV P1,A
CLR P3.4
CLR P3.3
CLR P3.2
SETB P3.5
;顯示20秒
MOV R4,#14H
LOOP3: MOV R2,#03H
LCALL xian;調顯示子程序
DJNZ R4,LOOP3
MOV R4,#00H
MOV R2,#03H
LCALL xian;調顯示子程序
SETB P3.5
MOV R4 ,#05H LOOP10: MOV R2,#02H
LCALL xian;調顯示子程序
;東西紅燈亮,南北黃燈亮 A0:MOV A,#0A2H
MOV P1,A
CLR P3.4
CLR P3.3
CLR P3.2
MOV R2,#01H
;定時
LCALL DELAY;調延時子程序
;東西紅燈亮
MOV A,#20H
MOV P1,A
CLR P3.4
CLR P3.3
CLR P3.2
MOV R2,#01H
;定時
LCALL DELAY
;調延時子程序
DJNZ R4,LOOP10
MOV R4,#00H
MOV R2,#03H
LCALL xian
;調顯示子程序
LJMP A2
;延時子程序 DELAY:PUSH 2
PUSH 1
PUSH 0 DELAY1: MOV 1,#00H DELAY2:MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2
DJNZ 2,DELAY1
POP 0
POP 1
POP 2
DJNZ R2 ,DELAY
RET
;顯示子程序
xian: MOV A,R4
MOV B,#10
DIV AB
MOV R6,A
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH H55S:DJNZ R7,H55S
MOV A,R6
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH H55S1:DJNZ R7,H55S1
LCALL DELAY
RET
TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END 四.系統硬件電路的設計
(1)芯片由DVCC實驗系統提供(AT89C51)1.主要特性: ?與MCS-51 兼容
?4K字節可編程閃爍存儲器 壽命:1000寫/擦循環 數據保留時間:10年 ?全靜態工作:0Hz-24Hz ?三級程序存儲器鎖定 ?128*8位內部RAM ?32可編程I/O線
?兩個16位定時器/計數器 ?5個中斷源
?可編程串行通道
?低功耗的閑置和掉電模式 ?片內振蕩器和時鐘電路 2.管腳說明:
VCC:供電電壓。
GND:接地。
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳備選功能
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(記時器0外部輸入)
P3.5 T1(記時器1外部輸入)
P3.6 /WR(外部數據存儲器寫選通)
P3.7 /RD(外部數據存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。
RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。
/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
3.振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
4.芯片擦除:整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節被重復編程以前,該操作必須被執行。此外,AT89C51設有穩態邏輯,可以在低到零頻率的條件下靜態邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數器,串口和中斷系統仍在工作。在掉電模式下,保存RAM的內容并且凍結振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。
(2)完整的DVCC實驗箱面板
(3)硬件電路連接說明
五.原理圖
六.檢測與調試
1、硬件調試:
硬件調試是利用DVCC實驗與開發系統、基本測試儀器(萬用表、示波器等),檢查用戶系統硬件中存在的故障。
硬件調試可分為靜態調試與動態調試兩步進行。靜態調試是在用戶系統未工作時的一種硬件檢測。
第一步:目測。檢查外部的各種元件或者是電路是否有斷點。第二步用萬用表測試。先用萬用表復核目測中有疑問的連接點,再檢測各種電源線與地線之間是否有短路現象。
第三步加電檢測。給板加電,檢測所有插座或是器件的電源端是否符合要求的值 第四步是聯機檢查。因為只有用單片機開發系統才能完成對用戶系統的調試。
動態調試是在用戶系統工作的情況下發現和排除用戶系統硬件中存在的器件內部故障、器件連接邏輯錯誤等的一種硬件檢查。動態調試的一般方法是由近及遠、由分到合。由分到合是指首先按邏輯功能將用戶系統硬件電路分為若干塊,當調試電路時,與該元件無關的器件全部從用戶系統中去掉,這樣可以將故障范圍限定在某個局部的電路上。當各塊電路無故障后,將各電路逐塊加入系統中,在對各塊電路功能及各電路間可能存在的相互聯系進行調試。由分到合的調試既告完成。由近及遠是將信號流經的各器件按照距離單片機的邏輯距離進行由近及遠的分層,然后分層調試。調試時,仍采用去掉無關元件的方法,逐層調試下去,就會定位故障元件了。
2、軟件調試:
軟件調試是通過對程序的匯編、連接、執行來發現程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。七.總結與體會
本系統是以單片機AT89C51芯片為核心部件,實現了能根據實際車流量通過AT89C51芯片設置紅、綠燈燃亮時間的功能。此次在軟件上是花費時間最多的,我們上網找資料,上圖書館,盡可能的了解有關于交通燈這方面的知識。通過這次畢業設計,使我得到了一次用專業知識、專業技能分析和解決問題全面系統的鍛煉。使我在單片機的基本原理、單片機應用系統開發過程,以及在常用編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步。八.致謝
通過本次畢業設計,我在涂老師和王老師的精心指導和嚴格要求下,獲得了豐富的理論知識,極大地提高了實踐能力,單片機領域這對我今后進一步學習計算機方面的知識有極大的幫助。在此,忠心感謝涂老師和王老師以及許多同學的指導和支持
第二篇:交通信號燈控制系統
交通信號燈控制系統(紅綠燈系統)
1、概述
近年來,隨著經濟發展,營運車輛擁有量的增加使道路市場必須規范有序,交通安全管理必須上一新臺階。按照“高起點規劃,高標準建設,高效能管理”的思路,堅持把城市化作為城市經濟的一大戰略來抓,積極建設城區交通基礎設施工程,建立交通安全管理網絡。嚴格抓好交通管理,以加強交通隊伍建設和行業文明建設。
對****信號控制系統進行升級改造,在*****新建設一套信號控制系統
2、設計依據
? 《道路交通信號控制機》(GB25280-2010)? 《道路交通信號燈》(GB14887-2011)
? 《道路交通信號燈設置與安裝規范》(GB14886-2006)? 《道路交通信號倒計時顯示器》(GA/T508-2004)
? 《道路交通安全違法行為圖像取證技術規范》(GA/T832-2009)? 《交通信號機技術要求與測試方法》(GA/T47-93)? 《道路交通信號機標準》(GA47-2002)? 《道路交通信號燈安裝規范》(GB14866-94)
3、設計原則
本期工程按“國內領先、國際先進”的原則設計方案,提供完整、最新而成熟的產品,并保證各項技術和設備的先進性、實用性和擴展性。提高交通道路口的車輛通行速度,保證道路暢通。因此該系統是建設暢通工程中的重要措施之一。
信號控制系統的設置應充分結合本路段的工程自身特點,在達到適時、適量地提供交通信息,確保行車安全目的的同時,盡可能與道路的整體效果相結合。
1)設計思路
以有效地管理道路交通,達到安全、經濟、合理、美觀為目的,嚴格按照國家有關規定設置信號燈等交通設施。交通擁擠情況主要發生在車流人流相對集中的主要繁華城區路口和路段,根據現有主要交通干道路面寬度劃分車道,基本可以滿足城區車輛通行的需要。
2)預期實現目標
完善城區交通安全設施布局,規范行車和行人秩序,減少交通事故,一定程度上改善城市形象。
4、交通信號控制系統功能
(1)圖形與界面
系統界面中文化、圖形化、菜單化。命令操作方式靈活多樣,并對錯誤操作發出警告或禁止執行。
能多用戶、多窗口顯示,顯示窗口可縮放、移動。
具有圖形編輯工具,可以對圖形的區域背景、路口背景等進行用戶化編輯。背景地圖可按管理區域和路口進行縮放和漫游顯示。
能夠實時顯示路口設備、路口設備工作狀態及信號控制模式等信息。系統可動態、實時地顯示路口信號燈的運行狀況,并可對某一路口的信號燈變化進行實時顯示;還可以根據需要直接對信號機進行手動操作功能。
能夠用圖表顯示交通流量、占有率等統計分析數據。(2)用戶管理
系統能夠支持至少50個用戶的使用和管理,對用戶的名稱、密碼和訪問角色等相關內容進行設置。
能夠設立訪問角色,能夠定義相應的訪問權限,每個用戶可以對應多個角色。組管理:每個組可以有多個用戶,所有用戶不能重名,不同的組可以管理不同的路口設備。
記錄用戶登錄和退出系統的時間及用戶使用過的操作命令,顯示用戶是否在線。
禁止多用戶對同一對象同時進行控制操作,并給出提示信息。(3)日志管理
操作員記錄:操作員登錄/退出時間、部分重要操作命令記錄。記錄保存時間:系統至少保留最近12個月的綜合日志記錄。記錄查詢:可根據日期范圍、時間范圍、用戶等各種限定,方便快捷地查詢各類日志記錄。(4)系統數據庫
總體要求:支持Oracle數據庫,具有系統參數設置、交通數據存儲、數據管理功能。
參數設置:每個數據項均附有數據定義和有效值范圍的在線說明;系統自動檢測所有數據項輸入數據的合理性,提示并拒絕不合理及非法的數據輸入;易于數據修改和更新。
交通數據存儲:能夠對采集的交通實時數據和歷史數據進行儲存和管理,保證數據的快速存取、編輯和刪除。
數據庫管理:
禁止未授權使用者進入數據庫操作界面。
多用戶同時對不同數據對象的修改、刪除無沖突,禁止同時修改同一數據對象并有沖突報警顯示。
詳細記錄數據修改人員、修改內容和時間。支持多用戶數據庫查詢、訪問。(5)數據采集存儲
中心計算機從現場設備實時(秒級)采集以下交通數據: 路口到達方向分流向(左、直、右)的車流量 路口到達方向分流向(左、直、右)的車輛占有率 路口到達方向分流向(左、直、右)的放行時間 路口到達方向分流向(左、直、右)的斷流次數 路口到達方向分流向(左、直、右)的最大斷流間隔 以上數據保存15日。
流量、占有率的實時統計數據隨時向交通信號控制系統管理平臺開放性提供。(6)數據統計分析
中心計算機對采集的交通數據進行各種統計分析,形成設定時間、區域范圍的交通統計分析報告,內容包括:路口的交通流量、路口交通占有率; 中心計算機對采集的交通數據進行統計處理,分別形成15分鐘和1小時時間段的交通統計數據,并按15分鐘數據保存半年、1小時數據保存一年進行存儲,并隨時向交通信號控制系統管理平臺開放性提供。(7)系統狀態監視
中心計算機能夠實時監視:
系統中心設備、傳輸設備及路口設備工作狀態
路口信號控制模式、控制方案、信號狀態等交通控制狀態
交通信號狀態信息在信號燈色變化時向交通信號控制系統管理平臺實時開放性傳送。(8)系統故障報警
中心計算機監視以下各類故障: 系統中心軟/硬件故障 傳輸單元故障
信號控制器、車輛檢測器等路口設備故障
上述故障均有詳細的分類故障代碼;故障發生時通過異常信息顯示進行報警并生成故障記錄;故障消除后或操作員確認后取消報警。(9)時鐘校準功能
中心計算機具有如下時鐘校準功能:
接受交通信號控制系統管理平臺的時鐘校準。
對路口信號控制器進行自動時鐘校準,校時命令每天執行1次,校時時間可設置。
時鐘格式為:年、月、周、日、時、分、秒,校時誤差小于1秒。(10)時間表功能
系統具有時間表控制功能
設置時間包括年、月、周、日、時、分、秒。日時段劃分不得低于16個,方案數不得少于32個。設置內容應包括事件、控制模式、控制方案等。
系統可分別設置工作日、周末、節日或特別指定日的時間表,系統根據日期自動改變執行時間表。(11)系統優化
根據路口檢測的交通流信息自動進行交通控制參數的優化并執行優化配時方案,提高路口通行能力。(12)動態方案選擇控制
根據實時交通流檢測信息,從預設方案庫中調用適宜方案。(13)線協調控制
按照系統時間表設置進行線協調控制。(14)感應式控制
系統能夠響應沖突方向的車輛感應請求,進行半感應或全感應控制。(15)行人控制
路口行人過街控制應具有請求式控制方式和預案式控制方式。
系統能夠在線協調或區域協調控制的條件下及時響應或等待響應路段行人過街請求,使行人利用交通流間隙過街通行。(16)緊急車輛優先控制
系統能夠按預定時間和預定路線進行綠波信號推進,以滿足各種重大活動、重大事件及特殊警務的通行需求。
系統對路口信號機強行控制,指定某一階段放行、黃閃或者全紅。能響應特殊情況下的警務、消防、救護、搶險等特種車輛的緊急請求,使車輛迅速通過沿線路口。
(17)方案模擬演示
設置好的配時方案,模擬演示路口信號燈的變化情況,查看運行效果以便于分析配時方案中存在的潛在影響。(18)強制控制
允許系統中心操作員直接控制系統內設置的相位組信號。(19)上下載功能
中心計算機能選擇性地上載和動態存儲路口信號控制器的基本配置、時間表以及各種控制方案。
中心計算機能選擇性地下載基本配置、系統時間表和各種控制方案給路口信號控制器。
5、交通信號控制機
信號機
信號機符合行標《GA47-2002道路交通信號控制機》的標準、國標《GB-25280-2010集中協調式信號機》的標準,并兼容國標GB-T20999的通訊協議。本信號機采用多智能節點分布式架構,各節點以32位微處理器作為控制核心,通過CAN總線進行內部通訊。32路環型線圈車輛檢測或視頻車輛檢測器(可選)本信號機具有獨立硬黃閃功能,可以在不關燈的情況下進行現場維護,給現場維護帶來方便。支持無線遙控、點動等現場人工控制功能;持GPS模塊對本地進行校時;支持多達32組的獨立燈組通道輸出;支持視頻和線圈車流輛檢測;具有單燈組輸出回路檢測功能,對紅綠沖突等各種嚴重故障有著完善的降級處理。本機有著多種人機交互接口,通過本地信號機內的液晶模塊、設置終端、指揮中心都可以實現完整的方案設置和信號機運行狀態監測。對于各用戶的不同控燈需求,方案設置方便、靈活、易于操作。軟件系統設計中,有著完善的事務管理機制并能對信號機發生事件、故障等信息進行存儲及顯示。信號機內具有加熱和排風的裝置,可根據外界的溫度不同自動加熱或排風,以適應外界環境溫度變化。
信號機具有無纜線控、單點優化、感應控制等功能;在智能交通指揮中心控制系統中可實現線控、區域協調控制、系統優化控制等功能;
1、具備32位微處理器
2、可編程的32相位控制,96路可控硅輸出(可選)
3、相位沖突監視和控制,信號燈故障檢測及報警
4、掉電時采集數據和配時參數不丟失
5、具有手動、自動、遠程控制方式
6、具有強制、黃閃、四面紅功能
7、具有本地遙控功能
8、具有固定方式、多時段控制方式、多方案選擇控制方式、感應控制方式等多種控制方式
9、在線修改配時參數,在線顯示各相位狀態、故障狀態
10、時段劃分多達48個時段,可存儲32種控制方案
11、提供4個RS232接口、一個RS485接口,一個以太網接口,可實現電話線、專線、光纖、無線多種通訊
12、適合于單路口控制、主干道控制、區域控制。出現故障自動降級使用
13、時鐘、日歷顯示和修改,支持GPS授時功能
14、自動排風、加熱功能
15、具有防雷、漏電保護功能
16、提供8路行人過街輸入接口 主要特點
1、全中文手動操作界面
2、交通信息存儲功能
3、獨有的路口協調小面控功能
4、基于車頭時距的感應控制功能
5、信號相位與信號燈組的自由編程
6、沖突相位硬件和軟件雙重監視
7、信號燈故障檢測和報警
8、掉電數據不丟失,保存5年以上
9、輸入和輸出信號全部光電隔離
10、車輛數據檢測準確率高
11、具有多相位的強制遙控
12、提供以太網接口和多個串口,便于網絡化
13、提供二次開發的透明接口,便于多系統的集成
14、模塊化設計,便于維護
15、指揮中心軟件可實現信號機的遠程控制
16、本地單點路口或區域的自適應協調控制
17、實時檢測交通流量數據;并將采集到的實時交通流量數據進行分析、處理,傳送至本地、區域或中央控制系統 主要技術指標
1)控制最大相位:32個;控制最多信號燈組:32組;車輛檢測最大路數:32路;
2)機柜外殼采用鋁合金材料或不銹鋼材料;遙控相位:8個;
3)遙控器:每臺信號機配2臺遙控器,8個相位選擇鍵,1個黃閃鍵、1個全紅鍵、4)1個全滅鍵、1個取消鍵,遙控距離大于50米,遙控器應以燈光、聲響或振動方式提示操作人員,交通信號控制機是否成功接收并執行指令。5)為保證信號機用電安全,信號機機柜和驅動線路應采用漏電保護電路裝置。
6)信號機的機柜外側面應設有手動控制門,在僅打開手動控制門的情況下可以實現
7)單點控制、黃閃控制、指定相位控制、關閉信號燈、關閉倒計時器、關閉遙控功能等操作。
智能交通信號控制機屬協調式戶外網絡型的交通信號控制機,適合于單路口多時段定時控制、多方案選擇控制、全(半)感應控制,適合于多路口無纜協調、有纜協調的綠波帶控制,適合于指揮中心的遠程控制、區域控制。在感應控制、多方案選擇以及時制計劃生成方面均有自己的控制算法。智能交通信號控制機具有技術先進、使用方便、功能齊全、模塊化設計、維護簡單,控制軟件接口透明,便于二次開發。采用自主開發的機動車輛線圈檢測器、自有專利技術的單元式檢測型負載開關,整機性能價格比高。智能交通信號控制機具有多時段定時控制、多方案選擇控制、感應控制、主干道無纜協調控制、集中協調控制等功能。將多個智能交通信號控制機通過調制解調器連成交通控制網,對城市多路口、多條干線進行控制,其基本架構如下:
通過以太網通訊接口,與指揮中心控制系統聯成網絡、接收指揮中心的遠程控制、有纜線控、區域控制,并實現交通流量的自動采集。
6、機動車信號燈
發光單元透光面直徑為400mm,紅黃綠豎向組燈,光源采用超高亮發光二極管。紅滿屏+黃滿屏內含雙色數顯+綠滿屏,符合2011新國標;倒15秒顯示,通訊式(通訊協議為行業標準)信號燈取電,豎裝;
7、方向指示信號燈
發光單元透光面直徑為400mm,紅黃綠豎向組燈,光源采用超高亮發光二極管;紅箭頭+黃箭頭內含雙色數顯+紅箭屏,符合2011新國標;倒15秒顯示,通訊式(通訊協議為行業標準)信號燈取電,豎裝;
8、人行橫道信號燈
發光單元透光面直徑為300mm,光源采用超高亮發光二極管;紅、綠二色行人圖案單屏顯示,紅、綠二色數顯同屏顯示(綠色行人靜態/非機動車)七字形連接片,2011新國標;倒15秒顯示,通訊式(通訊協議為行業標準)信號燈取電;
第三篇:交通信號燈控制系統
交通信號控制系統
1.設計任務
設計一個十字路口交通控制系統,要求:(1)東西(用A表示)、南北(用B表示)方向均有綠燈、黃燈、紅燈指示,其持續時間分別是30秒、3秒和30秒,交通燈運行的切換示意圖如圖1-1所示。
(2)系統設有時鐘,以倒計時方式顯示每一路允許通行的時間。
(3)
當東西或南北兩路中任意一路出現特殊情況時,系統可由交警手動控制立即進入特殊運行狀態,即紅燈全亮,時鐘停止記時,東西、南北兩路所有車輛停止通行;當特殊運行狀態結束后,系統恢復工作,繼續正常運行。
2.總體框圖
本系統主要由分頻計、計數器和控制器等電路組成,總體框圖如1-2所示。分頻計將晶振送來的信號變為1Hz時鐘信號;當緊急制動信號無效時,選擇開關將1Hz脈沖信號送至計數器進行倒計時計數,并使控制器同步控制兩路紅、黃、綠指示燈時序切換;當緊急制動信號有效時,選擇開關將緊急制動信號送至計數器使其停止計數,同時控制器控制兩路紅燈全亮,所有車輛停止運行。
2-1 交通燈總體結構框圖 模塊設計
(1)分頻器
設晶振產生的信號為2MHz,要求輸出1Hz時鐘信號,則分頻系數為2M,需要21位計數器。用VHDL設計的2M分頻器文本文件如下:
LIBRARY
IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin2m IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
--時鐘輸入
clk_out:out STD_LOGIC);END ENTITY fenpin2m;
ARCHITECTURE one OF fenpin2m IS signal count:integer range 0 to 1999999;
BEGIN
PROCESS(clk)
BEGIN
if reset='1' then
count<=0;
clk_out<='0';
else
if clk'EVENT and clk='1'THEN
IF count<999999 THEN
count<=count+1;
clk_out<='0';
ELSif count<1999999 then
count<=count+1;
clk_out<='1';
else
count<=0;
END IF;
END IF;
END IF;
END PROCESS;END one;
(2)模30倒計時計數器 采用原理圖輸入法,用兩片74168實現。74168為十進制可逆計數器,當U/DN=0時實現9~0減法計數,記到0時TCN=0;當U/DN=1時實現0~9加法計數,計到9時TCN=0;ENTN+ENPN=0時執行計數,否則計數器保持。該電路執行減法計數,當兩片計數器計到0時同步置數,因此該計數器的計數范圍是29~0,當系統檢測到緊急制動信號有效時,CP=0計數器停止計數。
圖3-1 模30減法計數器電路圖
圖3-2 模30減法計數器仿真波形
(3)顯示譯碼器
顯示譯碼器為動態顯示,用VHDL文本輸入法設計的七子段譯碼器如下:
圖3-3 顯示譯碼器的仿真波形
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
--調用庫文件
ENTITY xianshi IS
--實體開始
PORT(CLK:IN STD_LOGIC;
datain1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
datain2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
--掃描時鐘信號
SEL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);--數碼管選擇信號
q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));--數碼管八端輸入 end xianshi;
--實體結束 ARCHITECTURE one OF xianshi IS
--結構體開始 begin
PROCESS(CLK)
--進程開始 VARIABLE TMP:STD_LOGIC_vector(1 downto 0);VARIABLE d:STD_LOGIC_VECTOR(3 DOWNTO 0);--中間變量
begin
IF(CLK'EVENT AND CLK='1')THEN
--時鐘上升沿有效
IF(TMP=“00”)THEN
TMP:=“01”;
d:=datain2;
CASE d IS
WHEN“0000”=>q<=“00111111”;
--0
WHEN“0001”=>q<=“00000110”;
--1
WHEN“0010”=>q<=“01011011”;
--2
WHEN“0011”=>q<=“01001111”;
--3 WHEN“0100”=>q<=“01100110”;
--4 WHEN“0101”=>q<=“01101101”;
--5 WHEN“0110”=>q<=“01111101”;
--6
WHEN“0111”=>q<=“00000111”;
--7
WHEN“1000”=>q<=“01111111”;
--8
WHEN“1001”=>q<=“01100111”;
--9
WHEN OTHERS=>q<=“00000000”;--數碼管不顯示
END CASE;
elsif(tmp=“01”)then
TMP:=“00”;
--如果tmp為“001”即第2個數碼管顯示b輸入
d:=datain1;
CASE d IS
WHEN“0000”=>q<=“00111111”;
--0
WHEN“0001”=>q<=“00000110”;
--1
WHEN“0010”=>q<=“01011011”;
--2
WHEN“0011”=>q<=“01001111”;
--3
WHEN“0100”=>q<=“01100110”;
--4
WHEN“0101”=>q<=“01101101”;
--5
WHEN“0110”=>q<=“01111101”;
--6
WHEN“0111”=>q<=“00000111”;
--7
WHEN“1000”=>q<=“01111111”;
--8
WHEN“1001”=>q<=“01100111”;
--9
WHEN OTHERS=>q<=“00000000”;--數碼管不顯示
END CASE;
end if;
end if;sel<=tmp;
--把tmp的值賦予sel
end process;
--進程結束
end one;
(4)控制器
該模塊輸入為1Hz時鐘,和緊急制動信號PE,輸出為兩路紅、黃、綠指示燈,當緊急制動信號無效(PE=1)時,兩路紅、黃、綠燈時序切換。當緊急制動信號有效時,選項開關將緊急制動信號送至計數器使其停止計數,同時使控制器控制兩路紅燈全亮,所有車輛停止通行。用VHDL文本輸入法設計的控制器如下;
圖3-4控制器的仿真波形
LIBRARY
IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY contr IS
PORT(cp1:IN STD_LOGIC;
pe:IN STD_LOGIC;
chan:IN STD_LOGIC;
ra,ga,ya,rb,gb,yb:out STD_LOGIC);END ENTITY contr;ARCHITECTURE one OF contr IS signal count:integer range 0 to 59;
BEGIN
process(cp1)
begin
if pe='0'then
count<=0;
else
IF(cp1'EVENT AND cp1='1')THEN
if count<59 then
count<=count+1;
else
count<=0;
end if;
end if;end if;END PROCESS;PROCESS BEGIN
if pe='1'then
if chan='1' then
if count<30 then
rb<='0';
gb<='1';
yb<='1';
ra<='1';
if count<27 then
ga<='0';
ya<='1';
else
ga<='1';
ya<='0';
end if;
else
rb<='1';
ga<='1';
ya<='1';
ra<='0';
if count<57 then
gb<='0';
yb<='1';
else
gb<='1';
yb<='0';
end if;
end if;
else
if count<30 then
rb<='1';
ga<='1';
ya<='1';
ra<='0';
if count<27 then
gb<='0';
yb<='1';
else
gb<='1';
yb<='0';
end if;
else
rb<='0';
gb<='1';
yb<='1';
ra<='1';
if count<57 then
ga<='0';
ya<='1';
else
ga<='1';
ya<='0';
end if;
end if;
end if;
else
rb<='0';
ra<='0';
gb<='0';
yb<='0';
ga<='0';
ya<='0';
end if;end process;end one;交通燈原理圖
圖4-1 交通燈原理圖
第四篇:交通信號燈控制系統
山西大學工程學院 第I頁
摘要
隨著中國城鎮化速度的較快,交通事故也日趨發生,所以合理的交通控制方法能有效的緩解交通擁擠、減少尾氣排放及能源消耗、縮短出行延時,改善我國獨有的交通問題。而平面交叉口是城市交通的關鍵,它是整個城市道路的瓶頸地帶,對其進行交通信號控制方法的研究具有重大意義,所以交通信號燈是維護城市交通的主要設施。
我們本次復雜的十字路口交通燈控制系統設計主要是利用AT89C51制作并仿真.并且在單片機的選擇上,考慮到電路的簡單和成本的削減,我們選擇性價比最好的AT89C51,而且能夠使程序簡單。可以添加恰當的傳感器,實時監控道路情況,對各種情況的處理實行緊急情況優先級最高,其次行人優先通過,最后車流量高的方向,給予更多的通過時間,采用中斷的方法,由中斷根據各種不同的情況選擇合適的處理程序處理。通過單片機控制交通燈不僅能提高我們理論聯系實際的能力,而且能夠熟練掌握C語言的編程方法,掌握定時/計數器、外部中斷的使用方法和簡單程序的編寫,最終提高邏輯抽象能力和動手能力。
關鍵字:AT89C51
中斷
交通信號控制
山西大學工程學院 第II頁
目錄1 社會需求.........................................錯誤!未定義書簽。2 設計目的.........................................錯誤!未定義書簽。3 設計思路及框圖....................................................1 3.1 交通燈設計..................................................1 3.2 交通燈定時控制..............................................2 3.3 傳感器智能控制..............................................4 4 硬件電路設計......................................................4 4.1 單片機電源電路..............................................4 4.2 單片機復位電路..............................................4 4.3 交通LED燈外圍驅動電路......................................5 4.4 按鍵控制電路................................................6 4.5 單片機主電路................................................7 4.6 整體電路圖設計..............................................8 5 軟件設計..........................................................9 5.1 系統程序流程圖設計..........................................9 5.2 系統程序設計...............................................10 5.3 仿真顯示結果...............................................17 總 結.............................................................17 參考文獻...........................................................18
山西大學工程學院 第1頁
1社會需求
目前在世界范圍內,一個以微電子技術、計算機和通信技術為先導的,以信息技術和信息產業為中心的信息革命方興未艾。為使我國盡快實現經濟信息化,趕上發 達國家水平,必須加速發展我國的信息技術和信息產業。而計算機技術怎樣與實際應用更有效的結合并有效的發揮其作用是科學界最熱門的話題,也是當今計算機應 用中空前活躍的領域。本文主要從單片機的應用上來實現十字路口交通燈的管理,用以控制過往車輛的正常運作。設計目的
本設計首先從定時控制著手,解決交叉口交通控制過程中存在的問題,但是定時控制信號周期固定,不能根據實際的交通流狀況隨時調整信號控制參數,因此造成很多不必要的時間等待和資源浪費。對左轉車輛較少的單交叉口一般采用有固定左轉相位的定時控制方法,此信號控制中的左轉車輛通行對直行車輛影響很大。行人過街信號與上游交叉口的不協調導致車輛通過上游交叉口后遇到行人過街而再次停車。基于上述交叉口信號控制存在的問題,本設計進行了如下研究:①介紹了常用定時信號控制算法和感應信號控制的基本工作原理,分析了傳統定時控制的優越性和局限性。②設計了一種自動信號控制方法,這種方法能使交叉口根據實際交通情況選擇合理的定時信號配時方案,不過這個需要配備額外的感應器。
本設計將要完成紅燈停,綠燈行,黃燈停3S的操作,并且如當一道有車而另一道無車是,交通燈控制系統能立即讓有車的車道放行,單人行道上人數較多時,智能轉換交通燈狀態,行人優先通過,當有緊急車輛(如110、112、119等急救車)要求通過時,此系統應能禁止普通車輛通行,路口的信號燈全部變紅,以便讓緊急車輛通過。假定緊急車輛通過時間為2s,緊急車輛通過后,交通燈恢復先前狀態。
3設計思路及框圖 3.1交通燈設計
首先了解實際交通燈的變化情況和規律。設有一個南北(SN)向和東西(WE)向的十字路口,兩方向各有兩組相同交通控制信號燈,每組各有四盞信號燈,分別為直行信號燈(S)、左拐信號燈(L)、紅燈(R)和黃燈(Y),交通控制信號
山西大學工程學院 第2頁
燈布置如圖1所示。
根據交通流量不同,交通信號燈的控制可實現手動、自動兩種控制。平時使用自動控制,高峰區可使用傳感器智能化控制。智能控制時,傳感器通過檢測道路交通情況對交通信號燈進行實時控制;自動控制時,交通信號燈控制規律用圖2狀態轉換圖來描述。
圖1
紅綠燈顯示系統框圖
3.2交通燈定時控制
圖2
紅綠燈系統控制流程圖
山西大學工程學院 第3頁
定時控制系統控制流程圖如上圖2,初始狀態0為SN直行WE紅燈,然后轉狀態1為SN黃燈WE紅燈。過一段時間后,轉狀態2為SN左拐WE紅燈。再轉狀態3,SN黃燈WE紅燈。過一段時間后轉狀態4,SN紅燈WE直行。然后狀態4,SN紅燈WE直行。狀態5為SN紅燈WE黃燈。狀態6為SN紅燈WE左拐。狀態7為SN紅燈WE黃燈。又循環至狀態0,重復循環上述狀態。
3.3傳感器智能控制
圖3 磁檢測器方框圖
交通燈在采用智能化控制時,采用磁感應車輛檢測器.這種環形線圈檢測器是傳統的交通檢測器,是目前世界上用量最大的一種檢測設備。這些埋設在道路表面下的線圈可以檢測到車輛通過時的電磁變化進而精確地算出交通流量。交通流量是交通統計和交通規劃的基本數據,通過這些檢測結果可以用來計算占用率(表征交通密度),在使用雙線圈模式時還可以提供速度、車輛行駛方向、車型分類等數據,這些數據對于交通管理和統計是極為重要的,可通過分析這些數據,然后通過外部中斷動態控制交通燈的狀態,實現道路交通燈的智能化控制,讓交通燈根據實際情況轉換狀態。原理框圖如上圖圖3所示。
對于交通信號燈來說,應該有東西南北共四組燈,但由于同一道上的兩組的信號燈的顯示情況是相同的,所以可以用一個I/O控制相同的兩燈,因此,采用單片機內部的I/O口上的P0口中的8個引腳即可來控制16個信號燈。通過編寫程序,實現對發光二極管的控制,來模擬交通信號燈的管理。每延時一段時間,燈的顯示情況都會按交通燈的顯示規律進行狀態轉換。通過定時器精確延時送顯,在原有的交通信號燈系統的基礎上,增添其倒計時間的顯示功能,實現其功能的擴展。通過添加感應器檢測車流量、人行道情況通過外部中斷動態調節人、山西大學工程學院 第4頁
車流量,使交通更加智能,提高道路運行速率。硬件電路設計 4.1單片機電源電路
圖4 電源電路
如上圖圖4所示是電源電路,這里開關用的雙路開關,雙路開關并聯能更好的確保給后級提供更大電流。電容C4、C5,都是隔離斷開直流的,在這里添加了一個發光二極管指示燈,在我們打開開關的時候,這個二極管會亮,下面的R12為限流電阻,給發光二極管提供合適的電流。
4.2 單片機復位電路
單片機的復位操作有上電自動復位和手動按鍵復位兩種方式。本次設計采用手動按鍵復位設計,如下圖5所示。
圖5 按鍵復位電路
當這個電路處于穩態時,電容起到隔離直流的作用,隔離了+5V,而左側的
山西大學工程學院 第5頁
復位按鍵是彈起狀態,下邊部分電路就沒有電壓差的產生,所以按鍵和電容 C1 以下部分的電位都是和GND 相等的。按鍵復位有 2 個過程,按下按鍵之前,RST 的電壓是 0V,當按下按鍵后電路導通,同時電容也會在瞬間進行放電,會處于高電平復位狀態。當松開按鍵后,先是電容充電,然后電流逐漸減小直到 RST 電壓變 0V 的過程。按下按鍵的瞬間,電容兩端的 5V 電壓會被直接接通,此刻會有一個瞬間的大電流沖擊,會在局部范圍內產生電磁干擾,為了抑制這個大電流所引起的干擾,在電容放電回路中串入一個 18 歐的電阻來限流。
4.3 交通LED燈及外圍驅動電路
圖6交通LED燈電路
將NS道上的兩個同色燈連在一起,WS道上的同色燈也彼此相連(此處用發光二極管模擬實際的交通燈,各發光二極管的陽極通過保護電阻接到+5v的電源上,發光二極管的陰極接到單片機的P0口)用AT89C51單片機的P0.0—P0.7共8根輸出線控制各色交通燈的點亮與熄滅;為了更加直觀的顯示紅綠燈的情況,用了共陽極數碼管顯示倒計時,數碼管顯示有動態掃描和靜態顯示,由于靜態顯示需要占用過多的IO口,這里用動態掃描,用P1控制數碼管的斷選信號端,P2.6、P2.7控制數碼管的位選信號端,可以顯示出每個燈的倒計時。緊急車輛通過時,采用外部觸發按鍵實時中斷方式進行處理。根據該系統的功能要求及所用元器件,設計硬件電路,電路原理圖如圖6所示。
由于單片機的輸出電流有限,需要用到芯片驅動LED,使LED可以正常使用,這里使用74LS245,74LS245是一個雙向緩沖器,引腳AB是方向引腳,這
山西大學工程學院 第6頁
個引腳為高電平的時候,右側所有的電壓都等于左側對應編號的電壓,所以這里AB引腳接的+5V電源,即高電平。圖中還有排阻RP1做為上拉電阻。引腳OE為輸出使能端,低電平有效。在74LS245輸出端有R3~R10的限流電阻,給LED燈提供恰當的電流。
在LED的陽極接有PNP三極管,可以通過單片的P2.5控制所有的LED的通斷,只有P2.5端電平為高時LED才能正常工作,通過單片機的P0口控制LED的狀態。數碼管的顯示也需要大電流,這里外接上拉電阻可以提供足夠的電流,原理圖中用了排阻RP2,可以使數碼管正常工作。交通LED燈驅動電路如圖7所示。
圖7 交通LED燈驅動電路
4.4 按鍵控制電路
圖8 按鍵控制LED電路圖
山西大學工程學院 第7頁
智能化控制中使用到傳感器,傳感器采集到的數據通過系統分析,然后反饋到單片機外部中斷,通過中斷程序選擇合適的處理程序。
整個交通燈控制系統通過按鍵模擬控制LED的狀態,SW1控制LED是定時循環還是智能控制,SW2控制LED燈是順序切換狀態還是手動選擇LED狀態。SW1按下觸發外部中斷0進去中斷程序,在中斷程序中可以通過查詢方式判斷P3.7是否按下,如果檢測到P3.7為低電平則SW2按鍵按下,系統進入只能控制LED狀態模式,單片機通過檢測P2.0~P2.3的電平狀況確定LED燈要顯示的狀態,例如:若單片機檢測到端口P2.0電平為低,則要求交通燈要WE方向左拐,系統調用左拐子程序,使單片機控制LED燈先NS黃燈閃3下,然后NS紅燈亮,WE左拐指示燈變綠。如果系統監測到P3.7為高電平則SW2彈起,系統進入只能順序切換模式,單片機檢測P2.4的電平情況,檢測到一次說明按鍵按下一次,交通的按照定時方式的順序變換狀態,使交通燈穩定順次執行。
如果遇到十字路口發生交通事故,可以觸發緊急逼停按鍵,這樣四個方向都為紅綠燈,等突發情況處理完畢后,然后根據實際情況選擇合適的處理程序。這樣可以根據實際的車、人流量動態調節交通燈,智能解決各種突發情況,按鍵控制電路如圖8所示。
按鍵消抖有兩種方式:硬件消抖和軟件消抖,硬件消抖需要引進RS觸發器或者單穩態電路,這需要額外的硬件開支,而軟件消抖只需要用延時函數就可以完成,因此這里選擇軟件消抖。
4.5 單片機主電路
采用這款芯片及克服了采用8031需要添加外部外部程序存儲器導致電路復雜的缺點,又克服了采用8751導致電路制作成本高的缺點,AT89C51單片機芯片具有以下特性:
1)指令集合芯片引腳與Intel公司的8051兼容; 2)4KB片內在系統可編程FLASH程序存儲器; 3)時鐘頻率為0~33MHZ;
4)128字節片內隨機讀寫存儲器(RAM); 5)6個中斷源,2級優先級; 6)2個16位定時/記數器;
山西大學工程學院 第8頁
圖9 單片機引腳結構圖
4.6 整體電路圖設計
圖10 AT89C21單片機交通燈控制電路
本次設計采用AT89C51單片機,其中P0.0—P0.8共8根輸出線控制各色交通燈的點亮與熄滅,通過外部中斷0控制交通燈的切換方式,端口P3.7控制在
山西大學工程學院 第9頁
智能模式下是順次轉換狀態還是動態選擇,在順序轉換模式下P2.4控制交通燈的狀態轉換。在動態模式下,根據傳感器分析數據結果,通過P2.0~P2.3控制交通的的各種狀態。P1和P2.7、P2.6控制數碼管的顯示,可以直觀的看到交通燈的狀態。在傳感器檢測某一方向車流量過多,或者人行道上滯留行人過多,或有緊急車輛通過時,采用外部觸發中斷實時中斷方式進行處理,這時可按下SW1、SW2兩按鍵,然后智能選擇交通燈的狀態,選擇合適的交通燈,讓滯留過多的方向通過時間長點,讓道路更加通暢。上圖10為整個交通燈控制系統的整體電路圖。軟件設計
5.1 系統程序流程圖設計
開始各變量、端口初始化主程序顯示子程序N中斷信號Y中斷子程序
圖11 交通控制系統程序流程圖
根據硬件電路原理圖,并按系統的功能畫出程序流程圖。由于此系統較為簡單,故采用自上而下的設計方法,進行程序設計;對傳感器分析的數據處理,采用中斷的方法,由中斷選擇合適的處理程序處理,在傳感器不工作的時候,可以返回主程序執行。程序流程如下圖11所示。
設計中斷處理程序時,最主要的地方是如何保護進入中斷前的狀態(信號燈、P
山西大學工程學院 第10頁
口、單片機寄存器的狀態),使得中斷程序執行完畢后能問到交通燈中斷前的狀態。除了保護累加器ACC、標志寄存器PSW外,還要注意主程序中的延時程序和中斷處理程序中的延時程序不能混用。
5.2 系統程序設計
如下所示為整個系統控制程序:
#include
//延時計數
//按鍵次數計數
//數碼管顯示數值
//定時1秒計數
unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7f};//共陽極數碼管顯示編碼
unsigned char disdata[4];sbit NSL=P0^0;sbit NSS=P0^1;
//NS左拐指示燈 //NS直行指示燈 //NS紅燈指示燈 //NS黃燈指示燈 //WE黃燈指示燈 //WE紅燈指示燈 //WE直行指示燈 //WE左拐指示燈 //控制所有LED的滅 //數碼管位選端 //數碼管位選端 sbit NSR=P0^2;sbit NSY=P0^3;sbit WEY=P0^4;sbit WER=P0^5;sbit WES=P0^6;sbit WEL=P0^7;sbit P2_5=P2^5;sbit P2_6=P2^6;sbit P2_7=P2^7;sbit Key_1=P2^4;sbit Key_2=P2^3;sbit Key_3=P2^2;sbit Key_4=P2^1;sbit Key_5=P2^0;sbit Key_6=P3^7;
//手動切換LED燈狀態
//選擇NS直行
//選擇WE直行
//選擇NS左拐
//選擇WE左拐
//選擇順序、隨機切換
sbit Key_7=P3^6;
//突發情況,四個方向全部紅燈 void Time0_Int()
{
//定時器0初始化
TMOD=0x01;TR0=1;EA=1;
山西大學工程學院 第11頁
} ET0=1;IT0 = 0;EX0 = 1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;
//延時 m 毫秒 void Delay(unsigned int m){
} void NS_stra(){
} void NS_turn(){
} void NS_stop(){
} void WE_stra(){
} void WE_turn(){
} void WE_stop(){
unsigned int i,j;for(i=m;i>0;i--)for(j=110;j>0;j--);
//NS直行,WE紅燈
NSL=1;NSS=0;NSR=1;NSY=1;WEL=1;WES=1;WER=0;WEY=1;
//NS左拐,WE紅燈
NSL=0;NSS=1;NSR=1;NSY=1;WEL=1;WES=1;WER=0;WEY=1;
//NS黃燈,WE紅燈
NSL=1;NSS=1;NSR=1;NSY=0;WEL=1;WES=1;WER=0;WEY=1;
//WE直行,NS紅燈
NSL=1;NSS=1;NSR=0;NSY=1;WEL=1;WES=0;WER=1;WEY=1;
//WE左拐,NS紅燈
NSL=1;NSS=1;NSR=0;NSY=1;WEL=0;WES=1;WER=1;WEY=1;
//WE黃燈,NS紅燈
山西大學工程學院 第12頁
NSL=1;NSS=1;NSR=0;NSY=1;WEL=1;WES=1;WER=1;WEY=0;} void Opera_NS_stra()
{ if(Key_2==0){
Delay(10);
if(Key_2==0)
{
WE_stop();
Delay(3000);
NS_stra();
}
while(Key_2==0);} } void Opera_WE_stra()
{ if(Key_3==0){
Delay(10);
if(Key_3==0)
{
NS_stop();
Delay(3000);
WE_stra();
}
while(Key_3==0);} } void Opera_NS_turn()
{ if(Key_4==0){
Delay(10);
if(Key_4==0){
//手動選擇NS直行
//手動選擇WE直行
//手動選擇NS左拐
山西大學工程學院 第13頁
}
}
} WE_stop();Delay(3000);NS_turn();while(Key_4==0);void Opera_WE_turn(){
}
void Opera_Red(){
}
void Choose(){
//手動選擇WE左拐
if(Key_5==0){
}
//手動選擇WE左拐 Delay(10);if(Key_5==0){
}
while(Key_5==0);NS_stop();Delay(3000);WE_turn();if(Key_7==0){
} Delay(10);if(Key_7==0){
}
while(Key_7==0);NSY=0;WEY=0;Delay(3000);WER=0;NSR=0;
//數碼管顯示初值判斷程序
山西大學工程學院 第14頁
if(count==10||count==470||count==930||count==1390){ } if(count==410||count==870||count==1330||count==1790)count2=20;
//判斷為綠燈,數碼管倒計時初值為20秒
{
count2=3;
} if(count3==20)
{
count2--;
count3=0;} }
void Ledshow()
{
disdata[0]=(count2%10);
disdata[1]=(count2/10);
P2_6=0;P2_7=1;P1=0x00;
P1=table[disdata[0]];
Delay(10);
P2_7=0;P2_6=1;P1=0x00;
P1=table[disdata[1]];
Delay(10);} void Auto()
{ if(count>10&&count<410)
{
NS_stra();Ledshow();} if(count>410&&count<470){
NS_stop();Ledshow();} if(count>470&&count<870){
//判斷為黃燈,數碼管倒計時初值為3秒
//定時1秒,每隔一秒倒計時減一
//數碼管顯示程序
//十位顯示的數值
//個位顯示的數值
//自動轉換LED燈狀態,綠燈20秒,黃燈3秒
//NS直行指示燈顯示20秒,數碼管倒計時顯示
//NS黃色指示燈顯示 3秒,數碼管倒計時顯示 //NS左拐指示燈顯示20秒,數碼管倒計時顯示
山西大學工程學院 第15頁
} NS_turn();Ledshow();if(count>870&&count<930)
//NS黃色指示燈顯示 3秒,數碼管倒計時顯示
{
NS_stop();Ledshow();} if(count>930&&count<1330){
WE_stra();Ledshow();} if(count>1330&&count<1390){
WE_stop();Ledshow();} if(count>1390&&count<1790){
WE_turn();Ledshow();} if(count>1790&&count<1850){
WE_stop();Ledshow();} if(count>1850){
count=0;} } void main()
{ Time0_Int();P2_5=1;while(1){ Auto();Choose();
} }
//WE直行指示燈顯示20秒,數碼管倒計時顯示
//WE黃色指示燈顯示 3秒,數碼管倒計時顯示 //WE左拐指示燈顯示20秒,數碼管倒計時顯示 //WE黃色指示燈顯示 3秒,數碼管倒計時顯示
//主函數
山西大學工程學院 第16頁
void Time0()interrupt 1 {
}
//定時50ms TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;count++;count3++;void Interrput0()interrupt 0
//外部中斷0,用按鍵手動切換LED燈狀態 {
while(Key_6==0){
} P2_7=0;P2_6=0;if(Key_1==0){
} switch(count1){
case 1 :NS_stra();break;case 2 :NS_stop();break;case 3 :NS_turn();break;case 4 :NS_stop();break;
//根據按下的次數選擇顯示狀態 Delay(10);if(Key_1==0){ } while(Key_1==0);count1++;
//檢測按鍵按下次數 Delay(10);while(Key_6==0){
} Opera_NS_stra();Opera_WE_stra();Opera_NS_turn();Opera_WE_turn();
//判斷是順序,隨機顯示
Opera_Red();
山西大學工程學院 第17頁
}
} case 5 :WE_stra();break;case 6 :WE_stop();break;case 7 :count1=1;break;default: break;
5.3 仿真結果顯示
NS直行
NS左拐 NS黃燈
WE直行 WE左拐 WE黃燈
通過Protues對整個電路和程序仿真,仿真結果如上圖,啟動電源后,交通燈先按照定時方式按照變換程序依次變換,同時數碼管顯示倒計時。在傳感器檢測道路情況后并分析,把結果傳給單片機,通過外部中斷切換交通燈的變換狀態,這里用按鍵模擬傳感器檢測到的結果,可以實現根據檢測到的流量情況不同,對交通燈實時變換,按照行人優先、高流量方向長時間放行設計,基本上達到了設計要求。
總
結
通過本次課程設計,我們在收獲知識的同時,還收獲了閱歷,收獲了成熟.。在此過程中,我們通過查找資料,請教老師,以及不懈的努力,不僅培養了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,我們學會了很多學習的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑
山西大學工程學院 第18頁
戰,只有不斷的學習、實踐,再學習、再實踐。使用Protues和Keil作為我們的設計工具,很好地鍛煉自己的語言編程能力和軟件仿真能力,養成良好的語言編程風格和模擬操作方式。不管怎樣,這些都是一種鍛煉,一種知識的積累,能力的提高。完全可以把這個當作基礎東西,只有掌握了這些最基礎的,才可以更進一步,取得更好的成績。當然,我們還存在著很多不足,設計中有很多還完善的地方,期望以后可以做得更好
參考文獻
【1】《手把手教你學 51 單片機-C 語言版》--金沙灘工作室宋雪松編著,清華大學出版社。
【2】《單片機原理與應用及C51程序設計》—楊家國、謝維成,清華大學出版社。
【3】肖洪兵.跟我學用單片機[M].北京:北京航空航天大學出版社,2002.8. 【4】徐惠民、安德寧. 單片微型計算機原理接口與應用[M].第1版.北京:北京郵電大學出版社,1996.【5】于鳳明.單片機原理及接口技術[M].北京:中國輕工業出版社.1998. 【6】陳偉人.單片微型計算機原理與應用[M].北京:清華大學出版社, 2006.5.【7】趙曉安.MCS-51單片機原理及應用[M].天津:天津大學出版社,2001.3. 【8】《單片機原理與接口技術》--牛昱光、李曉林等編著,電子工業出版社
第五篇:交通信號燈模擬控制系統的設計
交通信號燈模擬控制系統的設計
目 錄
一、課程設計任務書
(一)課程設計應達到的目的-3
(二)課程設計題目及要求---3
(三)課程設計任務及工作量的要求--------------------------4
(四)主要參考文獻---------4
(五)課程設計進度安排-----5
二、課程設計說明書
(一)課程設計目的---------6
(二)課程設計實驗設備-----6
(三)設計思路與功能描述---6
(四)電路原理圖及其說明---7
(五)結構框圖-------------9
(六)系統調試中的問題和解決辦法--------------------------9
(七)運行情況和結論-------9
(八)源程序清單-----------9
(九)心得與體會-----------16
三、附錄:
(一)交通燈模擬圖---------16
(二)參考文獻-------------17 課程設計任務書目錄;
一、課程設計任務書;
(一)課程設計應達到的目的;
二、課程設計說明書;
(一)課程設計目的;
三、附錄:;
(一)交通燈模擬圖; 課程設計任務書; 課程設計說明書;
一、課程設計的目的;
1掌握可編程接口芯片8255、8253的應用和初; 2學習并掌握多重循環嵌套程序的設計,掌握指令執行; 目 錄
一、課程設計任務書
(一)課程設計應達到的目的----------------------------3
(二)課程設計題目及要求------------------------------3
(三)課程設計任務及工作量的要求----------------------4
(四)主要參考文獻-----4
(五)課程設計進度安排-5
(六)成績考核---------5
二、課程設計說明書
(一)課程設計目的----------6
(二)課程設計實驗設備------6
(三)設計思路與功能描述----6
(四)電路原理圖及其說明----7
(五)結構框圖--------------9
(六)系統調試中的問題和解決辦法---------------------------9
(七)運行情況和結論--------9
(八)源程序清單------------9
(九)心得與體會------------16
三、附錄:
(一)交通燈模擬圖-------16
(二)參考文獻--------------17 課程設計說明書
一、課程設計的目的 掌握可編程接口芯片8255、8253的應用和初始化編程方法。2 進一步掌握8086/88匯編語言程序設計方法。學習并掌握多重循環嵌套程序的設計,掌握指令執行時間的計算和軟件延時程序的設計。
二、實驗的設備 1 裝有星研集成環境軟件的計算機一臺 2 Star實驗箱一臺
三、設計思路與功能描述
1、設計要求:
設計一個十字路口的交通信號燈(由實驗儀的LED發光二極管模擬)。采用8255 PA口輸出控制信號燈,8255 PC0輸入K8控制開關信號; 用8253硬件定時,軟件查詢方式實現如下功能:
白天模式:①東西方向和南北方向各放行10秒。綠燈轉紅燈前黃燈閃爍4秒。
②LED數碼顯示器顯示倒數計時,從9倒數到0;倒數到4時黃燈亮。夜間模式:兩個方向黃燈閃爍,綠燈和紅燈不亮。
2、設計思路:(1)8255: 分析:
本設計中,交通信號燈的燈光變化和數碼顯示通過8255實現控制。PA口用于輸出信號控制燈光的變化(D6D5=00,D4=0),PB口用于輸出信號控制數碼管的顯示(D2=0,D1=0),PC0用于輸入K8的控制開關信號,PC1用于輸入用于硬件延時的方波信號(D0=1)。PC7用于輸出控制數碼管工作/不工作的信號(D3=0)。故寫入方式控制字為10000001B=81H。
8255輸入/輸出信號如下表所示:
a.燈光顯示:送低電平則燈亮,送高電平則燈滅。
b.LED數碼顯示:數碼管采用共陰極接法,位選信號為0則數碼管工作。a~dp段發亮條件:對應位輸入1,見下表所示:
mov al,10111011b;夜間黃燈閃爍,使燈全都亮 mov dx,0f000h out dx,al call delay mov al,11111111b;使得燈都滅掉 mov dx,0f000h out dx,al call delay jmp l ll: mov dx,0f002h;mov al,7fh out dx,al mov al,01101111b;mov dx,0f000h out dx,al call a call b;mov al,11010111b;mov dx,0f000h out dx,al call a call c;jmp l mov ah,4ch int 21h delay proc;8253 m: mov dx,0f002h;PC in al,dx and al,02h jz m;n: mov dx,0f002h in al,dx and al,02h jnz n;ret delay endp aa: jmp l;a proc mov al,6fh;mov dx,0f001h out dx,al call delay;call delay mov dx,0f002h;選中PC7,工作 南北綠燈,東西紅燈(9s-4s)南北黃燈,東西紅燈(3s-1s閃爍)南北紅燈,東西綠燈(9s-4s)南北紅燈,東西黃燈(3s-1s閃爍)延時0.5秒鐘 1接8253的OUT0 等于“0”時則轉,等待高電平等于“1”時則轉,等待低電平無條件轉l 數碼管顯示“9” 共延時1s 判斷工作在夜間1/白天0 and al,01h jnz l mov al,7fh;數碼管顯示“8” mov dx,0f001h out dx,al call delay;共延時1s call delay mov dx,0f002h;判斷工作在夜間1/白天0 in al,dx and al,01h cmp al,0h jnz aa;mov al,07h;mov dx,0f001h out dx,al call delay call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz aa mov al,7dh;mov dx,0f001h out dx,al call delay call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz aa jmp z bb: jmp aa z: mov al,6dh;mov dx,0f001h out dx,al call delay call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz aa 為1轉aa 數碼管顯示“7” 數碼管顯示“6” 數碼管顯示“5” mov al,66h;數碼管顯示“4” mov dx,0f001h out dx,al call delay call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz bb ret a endp b proc mov al,4fh;mov dx,0f001h out dx,al mov al,10101111b;mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz bb mov al,5bh;mov dx,0f001h out dx,al mov al,10101111b;mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h cmp al,0h 數碼管顯示“3” 南北黃燈亮 南北黃燈暗 數碼管顯示“2” 南北黃燈亮 南北黃燈暗
jnz bb jmp y cc: jmp bb y: mov al,06h;數碼管顯示“1” mov dx,0f001h out dx,al mov al,10101111b;南北黃燈亮 mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h jnz cc mov al,3fh;mov dx,0f001h out dx,al mov al,10101111b;mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h jnz cc ret b endp c proc mov al,4fh;mov dx,0f001h out dx,al mov al,10101111b;mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h 南北黃燈暗 數碼管顯示“0” 南北黃燈亮 南北黃燈暗 數碼管顯示“3” 東西黃燈亮 東西黃燈暗
out dx,al call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz cc jmp x ddd: jmp cc x: mov al,5bh;數碼管顯示“2” mov dx,0f001h out dx,al mov al,10101111b;mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz ddd mov al,06h;mov dx,0f001h out dx,al mov al,10101111b;mov dx,0f000h out dx,al call delay mov al,11101111b;mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz ddd mov al,3fh;mov dx,0f001h out dx,al mov al,10101111b;東西黃燈亮 東西黃燈暗 數碼管顯示“1” 東西黃燈亮 東西黃燈暗 數碼管顯示“0” 東西黃燈亮
mov dx,0f000h out dx,al call delay mov al,11101111b;東西黃燈暗 mov dx,0f000h out dx,al call delay mov dx,0f002h in al,dx and al,01h cmp al,0h jnz ddd ret c endp code ends end go
九、心得與體會
通過一周的課程設計,我覺得我收獲了很多。首先我對于微機原理有了更加深刻的理解,真的的意識到了這門學科在實際生活中的應用。設計的過程中,我熟悉了芯片8253、8255 的
功能和應用,學會了用匯編語言設計程序。在設計過程中,發現自己對老師課上所講的許多
知識點理解不透徹,概念比較模糊。通過一遍遍的研究、查找相關的資料,總算對8253和8255 有了一定的認識,對芯片的初始化和命令字,以及地址和控制口的理解也更加深入。本次課程設計提高我們的自學能力和合作精神。從理解開始,不斷思考,同時和老師同
學們交流看法,在編程的過程中遇到了許多細節方面的問題,我們通過討論一起解決了問題,最終完成要求。靈活運用課堂所學,軟硬件相結合,這是本次設計的要求,也是我們此次的
最大收獲,希望以后可以把專業的知識運用到更多的領域中去。附錄
1、參考文獻
[1] 李干林.《STAR ES598PCI實驗儀 微機原理實驗指導書》[M].南京工程學院,2008.[2] 韓念杭.微型計算機原理實驗指導書 [M].南京工程學院,2004.[3] 鄭學堅,周斌.微型計算機原理及應用[M].北京:清華大學出版社,2001.[4] 朱定華等.微型計算機原理及應用[M].北京:電子工業出版社,2005.[5] 李繼燦.新編16/32微型計算機原理及應用[M].北京:清華大學出版社,2004 [6] 戴梅萼,史嘉權.微型計算機技術及應用[M].北京:清華大學出版社,1996.2、實物圖
南北紅,東西綠 南北紅,東西黃 夜間黃燈閃爍: