設(shè)計(jì)一個(gè)十字路口的交通燈控制電路,要求南北方向和東西方向兩個(gè)交叉路口的車輛交替運(yùn)行。 2) 每次綠燈變紅燈時(shí),要求黃燈先亮5S,才能變換運(yùn)行車輛. 3) 東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時(shí)間都用數(shù)碼管顯示器進(jìn)行顯示(采用LED倒計(jì)時(shí)的方法)
附件有仿真電路,程序,框圖,參考文檔等等
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (93.87 KB, 下載次數(shù): 42)
下載附件
2022-4-27 21:04 上傳
制作出來(lái)的實(shí)物圖如下:
IMG_20150307_231758.jpg (2.37 MB, 下載次數(shù): 39)
下載附件
2022-4-26 23:27 上傳
整個(gè)系統(tǒng)的構(gòu)成以STC89C52RC單片機(jī)為核心,由I/O口擴(kuò)展,LED數(shù)碼管顯示,還有復(fù)位電路、時(shí)鐘電路等組成。單片機(jī)作為整個(gè)硬件系統(tǒng)的核心,它既是協(xié)調(diào)整機(jī)工作的控制器,又是數(shù)據(jù)處理器。它由單片機(jī)、晶振電路、復(fù)位電路等組成。
行車方向指示采用LED發(fā)光二極管,可有紅、綠兩種顏色指示放行與禁止,黃燈作為紅綠轉(zhuǎn)換的提示,形象直觀。系統(tǒng)采用雙數(shù)碼管倒計(jì)時(shí)計(jì)數(shù)功能,最大顯示數(shù)字99。 3 系統(tǒng)硬件設(shè)計(jì)
3.1交通燈通行模式及行車方向指示按交通燈控制規(guī)則,每個(gè)道口有紅、黃、綠三種指示燈,交道口模型如圖2.1所示: 
圖3.1 交道口模型圖


2組LED數(shù)碼管按照設(shè)置的通行時(shí)間(各路口默認(rèn)的通行時(shí)間均為30s)進(jìn)行倒計(jì)時(shí),倒計(jì)時(shí)到5S時(shí),綠燈變成黃燈,并各自進(jìn)行紅、黃、綠燈顯示,共有兩種通行方式分別為:
圖3.2 通行方式一示意圖 圖3.3 通行方式二示意圖
通行方式一:倒計(jì)時(shí)時(shí)間為30s(通行時(shí)間),紅綠燈狀態(tài)為:東西通行:綠,南北禁行:紅;如圖3.2所示。 通行方式二:倒計(jì)時(shí)時(shí)間為30s(通行時(shí)間),紅綠燈狀態(tài)為:南北通行:綠;東西禁行:紅;如圖3.3所示。 通行默認(rèn)時(shí)間為30s,系統(tǒng)設(shè)置了任意更改功能,可以根據(jù)實(shí)際情況進(jìn)行調(diào)整,以提高車輛通過(guò)率,緩減交通壓力。在通行結(jié)束前5秒鐘,黃燈亮直至結(jié)束。本設(shè)計(jì)選用LED發(fā)光二極管的紅綠燈狀態(tài)用來(lái)指示交通指示信息。綠色表示通行,紅色則表示禁止通行,黃燈等待。你所有指示信息一目了然。
3.2各單元電路模塊功能3.2.1時(shí)鐘電路模塊時(shí)鐘電路由一個(gè)晶體振蕩器12MHZ和兩個(gè)30pF的瓷片電容組成。時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需的時(shí)鐘信號(hào),而時(shí)序所研究的是指令執(zhí)行中各信號(hào)之間的相互關(guān)系。單片機(jī)本身就是一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地工作。其電路如圖3.4所示:
圖3.4 時(shí)鐘電路模塊
3.2.2復(fù)位電路模塊 電容在上接高電平,電阻在下接地,中間為RST。這種復(fù)位電路為高電平復(fù)位。其工作原理是:通電時(shí),電容兩端相當(dāng)于是短路,于是RST引腳上為高電平,然后電源通過(guò)電阻對(duì)電容充電,RST端電壓慢慢下降,降到一定程度,即為低電平,單片機(jī)開始正常工作。其電路如圖3.5所示:
圖3.5 復(fù)位電路模塊
3.2.3主控制系統(tǒng)模塊主控制器采用STC89C52RC,STC89C52RC 單片機(jī)是宏晶科技推出的新一代高速/低功耗/超強(qiáng)抗干擾的單 片機(jī),指令代碼完全兼容傳統(tǒng) 8051 單片機(jī),12 時(shí)鐘/機(jī)器周期和 6 時(shí)鐘/機(jī)器周 期可以任意選擇。 其特點(diǎn)如下: 1. 增強(qiáng)型 8051 單片機(jī),6 時(shí)鐘/機(jī)器周期和 12 時(shí)鐘/機(jī)器周期可以任 意選擇,指令代碼完全兼容傳統(tǒng) 8051. 2. 工作電壓:5.5V~3.3V(5V 單片機(jī))/3.8V~2.0V(3V 單片機(jī)) 3. 工作頻率范圍:0~40MHz,相當(dāng)于普通 8051 的 0~80MHz,實(shí)際工 作頻率可達(dá) 48MHz 4. 用戶應(yīng)用程序空間為 8K 字節(jié) 5. 片上集成 512 字節(jié) RAM 6. 通用 I/O 口 (32 個(gè)) 復(fù)位后為: , P1/P2/P3/P4 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。 7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程) ,無(wú)需專用編程器,無(wú) 需專用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片 8. 具有 EEPROM 功能 9. 具有看門狗功能 10. 共 3 個(gè) 16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器 T0、T1、T2 11. 外部中斷 4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可 由外部中斷低電平觸發(fā)中斷方式喚醒 12. 通用異步串行口(UART) ,還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè) UART 13. 工作溫度范圍:-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí)) 14. DIP 封裝
圖3.6主控置系統(tǒng)模塊電路
3.2.4交通燈輸出控制模塊 道口交通燈指示采用紅、黃、綠發(fā)光二極管進(jìn)行提示。其圖如圖3.7所示:
圖3.7LED顯示模塊電路
當(dāng)R=1000歐時(shí),按公式A=(5-1.8)/R計(jì)算,電路中的電流大小應(yīng)為A=3.2mA。由于每個(gè)路口的通行雙向指示處理相同,因此每個(gè)端口應(yīng)具有6.4mA的吸收電流能力。
3.2.5時(shí)間顯示電路模塊考慮設(shè)計(jì)需要,我們?cè)诟鱾(gè)方向分別用二位數(shù)碼管用來(lái)顯示倒計(jì)時(shí)時(shí)間,構(gòu)成交通提示信息,形象逼真。本系統(tǒng)使用數(shù)碼管完成倒計(jì)時(shí)顯示功能。以方向東西為為例,數(shù)碼管顯示的數(shù)值從綠燈的設(shè)置時(shí)間最大值往下減,每秒鐘減1,一直減到0。然后又從紅燈的設(shè)置時(shí)間最大值往下減,一直減到0。接下來(lái)又顯示綠燈時(shí)間,如此循環(huán)。 系統(tǒng)共有1個(gè)二位的LED 數(shù)碼管,分別放置在模擬交通燈控制板上四組交通燈中間。四個(gè)方向上都應(yīng)該顯示同樣的內(nèi)容,所以我們可以把它們同樣對(duì)待,只用了一組數(shù)碼管來(lái)模擬。也就是說(shuō)各個(gè)方向的數(shù)碼管個(gè)位(把數(shù)碼管第二位定義為個(gè)位,第一位定義為十位)用一根信號(hào)線控制,十位用另一根信號(hào)線控制。 道口通行剩余時(shí)間采用紅色7段數(shù)碼管顯示,采用共陰數(shù)碼管,如用單片機(jī)P0口加上拉電阻驅(qū)動(dòng),P3.0/P3.1來(lái)控制數(shù)碼管的位。其顯示電路如圖3.8所示:
圖3.8數(shù)碼管顯示模塊電路
3.2.6系統(tǒng)電源模塊電路 由于該系統(tǒng)中 51 單片機(jī)及三極管工作電壓均為 5V 電壓,所以要保證系統(tǒng)穩(wěn)定可靠的工作,需要設(shè)計(jì)一個(gè)可以穩(wěn)定提供 5V 電壓的供電系統(tǒng)。本設(shè)計(jì)采用外置5V穩(wěn)壓開關(guān)電源作為系統(tǒng)的供電電源,系統(tǒng)電源輸入接口要加濾波電容以確保工作電壓穩(wěn)定。電源輸出接口加上LED 電源指示燈,用來(lái)判定電源是否正常工作。該系統(tǒng)電源電路設(shè)計(jì)如圖3.9所示: 圖3.9系統(tǒng)電源電路
4 系統(tǒng)軟件設(shè)計(jì)根據(jù)實(shí)際交通燈的變化情況和規(guī)律。假設(shè)一個(gè)十字路口為東南西北走向。初始狀態(tài)1東西綠燈通車,南北紅燈亮。過(guò)30s,轉(zhuǎn)狀態(tài)2,東西綠燈滅黃燈亮,南北紅燈滅黃燈亮,過(guò)5s,再轉(zhuǎn)狀態(tài)3,南北綠燈通車,東西紅燈亮。過(guò)30s,轉(zhuǎn)狀態(tài)4,南北綠燈滅黃燈亮,東西紅燈滅黃燈亮,過(guò)5s,又循環(huán)至狀態(tài)1。對(duì)于交通信號(hào)燈來(lái)說(shuō)東西南北共四組燈,由于同一道上的兩組的信號(hào)燈的顯示情況是相同的,因此,采用單片機(jī)內(nèi)部的I/O口來(lái)控制12個(gè)信號(hào)燈。通過(guò)編寫程序,實(shí)現(xiàn)對(duì)發(fā)光二極管的控制,來(lái)模擬交通信號(hào)燈的管理。 4.1 軟件總體流程圖軟件總體設(shè)計(jì)及流程圖見(jiàn)圖3-1,主要完成各部分的軟件控制和協(xié)調(diào)。本系統(tǒng)主程序模塊主要完成的工作是對(duì)系統(tǒng)的初始化,發(fā)送顯示數(shù)據(jù),同時(shí)對(duì)按鍵進(jìn)行掃描,等待外部中斷,以及根據(jù)所需要的功能進(jìn)行相應(yīng)的操作。其流程圖如圖4.1 
圖4.1正常情況下交通燈控制流程
5 系統(tǒng)調(diào)試分析及結(jié)果
因本設(shè)計(jì)本身要求有穩(wěn)定性高、免維護(hù)、抗干擾能力強(qiáng)等功能,系統(tǒng)調(diào)試除了驗(yàn)證數(shù)據(jù)處理的精度,確保判斷的準(zhǔn)確性外,同時(shí)必須確認(rèn)各項(xiàng)功能的正常運(yùn)行。
5.1 電路板實(shí)物的制作
5.1.1印制電路板PCB圖的繪制
由于本電路硬件設(shè)計(jì)中,用單片機(jī)的一個(gè)IO口控制各路交通燈的循環(huán)點(diǎn)亮。用同一芯片單片機(jī)的P0口來(lái)控制數(shù)碼管的顯示點(diǎn)亮。因此,在同一芯片中,所要接的線路比較多。在硬件的布局中,各位LED燈和數(shù)碼管的布局比較固定化,集中分布在所控制的兩個(gè)路口。因此,若采用雙面PCB板的話,這個(gè)電路的布線比較容易實(shí)現(xiàn)。但是,現(xiàn)實(shí)水平中做雙面板會(huì)出現(xiàn)一些焊點(diǎn)接觸不良而導(dǎo)致電路調(diào)試過(guò)程不易實(shí)現(xiàn)。因此,決定使用單面板布線。單片面板的布線需要犧牲本設(shè)計(jì)電路板一部分實(shí)際電路的美觀。印制電路板的設(shè)計(jì)是以電路原理圖為根據(jù),實(shí)現(xiàn)電路設(shè)計(jì)者所需要的功能。印刷電路板的設(shè)計(jì)主要指版圖設(shè)計(jì),需要考慮外部連接的布局、內(nèi)部電子元件的優(yōu)化布局、金屬連線和通孔的優(yōu)化布局、電磁保護(hù)、熱耗散等各種因素。優(yōu)秀的版圖設(shè)計(jì)可以節(jié)約生產(chǎn)成本,達(dá)到良好的電路性能和散熱性能。
5.1.2實(shí)物的制做
準(zhǔn)備工作:采購(gòu)萬(wàn)能板若干張,實(shí)物電路所需的各種元器件;
還有其他的基本電子器件和制板工具。
①總制板工藝程序
1)先將所有元器件擺放到萬(wàn)能板上,確實(shí)各個(gè)原件的最有位置,原則是,既美觀,又容易焊接。
2)把擺好位置的元器件焊到板子上,最好用焊臺(tái)來(lái)完成。
3)根據(jù)原理圖,把所有的連線連接起來(lái),連接的導(dǎo)線,盡量用細(xì)一點(diǎn)的。
②制板心得:我們?cè)谥瓢暹^(guò)程中,
1)首先是PROTEL設(shè)計(jì)的時(shí)候出現(xiàn)的錯(cuò)誤導(dǎo)致印制電路板制作錯(cuò)誤。
2)其次是由于設(shè)計(jì)的理論和實(shí)際有誤差導(dǎo)致無(wú)法實(shí)現(xiàn)目標(biāo)。
3)焊接過(guò)程中出現(xiàn)了一些問(wèn)題,比如焊跳線的時(shí)候,由于接線太多,而且是手工焊接,并且焊接設(shè)備不好,烙鐵頭高溫下容易老化氧化和溫度不可控制。因此導(dǎo)致焊盤脫落,原件燙傷等原因?qū)е聢?bào)廢了好幾塊板子。此外,有些焊盤太小并且有損壞跡象,所以焊接很不方便。但為了不出現(xiàn)虛焊,卻花了很長(zhǎng)時(shí)間去焊,有些焊點(diǎn)并不是很美觀。
4)焊接過(guò)程中,有時(shí)候焊錫會(huì)不小心將相鄰的兩根引線短路。所以,此次做板積累了一些經(jīng)驗(yàn),主要是,再次做板的時(shí)候一定要注意PCB的引線之間的距離不能設(shè)置太近。因?yàn)槭鞘止ぶ谱,精度和密度都必須有一個(gè)自由度和能力所及的范圍,并且考慮到手工制板的局限性和線路過(guò)細(xì)密導(dǎo)致的氧化和短路故障。擁有了這些寶貴的經(jīng)驗(yàn),相信今后制板,一定會(huì)完美保證電路的實(shí)現(xiàn)!
5.2 系統(tǒng)硬件調(diào)試
在設(shè)計(jì)過(guò)程中,實(shí)物交通燈控制系統(tǒng)的PCB電路板焊接工作量非常大,電路安裝完成后,首先進(jìn)行檢查,即確認(rèn)電路無(wú)虛焊,無(wú)短路,無(wú)斷路,集成元件安裝是否正確,之后進(jìn)行電路功能模塊的分級(jí)調(diào)試,根據(jù)電路功能逐級(jí)進(jìn)行:通行方式功能調(diào)試:包括對(duì)兩種通行方式控制調(diào)試,指示燈亮度和驅(qū)動(dòng)電路調(diào)試;倒計(jì)時(shí)功能調(diào)試:數(shù)碼管亮度調(diào)試;復(fù)位功能調(diào)試。
5.3 系統(tǒng)軟件調(diào)試
本系統(tǒng)的軟件系統(tǒng)很大,選用一般的單片機(jī)通信C語(yǔ)言程序進(jìn)行編寫和調(diào)試。除了語(yǔ)法差錯(cuò)外,當(dāng)確認(rèn)程序沒(méi)問(wèn)題時(shí),通過(guò)直接下載到單片機(jī)來(lái)調(diào)試。采取的是自下到上的調(diào)試方法,即單獨(dú)調(diào)試好每一個(gè)模塊,然后再連接成一個(gè)完整的系統(tǒng),最后完成一個(gè)完整的系統(tǒng)調(diào)試。
5.4 系統(tǒng)總體調(diào)試
系統(tǒng)做好后,進(jìn)行系統(tǒng)的完整調(diào)試。主要任務(wù)是檢驗(yàn)實(shí)現(xiàn)的功能及其效果并校正誤差。
測(cè)試一開始,我們就發(fā)現(xiàn)了系統(tǒng)出現(xiàn)了兩個(gè)問(wèn)題:一是有一部分交通燈亮度不夠,所發(fā)出來(lái)的光非常的微弱以致于幾乎感覺(jué)不到它的亮度;二是數(shù)碼管不工作,沒(méi)有時(shí)間顯示。這與設(shè)計(jì)的要求完全不符。為了找出這個(gè)問(wèn)題和解決方法,查找了電路的輸出各部分的輸出電平。發(fā)現(xiàn)了一個(gè)現(xiàn)象,我們采用的數(shù)碼管是共陰極數(shù)碼管。而控制數(shù)碼段顯示的P3.0和P3.1口輸出的是高電平。
經(jīng)多方查閱資料,解決第二個(gè)問(wèn)題可以有兩個(gè)解決方法。其一,將硬件電路作修改,將數(shù)碼管換成共陽(yáng)極的數(shù)碼管。這樣數(shù)碼管就可以正常進(jìn)行時(shí)間顯示了。其二,修改程序,讓控制數(shù)碼管段碼的P0輸出的是低電平。若采用修改硬件電路的方法的話,硬件電路就得作變動(dòng)。已經(jīng)布好的線也必須有相應(yīng)的變動(dòng),操作起來(lái)比較麻煩。所以,我們采用了第二種方法。修改了程序電路中的段碼代碼。再次調(diào)試,按照設(shè)計(jì)要求的指標(biāo),系統(tǒng)數(shù)碼管電路部分基本能按照預(yù)先設(shè)定的要求來(lái)進(jìn)行倒計(jì)時(shí)的顯示。亮度要求也基本符合預(yù)先設(shè)想。
接下來(lái)還有一個(gè)問(wèn)題有待解決,交通燈亮度不足,以致于部分交通燈只能勉強(qiáng)看得出來(lái)它在亮而已。這明顯不能滿足設(shè)計(jì)要求。經(jīng)多方檢測(cè),我們認(rèn)為這是由于LED燈驅(qū)動(dòng)能力不足引起的亮度弱問(wèn)題。若要修正這個(gè)問(wèn)題,那就得為L(zhǎng)ED燈增加驅(qū)動(dòng)電路以提高電路的驅(qū)動(dòng)能力。要實(shí)現(xiàn)這一步驟必須對(duì)硬件電路進(jìn)行一定的改動(dòng)。LED燈的驅(qū)動(dòng)電路可以用集成電路電路芯片來(lái)進(jìn)行驅(qū)動(dòng)。在初步方案中考慮要用集成電路來(lái)完成。但是由于客觀方面的原因,沒(méi)有制作實(shí)物的環(huán)境條件。因此,這部分改進(jìn)只作了一個(gè)設(shè)想,并沒(méi)有時(shí)間去付諸實(shí)施。但基本問(wèn)題和解決問(wèn)題的原理還是有一定的了解。
51hei.png (7.29 KB, 下載次數(shù): 38)
下載附件
2022-4-27 21:17 上傳
附錄B:總體電路原理圖、PCB、仿真圖及實(shí)物圖
單片機(jī)源程序如下: - #include<reg51.h>
- #include<intrins.h> //包含庫(kù)文件
- sbit smg1=P3^0; //定義南北方向數(shù)碼管低位
- sbit smg2=P3^1; //定義南北方向數(shù)碼管高位
- sbit N_green=P2^0; //定義北向綠燈端口
- sbit N_red=P2^1; //定義北向紅燈端口
- sbit N_yellow=P2^2; //定義北向黃燈端口
- sbit S_green=P2^7; //定義南向綠燈端口
- sbit S_red=P2^6; //定義南向紅燈端口
- sbit S_yellow=P2^5; //定義南向黃燈端口
- sbit W_green=P1^0; //定義西向綠燈端口
- sbit W_red=P1^1; //定義西向紅燈端口
- sbit W_yellow=P1^2; //定義西向黃燈端口
- sbit E_green=P1^7; //定義東向綠燈端口
- sbit E_red=P1^6; //定義東向紅燈端口
- sbit E_yellow=P1^5; //定義東向黃燈端口
- int js=0,djs=30; //初始倒計(jì)時(shí)時(shí)間
- int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; //共陰極數(shù)碼管段值
- /************以下為函數(shù)聲明*************/
- void jtd();
- void jtda();
- void jtdb();
- void djsxs();
- void yj();
- void jj();
- void jtday();
- void jtdby();
- /*****************************************************/
- /* 函數(shù)名:delayms */
- /* 功能:產(chǎn)生毫秒級(jí)延時(shí) */
- /*****************************************************/
- void delayms(int x)
- {
- char i;
- while(x--)
- {
- for(i=150;i>0;i--);
- }
- }
- /*****************************************************/
- /* 函數(shù)名:Timer0_init() */
- /* 功能:定時(shí)器0初始化 */
- /*****************************************************/
- void Timer0_init()
- {
- js=0;
- TMOD=0x01; //定義定時(shí)器0工作模式
- TH0=0x4c; //賦初值高位
- TL0=0x00; //賦初值低位
- TR0=1; //啟動(dòng)定時(shí)器
- ET0=1; //開中斷
- EA=1; //開全局中斷
- }
- /*****************************************************/
- /* 函數(shù)名:timer0() interrupt 1 using 1 */
- /* 功能:定時(shí)器0中斷服務(wù)函數(shù) */
- /*****************************************************/
- void timer0() interrupt 1 using 1
- {
- TF0=0;
- TH0=0x4c;
- TL0=0x00; //重新賦高地位初值
- js++;
- if(js==22)
- { js=0;
- djs--;
- }
- }
- /*****************************************************/
- /* 函數(shù)名:djsxs11() */
- /* 功能:數(shù)碼管動(dòng)態(tài)顯示 */
- /*****************************************************/
- void djsxs11() //此函數(shù)注視同djsxs22()
- { int b1,b2;
- b1=djs/10; //將倒計(jì)時(shí)時(shí)間的高位賦予b1
- b2=djs%10; //將倒計(jì)時(shí)時(shí)間的低位賦予b2
- P0=table[b1];
- smg1=0;
- delayms(3);
- smg1=1; //顯示b1
- P0=table[b2];
- smg2=0;
- delayms(3);
- smg2=1; //顯示b2
- }
- /*****************************************************/
- /* 函數(shù)名:qm() */
- /* 功能:使所有的交通信號(hào)燈全部熄滅 */
- /*****************************************************/
- void qm()
- {
- N_green=1;
- N_red=1;
- N_yellow=1;
- S_green=1;
- S_red=1;
- S_yellow=1;
- W_green=1;
- W_red=1;
- W_yellow=1;
- E_green=1;
- E_red=1;
- E_yellow=1;
- }
- /*****************************************************/
- /* 函數(shù)名:jtdb() */
- /* 功能:交通燈東西方向綠燈亮,紅燈滅 */
- /* 交通燈南北方向紅燈亮,綠燈滅 */
- /*****************************************************/
- void jtdb()
- {
- qm(); //所有信號(hào)燈滅
- W_green=0; //西向綠燈亮
- E_green=0; //東向綠燈亮
- N_red=0; //北向紅燈亮
- S_red=0; //南向紅燈亮
- while(1)
- {
- if(djs>5) //當(dāng)?shù)褂?jì)時(shí)時(shí)間大于5秒時(shí),執(zhí)行
- {
- djsxs11(); //數(shù)碼管時(shí)間顯示
- }
- if(djs<=5) //當(dāng)?shù)褂?jì)時(shí)時(shí)間小于5秒時(shí),執(zhí)行
- {
- jtdby(); //調(diào)用函數(shù)
- }
- }
- }
- /*****************************************************/
- /* 函數(shù)名:jtdby() */
- /* 功能:交通燈東西方向黃燈亮,紅燈滅 */
- /* 交通燈南北方向紅燈亮,綠燈滅 */
- /*****************************************************/
- void jtdby()
- {
- qm(); //所有信號(hào)燈全滅
- W_green=1; //西向綠燈滅
- E_green=1; //東向綠燈滅
- W_yellow=0; //西向黃燈亮
- E_yellow=0; //東向黃燈亮
- N_red=0; //北向紅燈滅
- S_red=0; //南向紅燈滅
- while(1)
- {
- djsxs11(); //數(shù)碼管時(shí)間顯示
- if(djs<0) //當(dāng)?shù)褂?jì)時(shí)時(shí)間小于0秒時(shí),執(zhí)行
- {
- djs=30;
- jtda(); //調(diào)用jtda()函數(shù)
- }
- }
- }
- /*****************************************************/
- /* 函數(shù)名:jtda() */
- /* 功能:交通燈南北方向綠燈亮,紅燈滅 */
- /* 交通燈東西方向紅燈亮,綠燈滅 */
- /*****************************************************/
- void jtda()
- {
- qm(); //所有信號(hào)燈滅
- N_green=0; //北向綠燈亮
- S_green=0; //南向綠燈亮
- W_red=0; //西向紅燈亮
- E_red=0; //東向紅燈亮
- while(1)
- {
- if(djs>5) //當(dāng)?shù)褂?jì)時(shí)時(shí)間大于5秒時(shí),執(zhí)行
- {
- djsxs11(); //數(shù)碼管時(shí)間顯示
- }
- if(djs<=5) //當(dāng)?shù)褂?jì)時(shí)時(shí)間小于5秒時(shí),執(zhí)行
- {
- jtday(); //調(diào)用函數(shù)
- }
- }
- }
- /*****************************************************/
- /* 函數(shù)名:jtday() */
- /* 功能:交通燈南北方向黃燈亮,紅燈滅 */
- /* 交通燈東西方向紅燈亮,綠燈滅 */
- /*****************************************************/
- void jtday()
- {
- qm(); //所有信號(hào)燈全滅
- N_green=1; //北向綠燈滅
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼 仿真程序文檔下載: |