91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 29KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: 其他
  • 標簽:

資源簡介

以單片機為核心,設計一個簡單交通燈控制系統,設A車道與B車道交叉組成十字路口,A是主道,B是支道。設計要求如下: (1) 用發光二極管模擬交通信號燈、兩個方向分別設置紅、綠、黃3種通行指示燈,用按鍵開關模擬車輛檢測信號。 (2) 正常情況下,A、B兩車道輪流放行, A車道放行40秒,其中5秒用于警告,B車道放行25秒,其中5秒用于警告。有計時牌顯示路口通行轉換剩余時間。 (3) 在交通繁忙時,交通信號燈控制系統應有手控開關,可人為地改變信號燈的狀態,以緩解交通擁擠狀況。在B車道放行期間,若A車道有車而B車道無車,按下開關K1使A車道放行15秒;在A車道放行期間,若B車道有車而A車道無車,按下開關K2使B車道放行15秒。 (4) 有特種車輛如119、120通過路口時,系統可轉為特種車輛放行,其他車輛禁止通行的狀態,15s后系統恢復正常管理。 (5) 兩個方向放行的時間可以通過鍵盤設置。

資源截圖

代碼片段和文件信息

#include
#define?uint?unsigned?int
#define?uchar?unsigned?char
uchar?code?SEG7[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; //段碼組合共陰極
uchar?code?ACT[4]={0xfa0xf50xfa0xf5};?//位碼組合 ?低有效
//*************************************************************************************

uchar?sec=15cntflag=0mnstatus=0ijsign1sign2sign3ab=0;??//cnt記錄一次中斷;flag控制黃燈閃爍;sign作為按鍵按下標記;
char??c=15d=10;
//*************************************************************************************

sbit?EWGREEN=P2^0;??????//定義六盞交通燈的端口?????????
sbit?EWYELLOW=P2^1;
sbit?EWRED=P2^2;
sbit?SNGREEN=P2^4;
sbit?SNYELLOW=P2^5;
sbit?SNRED=P2^6;
sbit?k1=P3^0; ????//?定義按鍵接口
sbit?k2=P3^1; ?
sbit?k3=P3^2;
sbit?k4=P3^3;
sbit?k5=P3^4;
sbit?k6=P3^5;
sbit?k7=P3^6;
//************************調用函數定義**************************************************

void?LED_ORD(uchar);
void?LED_5S(uchar);
void?inter0(uchar);
void?display(uchar);
void?display1(uchar);
void?keys1();
void?keys2();
void?keys3();
//*************************中斷程序*************************************************
void?inrupt(void)
{
TMOD=0x01;
TH0?=?-(50000/256);
TL0 =?-(50000%256);
ET0=1;
TR0=1;
EA=1;
}

//**************************中斷處理程序***************************************************

void?timeout(void)?interrupt?1
{
TH0=-(50000/256);
TL0=-(50000%256);
cnt++;
//**********************************//
keys1();??//控制“東西”道路時間的按鍵(有20和30秒的選擇)
keys2();??//控制“南北”道路時間的按鍵
keys3();??//緊急停止通車按鍵
//****************************************//
switch(status)
{
case?0: m=1;n=1;i=0;j=1;?break; ?//status是0和1兩種狀態;控制是輪到“東西”顯示還是“南北”顯示;
case?1:?m=2;n=2;i=2;j=3;?break;
case?2:m=3;n=3;break;
}

if(flag==0){LED_ORD(m);}???//紅綠燈正常顯示
??????else
??????{
??? ?if(cnt<=10){LED_5S(n);} ?//黃燈閃
? ?else?{EWYELLOW=1;SNYELLOW=1;} ?// 黃燈滅
??????}
if(cnt>=20)
{
sec--;cnt=0;
//*****************************//
if(status==0)
{
if(k2==0)?{status=1;flag=0;sec=8;}
if(k3==0) {status=2;a=sec;flag=0;sec=4;b=0;}
}
if(status==1)
{
if(k1==0)?{status=0;flag=0;sec=6;}
if(k3==0) {status=2;a=sec;flag=0;sec=4;b=1;}
}
//*************************************//
if(sec<=5)
{
??flag=1;
?if(sec==0)
??{
if(status==0)???????//讓兩次交替循環下去
{
???flag=0;i=2;j=3; //status=0狀態結束,開始status=1狀態,重新賦值;?
???status=1;sec=d;
}

? ?//flag重置為0;flag用來提示到了5秒內閃黃燈;
else?if(status==1)
{
status=0;flag=0;i=0;j=1;sec=c;??//status=1狀態結束,開始status=0狀態,重新賦值;

}
??else?if(status==2&&b==0){sec=a;status=0;flag=0;}
??else?if(status==2&&b==1){sec=a;status=1;flag=0;}
//此處多添加了i和j重新復制;是因為:

??} ?//當一個狀態過后到了這里,但是i和j如果不重新賦值則還是等于上個狀態顯示的位碼;
????} //則接下去會在原來顯示的位碼處顯示一個中斷時間,又跳回新的顯示位碼;

}


}

void?LED_ORD(uchar?f)??//控制東西、南北紅綠燈
{
switch(f)
{
case?1:?P2=0xBE;?break;
case?2: P2=0xEB;?break;
case?3:?P2=0xbb;break;
}
}

void?LED_5S(

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2010-12-28?13:11??智能交通燈\
?????文件????????4736??2010-12-28?13:07??智能交通燈\jtd.c
?????文件????????6376??2005-03-22?15:22??智能交通燈\STARTUP.A51
?????文件???????14048??2010-12-28?13:07??智能交通燈\STARTUP.LST
?????文件?????????749??2010-12-28?13:07??智能交通燈\STARTUP.OBJ
?????文件??????109553??2010-12-28?13:07??智能交通燈\traffic_light.DSN
?????文件????????2184??2010-12-28?13:07??智能交通燈\交通燈.Uv2
?????文件???????20480??2010-12-28?13:11??智能交通燈\說明.doc

評論

共有 條評論

相關資源