電氣畢業(yè)設(shè)計(jì)---微機(jī)控制交通路口調(diào)度系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩36頁(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、<p><b>  引言</b></p><p>  當(dāng)今,紅綠燈安裝在各個(gè)道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。</p><p>  1858年,在英國(guó)倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號(hào)燈,用以指揮馬車通行。這是世界上最早的交通信號(hào)燈。1868年12月10日,信號(hào)燈家族的第一個(gè)成員就在英

2、國(guó)倫敦議會(huì)大廈的廣場(chǎng)上誕生了,由當(dāng)時(shí)英國(guó)機(jī)械師師德.哈特設(shè)計(jì),制造的燈柱高7米,身上掛著一盞紅綠兩色的提燈—煤氣交通信號(hào)燈,這是城市街道的第一盞信號(hào)燈,也是世界上最早的煤氣紅綠燈。它由紅綠旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。</p><p>  直到1914年,在美國(guó)的克利夫蘭市才率先恢復(fù)了紅綠燈,不過這時(shí)已是“電氣信號(hào)燈”。稍后又在紐

3、約和芝加哥等城市,相繼重新出現(xiàn)了交通信號(hào)燈,這種紅綠燈由紅綠黃三色圓形的投光器組成,始安裝于紐約市5號(hào)大街的一座高塔上。紅燈亮,表示“停止”,綠燈亮,表示“通行”。</p><p>  1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測(cè)器安在地下,車輛接近后紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來啟動(dòng)紅綠燈,司機(jī)遇紅燈時(shí)按一下喇叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對(duì)壓力敏感的路面

4、時(shí),它就能察覺到有人要過馬路。紅外光束能把信號(hào)燈的紅燈延長(zhǎng)一段時(shí)間,推遲汽車放行,以免發(fā)生交通事故。</p><p>  黃色信號(hào)燈的發(fā)明者是我國(guó)的胡汝鼎,他懷著“科學(xué)救國(guó)”的抱負(fù)到美國(guó)深造,在大發(fā)明家愛迪生為董事長(zhǎng)的美國(guó)通用電氣公司任職員。一天,他站在繁華的十字路口等待綠燈信號(hào),當(dāng)他看到紅燈正要過去時(shí),一輛轉(zhuǎn)彎的汽車呼地一聲擦身而過,嚇了他一聲冷汗。回到宿舍,他反復(fù)琢磨,終于想到了在紅綠燈中間再加上一個(gè)黃色信號(hào)

5、燈,提醒人們注意危險(xiǎn)。他的建議立即得到有關(guān)方面的肯定。于是紅黃綠三色信號(hào)燈即以一個(gè)完整的指揮信號(hào)家族,遍及全世界陸、海、空交通領(lǐng)域了。</p><p>  中國(guó)最早的馬路紅綠燈,是于1928年出現(xiàn)在上海英租界。從最早的手牽皮帶到20世紀(jì)50年代的電氣控制,從采用計(jì)算控制到現(xiàn)代化的電子定時(shí)監(jiān)控,交通信號(hào)燈在科學(xué)化,自動(dòng)化上不斷地更新,發(fā)展和完善。</p><p>  對(duì)于現(xiàn)代社會(huì)來說,隨著社

6、會(huì)的不斷發(fā)展,人口數(shù)量不斷增加,隨之而來的便是汽車數(shù)量的增加。因此若要保證交通安全,交通規(guī)則必不可少,交通的重要性也與日俱增。因此研究一個(gè)智能化、人性化的交通燈是不可或缺的。</p><p>  1 系統(tǒng)的總體設(shè)計(jì)描述</p><p>  本設(shè)計(jì)是一種基于模糊控制理論的微機(jī)控制交通路口調(diào)度系統(tǒng)。根據(jù)十字路口紅綠燈交替變換的特點(diǎn),本系統(tǒng)的硬件電路要分為三大部分;凌陽(yáng)單片機(jī)最小系統(tǒng)的外圍電路、

7、車流量檢測(cè)電路以及時(shí)間和紅綠燈的顯示電路。</p><p>  為了達(dá)到對(duì)紅綠燈的時(shí)間的控制,需要對(duì)道路上的車流量進(jìn)行檢測(cè)。當(dāng)前比較流行的車流量檢測(cè)器件就是一種自感式的車輛傳感器。它的工作原理是當(dāng)車輛經(jīng)過傳感器時(shí),引起其自感的變化??紤]到畢業(yè)設(shè)計(jì)的資金和金錢問題,本系統(tǒng)采用一種手動(dòng)的操作方式,即車流量的檢測(cè)電路用撥斷開關(guān)代替。</p><p>  一般情況下,設(shè)在十字路口或多干道上的岔路口

8、上的紅綠燈是為了調(diào)整路口的交通秩序。其基本作用是:紅燈亮表示車輛、行人禁止通行,綠燈亮表示車輛、行人可以通過。綠燈轉(zhuǎn)換成紅燈前幾秒,可用黃燈來暗示行人或駕駛員即將禁止通行。該系統(tǒng)的時(shí)間顯示倒計(jì)時(shí)的方式,另外還加上了人行橫道的通行燈顯示如圖1-1所示。</p><p>  東西燈: 綠 黃 紅 綠 黃 紅</

9、p><p>  南北燈: 紅 綠 黃 紅 綠 黃</p><p>  東西行人: 紅 綠 紅 綠</p><p>  南北行人: 綠

10、 紅 綠 紅</p><p>  圖1-1 燈的狀態(tài)變化</p><p>  此外,十字路口東西、南北任意通道上加上光敏二極管檢測(cè)是否有車輛闖紅燈。當(dāng)有車闖紅燈時(shí),光敏二極管將被遮住。將這一信號(hào)傳到單片機(jī)。根據(jù)以上介紹,得系統(tǒng)硬件框圖如圖1-2所示</p><p>  圖1

11、-2 系統(tǒng)的硬件框圖</p><p>  2 十字路口模糊控制器的設(shè)計(jì)</p><p>  2.1 模糊控制系統(tǒng)的結(jié)構(gòu)</p><p>  模糊控制能避開對(duì)象的數(shù)學(xué)模型??梢哉f模糊控制器是一種語言變量的控制器。模糊控制系統(tǒng)的示意圖如圖2-1所示,圖中,虛線框中為模糊控制器。其中,x為系統(tǒng)設(shè)定值,y為系統(tǒng)輸出值,他們都是清晰量。和也是清晰量,E和U是模糊量。模糊控制器

12、的輸入是系統(tǒng)的偏差量e,在計(jì)算機(jī)控制系統(tǒng)中它具有確定值數(shù)字量。經(jīng)過模糊化處理,用模糊語言E來描述偏差,若以T(E)記做E的語言集合,則有</p><p>  T(E)=(NB,NM,NS,ZE,PS,PM,PB)</p><p>  上式表示將E分為7段,其中: </p><p>  NB 負(fù)大(negative big)</p><p> 

13、 NM負(fù)中(negative middle)</p><p>  NS 負(fù)?。╪egative small)</p><p>  ZE 零(zero)</p><p>  PS 正?。╬ositive small)</p><p>  PM正中(positive middle)</p><p>  PB 正大(posi

14、tive big)</p><p>  圖2-1 模糊控制系統(tǒng)結(jié)構(gòu)</p><p><b> ?。?)模糊化</b></p><p>  模糊化是將模糊控制器輸入量的確定值轉(zhuǎn)換為相應(yīng)模糊語言變量值的過程,此相應(yīng)的語言變量值均由對(duì)應(yīng)的隸屬度來定義。</p><p><b>  (2)模糊推理</b>&

15、lt;/p><p>  模糊推理包括三部分:大前提、小前提和結(jié)論。大前提是多個(gè)多維模糊條件語句,構(gòu)成規(guī)則庫(kù);小前提是一個(gè)模糊判斷句,又稱事實(shí)。以已知的規(guī)則庫(kù)和輸入變量為依據(jù),基于模糊變換推出新的模糊命題作為結(jié)論的過程叫做模糊推理。</p><p><b> ?。?)清晰化</b></p><p>  清晰化是將模糊推理后得到的模糊集轉(zhuǎn)換為用作控制的

16、數(shù)字值的過程。</p><p>  2.2 模糊控制器的特點(diǎn)</p><p>  與傳統(tǒng)的控制相比,模糊控制有以下特點(diǎn):</p><p>  適用于不易獲得精確數(shù)學(xué)模型的被控對(duì)象,其結(jié)構(gòu)參數(shù)不很清楚或難以求得,只要求掌握操作人員和領(lǐng)域?qū)<业慕?jīng)驗(yàn)或知識(shí)。</p><p>  模糊控制是一種語言變量控制器,其控制規(guī)則只用語言變量形式定性的表達(dá),構(gòu)

17、成了被控對(duì)象的模糊模型。在經(jīng)典控制中,系統(tǒng)模型是用傳遞函數(shù)來描述的;在現(xiàn)代控制領(lǐng)域中,則用狀態(tài)方程來描述。</p><p> ?。?)系統(tǒng)的魯棒性強(qiáng),尤其適用于非線性、事變、滯后系統(tǒng)的控制。</p><p>  2.3 路口管理系統(tǒng)模糊控制器的設(shè)計(jì)</p><p>  一般情況下,紅綠燈設(shè)在十字路口或在多干道的岔口上,目的是為了調(diào)整岔口的交通秩序,而且,目前國(guó)內(nèi)使用

18、的紅綠燈都是固定的紅綠時(shí)間,并自動(dòng)切換。紅燈時(shí)間和綠燈時(shí)間是根據(jù)道口東西向與南北向的車流量,利用統(tǒng)計(jì)方法確定的。但是,實(shí)際上不同時(shí)刻的車輛流通狀況是十分復(fù)雜的,是高度線性的,隨機(jī)的,還經(jīng)常受人為因素的影響。采用定時(shí)控制經(jīng)常造成道路有效應(yīng)用時(shí)間的浪費(fèi),出現(xiàn)綠燈方向車輛較少,紅燈方向車輛會(huì)積壓在人工控制時(shí)交警會(huì)不斷地觀察十字道口的車輛密度和流速,并由此決定是否切換紅綠燈,以保證最佳的道路交通控制狀態(tài)。</p><p>

19、;  用常規(guī)閉環(huán)控制技術(shù),在紅綠燈管理中達(dá)到人工控制的最佳狀態(tài)是十分困難的,這是由于十字路口交通動(dòng)態(tài)模型是很難用數(shù)學(xué)方式表達(dá)的,交警的判斷決策過程也很難用簡(jiǎn)單的程序?qū)崿F(xiàn),所以我們決定采用模糊控制來解決自動(dòng)紅綠燈的最佳控制問題。</p><p>  2.3.1 工作原理</p><p>  根據(jù)前面對(duì)模糊控制器的介紹,實(shí)現(xiàn)紅綠燈模糊控制必須解決如下幾個(gè)問題:</p><p

20、>  對(duì)當(dāng)前十字路口的交通狀況監(jiān)測(cè)。</p><p>  輸入量的模糊化:確定每一個(gè)輸入量的論域,模糊子集和從屬度函數(shù)。</p><p>  輸出量及其模糊化:輸出量的論域,模糊子集和從屬度函數(shù)。</p><p>  設(shè)計(jì)將輸入映照到輸出的模糊規(guī)則。</p><p>  決定被激活的模糊規(guī)則的組合方式和清晰化處理,生成精確的輸出控制信號(hào)

21、。</p><p>  2.3.2 輸出及其模糊分類</p><p><b>  系統(tǒng)采集兩個(gè)輸入量</b></p><p>  綠燈方向車流量——單位時(shí)間通過道口的車輛數(shù)量。</p><p>  紅燈方向排隊(duì)等候車輛數(shù)。</p><p>  為了采集上述數(shù)據(jù),在十字路口的四測(cè)一共設(shè)置8個(gè)傳感器。

22、傳感器的設(shè)置如下圖所示</p><p><b>  北</b></p><p>  圖2-2 傳感器設(shè)置</p><p>  Figure 2-2 Sensor set</p><p>  紅燈期間排隊(duì)等候的車輛數(shù)量有兩部分構(gòu)成,其一為上次綠燈期間遺留下來的車輛。反端傳感器與道口距離為250=100,假設(shè)車輛平均長(zhǎng)度為,

23、則可能滯留的車輛最大數(shù)量為,如20輛,因此變量“紅燈方向排隊(duì)等候車輛數(shù)”的論域?yàn)椋?~20),將它分為三個(gè)模糊子集:少,中,多,其從屬度函數(shù)設(shè)計(jì)如圖2-3所示</p><p>  圖2-3 紅綠燈期間車輛數(shù)的隸屬度函數(shù)</p><p>  Figure 2-3 the number of traffic light vehicles during the membership functi

24、on</p><p> ?。?)輸出及其模糊分類。</p><p>  南北向綠燈時(shí)間延時(shí)。</p><p>  東西向綠燈時(shí)間延時(shí)。</p><p>  現(xiàn)有紅綠交通燈自動(dòng)系統(tǒng)設(shè)定綠燈時(shí)間為常值,通常每一方向綠燈30s?,F(xiàn)將每一方向綠燈時(shí)間分為兩個(gè)部分,其一為固定的30s。作為道口狀態(tài)參數(shù)采集時(shí)間,其二為根據(jù)當(dāng)前狀態(tài),由模糊邏輯決策的延時(shí),

25、最大延時(shí)時(shí)間是隨時(shí)道口交通情況而變化的,假設(shè)為20s。結(jié)果每一方向綠燈時(shí)間間隔為30~50s。</p><p>  由此,綠燈時(shí)間延時(shí)、的論域定義為(0~20),將其分為3個(gè)模糊子集:長(zhǎng)、中、短。</p><p>  輸入量和輸出量的論域、模糊子集、從屬度函數(shù)的設(shè)計(jì)關(guān)系、整個(gè)系統(tǒng)的控制效果與性能,需要根據(jù)對(duì)整個(gè)控制系統(tǒng)的要求,采用試探——修正法設(shè)計(jì),與設(shè)計(jì)者的經(jīng)驗(yàn)有密切的關(guān)系。</p

26、><p> ?。?)模糊規(guī)則的確定。</p><p>  此系統(tǒng)有兩個(gè)輸入和一個(gè)輸出。在沒有任何數(shù)據(jù)資料的情況下,我們只能根據(jù)經(jīng)驗(yàn)設(shè)計(jì)其模糊規(guī)則。其結(jié)構(gòu)如表2-1所示。</p><p>  表2-1 模糊規(guī)則結(jié)構(gòu)表</p><p>  根據(jù)以上模糊規(guī)則圖,可以得到如下的9條模糊規(guī)則:</p><p>  if X=多 an

27、d Y=多 than T=T短。</p><p>  if X=多 and Y=中 than T=T短。</p><p>  if X=中 and Y=多 than T=T短。</p><p><b>  ……</b></p><p>  if X=少 and Y=少 than T=T長(zhǎng)。</p><

28、p>  下面將輸出清晰化,規(guī)定T短=30s、T中=40s、T長(zhǎng)=50s。然后再把它轉(zhuǎn)化為C語言或匯編語言在凌陽(yáng)單片機(jī)上實(shí)現(xiàn)。</p><p><b>  3 硬件電路的設(shè)計(jì)</b></p><p>  3.1 的最小系統(tǒng)外圍電路</p><p>  3.1.1 系統(tǒng)的時(shí)鐘電路</p><p>  的系統(tǒng)時(shí)鐘信號(hào)和C

29、PU的工作時(shí)間信號(hào)CPUCLK均來自其時(shí)鐘系統(tǒng)。其時(shí)鐘系統(tǒng)基本上有三部分組成;鎖相環(huán)PLL倍頻電路、可編程分頻計(jì)數(shù)器以及時(shí)基信號(hào)發(fā)生器。通過PLL對(duì)實(shí)時(shí)時(shí)鐘32768Hz進(jìn)行倍頻處理,產(chǎn)生出Fosc信號(hào),作為系統(tǒng)的時(shí)鐘源。內(nèi)核的外圍中自由32768Hz的時(shí)鐘電路。其接法如圖3-1</p><p>  圖3-1 系統(tǒng)的外圍時(shí)鐘電路</p><p>  Figure 3-1 External

30、system clock circuit</p><p>  3.1.2語音輸出電路</p><p>  凌陽(yáng)單片機(jī)的語音數(shù)據(jù)經(jīng)過解碼后直接送到DAC口輸出。也就是說,它輸出的僅僅是高低正電壓,只能使揚(yáng)聲器的振片在一個(gè)方向振動(dòng)。要想具有較好的樂質(zhì)。還需要對(duì)輸出的電壓進(jìn)行轉(zhuǎn)化,也就是將正電壓變成正負(fù)均分的電壓。</p><p>  另外,系統(tǒng)的輸出口有可能存在高頻干擾

31、信號(hào),所以在電路中加入了RC并聯(lián)高頻濾波電路。并用三極管來放大DAC的輸出,語音輸出電路如圖3-2</p><p>  圖3-2 語音輸出電路</p><p>  Figure 3-2 Voice output circuit</p><p><b>  3.2 顯示電路</b></p><p>  3.2.1時(shí)間顯示電

32、路的設(shè)計(jì)</p><p>  8段LED(E10501 JP)是一種常用的數(shù)碼顯示屏。這種數(shù)碼管的每個(gè)線段都是一個(gè)發(fā)光二極管,因而把它叫LED數(shù)碼管。如果將其接入+5V的電源則需要接下拉電阻。但在此系統(tǒng)中,LED顯示直接接在凌陽(yáng)單片機(jī)的輸出口。這種微機(jī)輸出口的最大驅(qū)動(dòng)力不會(huì)超過14mA,所以本系統(tǒng)直接將LED接在凌陽(yáng)單片機(jī)的輸出口。</p><p>  LED 8段顯示器的設(shè)置為每個(gè)方位上

33、一對(duì)兩位的顯示器。四個(gè)方位上總共有8個(gè)LED接在單片機(jī)Port A上。顯示時(shí)我們不需要小數(shù)點(diǎn),所以每個(gè)LED的10根管腳,我們只用了8根。另外,十字路口只有兩條通道:東西,南北,所以只需兩根片選信號(hào)。Port A有16根輸出線,它的功能分配如下:A0~A7 LED的地位顯示,A8~A14 LED高位顯示,A15、A16作為兩條道路的片選信號(hào)線。連接后時(shí)間顯示電路如圖3-3所示。</p><p>  圖3-3 時(shí)間

34、顯示電路</p><p>  Figure 3-3 Time display circuit</p><p>  3.2.2 紅綠燈的顯示電路</p><p>  根據(jù)本系統(tǒng)的特點(diǎn),紅綠燈的顯示必不可少。本設(shè)計(jì)對(duì)紅綠燈的顯示采用的是普通的發(fā)光二極管。這種LED也不可以直接接在+5V的電源上,但是如果直接接在單片機(jī)的輸出口,發(fā)光二極管又不夠亮。所以在設(shè)計(jì)電路時(shí)將LED

35、顯示接了分流電阻。</p><p>  發(fā)光二極管的設(shè)置:每個(gè)方向上設(shè)置的紅綠黃燈及行人燈各一個(gè),總共四組。如圖3-4 所示。</p><p>  圖3-4 紅綠燈的顯示電路</p><p>  Figure 3-4 Display traffic light circuit</p><p>  3.2.3 違規(guī)車輛檢測(cè)電路</p&

36、gt;<p>  在紅燈綠燈期間,車輛是嚴(yán)禁通行的。為了對(duì)那些違規(guī)車輛進(jìn)行檢測(cè),建議使用超聲波車輛傳感器。但是,由于受條件限制本文設(shè)計(jì)中只是用了普通光敏二極管。其基本設(shè)計(jì)思想如下:將光敏二極管放在停車線處,當(dāng)車輛駛過時(shí)將把光敏二極管遮住。這樣,光敏二極管就不導(dǎo)通,單片機(jī)檢測(cè)到這一信號(hào)執(zhí)行報(bào)警操作。但顯然,光敏二極管的靈敏度在現(xiàn)場(chǎng)是不夠的。</p><p>  此檢測(cè)電路除了使用光敏二極管,還使用了三

37、極管和電阻。三極管的型號(hào)為9013。由于普通光敏二極管的開關(guān)特性不太好,所以設(shè)計(jì)者在電路中加了三極管作為開關(guān)。由于普通的光敏二極管在導(dǎo)通的情況下的電阻都能達(dá)到0.5~1,所以設(shè)計(jì)者將光敏二極管直接接在了電源上。同時(shí)三極管還可起到一定的隔離作用。</p><p>  違規(guī)車輛檢測(cè)電路的設(shè)置:每條道路的右行車道安裝一組,總共四組。圖3-5顯示其中一組的接線情況。</p><p>  圖3-5

38、違規(guī)車輛檢測(cè)電路</p><p>  Figure 3-5 Illegal vehicle detection circuit</p><p>  3.3 車流量檢測(cè)電路</p><p>  3.3.1 光電耦合器</p><p>  (1) 光電耦合器接口電路</p><p>  圖3-6顯示了一個(gè)典型的光電耦合器驅(qū)

39、動(dòng)電路。在該例中,右邊的5V副邊輸出將會(huì)被左邊原邊電路的脈寬調(diào)制器控制。</p><p>  比較器A1將ZD1(結(jié)點(diǎn)A)的參考電壓和通過分壓電路R7和R8的輸出電壓進(jìn)行比較,因而控制Q2的導(dǎo)通狀態(tài),可以定義發(fā)光二極管D1的電流和通過光耦合在光敏晶體管Q1的集電極電流。然后Q1定義脈沖寬度和輸出電壓,補(bǔ)償任何使輸出電壓改變的傾向。</p><p>  隨著光電耦合器的使用時(shí)間增加和傳輸比即

40、增益的下降,為了防止控制失靈,給Q2提供充足的驅(qū)動(dòng)電流裕量是很有必要的。 </p><p>  光電耦合器是以光為媒介傳輸電信號(hào)的一種電-光-電轉(zhuǎn)換器件。它由發(fā)光源和受光器兩部分組成。把發(fā)光源和受光器組裝在同一密閉的殼體內(nèi),彼此間用透明絕緣體隔離。發(fā)光源的引腳為輸入端,受光器的引腳為輸出端,常見的發(fā)光源為發(fā)光二極管,受光器為光敏二極管、光敏三極管等等。光電耦合器的種類較多,常見有光電二極管型、光電三極管型、光敏電

41、阻型、光控晶閘管型、光電達(dá)林頓型、集成電路型等。如下圖(外形有金屬圓殼封裝,塑封雙列直插等)。</p><p><b>  圖3-6</b></p><p><b> ?。?) 工作原理</b></p><p>  在光電耦合器輸入端加電信號(hào)使發(fā)光源發(fā)光,光的強(qiáng)度取決于激勵(lì)電流的大小,此光照射到封裝在一起的受光器上后,因光

42、電效應(yīng)而產(chǎn)生了光電流,由受光器輸出端引出,這樣就實(shí)現(xiàn)了電-光-電的轉(zhuǎn)換。 </p><p>  基本工作特性(以光敏三極管為例) </p><p>  1、共模抑制比很高 </p><p>  在光電耦合器內(nèi)部,由于發(fā)光管和受光器之間的耦合電容很?。?pF以內(nèi))所以共模輸入電壓通過極間耦合電容對(duì)輸出電流的影響很小,因而共模抑制比很高。 </p><

43、;p><b>  2、輸出特性 </b></p><p>  光電耦合器的輸出特性是指在一定的發(fā)光電流IF下,光敏管所加偏置電壓VCE與輸出電流IC之間的關(guān)系,當(dāng)IF=0時(shí),發(fā)光二極管不發(fā)光,此時(shí)的光敏晶體管集電極輸出電流稱為暗電流,一般很小。當(dāng)IF>0時(shí),在一定的IF作用下,所對(duì)應(yīng)的IC基本上與VCE無關(guān)。IC與IF之間的變化成線性關(guān)系,用半導(dǎo)體管特性圖示儀測(cè)出的光電耦合器的輸

44、出特性與普通晶體三極管輸出特性相似。</p><p>  3、光電耦合器可作為線性耦合器使用。 </p><p>  在發(fā)光二極管上提供一個(gè)偏置電流,再把信號(hào)電壓通過電阻耦合到發(fā)光二極管上,這樣光電晶體管接收到的是在偏置電流上增、減變化的光信號(hào),其輸出電流將隨輸入的信號(hào)電壓作線性變化。光電耦合器也可工作于開關(guān)狀態(tài),傳輸脈沖信號(hào)。在傳輸脈沖信號(hào)時(shí),輸入信號(hào)和輸出信號(hào)之間存在一定的延遲時(shí)間,不

45、同結(jié)構(gòu)的光電耦合器輸入、輸出延遲時(shí)間相差很大。</p><p><b> ?。?) 儀器測(cè)試</b></p><p><b>  光電耦合器的測(cè)試 </b></p><p>  1) 用萬用表判斷好壞,斷開輸入端電源,用R×1k檔測(cè)1、2腳電阻,正向電阻為幾百歐,反向電阻幾十千歐,3、4腳間電阻應(yīng)為無限大。1、2

46、腳與3、4腳間任意一組,阻值為無限大,輸入端接通電源后,3、4腳的電阻很小。調(diào)節(jié)RP,3、4間腳電阻發(fā)生變化,說明該器件是好的。</p><p>  注:不能用R×10k檔,否則導(dǎo)致發(fā)射管擊穿。</p><p>  2) 簡(jiǎn)易測(cè)試電路,當(dāng)接通電源后,LED不發(fā)光,按下SB,LED會(huì)發(fā)光,調(diào)節(jié)RP、LED的發(fā)光強(qiáng)度會(huì)發(fā)生變化,說明被測(cè)光電耦合器是好的。</p><

47、;p> ?。?) 光電耦合器具體應(yīng)用</p><p>  1) 組成開關(guān)電路 </p><p>  圖3-6電路中,當(dāng)輸入信號(hào)為低電平時(shí),晶體管V1處于截止?fàn)顟B(tài),光電耦合器B1中發(fā)光二極管的電流近似為零,輸出端Q11、Q12間的電阻很大,相當(dāng)于“開關(guān)”斷開當(dāng)為高電平時(shí),V1導(dǎo)通,B1中發(fā)光二極管發(fā)光,Q11、Q12間的電阻變小,相當(dāng)于開關(guān)“接通”該電路因?yàn)榈碗娖綍r(shí),開關(guān)不通,故為高電

48、平導(dǎo)通狀態(tài)。電路中,因無信號(hào)(為低電平)時(shí),開關(guān)導(dǎo)通,故為低電平導(dǎo)通狀態(tài)。</p><p>  2) 組成邏輯電路 </p><p>  “與”門邏輯電路。其邏輯表達(dá)式為P=A.B。兩只光敏管串聯(lián),只有當(dāng)輸入邏輯電平A=1、B=1時(shí),輸出P=1。同理,還可以組成“或門”“與非門”“或非門”等邏輯電路。</p><p>  3) 組成隔離耦合電路 </p>

49、<p>  這是一個(gè)典型的交流耦合放大電路.適當(dāng)選取發(fā)光回路限流電阻Rl,使B4的電流傳輸比為一常數(shù),即可保證該電路的線性放大作用。 </p><p>  4) 組成高壓穩(wěn)壓電路 </p><p>  驅(qū)動(dòng)管需采用耐壓較高的晶體管(圖中驅(qū)動(dòng)管為3DG27)。當(dāng)輸出電壓增大時(shí),V55的偏壓增加,B5中發(fā)光二極管的正向電流增大,使光敏管極間電壓減小,調(diào)整管be結(jié)偏壓降低而內(nèi)阻增大

50、,使輸出電壓降低,而保持輸出電壓的穩(wěn)定。 </p><p> ?。?)光電耦合器的分類</p><p>  由于光電耦合器的品種和類型非常多,在光電子DATA手冊(cè)中,其型號(hào)超過上千種,通??梢园匆韵路椒ㄟM(jìn)行分類:</p><p>  1) 按光路徑分,可分為外光路光電耦合器(又稱光電斷續(xù)檢測(cè)器)和內(nèi)光路光電耦合器。外光路光電耦合器又分為透過型和反射型光電耦合器。&l

51、t;/p><p>  2) 按輸出形式分,可分為:</p><p>  a、光敏器件輸出型,其中包括光敏二極管輸出型,光敏三極管輸出型,光電池輸出型,光可控硅輸出型等。</p><p>  b、NPN三極管輸出型,其中包括交流輸入型,直流輸入型,互補(bǔ)輸出型等。</p><p>  c、達(dá)林頓三極管輸出型,其中包括交流輸入型,直流輸入型。</

52、p><p>  d、邏輯門電路輸出型,其中包括門電路輸出型,施密特觸發(fā)輸出型,三態(tài)門電路輸出型等。</p><p>  e、低導(dǎo)通輸出型(輸出低電平毫伏數(shù)量級(jí))。</p><p>  f、光開關(guān)輸出型(導(dǎo)通電阻小余10Ω)。</p><p>  g、功率輸出型(IGBT/MOSFET等輸出)。</p><p>  3) 按

53、封裝形式分,可分為同軸型,雙列直插型,TO封裝型,扁平封裝型,貼片封裝型,以及光纖傳輸型等。</p><p>  4) 按傳輸信號(hào)分,可分為數(shù)字型光電耦合器(OC門輸出型,圖騰柱輸出型及三態(tài)門電路輸出型等)和線性光電耦合器(可分為低漂移型,高線性型,寬帶型,單電源型,雙電源型等)。</p><p>  5) 按速度分,可分為低速光電耦合器(光敏三極管、光電池等輸出型)和高速光電耦合器(光敏

54、二極管帶信號(hào)處理電路或者光敏集成電路輸出型)。</p><p>  6) 按通道分,可分為單通道,雙通道和多通道光電耦合器。</p><p>  7) 按隔離特性分,可分為普通隔離光電耦合器(一般光學(xué)膠灌封低于5000V,空封低于2000V)和高壓隔離光電耦合器(可分為10kV,20kV,30kV等)。</p><p>  8) 按工作電壓分,可分為低電源電壓型光電

55、耦合器(一般5~15V)和高電源電壓型光電耦合器(一般大于30V)。</p><p>  3.3.2 車流量檢測(cè)電路</p><p>  車流量的檢測(cè)電路需要車流量檢測(cè)器。目前,市面上流行的一種車流量傳感器是一種互感式的。這種傳感器實(shí)質(zhì)上是一種振蕩器,其諧振電感埋藏在道路中部,當(dāng)車輛通過時(shí),電感量變化引起振蕩頻率變化,由此記錄一次。</p><p>  由于條件限制

56、,本畢業(yè)設(shè)計(jì)中將電路簡(jiǎn)化成手動(dòng)方式,只用了撥斷開關(guān)來代替。其基本思想為:當(dāng)車流量大時(shí),由撥斷開關(guān)送出一個(gè)高電平。另外,在單片機(jī)和撥斷開關(guān)之間加了光電隔離。下面將光電隔離器件作一介紹。</p><p>  在模擬車流量的電路中,我們加上撥斷開關(guān)的有效電平或是低電平。所以我們將LED的負(fù)極接在撥斷開關(guān)S1上,一旦有低電平指示燈就會(huì)被點(diǎn)亮,即指示燈亮了就表示選中了這一種流量狀態(tài)。為了避免干擾信號(hào)進(jìn)入單片機(jī),我們也在電路

57、中加入了光電耦合器。根據(jù)以上對(duì)基本的原件介紹,得到模擬車流量檢測(cè)電路如圖3-7所示</p><p>  圖3-7 模擬流量檢測(cè)電路</p><p>  Figure 3-7 Simulation of flow detection circuit</p><p>  4 SPCE061A簡(jiǎn)介</p><p><b>  4.1總述&

58、lt;/b></p><p>  SPCE061A 是繼系列產(chǎn)品SPCE500A等之后凌陽(yáng)科技推出的又一款16位結(jié)構(gòu)的微控制器。與SPCE500A不同的是,在存儲(chǔ)器資源方面考慮到用戶的較少資源的需求以及便于程序調(diào)試等功能,SPCE061A里只內(nèi)嵌32K字的閃存(FLASH)。較高的處理速度使能夠非常容易地、快速地處理復(fù)雜的數(shù)字信號(hào)。因此,與SPCE500A相比,以為核心的SPCE061A微控制器是適用于數(shù)字

59、語音識(shí)別應(yīng)用領(lǐng)域產(chǎn)品的一種經(jīng)濟(jì)的選擇。</p><p>  圖4-1 SPCE061A的結(jié)構(gòu)</p><p>  Figure 4-1 Structure SPCE061A</p><p>  4.2 指令系統(tǒng)的概述</p><p>  指令是CPU執(zhí)行某種操作的命令。微處理器(MPU)或微控制器(MCU)所能識(shí)別全部指令的集合稱為指令系統(tǒng)或

60、指令集。指令系統(tǒng)是制造廠家在設(shè)計(jì)CPU時(shí)所賦予它的功能,用戶必須正確的書寫和使用指令。因此學(xué)習(xí)和掌握指令的功能與應(yīng)用非常重要,是程序設(shè)計(jì)的基礎(chǔ)。本章將詳細(xì)的介紹SPCE061A指令系統(tǒng)的尋址方式和各種指令。</p><p>  單片機(jī)指令按其功能可劃分為:</p><p>  1)數(shù)據(jù)傳送指令,包括立即數(shù)到寄存器、寄存器到寄存器、寄存器到存儲(chǔ)器到寄存器的數(shù)據(jù)傳送操作;</p>

61、<p>  2)算術(shù)運(yùn)算,包括加、減、乘運(yùn)算;</p><p>  3)邏輯運(yùn)算,包括與、或、異或、測(cè)試、移位等操作;</p><p>  4)轉(zhuǎn)移指令,包括條件轉(zhuǎn)移、無條件轉(zhuǎn)移、中斷返回、子程序調(diào)用等操作;</p><p>  5)控制指令,如開中斷、關(guān)中斷、FIR濾波器的數(shù)據(jù)的自由移動(dòng)等操作。</p><p><b>

62、;  4.3 中斷的概述</b></p><p>  中斷是為處理器對(duì)外界異步事件具有處理能力而設(shè)置的,中斷技術(shù)的引入把計(jì)算機(jī)的發(fā)展和應(yīng)用大大地推進(jìn)一步。因此中斷功能的強(qiáng)弱已成為衡量一臺(tái)計(jì)算機(jī)性能的重要指標(biāo)。</p><p>  SPCE061A單片機(jī)的中斷服務(wù)流程圖4-2所示</p><p>  圖4-2 中斷服務(wù)流程圖</p><

63、p>  Figure4-2 Flow chart of a break in service</p><p>  5 系統(tǒng)主程序和模糊控制程序設(shè)計(jì)</p><p>  系統(tǒng)軟件設(shè)計(jì)主要思路為根據(jù)車流量變化的動(dòng)態(tài)變化,運(yùn)用模糊控制算法實(shí)現(xiàn)紅綠燈時(shí)間自動(dòng)調(diào)整,同時(shí)也有語音的配合。全部軟件設(shè)計(jì)包括主程序和三個(gè)子程序:模糊控制子程序、時(shí)間循環(huán)顯示子程序、語音提示子程序。在進(jìn)入程序之前需要了解

64、一下凌陽(yáng)單片機(jī)C語言與匯編語言之間的調(diào)用以及參數(shù)傳遞問題,現(xiàn)簡(jiǎn)單介紹一下。</p><p>  5.1 C語言與匯編語言之間的調(diào)用</p><p>  根據(jù)北陽(yáng)公司根據(jù)提供的材料,凌陽(yáng)單片機(jī)的C語言和匯編語言之間可以實(shí)現(xiàn)相互調(diào)用。因?yàn)閰R編語言可以對(duì)硬件電路直接進(jìn)行操作以及用C語言來編寫語言程序非常方便、所以本論文在設(shè)計(jì)只用了C語言來調(diào)用匯編。</p><p><

65、;b>  程序調(diào)用協(xié)議:</b></p><p>  由于C編譯器產(chǎn)生的所有標(biāo)號(hào)都以下劃線(_)為前綴,而C程序在調(diào)用匯編程序時(shí)要求匯編程序名也以下劃線(_)為前綴。</p><p>  模塊代碼間的調(diào)用,是遵循體系的調(diào)用協(xié)議(calling convention)。所謂調(diào)用協(xié)議,是指用于標(biāo)準(zhǔn)子程序之間一個(gè)模塊與另一個(gè)模塊的通信約定。即使兩個(gè)模塊是以不同的語言編程編寫而成

66、,亦是如此。</p><p>  體系的調(diào)用協(xié)議的內(nèi)容如下:</p><p><b>  參數(shù)傳遞</b></p><p>  參數(shù)以相反的順序(從右到左)被壓入棧中。必要時(shí)所有的參數(shù)都被轉(zhuǎn)換成其在函數(shù)原型中被聲明過的數(shù)據(jù)類型。但如果函數(shù)的調(diào)用發(fā)生在其聲明之前,則傳遞在調(diào)用函數(shù)里的參數(shù)是不會(huì)被進(jìn)行任何數(shù)據(jù)轉(zhuǎn)換的。</p><

67、p><b>  堆棧維護(hù)及排列</b></p><p>  函數(shù)調(diào)用者應(yīng)切記在程序返回時(shí)將調(diào)用的程序壓入棧中的參數(shù)彈出。各參數(shù)和局部變量在堆棧中的排列。</p><p><b>  返回值</b></p><p>  16位的返回值存放在寄存器R1中。32位的返回值存入寄存器R1,R2中,其中低字在R1中,高字在R2

68、中。若要返回結(jié)構(gòu)則需在R1中存放一個(gè)指向結(jié)構(gòu)的指針。</p><p>  4)寄存器數(shù)據(jù)暫存方式</p><p>  編譯器會(huì)產(chǎn)生prolog/epilog過程動(dòng)作來暫存或恢復(fù)PC、SR及BP寄存器。匯編器則通過“CALL”指令將PC和SR自動(dòng)壓入棧中,而通過“RETF”或“RETI”指令將其自動(dòng)彈出棧來。</p><p><b>  5.2 主程序<

69、;/b></p><p>  系統(tǒng)的運(yùn)行總框圖如圖5-1所示</p><p>  語音子程序是融入到顯示程序當(dāng)中去的。故我們?cè)诳驁D中將兩個(gè)子程序并列放置。因此,也可以說主程序是由兩部分組成。初始化的內(nèi)容包括定義局部變量和全局變量。在IDE開發(fā)時(shí),該項(xiàng)目所包括的程序文件有如圖 所示的八項(xiàng)。其中,A2000.rc是語音數(shù)據(jù)源文件,hardware.asm是主程序所謂用的匯編子程序服務(wù)

70、文件。</p><p>  設(shè)計(jì)中的A2000.c主程序文件包括一個(gè)主程序和兩個(gè)語音播放子程序。主程序中包括了一個(gè)模糊控制程序模塊和四個(gè)時(shí)間、燈的顯示程序模塊。Serve.asm匯編子程序服務(wù)文件中有12個(gè)匯編子程序。下面分別予以介紹。</p><p>  圖5-1 主程序框圖</p><p>  Figure 5-1 The main program block

71、diagram</p><p>  5.2.1 模糊控制器程序</p><p>  根據(jù)前面對(duì)此管理系統(tǒng)的模糊控制器設(shè)計(jì)得出的模糊規(guī)則,可以得到程序框圖如圖下所示,圖中的9種狀態(tài)對(duì)應(yīng)表 模糊推理的結(jié)果,根據(jù)十字路口車輛多少對(duì)應(yīng)的各個(gè)方向綠燈亮的時(shí)間分別為T短=30s、T中=40s、T長(zhǎng)=50s。</p><p>  圖5-2 模糊控制器程序塊框圖</p>

72、;<p>  Figure 5-2</p><p>  并且轉(zhuǎn)化為凌陽(yáng)單片機(jī)的C語言如下所示</p><p>  int *a,t,b,u;</p><p><b>  main( )</b></p><p><b>  {</b></p><p>  int

73、c,l,i,key,j;</p><p>  loop: l=B_state( );</p><p>  switch (l)</p><p>  {case 0×01b0:key=time_short();break;</p><p>  case 0×01d0:key=time_short();break</

74、p><p>  case 0×02b0:key=time_short();break</p><p>  case 0×01e0:key=time_medium();break</p><p>  case 0×02d0:key=time_medium();break</p><p>  case 0×03

75、30:key=time_medium();break</p><p>  case 0×0350:key=time_long();break</p><p>  case 0×0360:key=time_long();break</p><p>  case 0×02e0:key=time_long();break</p>

76、<p>  default:goto loop;} </p><p><b>  }</b></p><p>  對(duì)于所謂用的time_short、time_medium、time_long三個(gè)匯編子程序如圖 所示。其主要思路是將起計(jì)數(shù)作用的寄存器r4賦以不同的值(分別是10、20、30)。同時(shí),同時(shí)將這個(gè)初始值賦給r1寄存器。于是,每一個(gè)時(shí)間選擇子程序的

77、返回值就是r1中的值,即是10、20或30。在取指針值得過程中最重要的環(huán)節(jié)是壓棧堆棧操作;首先將基指針的應(yīng)用會(huì)造成指針混亂,在取指針量操作完成之后,再將基指針彈出堆?;謴?fù)其原來的值。</p><p>  5.2.2 顯示程序塊的總覽</p><p>  根據(jù)圖 5-2知道,顯示程序是四種狀態(tài)的不斷循環(huán)。所以我們得到了顯示程序塊的總體框圖,如圖5-3所示。它是通過U值得不同來切換道口的紅綠燈

78、。同時(shí),每一次紅燈變換時(shí)會(huì)對(duì)車流量進(jìn)行一次檢測(cè),已達(dá)到及時(shí)更換時(shí)間的效果。</p><p>  圖5-3 顯示程序塊總框圖</p><p>  Figure 5-3</p><p>  另外,顯示程序的主題是延時(shí)。一般地,設(shè)計(jì)中的延時(shí)采用中斷或定時(shí)器。但本設(shè)計(jì)沒有采用中斷。因此我們需要在延時(shí)的同時(shí)開外部中斷(檢測(cè)違規(guī)車輛)。也就是說需要在執(zhí)行延時(shí)中斷服務(wù)子程序的同時(shí)

79、可以響應(yīng)外部中斷并且執(zhí)行外部中斷服務(wù)程序,但凌陽(yáng)單片機(jī)不能實(shí)現(xiàn)這一點(diǎn)。所以,本設(shè)計(jì)將開外部中斷的程序塊作為延時(shí)基準(zhǔn)。將這個(gè)程序不斷地循環(huán)FFFF×4次,系統(tǒng)的默認(rèn)CPU是24MHz,這個(gè)程序塊的指令周期是可以算出這個(gè)時(shí)間大約是一秒鐘。也就是說,在這一秒的時(shí)間里,我們已經(jīng)開關(guān)外部中斷FFFF×4次,足以將違規(guī)車輛檢測(cè)到了。</p><p>  四塊顯示程序大體是一樣的,只是在送紅綠燈的狀態(tài)和外部

80、中斷源上不一樣。當(dāng)U=0時(shí),所開為外部中斷源1,即PortB2;當(dāng)U=1時(shí),所開為外部中斷源2,即PortB3。紅綠燈的程序塊也有所不一樣。根據(jù)前文的介紹,PortB0/B1分別為東南、西北人行橫道的指示燈,Port 10~Port 12分別是東西道路上的黃、綠、紅燈,Port 13~Port 15為南北道路上的黃、綠、紅燈。而且,所有的顯示燈都是低電平點(diǎn)亮。</p><p>  .public _time;&l

81、t;/p><p>  _time: .proc</p><p>  Push bp,bp to [sp];</p><p><b>  r2=0003c;</b></p><p><b>  r2=r2-r1;</b></p><p>  bp=r2+address;</p

82、><p><b>  r1=bp;</b></p><p>  pop bp,bp from [sp];</p><p><b>  retf;</b></p><p><b>  .endp</b></p><p><b>  time()子程序

83、</b></p><p>  .public _show;</p><p>  _show: .proc</p><p><b>  r1=0ffff;</b></p><p>  [P_IOA_Dir]=r1;</p><p>  [p_IOA_Attr]=r1;</p>

84、<p>  Push bp,bp to [sp];</p><p><b>  bp=sp+1;</b></p><p>  r3=[bp+3];</p><p>  [P_IOA_Data]=r3;</p><p>  pop bp,bp from [sp];</p><p>&l

85、t;b>  retf;</b></p><p><b>  .endp;</b></p><p><b>  show()子程序</b></p><p>  .public _EXT1_INT_ON;</p><p>  _EXT1_INT_ON;</p><

86、p><b>  IRQ OFF;</b></p><p><b>  r1=00100;</b></p><p>  [P_INT_Ctrl]=r1;</p><p>  Test r1,[P_INT_Ctrl];</p><p><b>  Jz backf;</b>

87、</p><p><b>  r1=00001;</b></p><p><b>  retf;</b></p><p><b>  backf:</b></p><p><b>  r1=00000;</b></p><p>&l

88、t;b>  retf;</b></p><p>  (c) 開關(guān)外部中斷1的子程序</p><p><b>  5.3顯示程序塊</b></p><p>  以上介紹了主程序以及顯示程序的總體框圖。對(duì)于每一個(gè)顯示子程序模塊,還需進(jìn)一步說明。首先我們?cè)趕erve.asm文件中定義了60個(gè)雙字的數(shù),這些數(shù)字是我們根據(jù)8段LED的顯

89、示特點(diǎn),編寫的從60到00的顯示數(shù)字。在其后的程序中將bp值指向了這一組數(shù)據(jù)。紅燈-綠燈的顯示程序塊框圖如圖5-4所示</p><p><b>  對(duì)應(yīng)程序如下:</b></p><p><b>  i=60-key;</b></p><p>  for(;i5;i--)</p><p>  { a

90、=time( );</p><p><b>  t=*a;</b></p><p><b>  t+=04000;</b></p><p><b>  show(t);</b></p><p><b>  a=a+1;</b></p><

91、;p>  red_green( );</p><p><b>  YY1( );</b></p><p>  back1: t=*a;</p><p><b>  t+=04000;</b></p><p><b>  show(t);</b></p>&l

92、t;p><b>  a=a+1;</b></p><p>  red_green( );</p><p>  for(j=0;j 00004;j++)</p><p>  {for(b=0;b04000)</p><p><b>  {</b></p><p>  c=

93、EXT1_INT_ON( );</p><p><b>  switch(c)</b></p><p>  {case 00001:YY2( );break;</p><p>  case 00000:break;}}}</p><p>  if(t= =05ffd) break;</p><p>

94、;  else goto back1; </p><p><b>  }</b></p><p>  圖5-4 紅燈-綠燈的顯示程序塊框圖</p><p>  Figure 5-4 Red light - green light to the display block diagram</p><p>  下面一段

95、程序調(diào)用了serve.asm匯編語言文件的time()、show()、EXI1_INT_ON()子程序。time()子程序的作用是將字型碼的地址取出并賦給整形變量a。show()子程序的作用是將前面取來的字型碼的送到PortA顯示。EXI1_INT_ON()子程序的作用是開中斷,執(zhí)行其程序所用的時(shí)間又用作字型顯示的延時(shí)(循環(huán)FFFF4次)。</p><p>  上面對(duì)四個(gè)顯示程序中的一種狀態(tài)做了較為詳細(xì)的介紹。接

96、著紅燈—綠燈狀態(tài)的顯示。它與前者不同之處在于:沒有第一個(gè)語音子程序;顯示時(shí)間只有5秒。這種狀態(tài)的所有程序下所示。</p><p>  for(:i0;i--)</p><p><b>  {</b></p><p>  back2:t=*a;</p><p><b>  t+=04000;</b>&

97、lt;/p><p><b>  show(t);</b></p><p><b>  a=a+1;</b></p><p>  red_yellow();</p><p>  for(j=0;j00004;j++)</p><p>  {for(b=0;b0ffff;b++)&l

98、t;/p><p><b>  {</b></p><p>  c=EXT1_INT_ON();</p><p>  switch (c)</p><p>  {case 00001:YY2();break;</p><p>  case 00000:break;}}}</p><p

99、>  if(t=05f86) break;</p><p>  else goto back2;</p><p><b>  }</b></p><p>  從以上程序可以看出,程序最后由語句“goto loop”跳轉(zhuǎn)到了最初的模糊控制的子程序模塊。根據(jù)路口流量進(jìn)行時(shí)間選擇后,緊接著是另一條道路上的紅燈開始亮。模糊控制器的子程序在前面已經(jīng)

100、介紹過了。下面將對(duì)綠燈—紅燈狀態(tài)進(jìn)行說明。</p><p>  綠燈—紅燈狀態(tài)與前面的紅燈—綠燈狀態(tài)的不同之處在于所開外部中斷源不同。前者所開為外部中斷1,后者開的是外部中斷2。其全部的程序如以下程序所示:</p><p><b>  Loop1:</b></p><p><b>  i=60-key;</b></p

101、><p>  for(;i5;i--)</p><p>  {a=time();</p><p><b>  t=*a;</b></p><p><b>  t+=04000;</b></p><p><b>  show(t);</b></p>

102、<p><b>  a=a+1;</b></p><p>  green_red();</p><p><b>  YY1();</b></p><p>  back3: t=*a;</p><p><b>  t+=08000;</b></p>

103、<p><b>  show(t);</b></p><p><b>  a=a+1;</b></p><p>  green_red();</p><p>  for(j=0;j00004;j++)</p><p>  {for(b=0;b0ffff;b++)</p>&

104、lt;p><b>  {</b></p><p>  c= EXT2_INT_ON( );</p><p><b>  switch(c)</b></p><p>  {case 00001;YY2();break;</p><p>  case 00000:break;}}}</p&g

105、t;<p>  if(t= =09ffd) break;</p><p>  else goto back3;</p><p><b>  }</b></p><p>  紅燈-黃燈狀態(tài)與前面的綠燈-紅燈狀態(tài)的程序相同,只是所謂調(diào)用的開中斷程序?yàn)镋XT2_INT_ON( )。</p><p>  下面是EX

106、T2_INT_ON( )的子程序:</p><p>  .public _EXT2_INT_ON;</p><p>  _EXT2_INT_ON;</p><p><b>  IRQ OFF;</b></p><p>  r1=002000;</p><p>  [P_INT_Ctrl]=r1

107、;</p><p>  test r1,[P_INT_Ctrl];</p><p><b>  Jz backf;</b></p><p><b>  r1=00200;</b></p><p>  [P_INT_Clear]=r1;</p><p><b>  r

108、1=00001;</b></p><p><b>  retf;</b></p><p>  5.4.1 交通提示和違規(guī)車輛的報(bào)警語音子程序</p><p>  1 語音子程序設(shè)計(jì)步驟</p><p>  此系統(tǒng)包含兩個(gè)語音子程序:交通提示語音子程序和對(duì)違規(guī)車輛的報(bào)警語音子程序。因此,它也包含有兩個(gè)語音源數(shù)據(jù)

109、文件。</p><p>  語音文件均是通過PC機(jī)錄入后經(jīng)過壓縮的。具體過程如下:</p><p>  (1) 用window附件中的“錄音機(jī)”通過MICPHOTO錄制想要播放的語音,并將其屬性改為“錄音格式”“8000kHz,8位,單聲道,7kHz”保存。</p><p> ?。?) 應(yīng)用凌陽(yáng)公司提供的Compress tool將保存的語音文件數(shù)據(jù)壓縮成*.out

110、和*.24k兩個(gè)文件。</p><p> ?。?) 打開IDE開發(fā)環(huán)境并將程序加載上。在源文件欄目框中將*.24k文件添加進(jìn)去。這樣就完成了對(duì)語音文件的添加。</p><p>  2 交通提示語音子程序</p><p>  在各條道路進(jìn)入紅燈之前有一段語音提示行人注意車輛,其內(nèi)容為“紅燈停、綠燈行、過馬路請(qǐng)注意車輛”。在這之后將跳出語音子程序。其程序框圖入圖5-5所

111、示。</p><p>  圖5-5 語音程序框圖1</p><p>  Figure 5-5 Voice process diagram1</p><p>  交通提示語音子程序的全部程序及注釋如下:</p><p>  //“紅燈停、綠燈行,過馬路請(qǐng)注意車輛!千萬不要闖紅燈!”//</p><p>  int YY

112、1()</p><p><b>  {</b></p><p>  #define SPEECH_ 1 1</p><p>  #define DAC1 1</p><p>  #define DAC2

113、 2</p><p>  #define Ramp_UpDn_Off 0</p><p>  #define Ramp_UpDn_On 3</p><p>  #define Manual 0</p><p>  #define Auto

114、 1</p><p>  #define Full 1</p><p>  #define Empty 2</p><p>  #define Mode 0</p><p&g

115、t;  #include “A2000.h”</p><p>  extern long RES_3_24k_SA,RES_3_24k_EA; //定義語音資源的首末</p><p><b>  //地址標(biāo)號(hào)</b></p><p>  long int Addr;

116、 //定義地址變量</p><p>  int Ret= 0,f,c,DAC; //定義獲取語音數(shù)據(jù)變量并初始化</p><p>  { Addr =RES_3_24k_SA; //送入語音隊(duì)列的首址</p><p>  SACM_A2000_Initaia

117、l(0)); //非自動(dòng)方式播放的初始化</p><p><b>  Switch(u)</b></p><p>  {default:DAC=DAC1;break;</p><p>  case 00001:DAC=DAC2;break;}</p><p>  SACM

118、_A2000_InitDecoder(DAC); //開始對(duì)A2000的語音數(shù)據(jù)</p><p>  //以非自動(dòng)方式解碼</p><p><b>  loop2:</b></p><p><b>  while(1)</b></p><p>  {for(c=0;

119、c0bb80;c++) //判斷1s的時(shí)間是否到(播放頻率48kb/s)</p><p>  {if(SAM_A2000_TestQueue()!=Full) //判斷語音是否播放完成</p><p>  {Ret=SP_GetResource(Addr);</p><p>  SACM_A2000_FillQueue(

120、Ret);</p><p><b>  Addr++;}</b></p><p>  If(AddrRES_3_24k_EA) //如果該段語音未播完,即未到達(dá)末地址時(shí)</p><p>  SACM_A2000_Decoder();</p><p>  //獲取資源并進(jìn)行解碼,再通過中斷服務(wù)子程序送

溫馨提示

  • 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ù)僅提供信息存儲(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)論