導航:首頁 > 操作系統 > 交通燈單片機控製程序

交通燈單片機控製程序

發布時間:2025-04-06 16:56:41

❶ 基於51單片機的交通燈控制設計

這個設計完了 可以在proteus下模擬的啊

可以交流

❷ 我在做一個單片機交通燈程序(c51),要求是控制一個十字路口的兩組紅綠燈,我用了8255晶元

給你一個思路:
假設是單純的紅綠燈,無黃燈的話,設紅燈30秒,綠燈30秒。需要兩個狀態量,
方向Dir(1:東西,0:南北),東西燈顏色LightcolorEW,南北燈顏色LightcolorNS。
此刻,東西方向亮紅燈,則Dir=1,LightcolorEW=red,LightcolorNS=green。對相應埠賦值即可。只需要東西方向與南北方向相反。
假設有黃燈,設紅燈30秒,綠燈25秒,黃燈5秒。此刻,東西方向亮紅燈,則Dir=1,LightcolorEW=red,前25秒LightcolorNS=green,後5秒LightcolorNS=yellow。由於新加入了綠燈轉黃燈,則要再加入一個狀態量,綠燈結束狀態,黃燈根據綠燈結束狀態啟動,計時結束轉紅燈。對相應埠賦值即可。只需要東西方向與南北方向相反。

❸ 求單片機交通燈控制系統設計的程序(最後有中文解析)

要求:
1、一路延時60S,
一路延時40S
(演示時為節省時間,一路延時15S,一路延時10S>>
兩路時間分別用不同的數碼管顯示;
--相同的,即可。
--比如:
--東西綠燈、南北紅燈,兩個方向的數字顯示,都是60s倒計時。
--東西紅燈、南北綠燈,兩個方向的數字顯示,都是40s倒計時。

--兩路時間雖然不同,數碼管顯示應該是相同的,完全可以用一組數碼管顯示。

2.緊急通行控制,如某一方向現為紅燈,通過按鍵強行切換為綠燈,而另一路改為紅燈,延時若干秒(10S)後,恢復原狀態(紅燈)繼續倒數
--不應恢復原狀態。
--比如:
--東西綠燈、南北紅燈,兩個方向的數字顯示,都是60s倒計時。

--在 59s 時,即僅僅剩下 1s 時,被強制轉換了紅綠燈。

--那麼 10s 後,再恢復原狀態 ?
--原狀態,僅僅有 1s,還恢復它干什麼 ?
--這時間,可能,都不夠汽車起步用的。

--恢復原來的半截狀態,顯然不合理。

❹ c51單片機控制交通燈要求用匯編語言

// 51單片機控制交通燈要求用匯編語言,模擬實例,可以參考一下

SNF EQU 00H ; 南北通行標志位

EWF EQU 01H ; 東西通行標志位

URF EQU 02H ; 緊急事件標志位

ORG 0000H

LJMP MAIN ; 上電轉主程序

ORG 000BH ; 定時中斷入口

LJMP DSZD

ORG 0003H ; 緊急中斷入口

LJMP URZD

ORG 0030H

MAIN: LCALL INIT ; 調用初始化子程序

LOOP: LCALL DIS ; 循環執行顯示子程序

AJMP LOOP

; *** *** *** 初始化程序

INIT: SETB SNF

SETB EWF

SETB URF

MOV R2,#20 ; 定時器中斷20次為1s

MOV TMOD,#01H ; 初始化定時器

MOV TL0,#0B0H

MOV TH0,#3CH

SETB EA ; 開定時中斷與緊急中斷

SETB ET0

SETB TR0

SETB EX0

SETB IT0 ; 設置中斷程式控制方式

MOV DPTR,#TAB ; 數值首地址放入DPTR中

MOV 40H,#40 ; 東南西北通行時間設置

MOV 41H,#40

MOV 30H,#40 ; 通行時間初始化

MOV 31H,#60

MOV P0,#4CH ; 初始化時南北通行並把交通燈狀態分別放在32H和33H中

MOV 32H,#4CH

MOV P2,#15H

MOV 33H,#15H

RET

; *** *** *** 顯示子程序

DIS: MOV P3,#0DFH ; 選中南北方向的十位數碼管

MOV A,30H ; 把顯示數據送人數碼管顯示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A ;

LCALL D1MS

MOV P3,#0EFH ; 選中南北方向的個位數碼管

MOV A,B ; 送入數碼管顯示

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#7FH ; 選中第東西方向的十位數碼管

MOV A,31H ; 送入數碼管顯示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#0BFH ; 選中第東西方向的個位數碼管

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

SETB P3.0

SETB P3.1

JNB P3.0,DIS_S ; 查詢是否第一個按鍵按下

JNB P3.1,DIS_E ; 查詢是否第二個按鍵按下

AJMP DIS_R ; 沒有鍵按下則返回

DIS_S:LCALL D5MS ; 按鍵去抖

JNB P3.0,DIS_SN

AJMP DIS_R

DIS_SN:MOV 40H,#50 ; 對通行時間從新分配,南北通行時間加長

MOV 41H,#30

AJMP DIS_R

DIS_E:LCALL D5MS ; 按鍵去抖

JNB P3.1,DIS_EW

AJMP DIS_R

DIS_EW:MOV 40H,#30 ; 東西通行時間加長

MOV 41H,#50

DIS_R:RET

; *** *** *** 定時中斷處理程序

DS_C: LJMP DS_R ; 接力跳轉

DSZD: PUSH ACC ; 保護現場

PUSH PSW

CLR TR0 ; 關定時器及中斷標志位並重新賦值

CLR TF0

MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R2,DS_C ; 判斷1m時間是否到達

MOV R2,#20 ; 到達重新賦值

DEC 30H ; 南北方向通行時間減一

MOV A,30H ; 把減一後的時間送入顯示存儲單元

; *** *** *** 南北通行到達最後4秒時黃燈閃爍

DS_10:CJNE A,#4,DS_11 ; 如果通行時間剩餘4秒

JNB SNF,DS_11 ; 判斷是否是南北通行

MOV P0,#8AH

MOV 32H, #8AH ; 把交通燈狀態存入存儲單元(後面類似)

DS_11:CJNE A,#3,DS_12 ; 不是剩餘3秒,返回

JNB SNF,DS_12 ; 不是南北通行時間,返回

MOV P0,#88H

MOV 32H, #88H

DS_12:CJNE A,#2,DS_13

JNB SNF,DS_13

MOV P0,#8AH

MOV 32H, #8AH

DS_13:CJNE A,#1,DS_14

JNB SNF,DS_14

MOV P0,#88H

MOV 32H, #88H

; *** *** ***

DS_14:JNZ DS_NE ; 通行時間沒有結束轉向改變東西方向的數碼管

CPL SNF ; 如果通行時間結束則對標志位取反

JNB SNF,DS_1 ; 判斷是否南北通行

MOV 30H,40H ; 是,點亮相應的交通燈

MOV P0,#4CH

MOV 32H,#4CH ; 存儲交通燈狀態

MOV P2,#15H

MOV 33H, #15H ; 存儲交通燈狀態

DS_NE:DEC 31H ; 東西方向通行時間減一

MOV A,31H ; 把通行剩餘時間送入顯示存儲單元

; *** *** *** 東西方向通行時間剩餘4秒鍾黃燈閃爍(程序注釋與南北方向類似 略)

DS_20:CJNE A,#4,DS_21

JB EWF,DS_21

MOV P0,#51H

MOV 32H, #51H

DS_21:CJNE A,#3,DS_22

JB EWF,DS_22

MOV P0,#41H

MOV 32H, #41H

DS_22:CJNE A,#2,DS_23

JB EWF,DS_23

MOV P0,#51H

MOV 32H, #51H

DS_23:CJNE A,#1,DS_24

JB EWF,DS_24

MOV P0,#41H

MOV 32H, #41H

; *** *** ***

DS_24:JNZ DS_R ; 東西方向時間沒有結束,返回

CPL EWF ; 對通行狀態取反

JNB EWF,DS_2 ; 東西方向通行時間到來,跳轉

MOV 31H,#80 ; 東西方向通行結束,重新顯示時間

MOV P0,#89H ; 點亮相應的交通燈

MOV 32H, #89H

MOV P2,#29H

MOV 33H, #29H

AJMP DS_R

DS_1: MOV 30H,#80 ; 南北通行時間結束,重新對顯示存儲單元賦值

MOV P0,#89H ; 執行轉彎狀態1

MOV 32H, #89H

MOV P2,#26H

MOV 33H, #26H

AJMP DS_NE

DS_2: MOV 31H,41H ; 東西方向開始通行,賦值予顯示存儲單元

MOV P0,#61H ; 點亮相應的交通燈

MOV 32H, #61H

MOV P2,#15H

MOV 33H, #15H

DS_R: SETB TR0

POP PSW ; 恢復現場

POP ACC

RETI

; *** *** *** 緊急中斷處理程序

URZD: PUSH ACC ; 保護現場

PUSH PSW

CLR IE0 ; 清除中斷標志位

CLR TR0 ; 關定時器

CPL URF ; 緊急事件標志位

JB URF,UR_CON ; 緊急結束;跳轉

MOV P0,#49H ; 各路口燈全顯示紅燈亮

MOV P2,#15H

AJMP UR_R

UR_CON:SETB TR0 ; 恢復正常交通

MOV A,32H

MOV P0,A

MOV A,33H

MOV P2,A

UR_R: POP PSW ; 恢復現場

POP ACC

RETI

; *** *** *** 查表指令0,1,2,3,4,5,6,7,8,9

TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH

DB 7DH, 07H, 7FH, 6FH

; *** *** *** 延時5ms與1ms

D5MS: MOV R7,#5

D1MS: MOV R7,#10

MOV R6,#50

L1: DJNZ R6,$

DJNZ R7,L1

RET

閱讀全文

與交通燈單片機控製程序相關的資料

熱點內容
lombok程序員 瀏覽:912
md的命令 瀏覽:449
發型p圖素材哪個app可以 瀏覽:791
彈性雲伺服器價格表 瀏覽:387
有關三生三世番外的小說在哪個app 瀏覽:374
cmd打開伺服器地址 瀏覽:387
思域壓縮機型號 瀏覽:859
文件加密轉移 瀏覽:184
3d中的ffd命令點不上 瀏覽:904
球面怎麼編程序 瀏覽:798
怎麼給電腦安裝伺服器系統 瀏覽:124
ndklinux環境配置 瀏覽:947
php圖片壓縮網站源碼 瀏覽:4
安卓虛擬機停止是什麼問題 瀏覽:974
真空壓縮袋破了 瀏覽:603
學做甜品的app哪個好 瀏覽:273
伺服器上網卡為什麼有4個介面 瀏覽:599
小雞答題是哪個app 瀏覽:67
淘寶坑位產出演算法 瀏覽:231
fleury演算法中的橋怎麼判斷 瀏覽:322