close

[功能要求]

設計一交通號誌控制模組,可控制紅、黃、綠燈,此實驗必須包含以下功能:

1. 能夠設定各燈號點亮秒數,最長不超過16秒。

2. 能夠設定一密碼,當密碼不正確時無法啟動此交通號誌。

3. 當紅燈亮時,能夠同時以兩位數顯示倒數計時至0秒。

4. 實現一喇叭模組,配合燈號可產生三種不同音調的聲音。(加分題)

5. 不可用程式燒 non-8051 non-PLC(純硬體架構) 

 

 

[成品]

DSC01313.JPG  

電路圖下載

BOM下載

 

 

[系統方塊圖]

block.jpg
 

如上圖所示,本系統是由以下各方塊所組成:

a. 使用者介面

b. 密碼驗證

c. 1Hz方波產生器

d. 可給初值計數器

e. 資料選擇

f. 七段顯示器驅動

g. 2位數七段顯示器

h. 燈號仲裁

i. 紅黃綠 LED燈號

j. 喇叭模組 

 

 

[工作原理]

在每個燈號的週期開始, 燈號仲裁方塊會接收到計數器方塊指示的ZERO_FLAG,接著決定出目前哪個燈該亮,哪個燈該滅;然後通知 資料選擇方塊現在是什麼燈號的週期,另一方面也通知 紅綠燈方塊點亮相對應的燈號。

當 資料選擇方塊收到指示後,會將 使用者介面方塊設定的秒數(15~0秒)傳送至 計數器方塊,作為計數的起點,並由 燈號仲裁方塊指示匯入資料。

計數器開始動作後,會將正在計數的資料傳送到 七段顯示器驅動方塊,數值處理後輸出至2X七段顯示器方塊做讀秒顯示。

 

 

下面為各位說明各方塊的詳細動作:

a. 使用者介面

ui.jpg  

提供四組四位元DIP SWITCH,分別可設定

密碼 PSW[3:0]=1010

紅燈秒數 RSEC[3:0]=15~0秒

黃燈秒數 YSEC[3:0]=15~0秒

綠燈秒數 GSEC[3:0]=15~0秒。

 

 

b. 密碼驗證

pass.jpg  

密碼驗證迴路所使用的0V參考電位點(GND)與後級電路以Q1區隔,以達到控制後級電路電源的目的。

 

驗證所設定PSW[3:0]是否等於1010,

(我在這裡把密碼預設為1010,電路也是以這個設定來設計)

 

(PSW3 AND !PSW2) AND (PSW1 AND !PSW0) = 1?

 

若為真,則Q1工作在三極區,兩邊GND導通,系統啟動。

即題目第二項的功能。 

 

 

c. 1Hz 方波產生器

1Hz.jpg

以LM555組成的無穩態計時器,產生約1Hz,Duty Cycle約50%的方波。

其中決定頻率及Duty Cycle的變數為R1, R2, C2,公式如下:

equ.jpg 

我在這個實驗中是以線上計算器求得R1=10KΩ, R2=710KΩ, 及C2=10μF。 

如果要求精準的話R2可以以可變電阻取代。 

 

 

d. 可給初值計數器

counter.jpg

計數器我選用的是74LS193,其主要有preset及4位元上下數功能,結合資料選擇的電路,即可達成題目第一項所要求的功能。

 

[方塊輸入]

CLK – 接收由1Hz方波產生器提供的時脈源。

LOAD# - 當LOAD#經歷了HI-LOW-HI一個週期脈波後,即會由D[3:0]設定的資料開始做上/下計數。圖中右上角BJT會在系統啟動之初,讓LOAD#短暫(約5RC)保持在LOW狀態,隨即會由R26的提升回到接近VCC。圖中最左邊的BJT開關陣列,接收來自燈號仲裁的信號,在每個燈號週期的最開始,使LOAD#短暫的保持在LOW狀態,完成給定秒數設定。

D[3:0] – D[3:0]值來自資料選擇方塊,可以預設74LS193計數器的值。但由於74LS193的計數是不斷循環的,若在下一個計數週期到來前未適時的給予LOAD#=LOW的信號,則會從15開始下數。

 

[方塊輸出]

Q[D:A] – 計數的輸出結果,根據D[3:0]給定的值,可做給定的值到0的下數計數。

ZERO_FLAG – 當計數由零要進入下一個循環時,產生一個LOW-HI-LOW的脈波。

TENTHS_EN – 由Q[D:A]加工而來的信號,其功能為判斷Q[D:A]的值是否大於9(1001B),如下列敘述:

 

QD AND (QC OR QB) = 1?

 

若為真,則Q大於9。

其結果與R_EN(紅燈致能信號)結合後,作為是否點亮七段顯示器十位數單元的判斷。 

 

 

e. 資料選擇

data_sel.jpg
這邊我使用74LS243來建構資料匯流排D[3:0]。74LS243為一四位元的匯流排收發器,透過GAB#及GBA來選擇資料流路徑。

 

74243.jpg

 在這個應用中,資料流路徑B->A是不存在的,因此將GBA接地。於是經由GAB#的控制,74LS243只剩下高阻抗及資料流A->B的狀態可選擇。

透過燈號仲裁迴路來指定U7~U9其中一條資料流路徑為A->B,其餘為高阻抗狀態。如此即可由使用者介面中的DIP SWITCH來設定計數器的初始值(紅/黃/綠 燈的秒數)。 

 

 

f. 七段顯示器驅動

g. 2位數七段顯示器

7-drv.jpg

七段顯示器的顯示我拆成兩個部分來實作,十位數以及個位數。 

個位數的部分,直接以74LS47(共陽七段顯示器驅動器)驅動。可以由上圖看到負責個位數的D1是由74LS47來控制,而負責十位數的D2則是永遠只會顯示”1”。 

十位數先以74LS83加法器預先處理輸入資料Q[D:A],若TENTHS_EN=HI,即Q[D:A]>9;則令B[3:0]=0110,即Q加上6,使Q在進入74LS47前轉換為BCD碼。目的是使個位數永遠顯示BCD碼,十位數永遠顯示”1”。 

結合R_EN#(紅燈致能)來決定是否提供二顆七段顯示器電源。以符合題目第三項功能:當紅燈亮時,能夠同時以兩位數顯示倒數計時至0秒。 

事實上這個設計還可以有這樣的變化:將計數器方塊中用來與TENTHS_EN合成的R_EN#與本區塊的R_EN#改為接VCC的話,可以做到在任何燈亮時都讀秒,這在除錯時非常好用。 

 

 

h. 燈號仲裁

JKFF.jpg

由於我們只需要實作一個路口的號誌,這邊我選用74LS76(J-K Flip-Flop)來構成環形計數器,若要製作四個路口或多時相號誌,也只要變更這個區塊的設計就可以了。

 

[方塊輸入]

ZERO_FLAG – 由計數器方塊產生的信號,作為此環形計數器的脈波。

 

[方塊輸出]

R_EN – 紅燈致能

R_EN# - 反相紅燈致能

G_EN – 綠燈致能

G_EN# - 反向綠燈致能

Y_EN – 黃燈致能

Y_EN# - 反向黃燈致能

 

環形計數器有以下的特性:

R_EN, G_EN, Y_EN的輸出始終是:

100 -> 010 -> 001 -> 100 ...循環

只看1的話,一個週期中只有一個燈號是On

 

R_EN#, G_EN#, Y_EN#的輸出始終是:

011 -> 101 -> 110 -> 011 ...循環

只看0的話,一個週期中只有一個燈號是On

 

 

i. 紅黃綠 LED燈號

led.jpg

以BJT來控制LED點亮與否,在上圖的組態中,X_EN=HI時,BJT及LED皆會導通,並以R限制流經LED的電流。

 

 

j. 喇叭模組

mi.jpg

音頻訊號源的部分,一樣使用LM555,透過改變R2的值來產生不同頻率的聲音。

 

我在這邊使用了三個音階,作為對應三個燈號的音源:

中央 DO - 261.63Hz,R2約為22.4KΩ

中央 MI – 329.63Hz,R2約為16.8KΩ

中央 SO – 392.00Hz,R2約為13.45KΩ

 

而這三個音階恰好可組成C大調,所以以後如果有要做和絃的電路,這個設計應該還是派得上用場,只是,這樣的聲音還是太單調了。

spk.jpg 

CD4051為一類比多工器,將燈號致能信號接到ABC,可選擇I/O 1,2,4,輸出至右側的I/O,再透過一BJT使電源直接供給喇叭電流,撥放出所選擇的DO/MI/SO音階。

 

贊助商連結:

 

[參考資料]

LM555 Datasheet

http://www.national.com/ds/LM/LM555.pdf

 

74LS193 Datasheet

http://www.datasheetcatalog.org/datasheets/90/248169_DS.pdf

 

74LS243 Datasheet

http://www.datasheetcatalog.org/datasheets/70/375525_DS.pdf

 

74LS74 Datasheet

http://www.datasheetcatalog.org/datasheets/70/375646_DS.pdf

 

74LS83 Datasheet

http://www.datasheetcatalog.org/datasheets/70/375716_DS.pdf

 

CD4051 Datasheet

http://www.oup.com/us/pdf/microcircuits/students/logic/cd4051-ti.pdf

 

555 計時器 - 頻率及周期計算器 (喬治查爾斯電子電路網)

http://gc.digitw.com/Program/NE555-CALC/555%20Timer%20Calculator.htm

 

音高 (維基百科,自由的百科全書)

http://zh.wikipedia.org/zh-tw/音高


arrow
arrow
    創作者介紹
    創作者 eeStuff 的頭像
    eeStuff

    eeStuff - All About Electronics Engineering

    eeStuff 發表在 痞客邦 留言(8) 人氣()