導航:首頁 > 操作系統 > 單片機交通燈控制的設計

單片機交通燈控制的設計

發布時間:2023-03-12 07:38:25

1. 單片機控制的交通燈

題目 交通燈控制系統的設計 一、課程設計的目的與要求 1、課程設計目的: (1)進一步理解和消化書本知識,運用所學知識和技能進行簡單的設計。 (2)通過課程設計提高應用能力,分析問題和解決問題的能力。 (3)培養查閱資料的習慣,訓練和提高自學,獨立思考的能力。 2、課程設計要求 交通燈控制系統的設計 1) 掌握在單片機系統中擴展簡單I/O介面的方法。 2) 掌握數據輸出程序的設計方法。 3) 掌握模擬交通燈控制的實現方法。 4) 掌握外部中斷技術的基本使用方法。 5) 掌握中斷處理程序的編程方法。 從課程設計的目的出發,通過設計工作的各個環節,達到以下要求: (1)能夠正確理解課程設計的題目和意義,全面思考問題。 (2)運用科學合理的方法,認真按時完成。 二、課程設計課題的分析 1、電路的設計 1)原理 要完成本實驗,首先必須了解交通燈的亮滅規律。本實驗需要用到試驗箱上八個發光二極體中的六個,即紅、綠、黃各兩個。將L1(紅)、L2(綠)、L3(黃)作為東西方向的指示燈,將L5(紅)、L6(綠)、L7(黃)作為南北方向的指示燈。交通燈的亮滅規律為:初始態是兩個路口的紅燈全亮,之後,東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車,延時一段時間後,東西路口綠燈滅,黃燈開始閃爍。閃爍若干次後,東西路口紅燈亮,而同時南北路口的綠燈亮,南北方向開始通車,延時一段時間後,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次後,再切換到東西路口方向,重復上述過程。 各發光二極體的陽極通過保護電阻接到+5V的電源上,陰極接到輸入端上,因此使其點亮使相應使相應輸入端為低電平。 當有急救車到達時,兩個方向上的紅燈亮,以便讓急救車通過,假設急救車通過路口的時間為10秒,急救車通過後,交通燈恢復中斷前的狀態。本程序以單次脈沖為中斷申請,表示有急救車通過,單次脈沖輸出端P-接CPU板上的INT0。 2)、硬體電路圖 圖1—1 交通燈控制系統的硬體接線圖 74LS273的輸出00—07接發光二極體L1—L8,74LS273的片選CS273接片選信號CS2,此時74LS273的片選地址為CFA0—CFA7之間任選。 3)、程序流程圖 主程序流程 圖1—2 主程序軟體流程圖 中斷程序流程圖 三、課程設計的結果 1、程序 NAME JIAOTONGGENG OUTPORT EQU 0CFB0H ;埠地址 SAVE EQU 55H ;SAVE保存從埠CFA0輸出的數據 CSEG AT 0000H LJMP START CSEG AT 4003H LJMP INT CSEG AT 4100H START: SETB IT0 ;中斷程序初始化 SETB EX0 SETB EA MOV A,#11H ;置首顯示碼,兩紅燈全亮 MOV SAVE,A ;保存 ACALL DISP ;顯示輸出 ACALL DE3S ;延時3秒 LLL: MOV A,#12H ;東西路口綠燈亮,南北路口紅燈亮 MOV SAVE,A ACALL DISP ACALL DE10S ;延時10秒 MOV A,#10H ;東西路口綠燈滅 MOV SAVE,A ACALL DISP MOV R2,#05H ;東西路口黃燈閃爍5次 TTT: MOV A,#14H MOV SAVE,A ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#10H MOV SAVE,A ACALL DISP ACALL DE02S DJNZ R2,TTT MOV A,#11H ;紅燈全亮 MOV SAVE,A ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#21H ;東西路口紅燈亮,南北路口綠燈亮 MOV SAVE,A ACALL DISP ACALL DE10S ;延時10秒 MOV A,#01H ;南北路口綠燈滅 MOV SAVE,A ACALL DISP MOV R2

2. 單片機交通燈畢業設計

單片機交通燈畢業設計

在日常生活中,交通燈是一項必不可少的公共設施,可以維護道路的暢通和交通的秩序。如若交通燈發生故障,那麼後果可想而知。因此,交通燈的正常工作就顯得尤為重要。由於交通燈對於公共安全的重要性,本文基於51單片機模擬雙向交通燈的設計。下面是我整理的單片機交通燈畢業設計,歡迎來參考!

一、交通燈的設計要求

雙向交通燈紅、黃、綠燈對應相同,紅燈5s,黃燈1s,綠燈5s。當有急救車到達時,雙向交通信號為全紅,以便讓急救車通過。假定急救車通過路口時間為10s,急救車通過後,交通燈恢復中斷前狀態。

二、AT89C51單片機的中斷系統介紹

計算機系統中止當前的正常工作,轉入處理突發事件,等到突發事件處理完畢之後,再回到原來被中斷的地方,繼續原來的工作,這樣的整個過程稱為中斷。能夠實現這種功能的.部件稱為中斷系統。產生中斷請求的事件稱為中斷源。其中AT89C51單片機具有5個中斷源,在本次設計中我們採用的是外部事情中斷請求源0,以及T1計數溢出事情中斷請求這兩個中斷源。

三、AT89C51單片機的定時/計數器介紹

在單片機中,通常計數器和定時器設計成一個部件――計數器,當計數脈沖的周期一定時,計數器就作為定時器,定時時間就是計數器計數次數和計數脈沖周期的乘積。在此我們採用的就是計數器的這個定時功能。

四、交通燈的硬體電路搭建

本次設計的硬體電路搭建如圖1。兩路交通燈的6個燈依次接在51單片機P1口的P1.0到P1.5,另外在單片機的P3.2口接一個按壓式開關作為救護車到來時的中斷源。

五、交通燈的軟體編程設計

中斷部分的程序設計。首先,應將51單片機中中斷允許寄存器IE的EA位設為1,這代表允許中斷源向CPU申請中斷,即CPU開放中斷。同時將IE的EX0位設為1,這代表允許外中斷0向CPU申請中斷。這樣的話,當救護車來的時候,可以藉此發出中斷請求。接下來,應將定時器控制寄存器TCON的IT0位設為1,這代表外部中斷0的觸發方式選擇為邊沿觸發方式。由於筆者採用了按壓式的開關作為中斷的發出方式,這樣會產生一個脈沖,因此應當選擇邊沿觸發方式。定時部分的程序設計。首先,應將控制寄存器TCON的TR1位置1,啟動定時器T1計數。接下來,應將方式寄存器TMOD的值設為0x01,使得定時器T1工作在方式1,即16位定時/計數方式。然後,由於計時器的定時周期是1s,筆者使用定時/計數器T1精確定時50ms,則20次50ms中斷時,定時時間就是1s。在定時器中斷部分,筆者採用的是查詢方式,即CPU不斷查詢TF1的狀態,當TF1為1時,表示50ms定時已到,在主程序中判斷是否20次50ms定時已到,如是,則時間恰好為1s。同時TF1位軟體清0。根據公式,當定時時間為50ms時,計數初值應為15536,換算成十六進制是3CB0H,即計數器T1中TL1的初值為B0H;TH0的初值為3CH。當救護車到來時,雙向交通燈置紅,即將雙向交通燈的紅燈所對應的P1口位置1,其他位清0即可。時間長短的設置方法同上。最後,由於雙向交通燈紅燈5s,黃燈1s,綠燈5s,共11個狀態,我們利用switch語句為這11個狀態分別設置相應P1口的值,再利用一個循環即可。

六、結語

在機動車數量激增的今天,車輛擁堵、交通崩潰的現象還是時有發生的。其原因多半是交通燈時長設置的不合理,抑或無法根據一天之內不同時間的車流狀況,對交通燈的狀態進行調整。因此,合理地設計交通系統,同時對於交通燈的適當調試無疑將會派上很大用場。

;

3. 用單片機模擬控制交通燈

到網路文庫中找找,參考論文也比較多。你也可到「淘寶網」上找找:「51單片機交通燈控制系統C語言設計源程序送模擬圖」,有現成的,有實物圖、模擬、原理圖、源程序等,這款交通燈有以下功能。
1. 系統除基本交通燈功能外;
2. 還具有倒計時、顯示時間設置;
3. 緊急情況處理、LED信息顯示;
4. 時間可以根據具體情況手動控制等功能。

4. 單片機控制交通燈

ORG 0000H
STA: MOV P0,#11011011B ;干線亮綠燈,支線亮紅燈
MOV P2,#0001000B ;選通LED

MOV P3,#11101111B ;K1列線置0
MOV R7,#3
STA1: JB P3.3,$ ;無按鍵等待
LCALL DELAY30MS ;去抖動
JB P3.3,STA1
JNB P3.3,$ ;等鍵釋放
DJNZ R7,STA1
MOV R6,#200
STA2: LCALL DELAY30MS ;延時30MS
DJNZ R6,STA2 ;延時6秒
MOV P0,#10111011B ;干線亮黃燈,支線亮紅燈
MoV R6,#100
STA3: LCALL DELAY30MS
DJNZ R6,STA3 ;延時3秒
MOV P0,#01111110B ;干線亮紅燈,支線亮綠燈
MOV R5,#4
STA4: MOV R6,#200
STA5: LCALL DELAY30MS
DJNZ R6,STA5
DJNZ R5,STA4 ;延時24秒
MOV P0,#01111101B ;干線亮綠燈,支線亮黃燈
MOV R6,#100
STA6: LCALL DELAY30MS
DJNZ R6,STA6 ;延時3秒
LJMP STA
DELAY30MS:MOV R4,#55
DELAY:MOV R3,#250
DJNZ R3,$ ;1.085us(指令周期)*2*250+2=547.5us
DJNZ R4,DELAY

5. 交通燈的單片機設計

哥們啊你是不是做畢業設計啊,那還不自己好好做啊,這個作出來很有用啊,這個既不需要擴展口,真的很簡單啊,好好做吧,給你個圖看看吧,基本上就是這個電路就行了啊

程序也很簡單,用定時器就好了啊,中斷也用的到,加油啦,支持你,Myfriends!!!(這個圖中用了8個LED,做交通燈再加上4個就行了,口也夠)

6. 單片機交通燈課程設計

/*****************************************************

十字路口交通燈控制C程序

******************************************************/

#defineucharunsignedchar

#defineuintunsignedint

#include<reg52.h>

/*****定義控制位**********************/

sbit Time_Show_LED2=P2^5;//Time_Show_LED2控制位

sbit Time_Show_LED1=P2^4;//Time_Show_LED1控制位

sbitEW_LED2=P2^3;//EW_LED2控制位

sbitEW_LED1=P2^2;//EW_LED1控制位

sbitSN_LED2=P2^1;//SN_LED2控制位

sbitSN_LED1=P2^0;//SN_LED1控制位

sbit SN_Yellow=P1^6;//SN黃燈

sbit EW_Yellow=P1^2;//EW黃燈

sbit EW_Red=P1^3;//EW紅燈

sbit SN_Red=P1^7;//SN紅燈

sbit EW_ManGreen=P3^0;//EW人行道綠燈

sbit SN_ManGreen=P3^1;//SN人行道綠燈

sbit Special_LED=P2^6;//交通正常指示燈

sbit Busy_LED=P2^7;//交通繁忙指示燈

sbit Nomor_Button=P3^5;//交通正常按鍵

sbit Busy_Btton=P3^6;//交通繁忙按鍵

sbit Special_Btton=P3^7;//交通特殊按鍵

sbit Add_Button=P3^3;//時間加

sbit Reces_Button=P3^4;//時間減

bit Flag_SN_Yellow;//SN黃燈標志位

bit Flag_EW_Yellow;//EW黃燈標志位

charTime_EW;//東西方向倒計時單元

charTime_SN;//南北方向倒計時單元

ucharEW=60,SN=40,EWL=19,SNL=19;//程序初始化賦值,正常模式

ucharEW1=60,SN1=40,EWL1=19,SNL1=19;//用於存放修改值的變數

ucharcodetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段選碼

ucharcodeS[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信號燈控制代碼

/**********************延時子程序************************/

voidDelay(uchara)

{

uchari;

i=a;

while(i--){;}

}

/*****************顯示子函數**************************/

voidDisplay(void)

{

charh,l;

h=Time_EW/10;

l=Time_EW%10;

P0=table[l];

EW_LED2=1;

Delay(2);

EW_LED2=0;

P0=table[h];

EW_LED1=1;

Delay(2);

EW_LED1=0;

h=Time_SN/10;

l=Time_SN%10;

P0=table[l];

SN_LED2=1;

Delay(2);

SN_LED2=0;

P0=table[h];

SN_LED1=1;

Delay(2);

SN_LED1=0;

h=EW1/10;

l=EW1%10;

P0=table[l];

Time_Show_LED1=1;

Delay(2);

Time_Show_LED1=0;

P0=table[h];

Time_Show_LED2=1;

Delay(2);

Time_Show_LED2=0;

}

/**********************外部0中斷服務程序************************/

voidEXINT0(void)interrupt0using1

{

EX0=0;//關中斷

if(Add_Button==0)//時間加

{

EW1+=5;

SN1+=5;

if(EW1>=100)

{

EW1=99;

SN1=79;

}

}

if(Reces_Button==0)//時間減

{

EW1-=5;

SN1-=5;

if(EW1<=40)

{

EW1=40;

SN1=20;

}

}

if(Nomor_Button==0)//測試按鍵是否按下,按下為正常狀態

{

EW1=60;

SN1=40;

EWL1=19;

SNL1=19;

Busy_LED=0;//關繁忙信號燈

Special_LED=0;//關特殊信號燈

}

if(Busy_Btton==0)//測試按鍵是否按下,按下為繁忙狀態

{

EW1=45;

SN1=30;

EWL1=14;

SNL1=14;

Special_LED=0;//關特殊信號燈

Busy_LED=1;//開繁忙信號燈

}

if(Special_Btton==0)//測試按鍵是否按下,按下為特殊狀態

{

EW1=75;

SN1=55;

EWL1=19;

SNL1=19;

Busy_LED=0;//關繁忙信號燈

Special_LED=1;//開特殊信號燈

}

EX0=1;//開中斷

}

/**********************T0中斷服務程序*******************/

voidtimer0(void)interrupt1using1

{

staticucharcount;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==10)

{

if(Flag_SN_Yellow==1)//測試南北黃燈標志位

{SN_Yellow=~SN_Yellow;}

if(Flag_EW_Yellow==1) //測試東西黃燈標志位

{EW_Yellow=~EW_Yellow;}

}

if(count==20)

{

Time_EW--;

Time_SN--;

if(Flag_SN_Yellow==1)//測試南北黃燈標志位

{SN_Yellow=~SN_Yellow;}

if(Flag_EW_Yellow==1)//測試東西黃燈標志位

{EW_Yellow=~EW_Yellow;}

count=0;

}

}

/*********************主程序開始**********************/

voidmain(void)

{

Busy_LED=0;

Special_LED=0;

IT0=1;//INT0負跳變觸發

TMOD=0x01;//定時器工作於方式1

TH0=(65536-50000)/256;//定時器賦初值

TL0=(65536-50000)%256;

EA=1;//CPU開中斷總允許

ET0=1;//開定時中斷

EX0=1;//開外部INTO中斷

TR0=1;//啟動定時

while(1)

{/*******S0狀態**********/

EW_ManGreen=0;//EW人行道禁止

SN_ManGreen=1;//SN人行道通行

Flag_EW_Yellow=0; //EW關黃燈顯示信號

Time_EW=EW;

Time_SN=SN;

while(Time_SN>=5)

{P1=S[0];//SN通行,EW紅燈

Display();}

/*******S1狀態**********/

P1=0x00;

while(Time_SN>=0)

{Flag_SN_Yellow=1;//SN開黃燈信號位

EW_Red=1; //SN黃燈亮,等待左拐信號,EW紅燈

Display();

}

/*******S2狀態**********/

Flag_SN_Yellow=0;//SN關黃燈顯示信號

Time_SN=SNL;

while(Time_SN>=5)

{P1=S[2];//SN左拐綠燈亮,EW紅燈

Display();}

/*******S3狀態**********/

P1=0x00;

while(Time_SN>=0)

{Flag_SN_Yellow=1;//SN開黃燈信號位

EW_Red=1; //SN黃燈亮,等待停止信號,EW紅燈

Display();}

/***********賦值**********/

EW=EW1;

SN=SN1;

EWL=EWL1;

SNL=SNL1;

/*******S4狀態**********/

EW_ManGreen=~EW_ManGreen;//EW人行道通行

SN_ManGreen=~SN_ManGreen;//SN人行道禁止

Flag_SN_Yellow=0; //SN關黃燈顯示信號

Time_EW=SN;

Time_SN=EW;

while(Time_EW>=5)

{P1=S[4];//EW通行,SN紅燈

Display();}

/*******S5狀態**********/

P1=0X00;

while(Time_EW>=0)

{Flag_EW_Yellow=1;//EW開黃燈信號位

SN_Red=1;//EW黃燈亮,等待左拐信號,SN紅燈

Display();}

/*******S6狀態**********/

Flag_EW_Yellow=0; //EW關黃燈顯示信號

Time_EW=EWL;

while(Time_EW>=5)

{P1=S[6];//EW左拐綠燈亮,SN紅燈

Display();}

/*******S7狀態**********/

P1=0X00;

while(Time_EW>=0)

{Flag_EW_Yellow=1;//EN開黃燈信號位

SN_Red=1;//EW黃燈亮,等待停止信號,SN紅燈

Display();}

/***********賦值**********/

EW=EW1;

SN=SN1;

EWL=EWL1;

SNL=SNL1;

}

}

7. 單片機課程設計:交通燈控制!

我給你發一個看看,是protues的模擬電路圖,可以運行看效果,還有keil的匯編程序,有郵箱給你發去
我給你發了啊!!!下邊是程序:
org 0000h
sjmp main
org 0030h
main: mov p0,#11101110b
acall del1
acall del1
acall del1
acall mmm
mov p0,#11011011b
acall del1
acall del1
mov p0,#11110101b
lcall del1
acall del1
acall del1
acall mmm
sjmp main
del1:mov r0,#0ffh
loop1:mov r1,#0ffh
loop2:djnz r1,loop2
djnz r0,loop1
ret
mmm:mov p1,#0ffh
mov p2,#0ffh
mov r3,#02h
mmm2:mov p1,r3
mov r2,#09h
mmm1:mov p2,r2
acall del1
acall del1
djnz r2,mmm1
djnz r3,mmm2
mov p1,r3
mov r2,#09h
mmm3: mov p2,r2
acall del1
acall del1
djnz r2,mmm3
ret
end

8. 單片機控制交通燈

ORG 0000H
LJMP START
ORG 0040H
START:
MOV SP,#60H
LCALL STATUS0 ;初始狀態(都是紅燈)
CIRCLE:
LCALL STATUS1 ;南北綠燈,東西紅燈
LCALL STATUS2 ;南北綠燈閃轉黃燈,東西紅燈
LCALL STATUS3 ;南北紅燈,東西綠燈
LCALL STATUS4 ;南北紅燈,東西綠燈閃轉黃燈
LJMP CIRCLE
STATUS0: ;南北紅燈,東西紅燈
MOV DPTR,#8300H
MOV A,#0FH
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
RET
STATUS1: ;南北綠燈,東西紅燈
MOV DPTR,#08300H
MOV A,#96H ;南北綠燈,東西紅燈
MOVX @DPTR,A
MOV R2,#200 ;延時20秒
LCALL DELAY
RET
STATUS2: ;南北綠燈閃轉黃燈,東西紅燈
MOV DPTR,#8300H
MOV R3,#03H ;綠燈閃3次
FLASH:
MOV A,#9FH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#96H
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH
MOV A,#06H ;南北黃燈,東西紅燈
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
RET
STATUS3: ;南北紅燈,東西綠燈
MOV DPTR,#8300H
MOV A,#69H
MOVX @DPTR,A
MOV R2,#200 ;延時20秒
LCALL DELAY
RET
STATUS4: ;南北紅燈,東西綠燈閃轉黃燈
MOV DPTR,#8300H
MOV R3,#03H ;綠燈閃3次
FLASH1:
MOV A,#6FH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#69H
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH1
MOV A,#09H ;南北紅燈,東西黃燈
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
NOP
RET
DELAY: ;延時子程序
PUSH 2
PUSH 1
PUSH 0
DELAY1:
MOV 1,#00H
DELAY2:
MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2;延時 100 mS
DJNZ 2,DELAY1
POP 0
POP 1
POP 2
RET
END
沒有問題。

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

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

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

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

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

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

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

閱讀全文

與單片機交通燈控制的設計相關的資料

熱點內容
單片機的反向編譯 瀏覽:463
subsample演算法 瀏覽:899
蘋果免費看書app哪個最好 瀏覽:885
c語言加密怎麼弄 瀏覽:840
c語言編譯的錯誤提示 瀏覽:767
驗機蘋果app哪個最好 瀏覽:666
光遇國際服安卓如何購買禮包 瀏覽:55
163app怎麼下載 瀏覽:245
電腦程序員下場 瀏覽:45
編譯原理ll1文法判斷 瀏覽:727
qt用vs2015編譯 瀏覽:551
結婚日子最好的演算法 瀏覽:794
安卓怎麼把數據傳到蘋果里 瀏覽:504
編譯器標識 瀏覽:790
編程珠璣第三章 瀏覽:785
windows如何開啟tftp伺服器 瀏覽:110
歐姆龍plc編程指令表 瀏覽:189
程序員遠程收入不穩定 瀏覽:863
演算法原理怎麼寫 瀏覽:470
有個動漫女主藍頭發是程序員 瀏覽:1001