標(biāo)題:
通過程序概述一下交通燈是怎樣運(yùn)行工作的,要詳細(xì)一點(diǎn) 謝謝
[打印本頁]
作者:
877140465
時間:
2017-12-16 13:12
標(biāo)題:
通過程序概述一下交通燈是怎樣運(yùn)行工作的,要詳細(xì)一點(diǎn) 謝謝
#include<reg52.h>
sbit RED1=P0^0;
sbit YELLOW1=P0^1;
sbit GREEN1=P0^2;
sbit RED2=P0^4;
sbit YELLOW2=P0^5;
sbit GREEN2=P0^6;
void delay(long dly)
{
while(dly--);
}
void main()
{
signed int i,x,y,z;
while(1)
{
RED1=0;YELLOW1=1;GREEN1=1;//南北紅
RED2=1;YELLOW2=1;GREEN2=0;//東西綠
x=10,y=7,z=3;
for(i=0;i<10;i++)
{
P2=((x/10)<<4)+x%10; //nanbeihong
x--;
if(y>0)
{
P1=((y/10)<<4)+y%10; //dongxilv
y--;
delay(15000);
}
else
{
RED2=1;YELLOW2=0;GREEN2=1; //dongxihuang
P1=((z/10)<<4)+z%10;
RED2=1;YELLOW2=0;GREEN2=1;
delay(7500);
RED2=1;YELLOW2=1;GREEN2=1;
delay(7500);
z--;
}
}
RED1=1;YELLOW1=1;GREEN1=0;//南北綠
RED2=0;YELLOW2=1;GREEN2=1;//東西紅
x=18,y=15,z=3;
for(i=0;i<18;i++) //dongxihong
{
P1=((x/10)<<4)+x%10;
x--;
if(y>0)
{
P2=((y/10)<<4)+y%10; //nanbeilv
y--;
delay(15000);
}
//nanbeihuang
else
{
RED1=1;YELLOW1=0;GREEN1=1;
P2=((z/10)<<4)+z%10;
RED1=1;YELLOW1=0;GREEN1=1;
delay(7500);
RED1=1;YELLOW1=1;GREEN1=1;
delay(7500);
z--;
}
}
}
}
作者:
zl2168
時間:
2017-12-16 18:22
先學(xué)理論,打基礎(chǔ),否則,問題多多,事倍功半。
作者:
angmall
時間:
2017-12-16 19:25
// 模擬交通信號燈的程序
// 典型的51紅綠燈程序,用89C51,S51, 分別定義了 P0.0,0.1,0.2 ,P0.4,0.5,0.6 接外部輸出,會自動運(yùn)行。
#include <reg52.h>
sbit RED1 =P0^0; // 南北交通信號燈
sbit YELLOW1=P0^1;
sbit GREEN1 =P0^2;
sbit RED2 =P0^4; // 東西交通信號燈
sbit YELLOW2=P0^5;
sbit GREEN2 =P0^6;
/*------------------------------------------------
uS延時函數(shù),含有輸入?yún)?shù) long dly,無返回值
long 是定義無符號字符變量,其值的范圍是
-2147483648~+2147483647 這里使用晶振12M,精確延時請使用匯編,大致延時
長度如下 T=dly x 2 + 5 uS
------------------------------------------------*/
void delay(long dly)
{
while(dly--);
}
void main()
{
int i,x,y,z;
while(1)
{
RED1=0;YELLOW1=1;GREEN1=1;//南北紅
RED2=1;YELLOW2=1;GREEN2=0;//東西綠
x=10,y=7,z=3;
for(i=0;i<10;i++)
{ //2位的數(shù)碼管模塊 進(jìn)行硬件譯碼
P2=((x/10)<<4)+x%10; //nanbeihong 驅(qū)動數(shù)碼管顯示 要顯示的數(shù)字的BCD碼數(shù)組
x--;
if(y>0)
{ //2位的數(shù)碼管模塊 送入的 BCD譯碼器 轉(zhuǎn)碼
P1=((y/10)<<4)+y%10; //dongxilv 驅(qū)動數(shù)碼管顯示
y--;
delay(15000); //大致延時30mS
}
else
{
RED2=1;YELLOW2=0;GREEN2=1; //dongxihuang
P1=((z/10)<<4)+z%10; // 驅(qū)動數(shù)碼管顯示 要顯示的數(shù)字的BCD碼數(shù)組
RED2=1;YELLOW2=0;GREEN2=1;
delay(7500); //大致延時15mS
RED2=1;YELLOW2=1;GREEN2=1;
delay(7500); //大致延時15mS
z--;
}
}
RED1=1;YELLOW1=1;GREEN1=0;//南北綠
RED2=0;YELLOW2=1;GREEN2=1;//東西紅
x=18,y=15,z=3;
for(i=0;i<18;i++) //dongxihong
{
P1=((x/10)<<4)+x%10; //驅(qū)動數(shù)碼管顯示
x--;
if(y>0)
{
P2=((y/10)<<4)+y%10; //nanbeilv 驅(qū)動數(shù)碼管顯示
y--;
delay(15000); //大致延時30mS
}
//nanbeihuang
else
{
RED1=1;YELLOW1=0;GREEN1=1;
P2=((z/10)<<4)+z%10; // 驅(qū)動數(shù)碼管顯示
RED1=1;YELLOW1=0;GREEN1=1;
delay(7500); //大致延時15mS
RED1=1;YELLOW1=1;GREEN1=1;
delay(7500); //大致延時15mS
z--;
}
}
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1