當前位置:名人名言大全網 - 祝福短信 - 紅綠燈路口,東西紅燈亮60秒,黃燈亮1秒,滅1秒,***10秒,綠燈亮50秒。單片機程序。

紅綠燈路口,東西紅燈亮60秒,黃燈亮1秒,滅1秒,***10秒,綠燈亮50秒。單片機程序。

太簡單了。我的百度空間也有類似的程序。換壹個就好。妳真的不給我留言,我馬上解決(以下程序是妳需要的)

設計壹個交通燈模擬系統,需要

1南北方向和東西方向通行時間為60秒。

綠燈變紅時,黃燈閃10秒,黃燈亮1秒,滅1秒。

3.設置兩個led顯示倒計時。

# include & ltregx 51 . h & gt;

#定義uchar無符號字符

#定義uint無符號整數

sbit red1=p1^0;//紅燈1(所有燈都亮0,1不亮)

sbit yellow1=p1^1;//黃燈1

sbit green1=p1^2;//綠燈1

sbit red2=p1^3;//紅燈2

sbit yellow2=p1^4;//黃燈2

sbit green2=p1^5;//綠燈2

比特變化;//選擇流量方向

uchar定時器_ tick//定時器0 _滴答計數

uchar i=0,n=0,time=0,timer

code seven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90 };//1,2,3, 4, 5, 6, 7, 8, 9

代碼掃描[4]={0xf7,0xfb,0xfd,0x Fe };

uchar counter[4]={0,0,0,0 };

靜態void定時器0 _ ISR (void)中斷1使用0//中斷功能,每秒200次,晶振12M。

{

TR0 = 0;

TL0 = 0x00

TH0 = 0xee

TR0 = 1;

i++;

if(I = = 4)I = 0;

P0 = seven _ seg[counter[I]];

P2 = scan[I];

定時器_ tick =定時器0 _ tick+1;

if(定時器0_tick==200)

{

定時器_ tick = 0

時間=時間+1;

定時器= timer-1;

如果(定時器==0)

{

變= ~變;

定時器= 60;//重復計時

}

如果(時間==60)

{

時間= 0;//重復計時

}

}

如果(變化==0)

{

如果(時間& lt=50)//南北

{

green 1 = 0;//南北綠燈50秒。

黃色1 = 1;

red 1 = 1;

green 2 = 1;

yellow 2 = 1;

red 2 = 0;//東西向紅燈亮50}

如果(50 & lt時間與空間。& amp時間& lt=60)

{

n = n+1;

如果(n==200)

{

n = 0;

yellow 1 = ~ yellow 1;//南北黃燈閃爍10秒。

}

green 1 = 1;

red 1 = 1;

yellow 2 = 1;

green 2 = 1;

red 2 = 0;//東西向紅燈繼續亮。

}

}

if(change==1)

{

如果(時間& lt=50)//事情

{

red 1 = 0;//南北紅燈亮50秒。

黃色1 = 1;

green 1 = 1;

red 2 = 1;

yellow 2 = 1;

green 2 = 0;//東西綠燈亮了50}

如果(50 & lt時間與空間。& amp時間& lt=60)

{

red 1 = 0;//南北紅燈持續亮10秒。

黃色1 = 1;

green 1 = 1;

red 2 = 1;

n = n+1;

如果(n==200)

{

n = 0;

yellow2 = ~ yellow2//東西向黃燈閃10秒,黃燈亮1秒,滅1秒。

}

green 2 = 1;

}

}

計數器[1]=定時器/10;//倒數十位數1

counter[0]= timer % 10;//倒計時到1。

計數器[3]=定時器/10;//倒數2的十位數

計數器[2]=計時器% 10;//倒計時2個單位

}

靜態空定時器0 _ initialize(void)//中斷初始化。

{

EA = 0;

定時器_ tick = 0

TR0 = 0;

TMOD = 0x 01;

TL0 = 0x00

TH0 = 0xee

PT0 = 0;

ET0 = 1;

TR0 = 1;

EA = 1;

}

無效總管(無效)

{

定時器= 60;

定時器0 _ initialize();

while(1);

}