資源簡介
資源:Keil下.c工程
附:proteus硬件仿真工程
題目:采用單片機設(shè)計一個帶有數(shù)碼管顯示的交通燈控制系統(tǒng),能夠?qū)崿F(xiàn)以下功能要求:
東西、南北方向紅、綠、黃燈亮/滅的合理控制;
東西、南北方向紅、綠燈狀態(tài)下,倒計時顯示;
緊急情況處理,一鍵控制四個方向全部點亮紅燈,數(shù)碼管熄滅;
擴展功能要求:
可選擇小鍵盤或者串口方式,根據(jù)實際交通狀態(tài),進行各方向通行時間調(diào)整,使交通控制更加合理。

代碼片段和文件信息
#include
#define?uchar?unsigned?char
uchar?n=0; ?//計數(shù)變量
uchar?s=0; ?//秒
uchar?a=30;?//設(shè)置參數(shù);
sbit?shi=P3^0;//數(shù)碼管顯示十位的輸入端口
sbit?ge=P3^1;?//數(shù)碼管顯示個位的輸入端口
sbit?KEY=P3^3;
sbit?KEY_CHANGE1=P3^2;//加5秒
sbit?KEY_CHANGE2=P3^4;????//減5秒???????//定義按鍵輸入端口
???
uchar?code?tab[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};//數(shù)碼管段碼表
void?delay(uchar?k) ???//1ms延時函數(shù)
{
uchar?i;
while(k--)
{
for(i=0;i<115;i++);
}
}
void?DelayUs2x(unsigned?char?t)
{???
?while(--t);
}
void?DelayMs(unsigned?char?t)
{
?????
?while(t--)
?{
?????//大致延時1mS
?????DelayUs2x(245);
?DelayUs2x(245);
?}
}
void?display(uchar?num) ?//數(shù)碼管顯示函數(shù)
{
//顯示倒數(shù)計時的十位
shi=0;
P2=tab[num/10];?
delay(3);
shi=1;
//顯示倒數(shù)計時個位
ge=0;
P2=tab[num%10];
delay(3);
ge=1;
}
void?main()
{
EA=1; ?//開總中斷
ET0=1; ?//開T0中斷
TMOD=0x01;?//設(shè)置T0工作在方式一
TH0=(65536-10000)/256;?//給定時器T0高8位賦初值
TL0=(65536-10000)%256;?//給定時器T0低8位賦初值
TR0=1;?//啟動T0
KEY=1;?
KEY_CHANGE1=1;
KEY_CHANGE2=1;//按鍵輸入端口電平置高
?while(1){
??
while(KEY==1)
{
?
???
if(s {
if(s {
display(a-5-s); //25秒倒數(shù)計時
P1=0xee;
P0=0xbb;
}
else ??//過渡狀態(tài):東西黃燈,南北紅燈,保持5秒
{
display(a-s); //5秒倒數(shù)計時
P1=0xee;
P0=0xdd;
}
}
else?if(s<55)??//南北綠燈,東西紅燈,保持25秒
{
display(55-s); //25秒倒數(shù)計時
P1=0xbb;
P0=0xee;
}
else? ??//過渡狀態(tài):南北黃燈,東西紅燈,保持5秒
{
display(60-s); //5秒倒數(shù)計時
P1=0xdd;
P0=0xee;
}
if(!KEY){
DelayMs(10);?//延時去抖,一般10-20ms
if(!KEY){???
???P1=0xee;
???P0=0xee;
???}
???}
??? if(!KEY_CHANGE1)
?break;
?if(!KEY_CHANGE2)
?break;
?}
?if(!KEY_CHANGE1)
?a=a+5;
?DelayMs(600);
?if(!KEY_CHANGE2)
?a=a-5;
?DelayMs(600);
?}
}
void?time()?interrupt?1 ??//T0中斷,用于1s定時?
{
TH0=(65536-10000)/256; //給定時器T0高8位賦初值
TL0=(65536-10000)%256; //給定時器T0低8位賦初值
++n; //每次中斷計數(shù)變量加一
if(n==100) //1s定時時間到
{
n=0; //計數(shù)變量清零,準(zhǔn)備下次重新計數(shù)
++s; //秒+1
if(s==60) //60秒到,一個交通燈狀態(tài)循環(huán)完畢
s=0; //秒清零,準(zhǔn)備下次計數(shù)
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-06-07?21:08??Keil_C51\
?????文件????????5911??2019-06-07?21:04??Keil_C51\LED
?????文件????????9971??2019-06-07?21:04??Keil_C51\LED.M51
?????文件????????1386??2019-06-07?21:04??Keil_C51\LED.hex
?????文件??????????63??2019-06-07?21:04??Keil_C51\LED.lnp
?????文件???????18945??2019-06-07?21:04??Keil_C51\LED.plg
?????文件???????56916??2019-06-07?21:08??Keil_C51\LED.uvopt
?????文件???????13439??2019-06-07?10:49??Keil_C51\LED.uvproj
?????文件???????55317??2019-06-07?10:49??Keil_C51\LED_uvopt.bak
?????文件???????????0??2019-06-07?10:35??Keil_C51\LED_uvproj.bak
?????文件????????6376??2009-05-07?14:37??Keil_C51\STARTUP.A51
?????文件???????14048??2019-06-07?21:04??Keil_C51\STARTUP.LST
?????文件?????????749??2019-06-07?21:04??Keil_C51\STARTUP.OBJ
?????文件????????6683??2019-06-07?21:04??Keil_C51\jiaotong_led.LST
?????文件????????6071??2019-06-07?21:04??Keil_C51\jiaotong_led.OBJ
?????文件????????2398??2019-06-07?21:08??Keil_C51\jiaotong_led.c
?????目錄???????????0??2019-06-07?21:08??proteus仿真工程\
?????文件???????19371??2019-06-07?19:08??proteus仿真工程\Backup?Of?交通燈.pdsbak
?????文件???????19664??2019-06-07?21:04??proteus仿真工程\Last?Loaded?交通燈.pdsbak
?????文件???????19569??2019-06-07?21:08??proteus仿真工程\交通燈.pdsprj
?????文件????????2574??2019-06-07?21:08??proteus仿真工程\交通燈.pdsprj.zhaojingyuan.趙靜圓.workspace
- 上一篇:滴滴出行行程單
- 下一篇:discuz插件自動回帖 商業(yè)版4.1.5
評論
共有 條評論