微控制器控制交通燈報告

2022-09-29 11:15:07 字數 4116 閱讀 3581

4.2.3 系統工作原理

(1)開關鍵盤輸入交通燈初始時間,通過8051微控制器p1輸入到系統

(2) 由8051微控制器的定時器每秒鐘通過p0口向8255的資料口送資訊,由8255的pa 口顯示紅、綠、黃燈的燃亮情況;由8255的pc口顯示每個燈的燃亮時間。

(3)8051通過設定各個訊號燈的燃亮時間、通過8051設定,綠、紅時間分別為60秒、80秒迴圈由8051的 p0口向8255的資料口輸出。

(4)通過8051微控制器的p3.0位來控制系統是工作或設定初值,當它為0就對系統進行初始化,為1系統就開始工作。

(5)紅燈倒計時時間,當有車輛闖紅燈時,啟動蜂鳴器進行報警,3s後然後恢復正常。

(6)增加每次綠燈時間車流量檢測的功能,並且通過查詢p2.0埠的電平是否為低,開關按下為低電平,雙位數碼管顯示車流量,直到下一次綠燈時間重新記入。

(7)綠燈時間倒計時完畢,重新迴圈。

5.控制器的軟體設計

5.1每秒鐘的設定

延時方法可以有兩種一中是利用mcs-51內部定時器才生溢位中斷來確定1秒的時間,另一種是採用軟延時的方法。

5.2計數器硬體延時

5.2.1 計數器初值計算

定時器工作時必須給計數器送計數器初值,這個值是送到th和tl中的。他是以加法記數的,並能從全1到全0時自動產生溢位中斷請求。因此,我們可以把計數器記滿為零所需的計數值設定為c和計數初值設定為tc 可得到如下計算通式:

tc=m-c

式中,m為計數器摸值,該值和計數器工作方式有關。在方式0時m為213 ;在方式1時m的值為216;在方式2和3為28

5.2.2 計算公式

t=(m-tc)t計數

或tc=m-t/t計數

t計數是微控制器時鐘週期tclk的12倍;tc為定時初值

如微控制器的主脈衝頻率為經過12分頻

方式213 *1微秒=8.192毫秒

方式216 *1微秒=65.536毫秒

顯然1秒鐘已經超過了計數器的最大定時間,所以我們只有採用定時器和軟體相結合的辦法才能解決這個問題.

5.2.3 1秒的方法

我們採用在主程式中設定乙個初值為20的軟體計數器和使t0定時50毫秒.這樣每當t0到50毫秒時cpu就響應它的溢位中斷請求,進入他的中斷服務子程式。在中斷服務子程式中,cpu先使軟體計數器減1,然後判斷它是否為零。為零表示1秒已到可以返回到輸出時間顯示程式。

5.2.4相應程式**

(1)主程式

定時器需定時50毫秒,故t0工作於方式1。 初值:

t計數 =216 -50ms/1us=15536=3cboh

org 1000h

start: mov tmod, #01h ; 令to為定時器方式1

mov th0, #3ch ;裝入定時器初值

mov tl0, #boh  ;

mov ie,   #82h ;開t0中斷

sebt  tro       ;啟動t0計數器

mov  ro,  #14h   ;軟體計數器賦初值

loop: sjmp等待中斷

(2)中斷服務子程式

brto:djnz r0,next

ajmp time ; 跳轉到時間及訊號燈顯示子程式

djnz恢復r0值

mov th0, #3ch ;重裝入定時器初值

mov tl0, #boh  ;

mov ie,   #82h

end5.3 軟體延時

mcs-51的工作頻率為2-12mhz,我們選用的8031微控制器的工作頻率為6mhz。機器週期與主頻有關,機器週期是主頻的12倍,所以乙個機器週期的時間為12*(1/6m)=2us。我們可以知道具體每條指令的週期數,這樣我們就可以通過指令的執行條數來確定1秒的時間。

具體的延時程式分析:

delay:mov r4,#08h 延時1秒子程式

de2:lcall delay1

djnz r4,de2

retdelay1:mov r6,#0 延時125ms 子程式

mov r5,#0

de1: djnz r5,$

djnz r6,de1

retmov rn,#data 位元組數數為2 機器週期數為1

所以此指令的執行時間為2ms

delay1 為乙個雙重循壞迴圈次數為256*256=65536 所以延時時間=65536*2=131072us 約為125us

delay r4設定的初值為8 主延時程式迴圈8次,所以125us*8= 1秒

由於微控制器的執行速度很快其他的指令執行時間可以忽略不計。

5.4 時間及訊號燈的顯示

5.4.1 8051並行口的擴充套件

8051雖然有4個8位i/o埠,但真正能提供借用的只有p1口,因為p2和p0口通常用於傳送外部傳送位址和資料,p3口也有它的第二功能。因此,8031通常需要擴充套件。由於我們用外部輸入設定紅綠燈倒計時初值、數碼管的輸出顯示、紅綠黃訊號燈的顯示都要用到乙個i/o埠,顯然8031的埠是不夠,需要擴充套件。

擴充套件的方法有兩種:(1)借用外部ram位址來擴充套件i/o埠;(2)採用i/o介面新片來擴充。我們用8255並行介面信片來擴充套件i/o埠。

5.4.2顯示原理:

當定時器定時為1秒,時程式跳轉到時間顯示及訊號燈顯示子程式,它將依次顯示訊號燈時間 ,同時一直顯示訊號燈的顏色,這時在返回定時子程式定時一秒,在顯示黃燈的下乙個時間,這樣依次把所有的燈色的時間顯示完後在重新給時間計數器賦初值 ,重新進入迴圈。

5.4.3 8255pa口輸出訊號接訊號燈:

由於發光二極體為共陽極接法,輸出埠為低電平,對應的二極體發光,所以可以用置位方法點亮紅,綠,黃發光二極體。

5.4.4 8255輸出訊號與數碼管的連線:

led 燈的顯示原理:通過同名管腳上所加電平的高低來控制發光二極體是否點量而顯示不同的字形如 sp,g,f,e,d,c,b,a 管角上加上7fh所以 sp上為0伏,不亮其餘為ttl高電平,全亮則顯示為8

採用共陰級連線:

其中 pc0\pb0-a,

pc1\pb1-b,

pc2\pb2-c,

pc3\pb3-d,

pc4\pb4-e,

pc5\pb5-f,

pc6\pb6-g

pc7\pb7 -sp接地

表 3 驅動**表

5.4.5 8255與8051的連線:

用8051的p0 口的 p0.7 連線8255的片選訊號cs 我們用8031的位址採用全解碼方式,當p0.7 =0 時片選有效, 其他無效, p0.

1 p0.1 用於選擇8255埠

p0.7 p0.6 p0.5 p0.4 p0.3 p0.2 p0.1 p0.0

a7 a6 a5 a4 a3 a2 a1 a0

1 x x x x x 0 0 00h為8255 的pa口

1 x x x x x 0 1 01h 為8255的pb口

1 x x x x x 1 0 02h 為8255的pc口

1 x x x x x 1 1 03h 為8255的控制口

由於8051是分時對8255和儲存器進行訪問所以8051的p0口不會發生衝突

5.5 程式設計

5.5.1流程圖如圖所示

圖8圖9 程式流程圖

5.5.2 程式源**

org 0000h主程式的入口位址

ljmp main跳轉到主程式的開始處

org 0003h外部中斷0的中斷程式入口位址

org 000bh定時器0的中斷程式入口位址

ljmp t0_int ;跳轉到中斷服務程式處

org 0013h外部中斷1的中斷程式入口位址

main : mov sp,#50h

mov ie,#8eh ;cpu開中斷,允許t0中斷,t1中斷和外部中斷1中斷

mov tmod,#51h ;設定t1為計數方式,t0為定時方式,且都工作於模式1

mov th1,#00h ;t1計數器清零

mov tl1,#00h

setb tr1啟動t1計時器

微控制器交通燈實驗報告

一 實驗原理 通過微控制器控制74ls273的狀態,然後再由138選通273,通過控制74ls240間接控制交通燈的變化。其中用到的雙色二極體的亮燈原則是 當紅燈接高電平,綠燈接地電平時,亮紅燈 當紅燈接地電平,綠燈接地電平是,亮綠燈 當都接高電平時,亮黃燈。二 硬體連線圖 三 軟體流程圖 四 軟體...

交通燈微控制器實訓報告

交通燈控制電路設計 由一條主幹道和一條支幹道的匯合點形成十字交叉路口,為確保車輛安全 迅速地通行,在交叉路口的每個入口處設定了紅 綠 黃三色訊號燈。紅燈亮禁止通行 綠燈亮允許通行 黃燈亮則給行駛中的車輛有時間停靠在禁行線外。實現紅 綠燈的自動指揮對城市交通管理現代化有著重要的意義。一 設計目的 1....

微控制器課程設計交通燈

摘要隨著各種交通工具的發展和交通指揮的需要,第一盞名副其實的三色燈 紅 黃 綠三種標誌 於1918年誕生。它是三色圓形四面投影器,被安裝在紐約市五號街的一座高塔上,由於它的誕生,使城市交通大為改善。中國最早的馬路紅綠燈,是於1928年出現在上海的英租界。隨著經濟的高速發展,各種交通工具都迅速發展。所...