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

51單片機交通燈設計

發布時間:2022-01-22 15:16:43

1. 基於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/

2. 基於單片機的交通燈系統設計 論文

這些方向都可以些,但是plc也可以
你覺得如

3. 如何用單片機AT89S51設計交通燈

這個完整的暫時沒有,不過思路可以介紹一下:

主程序主要就是處理哪個燈亮
子程序主要就是顯示。燈和數碼管

系統圖 就是一個晶元加幾個線很簡單的,如果有深度要求可以探討

4. 基於89C51單片機的交通燈設計報告

可能不是很符合你的要求,看一看能不能用。

功能:紅燈10秒,黃燈2秒。照著你的要求改一改。

看不清的話,留下郵箱,發給你。

#include"reg51.h"

#defineuintunsignedint

#defineucharunsignedchar

sbitla=P2^1;

sbitwela=P2^2;

sbitp1_0=P1^0;

ucharcodedat[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

ucharcodetem[]={0x01,0x02,0x04,0x08,0x10,0x20};

uinti;

ucharnum,st;

voiddelay(uint);

voidinit();

voidmain()

{

init();

la=1;

P0=0xc0;

la=0;

while(1)

{

if(i==1000)

{

i=0;

num++;

if(st==0)

{

if(num==10)

{

num=0;

st=1;

P2=0x40;

}

}

if(st==1)

{

if(num==2)

{

num=0;

st=2;

P2=0x30;

}

}

if(st==2)

{

if(num==10)

{

num=0;

st=3;

P2=0x40;

}

}

if(st==3)

{

if(num==2)

{

num=0;

st=0;

P2=0x88;

}

}

la=1;

P0=dat[num];

la=0;

delay(5);

}

}

}

//程序初始化

voidinit()

{

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

EX0=1;//外部中斷0允許

IT0=0;//外部中斷0為低電平觸發方式

TMOD=0X01;//設定T0為16位定時器

ET0=1;//定時器T0中斷允許

TR0=1;//啟動定時器T0

TH0=0XFC;

TL0=0X66;

i=0;

num=0;

st=0;

p1_0=1;

wela=1;

P0=0x01;

wela=0;

P0=0xff;

P2=0x88;

}

//延時約為Z毫秒

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=113;y>0;y--);

}

//外部中斷0

voidint0()interrupt0

{

P2=0x28;

st=0;

i=0;

num=0;

la=1;

P0=0xc0;

la=0;

delay(10);

P2=0x88;

}

//定時器T0精確1ms

voidtimer0()interrupt1

{

TH0=0XFC;

TL0=0X66;

i++;

}

5. 基於51單片機的紅綠燈設計

ORG 0000H
MOV DPTR ,#0B00H ;選中8155的命令寄存器,P2.2接CE端,p2.1接I/O
MOV A,#01H ;命令寄存器設為01H=000000001B D0=1A口輸出,D1=0B口輸入
MOVX @DPTR,A
LOOP :MOV DPTR,#0B01H
LED0:MOV A,#0FFH ;第一組燈點亮
MOVX @DPTR,A
MOV R4,#09H
LOOP0:ACALL DELAY
DJNZ R4,LOOP0
MOV A,#11011110B
MOVX @DPTR,A
ACALL DELAY
ACALL DELAY
ACALL DELAY
LED1:ACALL DELAY ;第二組燈點亮
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY
MOV A,#0FFH
MOVX @DPTR,A
ACALL DELAY
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY
MOV A,#0FFH
MOVX @DPTR,A
ACALL DELAY
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY

LED2:MOV R5,#09H ;第三組燈點亮
LOOP1:ACALL DELAY
DJNZ R5,LOOP1
MOV A,#11110011B
MOVX @DPTR,A
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP LOOP
DELAY:MOV R3,#02H
LOP3:MOV R1,#85H
LOP1:MOV R2,#0FAH
LOP2:DJNZ R2,LOP2
DJNZ R1,LOP1
DJNZ R3,LOP3
RET
END

6. 基於89s51單片機的交通燈控制設計的匯編程

沒辦法,我只有一個C的,剛開始學單片機的時候,一直用的匯編,後來,轉學C了,覺得C要方便很多。網上應該都有啊,很多例子的呀

這樣吧,如果你需要,給我一個郵箱,我可以發到你郵箱,你可以參考參考,語言只是一種方式,最關鍵是思路和演算法

7. 我准備用51單片機做交通燈設計選擇哪個單片機合適,而且需要做實物哪個更方便那

用ATMEGA8吧,免費的IDE,GCC編譯器!網上先去買個最小ATMEGA8系統,讓後改改,搞一搞就行了。

8. 如何運用51單片機設計一個交通燈系統

運用定時器,數碼管LED和8255A設計一個交通燈控制系統! 1.南北綠燈,東西紅燈,20秒 2.南北轉黃燈,東西紅燈,5秒 3.南北紅燈,東西綠燈,20秒 4.南北紅燈,東西轉黃燈,5秒 5.循環步驟1

9. 用單片機AT89C51設計一個交通燈系統

交通燈 有 C 語言,有匯編
發了

閱讀全文

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

熱點內容
醜陋的中國人pdf 瀏覽:717
我的世界如何在伺服器裡面裝模組 瀏覽:622
javaweb進銷存源碼下載 瀏覽:555
單片機遙控門鈴設計圖解 瀏覽:322
閃送app怎麼更改照片 瀏覽:158
公司的程序員開始忙了 瀏覽:504
統信系統命令行如何輸漢字 瀏覽:279
java隨機取數組 瀏覽:476
伺服器匆忙什麼意思 瀏覽:779
windows下載文件命令 瀏覽:100
紹興加密防偽技術 瀏覽:54
linux清除緩存的命令 瀏覽:778
樑柱連接處梁的加密箍筋 瀏覽:102
安卓錄屏大師如何彈出 瀏覽:658
cad命令詳解 瀏覽:173
品牌雲伺服器提供商 瀏覽:326
加密投資者的心理 瀏覽:700
小米無命令 瀏覽:826
不要層層等命令 瀏覽:373
4k播放器怎樣設置源碼 瀏覽:955