文档介绍:51单片机综合实验交通灯设计报告
51单片机综合实验交通灯设计报告
班 级:
学 生 姓 名:
学 号:
指 导 教e <>
/*****定义控制位**********************/
sbit EW_LED2=P2^3; //东西数码管个位
sbit EW_LED1=P2^2; //东西数码管十位
sbit SN_LED2=P2^1; //南北数码管个位
sbit SN_LED1=P2^0; //南北数码管十位_
sbit SN_Yellow=P1^6;//南北黄灯
sbit EW_Yellow=P1^2;//东西黄灯
sbit EW_Red=P1^3;//东西红灯
sbit SN_Red=P1^7;//南北红灯
sbit Busy_Btton=P3^4;
bit Flag_SN_Yellow; //南北黄灯标志位
bit Flag_EW_Yellow;//东西黄灯标志位
char Time_EW;//东西方向倒计时单元
char Time_SN;//南北方向倒计时单元
uchar EW=50,SN=25,EWL=20,SNL=20; //程序初始化赋值
uchar EW1=50,SN1=25,EWL1=20,SNL1=20;//用于存放修改值的变量1-9段选码
uchar
code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
uchar code S[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信号灯控制代码
/**********************延时子程序************************/
void Delay(uchar a)
{
uchar i;
i=a;
while(i--){;}
}
/*****************显示子函数**************************/
void Display(void)
{
char h,l;
h=Time_EW/10;
l=Time_EW%10;
P0=table[l];
EW_LED2=1;
Delay(200);
EW_LED2=0;
P0=table[h];
EW_LED1=1;
Delay(200);
EW_LED1=0;
h=Time_SN/10;
l=Time_SN%10;
P0=table[l];
SN_LED2=1;
Delay(200);
SN_LED2=0;
P0=table[h];
SN_LED1=1;
Delay(200);
SN_LED1=0;
}
/**********************T0中断服务程序*******************/
void timer0(void)interrupt 1 using 1
{
static uchar count;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==10)
{
if(Flag_SN_Yellow==1) //南北黄灯标志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1) //东西黄灯标志位
{EW_Yellow=~EW_Yellow;}
}
if(count==20)
{
Time_EW--;
Time_SN--;
if(Flag_SN_Yellow==1)//南北黄灯标志位
{ Time_SN=Time_EW;
{
SN_Yellow=~SN_Yellow;}
}
if(Flag_EW_Yellow==1)//东西黄灯标志位
{ Time_EW=Time_SN;
{
EW_Yellow=~EW_Yellow;
}
}
count=0;
}
}
void main(void)
{
IT0=1; //INT0负跳变