資源簡介
交通燈控制系統,附實驗要求及圖紙
利用單片機控制十字路口的紅綠黃燈交替點亮和熄滅,并且用4只七段LED數碼管(不能使用BCD數碼管)顯示十字路口兩個方向的剩余時間。要求能用按鍵設置兩個方向的通行時間(綠燈點亮的時間)和暫緩通行時間(黃燈點亮的時間),系統的工作符合一般交通燈控制要求。

代碼片段和文件信息
#include?“at89x51.h“ ?
#include?“control.h“ ???//用于顯控制數碼管示的函數
int?EWNowCount; ???//東西向的顯示秒數
int?NSNowCount; //南北向德顯示秒數
int?temp?; ???//?臨時變量,用以判斷路燈轉換條件及賦給count的值
unsigned?int?num; ??//計時次數,每4000次為一秒
unsigned?char?delay_time; ?????//控制閃爍的延時
unsigned?char?edit; ???//可設置紅綠燈初始值
unsigned?char?setClicks; //保存set鍵的按下次數
unsigned?char?FlashChange; //東西向與南北向計時器轉換?
char?add;????????????????//加或者減后的值
int?EWGreenDef?=?60?; ???//東西向的默認值
int?EWYellowDef?=?4?;
int?EWRedDef?= 44 ;
int?NSGreenDef ?=?40?; ???//南北向的默認值
int?NSYellowDef?=?4?;
int?NSRedDef? =?64?;
int?EWGreen;
int?EWYellow; ???//定義六個變量?,用來讀秒
int?EWRed;
int?NSGreen;
int?NSYellow;
int?NSRed?;
int?Sum1?; ??//??EWGreenDef?+EWYellowDef+?EWRedDef
int?Sum2?; ??//???EWGreenDef+EWYellowDef
int?Sum3?; ??//??NSGreenDef+NSRedDef
unsigned?char?n; ??//用其值來判斷是否為長按鍵
void?T0_INT(void)?interrupt?1 /*定時器T0,控制紅綠燈的轉換?*/ ???
{
num++;
Sum1?=?EWGreenDef?+EWYellowDef+?EWRedDef;
Sum2?=?EWGreenDef+EWYellowDef;
Sum3?=?NSGreenDef+NSRedDef?;
if(?num?==4000?) /*1s?=?0.25ms?*4000?*/?
{
if(temp<=EWGreenDef) /*?東西向綠燈讀秒?*/?
{
EWNowCount?=?EWGreen;
EWGreenLight();
EWGreen--;
}
if(temp<=NSRedDef) ???/*?南北向紅燈燈讀秒?*/?
{
NSNowCount?=?NSRed;
NSRedLight();
NSRed--;
}
if(temp<=Sum2?&&?temp>EWGreenDef)????????/*?東西向黃燈讀秒?*/??
{
EWNowCount?=?EWYellow;
EWYellowLight();
EWYellow--;
}
if(temp<=Sum3?&&?temp>NSRedDef) /*?南北向綠燈讀秒?*/?
{
NSNowCount?=?NSGreen;
NSGreenLight();
NSGreen--;
}
if(temp<=Sum1+2?&&?temp?>?Sum2) /*?東西向紅燈讀秒?*/?
{
EWNowCount?=?EWRed;
EWRedLight();
EWRed--;
}
if(temp<=Sum1+2?&&?temp?>?Sum3) /*?南北向黃燈讀秒?*/?
{
NSNowCount?=?NSYellow;
NSYellowLight();
NSYellow--;
}
if(EWGreen<0)? EWGreen?=?EWGreenDef; ?/*?重新裝載初值?*/?
if(EWYellow<0)? EWYellow?=?EWYellowDef;
if(EWRed<0)? EWRed?=?EWRedDef;
if(NSGreen<0)? NSGreen?=?NSGreenDef;
if(NSYellow<0)? NSYellow?=?NSYellowDef;
if(NSRed<0)? NSRed?=?NSRedDef;
temp++;
if(temp>Sum1)?temp?=?0;
num=0;
}
}
void?T1_INT(void)?interrupt?3 /*??定時器?T1控制長按鍵??*/ ?
{
?if(P0_1==0?||?P0_0==0)?n++;
?if(P0_1==1?&&?P0_0==1)?
?{
? n=0;
?}
}
unsigned?char?getKey(void) ?????/*??判斷哪個鍵被按下并返回鍵值 ??*/
{
unsigned?char?key?;
if(P0_0?==?0?||?P0_1==0?||?P3_3==0)
{
delay_ms(10);
if(P0_0==0) /*?add鍵?*/?
{?
key=2;
while(!P0_0);
if(n<100)?add++;
if(n>100)
add=add+10;
if(add>=99) add=99;
}
if(P0_1==0) /*?decrease鍵?*/?
{?
key=3;
TR1?=?1;
while(!P0_1);
if(n<100) add--;
if(n>100)
add=add-10;
if(add<=0)?add?=?0;
}
if(P3_3==0) /*?set鍵?*/?
{
while(!P3_3)?;
key?=?1?;
setClicks++;
}
???
}
else?key=0; /*?無鍵按下?*/?
return?key;
}
void?run(void) ? /*根據鍵值,實現相應的功能(設置,加或減)?*/
{
unsi
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1797??2010-06-11?07:14??C51\Control.h
?????文件???????7375??2010-06-11?07:14??C51\main.c
?????文件??????22171??2010-06-11?07:15??C51\main.LST
?????文件??????23005??2010-06-11?07:15??C51\main.OBJ
?????文件??????18476??2010-06-11?07:15??C51\S18
?????文件???????4794??2010-06-11?07:15??C51\S18.hex
?????文件?????????40??2010-06-11?07:15??C51\S18.lnp
?????文件??????26519??2010-06-11?07:15??C51\S18.M51
?????文件???????1839??2010-06-11?07:15??C51\S18.Opt
?????文件??????98610??2010-06-11?07:15??C51\S18.plg
?????文件???????2190??2010-06-11?03:44??C51\S18.Uv2
????.......??????1840??2010-06-11?07:15??C51\S18_Opt.Bak
????.......??????2190??2010-06-04?03:52??C51\S18_Uv2.Bak
?????文件???????6376??2005-03-22?15:22??C51\STARTUP.A51
?????文件??????14076??2010-06-11?07:15??C51\STARTUP.LST
?????文件????????758??2010-06-11?07:15??C51\STARTUP.OBJ
?????文件?????129869??2010-06-11?06:49??capture\at89c51.jpg
?????文件?????187865??2010-06-11?06:49??capture\display.jpg
?????文件?????302760??2010-06-11?06:48??capture\picture1.jpg
????..A.SH.?????16896??2010-06-11?08:46??capture\Thumbs.db
?????文件?????116736??2010-05-23?10:19??考察項目.ppt
?????文件?????113536??2010-06-09?17:11??ISIS設計圖\Last?Loaded?s.DBK
?????文件?????113536??2010-06-09?18:16??ISIS設計圖\s.DSN
?????文件????????768??2010-06-11?06:50??ISIS設計圖\s.PWI
?????目錄??????????0??2010-06-11?08:49??C51
?????目錄??????????0??2010-06-11?08:00??capture
?????目錄??????????0??2010-06-17?17:24??ISIS設計圖
-----------?---------??----------?-----??----
??????????????1214022????????????????????27
............此處省略0個文件信息
- 上一篇:linpop 聊天軟件
- 下一篇:C語言課程設計——猜數字游戲
評論
共有 條評論