第6章+城市交通信號(hào)控制系統(tǒng)的設(shè)計(jì).ppt_第1頁(yè)
第6章+城市交通信號(hào)控制系統(tǒng)的設(shè)計(jì).ppt_第2頁(yè)
第6章+城市交通信號(hào)控制系統(tǒng)的設(shè)計(jì).ppt_第3頁(yè)
第6章+城市交通信號(hào)控制系統(tǒng)的設(shè)計(jì).ppt_第4頁(yè)
第6章+城市交通信號(hào)控制系統(tǒng)的設(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第6章 城市交通信號(hào)控制系統(tǒng)的設(shè)計(jì),6.1 設(shè)計(jì)任務(wù) 6.2 設(shè)計(jì)方案論證 6.3 以標(biāo)準(zhǔn)數(shù)字集成電路為核心的實(shí)現(xiàn)方案 6.4 基于雙MCU的交通信號(hào)控制系統(tǒng) 6.5 基于CPLD的交通信號(hào)控制系統(tǒng),6.1 設(shè)計(jì)任務(wù),針對(duì)城市道路十字交叉路口,設(shè)計(jì)一個(gè)交通信號(hào)燈控制系統(tǒng),具體要求如下: (1) 主干道通車時(shí)間199 s,可任意設(shè)置。 (2) 次干道通車時(shí)間199 s,可任意設(shè)置。 (3) 黃燈亮?xí)r間19 s,可任意設(shè)置。 (4) 采用倒計(jì)時(shí)的方式,用兩位十進(jìn)制數(shù)字顯示紅、綠、黃色信號(hào)燈亮的倒計(jì)時(shí)時(shí)間。 (5) 其他功能。,6.2 設(shè)計(jì)方案論證,6.2.1 十字路口交通信號(hào)簡(jiǎn)介 十字路口的紅綠燈

2、指揮著行人和各種車輛的安全運(yùn)行,實(shí)現(xiàn)紅綠燈的自動(dòng)指揮是城市交通管理自動(dòng)化的重要課題。一般說來,十字路口處的兩條相互交叉的道路是有主次之分的。其中一條道路平時(shí)車流量較大,稱為主干道;而另一條道路平時(shí)車流量較小,稱為次干道。十字路口交通信號(hào)燈控制系統(tǒng)應(yīng)考慮十字路口主、次干道車流量不同的特點(diǎn),并且能根據(jù)車流量發(fā)生變化的實(shí)際情況,很方便地更改主、次干道的通車時(shí)間。,有一條主干道和一條次干道的城市道路交叉路口如圖6.1所示。每邊(共四邊)都設(shè)置紅、綠、黃色信號(hào)燈。紅燈亮表示禁止通行;綠燈亮表示可以通行;在綠燈亮轉(zhuǎn)變?yōu)榧t燈亮之前,先要求黃燈亮幾秒鐘,以便讓交叉路口停車線以外的車輛停止運(yùn)行,而使交叉路口停車

3、線以內(nèi)的車輛快速通過交叉路口。每一邊的紅、綠、黃色信號(hào)燈亮的順序是紅綠黃紅綠黃。主干道紅燈亮?xí)r,對(duì)應(yīng)次干道的綠燈亮、黃燈亮;主干道綠燈亮、黃燈亮?xí)r,對(duì)應(yīng)次干道的紅燈亮。這樣就要求主干道紅燈亮的時(shí)間,應(yīng)等于次干道綠燈亮的時(shí)間與次干道黃燈亮的時(shí)間之和;同理,次干道紅燈亮的時(shí)間,應(yīng)等于主干道綠燈亮的時(shí)間與主干道黃燈亮的時(shí)間之和。,有的時(shí)候,紅、綠、黃色信號(hào)燈亮的時(shí)間要求采用倒計(jì)時(shí)的方式,并用十進(jìn)制數(shù)字顯示出來,以便機(jī)動(dòng)車司機(jī)和行人一目了然、心中有數(shù)。,圖6.1 交叉路口信號(hào)燈示意圖,6.2.2 不同設(shè)計(jì)方案的簡(jiǎn)單介紹 要實(shí)現(xiàn)上述城市道路交叉路口信號(hào)燈的自動(dòng)控制,則要求交通信號(hào)控制系統(tǒng)由控制器,倒計(jì)時(shí)

4、器,倒計(jì)時(shí)時(shí)間數(shù)字顯示部分,紅、綠、黃信號(hào)燈等幾個(gè)部分組成,其構(gòu)成原理方框圖如圖6.2所示。圖中有向線段的箭頭表示信號(hào)流向。,圖6.2 交通信號(hào)控制系統(tǒng)構(gòu)成原理方框圖,倒計(jì)時(shí)器用于對(duì)秒脈沖的計(jì)數(shù),完成計(jì)時(shí)任務(wù),向控制器發(fā)出相應(yīng)的定時(shí)信號(hào),控制主干道和次干道的通車時(shí)間、禁止通行時(shí)間和黃燈亮的時(shí)間。 控制器根據(jù)倒計(jì)時(shí)器送來的信號(hào),保持或改變系統(tǒng)的狀態(tài),以實(shí)現(xiàn)對(duì)主、次干道車輛運(yùn)行狀態(tài)的控制。 同時(shí),控制器對(duì)倒計(jì)時(shí)時(shí)間數(shù)字顯示部分進(jìn)行控制,使得數(shù)碼管顯示器能以兩位十進(jìn)制數(shù)字顯示紅、綠、黃色信號(hào)燈亮的倒計(jì)時(shí)時(shí)間。 根據(jù)上面的分析,完成設(shè)計(jì)任務(wù)的實(shí)現(xiàn)方案大致可以歸納為以下三種。,1. 以標(biāo)準(zhǔn)數(shù)字集成電路為

5、核心的實(shí)現(xiàn)方案 用標(biāo)準(zhǔn)數(shù)字集成電路實(shí)現(xiàn)交通信號(hào)控制系統(tǒng)的設(shè)計(jì)是比較容易的,雖然所設(shè)計(jì)的電路比較復(fù)雜,但是人們不難找到已有的設(shè)計(jì)方案作為參考。圖6.2中的倒計(jì)時(shí)器可以用十進(jìn)制減法計(jì)數(shù)器構(gòu)成;控制器可以用觸發(fā)器或其他功能的常規(guī)數(shù)字集成電路芯片來進(jìn)行設(shè)計(jì);倒計(jì)時(shí)時(shí)間數(shù)字顯示部分也要用到減法計(jì)數(shù)器,還要用到顯示譯碼器等標(biāo)準(zhǔn)數(shù)字集成電路芯片。,2. 以MCU為核心的實(shí)現(xiàn)方案 用單片機(jī)實(shí)現(xiàn)交通信號(hào)控制系統(tǒng)的設(shè)計(jì)相對(duì)而言是最容易的。因?yàn)榻煌ㄐ盘?hào)燈控制系統(tǒng)就是要根據(jù)計(jì)時(shí)的情況,實(shí)現(xiàn)對(duì)交通信號(hào)燈的控制,并要用十進(jìn)制數(shù)字顯示倒計(jì)時(shí)時(shí)間,而單片機(jī)最適宜用來對(duì)物理對(duì)象進(jìn)行控制,通過單片機(jī)軟件編程,很容易實(shí)現(xiàn)對(duì)交通信號(hào)

6、燈的控制和對(duì)LED數(shù)碼管的顯示控制。但是,單片機(jī)應(yīng)用系統(tǒng)具有抗干擾性差的缺點(diǎn),而對(duì)交通信號(hào)燈控制系統(tǒng)工作可靠性的要求是很高的,所以,必須采取有效措施,提高單片機(jī)應(yīng)用系統(tǒng)的可靠性。一般應(yīng)該綜合采用軟、硬件抗干擾措施,才能獲得好的抗干擾效果。 ,3. 以CPLD為核心的實(shí)現(xiàn)方案 運(yùn)用EDA技術(shù)實(shí)現(xiàn)電子系統(tǒng)的設(shè)計(jì)特別是數(shù)字電子系統(tǒng)的設(shè)計(jì),是現(xiàn)代電子技術(shù)發(fā)展的趨勢(shì)。CPLD芯片內(nèi)部的電路功能可以通過標(biāo)準(zhǔn)硬件描述語(yǔ)言進(jìn)行設(shè)計(jì),而且整個(gè)設(shè)計(jì)過程都是在通用計(jì)算機(jī)的幫助下完成的,從而使得以CPLD為核心的方案容易實(shí)現(xiàn)、容易修改、容易保存,因此,無論是在系統(tǒng)的工作可靠性方面,還是在系統(tǒng)的成本、系統(tǒng)的運(yùn)行速度、系

7、統(tǒng)結(jié)構(gòu)的簡(jiǎn)易程度等方面,以CPLD為核心的實(shí)現(xiàn)方案具有一定的技術(shù)先進(jìn)性,而且最后能得到比較滿意的設(shè)計(jì)結(jié)果。,以上三種實(shí)現(xiàn)方案各自的特點(diǎn)有所不同,采用的技術(shù)手段也有很大區(qū)別。但是,因?yàn)樵O(shè)計(jì)任務(wù)本身不是很難,而這三種實(shí)現(xiàn)方案作為學(xué)生學(xué)習(xí)電子系統(tǒng)設(shè)計(jì)的簡(jiǎn)單實(shí)例是比較好的(如作為電子技術(shù)課程設(shè)計(jì)題使用),所以,下面我們將對(duì)這三種實(shí)現(xiàn)方案都作詳細(xì)的介紹。,6.3 以標(biāo)準(zhǔn)數(shù)字集成電路為核心的實(shí)現(xiàn)方案,6.3.1 十字路口交通信號(hào)控制系統(tǒng)電路的設(shè)計(jì) 圖6.3是十字路口交通信號(hào)控制系統(tǒng)電路原理圖。為了簡(jiǎn)便起見,在圖6.3中沒有畫出“倒計(jì)時(shí)時(shí)間數(shù)字顯示部分” ,該部分電路如圖6.4所示,稍后說明之。 在圖6.3

8、中,IC1、IC2組成“主干道通車倒計(jì)時(shí)器” ;IC3組成“主干道黃燈亮倒計(jì)時(shí)器” ;IC4、IC5組成“次干道通車倒計(jì)時(shí)器” ;IC6組成“次干道黃燈亮倒計(jì)時(shí)器” ;IC7、IC8、IC9組成“控制器” ;LED1LED6表示“主、次干道的綠、黃、紅燈” 。,上面所述4個(gè)“倒計(jì)時(shí)器”都是由十進(jìn)制可逆計(jì)數(shù)器74LS192組成的,現(xiàn)以“主干道通車倒計(jì)時(shí)器”為例進(jìn)行說明。IC1、IC2級(jí)聯(lián),組成減法計(jì)數(shù)器,秒脈沖從IC2的第4腳輸入。當(dāng)LD=0時(shí),由IC1、IC2組成的減法計(jì)數(shù)器處于預(yù)置數(shù)功能狀態(tài),可編程的預(yù)置數(shù)由8421BCD碼撥盤開關(guān)SW1、SW2產(chǎn)生。例如,要求主干道通車時(shí)間為89 s,則只

9、要將SW1撥到8,將SW2撥到9就可以了。當(dāng)LD=1時(shí),由IC1、IC2組成的減法計(jì)數(shù)器處于減法計(jì)數(shù)功能狀態(tài),在秒脈沖的作用下,從89開始每秒鐘減1,當(dāng)減到00時(shí),IC1的第12腳產(chǎn)生借位負(fù)脈沖Qcb=0,此負(fù)脈沖送到由IC7、IC8、IC9組成的“控制器”,使得“控制器”的狀態(tài)發(fā)生改變。,其他“倒計(jì)時(shí)器”的工作過程與“主干道通車倒計(jì)時(shí)器”類似。SW3、SW4用來預(yù)置次干道通車時(shí)間;SW5用來預(yù)置主、次干道黃燈亮的時(shí)間。由圖6.3可知,主、次干道黃燈亮的時(shí)間是相同的。 “控制器”主要由IC7組成?!翱刂破鳌敝械腎C7 是CMOS數(shù)字集成電路(型號(hào)為CD4017),是十進(jìn)制計(jì)數(shù) / 脈沖分配器。

10、在任何時(shí)刻,IC7的輸出Y0Y4總是有且僅有一個(gè)為邏輯1。當(dāng)Y0=1、Y1=Y2=Y3=Y4=0時(shí),“主干道通車倒計(jì)時(shí)器”進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)到00時(shí),“主干道通車倒計(jì)時(shí)器”產(chǎn)生的借位負(fù)脈沖送到與非門IC8(型號(hào)為74LS20),由IC8產(chǎn)生正脈沖送到IC7,使IC7的狀態(tài)改變?yōu)閅1=1、Y0=Y2=Y3=Y4=0。,這時(shí),“主干道通車倒計(jì)時(shí)器”處于預(yù)置數(shù)功能狀態(tài),而“主干道黃燈亮倒計(jì)時(shí)器”IC3開始作減法計(jì)數(shù)。當(dāng)“次干道黃燈亮倒計(jì)時(shí)器” IC6減計(jì)數(shù)到0時(shí),IC7的狀態(tài)改變?yōu)閅0=Y1=Y2=Y3=0、Y4=1,因?yàn)镮C7的輸出端Y4接清零端Cr,所以這時(shí)IC7處于清零功能狀態(tài),則IC7的狀

11、態(tài)立即又變?yōu)閅0=1、Y1=Y2=Y3=Y4=0。由此可知,IC7是循環(huán)工作的。 ,“控制器”中的或門IC9(型號(hào)為74LS32),用來產(chǎn)生紅色信號(hào)燈的控制信號(hào)。例如,主干道的紅色信號(hào)燈LED1的控制信號(hào)是X1,在X1=1時(shí)LED1亮。而X1=Y2+Y3,由此可知,當(dāng)次干道的綠燈亮或次干道的黃燈亮?xí)r,主干道的紅色信號(hào)燈LED1也亮。次干道的紅色信號(hào)燈LED6的控制信號(hào)是X2,X2=Y0+Y1,這樣,當(dāng)主干道的綠燈亮或主干道的黃燈亮?xí)r,次干道的紅色信號(hào)燈LED6也亮。 在圖6.3中,用發(fā)光二極管LED1LED6模擬交通信號(hào)燈,而實(shí)際中的交通信號(hào)燈可能是交流大功率高亮度燈泡或者是發(fā)光二極管陣列,只

12、要給TTL集成電路(IC9,型號(hào)為74LS32)增加相應(yīng)的驅(qū)動(dòng)電路就可滿足實(shí)際要求。,6.3.2 倒計(jì)時(shí)時(shí)間數(shù)字顯示電路的設(shè)計(jì)要點(diǎn) 圖6.4是倒計(jì)時(shí)時(shí)間數(shù)字顯示部分,其左、右兩半部分分別是主、次干道倒計(jì)時(shí)時(shí)間數(shù)字顯示電路,從電路結(jié)構(gòu)上來看,左、右兩半部分具有對(duì)稱性。下面以主干道倒計(jì)時(shí)時(shí)間數(shù)字顯示電路為例,進(jìn)行簡(jiǎn)要說明。 在圖6.3的基礎(chǔ)上,倒計(jì)時(shí)時(shí)間數(shù)字顯示電路的設(shè)計(jì)主要解決兩個(gè)問題:一是用兩個(gè)十進(jìn)制數(shù)字分時(shí)顯示紅、綠、黃色信號(hào)燈亮的時(shí)間,即分時(shí)顯示的問題;二是對(duì)紅色信號(hào)燈亮的時(shí)間實(shí)現(xiàn)倒計(jì)時(shí),即紅色信號(hào)燈亮的倒計(jì)時(shí)問題。,分時(shí)顯示的問題是用三態(tài)門74LS245、74LS244解決的。圖6.4中

13、IC15、IC16的芯片型號(hào)是74LS245,IC17的型號(hào)是74LS244。通過三態(tài)控制端的控制作用,在任何時(shí)刻,只有紅、綠、黃色信號(hào)燈亮的倒計(jì)時(shí)器中的一個(gè)倒計(jì)時(shí)器的狀態(tài),被送到七段譯碼 / 驅(qū)動(dòng)電路IC20、IC21(型號(hào)為74LS48),經(jīng)譯碼后,驅(qū)動(dòng)共陰極數(shù)碼管LED7、LED8顯示倒計(jì)時(shí)器的狀態(tài)。圖6.4中的R43R56是300 的限流電阻。該倒計(jì)時(shí)時(shí)間數(shù)字顯示電路還解決了消隱無效數(shù)字0的問題,即當(dāng)LED7要顯示的數(shù)字是0時(shí),該數(shù)字0將消隱而不顯示。,在圖6.3中,通過或門IC9(型號(hào)為74LS32),可以很方便地獲得主干道紅色信號(hào)燈LED1的控制信號(hào)X1和次干道紅色信號(hào)燈LED6的

14、控制信號(hào)X2。然而,在圖6.3中沒有紅色信號(hào)燈LED1、LED6亮的倒計(jì)時(shí)器。要解決紅色信號(hào)燈亮的倒計(jì)時(shí)問題,必須再設(shè)計(jì)紅色信號(hào)燈亮的倒計(jì)時(shí)器。在圖6.4中,IC10、IC11構(gòu)成了主干道紅色信號(hào)燈亮的倒計(jì)時(shí)器,SW6、SW7用來提供可編程的主干道紅色信號(hào)燈亮的時(shí)間預(yù)置數(shù)。但是,SW6、SW7提供的可編程的預(yù)置數(shù),必須等于次干道綠燈亮的時(shí)間與次干道黃燈亮的時(shí)間之和,即等于SW3、SW4的預(yù)置數(shù)與SW5的預(yù)置數(shù)之和。,次干道的倒計(jì)時(shí)時(shí)間數(shù)字顯示電路與主干道的類似,SW8、SW9用來提供可編程的次干道紅色信號(hào)燈亮的時(shí)間預(yù)置數(shù)。同理,SW8、SW9提供的可編程的預(yù)置數(shù)必須等于主干道綠燈亮的時(shí)間與主干

15、道黃燈亮的時(shí)間之和,即等于SW1、SW2的預(yù)置數(shù)與SW5的預(yù)置數(shù)之和。,由圖6.3和圖6.4可知,圖6.4所示的倒計(jì)時(shí)時(shí)間數(shù)字顯示部分不影響圖6.3所示控制電路的工作,但是,圖6.4所示的倒計(jì)時(shí)時(shí)間數(shù)字顯示部分受到圖6.3所示控制電路的控制。 因?yàn)橛行┦致房诘慕煌ㄐ盘?hào)不需要用十進(jìn)制數(shù)字來顯示倒計(jì)時(shí)時(shí)間,所以,圖6.4所示的倒計(jì)時(shí)時(shí)間數(shù)字顯示部分與圖6.3所示的控制電路之間,宜采用積木式結(jié)構(gòu),分別安裝在兩塊印制板上。這樣,在實(shí)際應(yīng)用中,當(dāng)需要“倒計(jì)時(shí)時(shí)間數(shù)字顯示部分”時(shí),才將圖6.4所示的電路接上,與圖6.3所示控制電路配合使用;而在不需要“倒計(jì)時(shí)時(shí)間數(shù)字顯示部分”時(shí),圖6.3所示的控制電路可

16、單獨(dú)工作。,這里所介紹的十字路口交通信號(hào)燈控制系統(tǒng)主要采用標(biāo)準(zhǔn)的常規(guī)數(shù)字集成電路,只有IC7是CMOS系列數(shù)字集成電路,其他的都是TTL系列數(shù)字集成電路。將圖6.3所示電路與圖6.4所示電路分別制作安裝在兩塊印制板上,相互之間用信號(hào)排線及接插件連接。只要按圖正確接線,不需要調(diào)試,電路就能正常工作,并且該電路可完全滿足設(shè)計(jì)任務(wù)所提出的各項(xiàng)技術(shù)指標(biāo)要求。 經(jīng)試驗(yàn)證明,這里所介紹的十字路口交通信號(hào)燈控制系統(tǒng)不僅實(shí)現(xiàn)了交通信號(hào)燈的自動(dòng)控制,而且電路運(yùn)行穩(wěn)定可靠,可應(yīng)用于實(shí)際場(chǎng)合。在實(shí)際應(yīng)用中,根據(jù)主、次干道車流量變化的情況,可通過撥盤開關(guān)SW1SW9,很方便地更改主、次干道通車的時(shí)間。,6.4 基于雙

17、MCU的交通信號(hào)控制系統(tǒng),6.4.1 系統(tǒng)硬件電路設(shè)計(jì) 系統(tǒng)硬件電路如圖6.5所示,主要采用了兩片51系列單片機(jī)芯片AT89C51(IC1、IC2),電路左、右兩半部分分別負(fù)責(zé)主、次干道交通信號(hào)的控制與時(shí)間顯示。用發(fā)光二極管LED1LED6表示交通信號(hào)燈,其中,LED1LED3表示主干道信號(hào)燈,LED4LED6表示次干道信號(hào)燈,雖然P0口的輸出級(jí)是開路電路,但因?yàn)樗鶐ж?fù)載是灌電流負(fù)載,故未接上拉電阻。AT89C51的P0.7P0.5直接驅(qū)動(dòng)紅、綠、黃信號(hào)燈。AT89C51的P1口作輸出口, P1口輸出的BCD碼經(jīng)CD4511譯碼后,驅(qū)動(dòng)共陰極LED數(shù)碼管,顯示倒計(jì)時(shí)時(shí)間,并通過IC7解決了消隱

18、無效數(shù)字0的問題。四個(gè)共陰極數(shù)碼管LED7和LED8、LED9和LED10分別顯示主、次干道信號(hào)燈亮的倒計(jì)時(shí)時(shí)間。,AT89C51的P2口及P0.3P0.0作輸入口,用于設(shè)置主、次干道的通車時(shí)間,通車時(shí)間的設(shè)定由8421BCD碼撥盤開關(guān)SW1SW5完成,其中,SW1、SW2用于設(shè)置主干道通車時(shí)間(即主干道綠燈亮的時(shí)間),SW4、SW5用于設(shè)置次干道通車時(shí)間,SW3用于設(shè)置黃燈亮的時(shí)間。兩塊AT89C51芯片的串行口設(shè)置成異步通信方式,可實(shí)現(xiàn)相互之間的數(shù)據(jù)交換。該電路具有如下的技術(shù)指標(biāo): (1) 主干道通車時(shí)間099 s,可任意設(shè)置。 (2) 次干道通車時(shí)間099 s,可任意設(shè)置。 (3) 黃燈

19、亮?xí)r間09 s,可任意設(shè)置。,(4)采用倒計(jì)時(shí)的方式,用兩位十進(jìn)制數(shù)字顯示紅、綠、黃色信號(hào)燈亮的倒計(jì)時(shí)時(shí)間。 正是因?yàn)殡娐分杏昧藘善珹T89C51,從而提高了系統(tǒng)工作的穩(wěn)定性和可靠性,并簡(jiǎn)化了軟件設(shè)計(jì)。 6.4.2 系統(tǒng)軟件設(shè)計(jì)及單片機(jī)源程序 交通信號(hào)燈有紅、綠、黃三種。紅燈亮表示禁止通行;綠燈亮表示允許通行;在綠燈亮轉(zhuǎn)變?yōu)榧t燈亮以前,先要求黃燈亮幾秒鐘,以便讓交叉路口停車線以外的車輛停止通行,而讓交叉路口停車線以內(nèi)的車輛快速通過交叉路口。交通信號(hào)燈亮的順序是: ,主綠、次紅 主黃、次紅 主紅、次黃 主紅、次綠 由于主干道紅燈亮的時(shí)間=次干道綠燈亮的時(shí)間+次干道黃燈亮的時(shí)間,次干道紅燈亮的時(shí)間

20、=主干道綠燈亮的時(shí)間+主干道黃燈亮的時(shí)間,主干道黃燈亮的時(shí)間=次干道黃燈亮的時(shí)間,因此,為了獲得主干道紅燈亮的時(shí)間,必須把次干道綠燈亮的時(shí)間從IC2的RAM中傳送到IC1,同理,應(yīng)把主干道綠燈亮的時(shí)間從IC1的RAM中傳送到IC2,而這些數(shù)據(jù)的相互傳送是通過串行口實(shí)現(xiàn)的。程序分為主程序和子程序,采用循環(huán)結(jié)構(gòu),主、次干道的程序分別存放在IC1、IC2的片內(nèi)程序存儲(chǔ)器(ROM)中。,主干道的程序與次干道的程序幾乎相同,惟一不同之處是:主干道程序初始化后最先點(diǎn)亮的是綠燈,而次干道程序初始化后最先點(diǎn)亮的是紅燈。圖6.6是主干道程序流程框圖。主干道源程序清單如下: ORG 0000H LJMP STAR

21、T ORG 003BH START: MOV TMOD,#20H ;定時(shí)器T1工作于模式2 MOV TL1,#0F3H ;T1賦計(jì)數(shù)初值,設(shè)置波特率為1200,圖6.6 主干道程序流程框圖,MOV TH1,#0F3H SETB TR1 ;啟動(dòng)T1 MOV SCON,#50H ;串行口工作于方式1,允許接收 MOV P0,#0FFH ;置P0.3P0.0為輸入且信號(hào)燈滅 MOV A,P0 ;讀P0口狀態(tài) ANL A,#0FH MOV 22H,A ;黃燈亮的時(shí)間存22H單元 MOV P2,#0FFH ;置P2口為輸入,MOV A,P2 ;讀P2口狀態(tài) LCALL BCDBIN ;將BCD碼轉(zhuǎn)換為二

22、進(jìn)制數(shù) MOV 21H,A ;綠燈亮的時(shí)間存21H單元 MOV SBUF,A ;發(fā)送數(shù)據(jù) JNB TI,$ ;等待發(fā)送結(jié)束 CLR TI ;清發(fā)送標(biāo)志 JNB RI,$ ;等待接收結(jié)束 CLR RI ;清接收標(biāo)志,MOV A,SBUF ;接收數(shù)據(jù) ADD A,22H ;計(jì)算紅燈亮?xí)r間 MOV 20H,A ;紅燈亮的時(shí)間存20H單元 MOV A,21H MOV R0,A ;綠燈亮的時(shí)間送R0 CLR P0.6 ;點(diǎn)亮綠燈 LP1 : DEC R0 LCALL BINBCD ;將二進(jìn)制數(shù)轉(zhuǎn)換為BCD碼,MOV P1,A ;顯示時(shí)間 LCALL DELAY ;延時(shí)1秒 CJNE R0,#0,LP1

23、;綠燈亮的時(shí)間未結(jié)束轉(zhuǎn)LP1 MOV A,22H ;綠燈亮的時(shí)間結(jié)束 MOV R0,A ;黃燈亮的時(shí)間送R0 SETB P0.6 ;關(guān)綠燈 CLR P0.5 ;點(diǎn)亮黃燈,LP2: DEC R0 LCALL BINBCD MOV P1,A LCALL DELAY CJNE R0,#0,LP2 MOV A,20H MOV R0,A ;紅燈亮的時(shí)間送R0 SETB P0.5 ;關(guān)黃燈 CLR P0.7 ;點(diǎn)亮紅燈,LP3: DEC R0 LCALL BINBCD MOV P1,A LCALL DELAY CJNE R0,#0,LP3 MOV A,21H MOV R0,A ;綠燈亮的時(shí)間送R0 SET

24、B P0.7 ;關(guān)紅燈 CLR P0.6 ;點(diǎn)亮綠燈 LJMP LP1 ;循環(huán)運(yùn)行,BCDBIN: MOV R1,A ;BCD碼轉(zhuǎn)二進(jìn)制數(shù)子程序 SWAP A ANL A,#0FH MOV B,#10 MUL AB XCH A,R1 ANL A,#0FH ADD A,R1 RET,BINBCD: MOV A,R0 ;二進(jìn)制數(shù)轉(zhuǎn)BCD碼子程序 MOV B,#10 DIV AB SWAP A ADD A,B RET DELAY: MOV R1,#10 ;延時(shí)1秒子程序 K1: MOV R2,#100 K2: MOV R3,#250 K3: DJNZ R3,K3 DJNZ R2,K2 DJNZ R3

25、,K1 RET,6.5 基于CPLD的交通信號(hào)控制系統(tǒng),6.5.1 系統(tǒng)硬件電路設(shè)計(jì) 1. CPLD器件的選擇及CPLD電路的設(shè)計(jì) 我們選擇Lattice公司的ispLSI1000系列CPLD器件,芯片型號(hào)為ispLSI1032E。 該芯片具有如下特點(diǎn)。 (1) 高密度: 可用門為60 000個(gè),邏輯單元為128個(gè),寄存器為192個(gè),I/O口為64個(gè)。 ,(2) 高性能: 該器件采用E2COMS技術(shù),70 MHz的工作頻率,兼容TTL輸入/輸出,電可擦除和重組。 沒有使用的乘積項(xiàng)自動(dòng)關(guān)閉而減少功耗。采用PLCC-84封裝,可以使用集成電路插座。 (3) 在系統(tǒng)可編程: 5 V在系統(tǒng)可編程,可提

26、高設(shè)計(jì)效率,減小產(chǎn)品開發(fā)時(shí)間,提高產(chǎn)品質(zhì)量。,ispLSI1032E的內(nèi)部資源能夠滿足本設(shè)計(jì)任務(wù)的需要。CPLD電路的設(shè)計(jì)我們采用湖南長(zhǎng)沙三知公司生產(chǎn)的CPLD適配板來實(shí)現(xiàn),該CPLD適配板自帶下載電路、電源插座、I/O擴(kuò)展接口,因此,該CPLD適配板只要接入+5 V電源,就可以作為用戶的最小系統(tǒng)而正常工作于用戶應(yīng)用系統(tǒng)中(嵌入用戶系統(tǒng)中)。 2. 系統(tǒng)的硬件電路圖 在設(shè)計(jì)系統(tǒng)硬件電路圖時(shí),只有時(shí)間設(shè)置電路、驅(qū)動(dòng)及顯示電路、時(shí)鐘電路放在CPLD的外面,其他所有需要的系統(tǒng)硬件電路都由ispLSI1032E實(shí)現(xiàn)。系統(tǒng)硬件電路如圖6.7所示。,圖6.7 系統(tǒng)硬件電路圖,圖略,在圖6.7中,ispLS

27、I1032E左邊的電路是時(shí)間設(shè)置電路和時(shí)鐘電路,右邊是驅(qū)動(dòng)及顯示電路。時(shí)間設(shè)置電路由8421撥盤開關(guān)及下拉電阻組成。SW1、SW2用于設(shè)置主干道綠燈亮的時(shí)間即主干道通車時(shí)間,最大值為100 s。SW3用于設(shè)置主干道和次干道的黃燈亮的時(shí)間,最大值為10 s。SW4、SW5用于設(shè)置次干道綠燈亮的時(shí)間即次干道通車時(shí)間,最大值為100 s。雖然主、次干道紅燈亮的時(shí)間可以通過求和運(yùn)算得到,但是因?yàn)閾?dān)心ispLSI1032E的內(nèi)部資源不夠用,而且8421撥盤開關(guān)具有時(shí)間顯示功能,所以,主、次干道的紅燈亮的時(shí)間也是通過8421撥盤開關(guān)來進(jìn)行設(shè)置的,其中,SW6、SW7用于設(shè)置主干道紅燈亮的時(shí)間,SW8、SW

28、9用于設(shè)置次干道紅燈亮的時(shí)間。,主、次干道的倒計(jì)時(shí)顯示器采用雙位共陰極LED數(shù)碼管,且每一個(gè)發(fā)光點(diǎn)都是雙色發(fā)光二極管。雙色發(fā)光二極管單獨(dú)發(fā)光時(shí)可以分別顯示紅色和綠色,當(dāng)紅色和綠色都亮?xí)r,由混色原理可知,這時(shí)顯示的是黃色,所以,主、次干道的倒計(jì)時(shí)顯示器能顯示紅、綠、黃三種顏色,而且LED數(shù)碼管倒計(jì)時(shí)顯示器的顯示顏色與交通信號(hào)燈的顏色是同步的。通過ispLSI1032E的VHDL語(yǔ)言編程實(shí)現(xiàn)了LED數(shù)碼管倒計(jì)時(shí)顯示器的動(dòng)態(tài)掃描顯示,每一位數(shù)碼管顯示1 ms,消隱1 ms,數(shù)據(jù)刷新周期為2 ms。qout_main、qout_secondary是CPLD發(fā)出的數(shù)碼管的段碼(g、f、e、d、c、b、a

29、共七段),段碼是低電平有效。 led_high_main、led_low_main、led_high_secondary、led_low_secondary是CPLD發(fā)出的4個(gè)數(shù)碼管的位選碼,位選碼是高電平有效。 ispLSI1032E芯片共有64根I/O線,在圖6.7所示的系統(tǒng)硬件電路中使用了63根I/O線。,6.5.2 系統(tǒng)軟件設(shè)計(jì)及VHDL源程序 由系統(tǒng)硬件電路設(shè)計(jì)可知,ispLSI1032E實(shí)現(xiàn)了除時(shí)間設(shè)置電路、驅(qū)動(dòng)及顯示電路、時(shí)鐘電路以外的其他所有需要的系統(tǒng)硬件電路,并且通過VHDL硬件描述語(yǔ)言實(shí)現(xiàn)了對(duì)ispLSI1032E內(nèi)部硬件電路的設(shè)計(jì)。在進(jìn)行ispLSI1032E內(nèi)部邏輯功能

30、的軟件設(shè)計(jì)過程中,采用狀態(tài)機(jī)的設(shè)計(jì)方法實(shí)現(xiàn)了圖6.2所示框圖中的控制器設(shè)計(jì)。所以,ispLSI1032E內(nèi)部邏輯電路主要由狀態(tài)機(jī)、100進(jìn)制減法計(jì)數(shù)器、顯示譯碼器、二選一數(shù)據(jù)選擇器、數(shù)據(jù)寄存器、分頻器等組成。ispLSI1032E的完整的VHDL源程序如下:,Designed by OU-Weiming, 2005.1.29 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity traffic_real_1 is port(

31、clk : in std_logic; 40MHz時(shí)鐘輸入,indata_1,indata_3,indata_4,indata_5: in std_logic_vector(7 downto 0); indata_2: in std_logic_vector(3 downto 0); qout_main,qout_secondary:out std_logic_vector(6 downto 0); 時(shí)間顯示段碼 led_high_main,led_low_main,led_high_secondary,led_low_secondary:out std_logic;,時(shí)間顯示位選碼 sele

32、ct_rg: out std_logic_vector(3 downto 0); 顏色選擇控制 select_r_main,select_g_main,select_r_secondary,select_g_secondary:out std_logic; jtdout: out std_logic_vector(3 downto 0); 交通燈信號(hào)輸出,end traffic_real_1; architecture hav of traffic_real_1 is type states is (s3,s2,s1,s0); signal state: states:=s0; signal

33、nextstate: states:=s0; signal count3,count2: std_logic_vector(3 downto 0); 主干道計(jì)數(shù)器,signal count1,count0: std_logic_vector(3 downto 0); 次干道計(jì)數(shù)器 signal data0_main : std_logic_vector(7 downto 0); 主干道倒計(jì)時(shí)初值 signal data0_secondary : std_logic_vector(7 downto 0); 次干道倒計(jì)時(shí)初值 ,signal light : std_logic_vector(3 d

34、ownto 0); 交通燈輸出信號(hào) signal qout_main_high,qout_main_low : std_logic_vector(6 downto 0); 主干道段碼 signal qout_secondary_high,qout_secondary_low : std_logic_vector(6 downto 0); 次干道段碼 signal load_main,load_secondary: std_logic; 計(jì)數(shù)器初值預(yù)置控制信號(hào),signal clkms,clks: std_logic; 毫秒及秒信號(hào) signal flag_main,flag_secondary

35、: std_logic; begin U1:process(clk) 時(shí)鐘分頻 variable stemp1: integer range 0 to 39999; variable carry1: std_logic; begin if( clkevent and clk=1) then if stemp1=39999 then stemp1:=0; carry1:=1;,else stemp1:=stemp1+1; carry1:=0; end if; end if; clkms=carry1; end process U1; U2: process(clkms) 時(shí)鐘1000分頻 var

36、iable stemp2: integer range 0 to 999; variable carry2: std_logic; begin if( clkmsevent and clkms=1) then if stemp2=999 then,stemp2:=0; carry2:=1; else stemp2:=stemp2+1; carry2:=0; end if; end if; clks=carry2; end process U2; U3: process(clks,load_main) 主干道倒計(jì)時(shí)器,完成同步預(yù)置時(shí)間初值或減1,begin if rising_edge(clks

37、) then if load_main=1 then count3=data0_main(7 downto 4); count2=data0_main(3 downto 0); elsif count2=0000 then count3=count3-1; count2=1001; else count2=count2-1; end if; end if;,end process U3; U4: process(clks,load_secondary) 次干道倒計(jì)時(shí)器,完成同步預(yù)置時(shí)間初值或減1begin if rising_edge(clks) then if load_secondary=

38、1 then count1=data0_secondary(7 downto 4); count0=data0_secondary(3 downto 0); elsif count0=0000 then count1=count1-1; count0=1001; else,else count0=count0-1; end if; end if; end process U4; U5:process(clks) 產(chǎn)生預(yù)置時(shí)間初值控制信號(hào) begin 并且改變當(dāng)前狀態(tài) if falling_edge(clks) then if (count3=0000 and count2=0000 and c

39、ount1=0000 and count0=0000 )then load_main=1;,load_secondary=1; state=nextstate; elsif (count3=0000 and count2=0000) then load_main=1; load_secondary=0; state=nextstate; elsif (count1=0000 and count0=0000) then load_main=0; load_secondary=1; state=nextstate;,else load_main light=0110; s0狀態(tài),南北道綠燈亮,東西

40、道紅燈亮,nextstate light=0010; s1狀態(tài),南北道黃燈亮,東西道紅燈亮 nextstate=s2;,data0_main(3 downto 0) light=1001; s2狀態(tài),南北道紅燈亮,東西道綠燈亮,nextstate light=1000; s3狀態(tài),南北道紅燈亮,東西道黃燈亮 nextstate=s0; data0_main(3 downto 0)=indata_2;,data0_main(7 downto 4)=0000; data0_secondary(3 downto 0)=indata_2; data0_secondary(7 downto 4)=000

41、0; select_rg=0100; end case; end process U6; U7:process(count0) begin ,case count0 is 譯碼顯示時(shí)間輸出 when 0000= qout_secondary_low qout_secondary_low qout_secondary_low qout_secondary_low=0110000;,display 3 when 0100= qout_secondary_low qout_secondary_low qout_secondary_low qout_secondary_low=1111000;disp

42、lay 7,when 1000= qout_secondary_low qout_secondary_low qout_secondary_low=1111111;not display end case; end process U7; U8:process(count1),begin case count1 is 譯碼顯示時(shí)間輸出 when 0000= qout_secondary_high qout_secondary_high qout_secondary_high qout_secondary_high=0110000;display 3,when 0100= qout_secondary_high qout_secondary

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論