㈠ 基於單片機的簡易交通信號燈模擬控制系統設計
我在網上看到一份 製作精美的單片機交通燈 資料比較齊全,還有模擬,模擬能實現的功能做出的實物都能實現,由AT89C51/52單片機、LED倒計時顯示、按鍵電路等組成,具有通行時間手動設置、可倒計時顯示、急車強行通過、夜間模式等處理等相關功能。
㈡ 單片機設計:定時交通信號燈控制
ORG 1000H
MAIN: MOV P1,#33H ;A線放行,B線禁行
MOV R7,#19H ;延時秒數
MAIN1: LCALL DELAY ;1s延時子程序
DJNZ R7,MAIN1
MOV P1,#35H ;A線警告,B線禁行
MOV R7,#05H ;延時數秒
MAIN2: LCALL DELAY ;1s延時子程序
DJNZ R7,MAIN2
MOV P1,#1EH ;A線禁行,B線放行
MOV R7,#19H
MAIN3: LCALL DELAY
DJNZ R7,MAIN3
MOV P1,#2EH ;A線禁行,B線警告
MOV R7,#05H
MAIN4: LCALL DELAY
DJNZ R7,MAIN4
AJMP MAIN
DELAY:MOV R0,#64H ;延時1S子程序
DEL2:MOV R1,#0AH
DEL1:MOV R2,#7DH
DEL0:NOP
NOP
DJNZ R2,DEL0
DJNZ R1,DEL1
DJNZ R0,DEL2
RET
END
㈢ 基於51單片機控制交通燈的電路圖與C語言程序
思路:
紅燈停,綠燈行,黃燈閃爍提示行人紅綠燈即將切換。四個方向各有一個紅、黃、綠顯示和兩個數碼管。
東西道為人行道(20秒),南北道為車行道(60秒),黃燈延時最後三秒時,閃爍並切換。
三、硬體電路設計
此電中路設計採用AT89C51單片機,74LS47(數碼管驅動)74LS373(數碼管驅動輸出鎖存),8個數碼管顯示其延時值,四個紅、黃、綠指示燈。硬體設計關鍵在於,延時顯示時,要考慮到當個位數字顯示時,要確保十位數字顯示輸出的不變。因此,可加輸出鎖存器。在延時最後三秒時,要讓黃燈進行閃爍,並同時顯示數字(這一步在軟體設計上很關鍵)。
四、軟體程序(C語言)
以下是整個設計的軟體程序,直接可以編譯成*。Hex代碼。通過以上電路,下載到單片機,可直接運行。
//*****************************//
//程序名:十字路口交通燈控制
//編寫人:黃庭劍
//初寫時間:2009年1月2日
//程序功能:南北為車行道,延時60秒;東西方向為人行道,延時20秒,且在最後3秒黃燈顯示2秒鍾再實現切換.
//CPU說明:AT89C51型單片機;24MHZ晶體振盪器
//完成時間:2009年1月6日
//*****************************//
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
sfrp0=0x80;
sfrp1=0x90;
sfrp2=0xA0;
sfrp3=0xb0;//這部分內容其實在「#include<reg51.h>」里已經有,但裡面定義的必須區分大小寫,在這里,因為我程序採用的是小寫,reg51.h里對各個埠與寄存器的定義都是大寫,所以在編譯連接時,會報錯,所以,在本設計程序里,我只用到了埠,在這里也就只定義了四個,而沒有去改reg51.h裡面的內容。其實兩者是一樣的。
sbitsw=p0^0;
sbitOE=P0^6;
sbitLE=P0^7;//74LS373鎖存器控制端定義
chardisplay[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};//p1口的數碼管時間顯示調用,利用74L74BCD碼,8位驅動輸出;
//函數聲明begin
voiddelay1(intcount);
voiddelay_long(intnumber1,intnumber2);
voidpeople_car_drive();
//函數聲明end
//***********************//延時子程序
voiddelay1(intcount)
{inti;
for(i=count;i>0;i--)
{;}
}
voiddelay_long(intnumber1,intnumber2)
{
inta,b;
for(a=number1;a>0;a--)
{
for(b=number2;b>0;b--)
{_nop_();}
}
}
//**********************//延時子程序
voidpeople_car_drive()
{
intp_1=2,i,j=9,p_2=6;//****************//行人通行時,延時20秒
p2=0x09;//南北紅燈亮
p3=0x24;//東西綠燈亮
while(p_1-->0)
{LE=1;
OE=0;
if(p_1==0){OE=1;}//當十位數減到0時,只顯示個位數
p1=display[p_1];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_1==0&&j==3)break;//減到3時退出循環,讓其黃燈閃爍顯示
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
//*******************************************************************************//
p2=0x12;//南北黃燈閃爍三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
//*****************以下是車輛通行時延時60秒//
p2=0x24;//南北綠燈亮
p3=0x09;//東西紅燈亮
while(p_2-->0)
{LE=1;
OE=0;
if(p_2==0){OE=1;}//當十位數減到0時,只顯示個位數
p1=display[p_2];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_2==0&&j==3)break;//減到2時退出循環
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
p2=0x12;//南北黃燈閃爍三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);//南北黃燈閃爍三秒完畢
}
voidmain()//主函數入口處
{
p0=0x01;
p1=0x00;
p2=0x00;
p3=0x00;//初始化各埠
{while(1)
{
if(sw==0)
{people_car_drive();}
else
{
p2=0x00;
p3=0x00;//關閉所有交通燈
}
}
}
}
詳情訪問:http://hi..com/hjiannew/
㈣ 單片機交通信號燈控制
很久之前寫的,控制時間你自己改,有程序,有模擬,看不懂的到網路HI上找我,常年在,常年隱身,程序如下:
#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
uchart,i;
sbitche_red=P0^0;
sbitche_yellow=P0^1;
sbitche_green=P0^2;
sbitren_red=P0^3;
sbitren_yellow=P0^4;
sbitren_green=P0^5;
delay(uinta)
{
uchari;
while(a--)
for(i=125;i>0;i--);
}
voidinit()
{
EA=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
}
main()
{
P0=0x00;
init();
TR0=1;
while(1);
}
voidtimer0()interrupt1
{
ren_green=0;
che_red=0;
che_green=1;
ren_red=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==50)
{
che_green=0;
for(i=0;i<3;i++)
{
che_yellow=1;
delay(300);
che_yellow=0;
delay(300);
}
ren_red=0;
ren_green=1;
che_red=1;
delay(3000);
t=0;
}
}
㈤ 單片機中十字路口交通信號燈的過程,內容,原理
基於單片機的十字路口交通燈設計
摘要:知道了交通燈的重要性,而對於交通燈最重要的是單片機。跟隨單片機的應用正在不斷深入,同時帶動傳統控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統中,單片機通常作為一個核心部件來使用,僅憑對單片機簡單了解是不夠的,應該根據具體硬體結構並且軟硬體結合,實現自己想要達到的目的。單片機自問世以來,性能不斷提高和完善,所以實用許多場合。單片機具有集成度高、功能多、速度快、體積小、功耗低、使用方便、性能可靠、價格便宜,其易於產品化、抗干擾能力強、可以在惡劣的情況下堅持工作。特別是它強大的面向控制能力,使它在工業控制領域,智能儀表、外設控制、家用電器、機器人、軍事裝置等方面得到了廣泛的應用。 考慮到單片機具有物美價廉、靈活方便、還有各種優秀的特點,所以我們從中選擇用MCS-51系列單片機AT89C51單片機來實現十字路口交通信號燈的控制。單片機系統的實體和裝置,通常由運算器、控制器、存儲器、輸入介面電路和輸入設備、輸出介面電路和輸出設備等組成。單片機實質上是一個硬體的晶元,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展介面電路、外部設備、被控對象等硬體和軟體,才能構成一個單片機應用系統。該交通燈擬系統的硬體部分主要由鍵盤、顯示和運算部分組成,再根據實際車流量通過8051晶元的P3口設置紅、綠燈燃亮時間的功能;紅綠燈循環點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過P1口輸出,顯示時間通過P0口輸出至雙位數碼管)。本系統設計周期短、可靠性高、實用性強、操作簡單、維護方便、擴展功能強。
關鍵詞:單片機、MCS-51系列單片機AT89C51、交通燈
㈥ 單片機控制交通燈
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
㈦ 單片機控制交通燈的原理
單片機內可以設置定時器用於交通燈計時,外部IO控制交通燈常亮、閃爍等。原理都很簡單,只是設計演算法的問題
㈧ 基於單片機的交通信號燈控制系統
紅黃藍共12燈,單片機上IO口足矣,所以不用擴展,直接接上12個8050驅動繼電器。
如果你要加上倒計時,則需8個數碼管,所以還要加上一片138做掃描口,數碼管驅動可以找專門的驅動晶元,有數碼管解碼器,型號忘了自己找找吧。
這樣,編好程序,放大功率,你就做出來了。
軟體如樓上所說,運用定時即可。
㈨ 單片機控制交通燈
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
沒有問題。
㈩ 對交通信號燈的控制…用單片機
用51就可以實現,51驅動3061光耦,光耦帶BTA-12。整個方案就是這樣,很簡單也可用ARM7,不過價錢會貴一點。