資源簡介
51單片機Protues,仿真交通燈。程序+仿真

代碼片段和文件信息
#include ? //?對單片機的口進行了定義
#define?uint?unsigned?int
#define?uchar?unsigned?char
uchar?code?a[10]={0x400x790x240x300x190x120x020x780x000x10};//段碼組合共陽極
uchar?code?b[4]={0x010x020x040x08};?//位碼組合 ?
uchar?code?c[4]={0xcc0xd40x780xb8};/*P1?綠紅、黃紅、紅綠、紅黃*/?
???
//12MHz? ?
//*************************************************************************************
uchar?NB=25DX=30NBG=25DXG=15H=5; ?/*數(shù)碼管顯示值設(shè)置*/
uchar??ik=0cnt=0j=0;?
sbit?K0=P3^4; ??? /*支干道通行*/
sbit?K1=P3^5; ??? /*主干道通行*/
sbit?K4=P3^6; ??? /*返回*/
sbit?K3=P3^2; /*設(shè)置時間*/
sbit?K2=P3^3; /*緊急剎車*/
void?delay(uchar?t); /*定義延時程序*/
void?key(); /*定義鍵盤程序*/
void?display(); /*定義顯示程序*/
void?settime(); /*定義時間設(shè)置顯示程序*/
//*************************程序初始*********************************************
void?init(void)
{
TMOD=0x01; ??/*使用定時器0模式一*/
TH0=0x3c; ??/*(65536-5000)/256*/
TL0=0xb0; ??/*(65536-5000)%256*/
IT0=1; ??//開中斷
ET0=1;
TR0=1;
EA=1;
EX0=1;
EX1=1;
P1=c[k]; ?? //開啟交通燈
}
//*************************中斷0處理程序***************************************
void?int0(void)?interrupt?0 ?// 通行時間設(shè)置
{ ?
??EA=0;
??P1=0xd8; /*紅燈全亮*/
??
for(;;)
{
???settime();
???if(K1==0) ? ?/*P3^6=0設(shè)置主干道通行時間*/
???{??
??????????delay(40);
??????????if(K1==0)
??{
?????????????while(!K1)
?????????????{settime();}
? DXG++; /*主干道通行時間加1*/
?????????????if(DXG==100)
?????????????DXG=0;
??????????}
???}
??
???if(K0==0) ? /*P3^5=0設(shè)置支干道通行時間*/
???{??
?????????????delay(40);
?????????????if(K0==0)
?????{
???????????????while(!K0)
???????????????{settime();}
???NBG++; /*支干道通行時間加1*/
???????????????if(NBG==100)
???????????????NBG=0;
?????????????}
???}
??
???if(K4==0)??? /*P3^7=0返回*/?
???????{??
????????delay(40);
????if(K4==0)
????{
???????while(!K4)
???{
???}
??????????? k=0;P1=c[k];
???NB=NBGDX=NBG+H;
???????display();?
???EA=1;
?
???????????break;
????} ???????????????
???????}
????}
}
?
//***********************************中斷1處理程序********************
void?int1(void)?interrupt?2 ? //緊急情況
{ ???
?/*東西南北紅燈亮*/
EA=0;
TR0=!TR0; ????/*停止計數(shù)*/
for(;;) ???/*主支干道顯示全為0*/
{?
P1=0xd8
P0=a[0];
???P2=b[0];
???delay(20);
???
? ???P2=b[1];
???delay(20);
???P2=b[2];
???delay(20);
???P2=b[3];
???delay(20);
???
???if(K4==0) ???/*返回*/
{?
? delay(20);
EA=1;
???
P1=c[k]; ??/*返回緊急前狀態(tài)開始計數(shù)*/
TR0=!TR0; /*重啟計數(shù)*/
break; ???
}
}
}
void?time1(void)?interrupt?1 /*交通燈控制程序*/
{
TH0=0x3c; /*定時50ms*/
TL0=0xb0; ?
cnt++;
if(cnt>=20) ?? /*每20*50ms=1s自減一*/
{
NB--;
DX--;
cnt=0;
if(NB==0||DX==0)
{
k++;
if(k>3) /*k取0123*/
k=0;
switch(k)
{
case?0:NB=NBGDX=NBG+H;j=0;P1=c[k];break; ??/*主干道通行顯示綠紅*/
???? case?1:NB=H;j=
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????123979??2013-05-16?20:38??交通燈仿真\交通燈.DSN
?????文件???????2950??2013-05-16?20:32??交通燈仿真\仿真交通燈.hex
?????文件??????10185??2014-03-08?16:25??交通燈仿真\程序\交通燈
?????文件???????5292??2014-03-08?16:20??交通燈仿真\程序\交通燈.c
?????文件???????2950??2014-03-08?16:25??交通燈仿真\程序\交通燈.hex
?????文件?????????29??2014-03-08?16:25??交通燈仿真\程序\交通燈.lnp
?????文件??????13825??2014-03-08?16:25??交通燈仿真\程序\交通燈.LST
?????文件??????13500??2014-03-08?16:25??交通燈仿真\程序\交通燈.M51
?????文件??????12057??2014-03-08?16:25??交通燈仿真\程序\交通燈.OBJ
?????文件???????1018??2014-03-08?16:25??交通燈仿真\程序\交通燈.Opt
?????文件???????1581??2014-03-08?16:25??交通燈仿真\程序\交通燈.plg
?????文件???????1994??2013-11-27?11:05??交通燈仿真\程序\交通燈.Uv2
?????文件???????1018??2014-03-08?16:14??交通燈仿真\程序\交通燈_Opt.Bak
?????文件??????????0??2013-11-27?10:57??交通燈仿真\程序\交通燈_Uv2.Bak
?????目錄??????????0??2017-06-04?18:57??交通燈仿真\程序
?????目錄??????????0??2017-06-04?18:57??交通燈仿真
-----------?---------??----------?-----??----
???????????????190378????????????????????16
評論
共有 條評論