【2017年整理】交通灯实验报告.doc
文本预览下载声明
实验4 交通灯实验
实验目的
1.按键、数码管、发光二极管综合应用编程技术
2.定时中断技术
3.按键中断技术
二、实验实现的功能
1.对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。
2.紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。
三、系统硬件设计
四、系统软件设计
#includestc10.h
#define uchar unsigned char
#define uint unsigned int
sbit L1=P0^5;sbit L2=P0^6;sbit L3=P0^7;sbit H1=P3^6;sbit H2=P3^7;
sbit D9=P3^2;sbit D10=P3^3;sbit D11=P3^4;sbit D12=P3^5;
sbit D1=P2^0;sbit D2=P2^1;sbit D3=P2^2;sbit D4=P2^3;
sbit D5=P2^4;sbit D6=P2^5;sbit D7=P2^6;sbit D8=P2^7;
uchar disbuffer[]={0,0,0,0};
uchar tab2[3];
uchar tab3[3];
void display();
uchar b,c,d,e,g,j,k,k1,k2;
char m,f;
void delay(uint i)
{uint j;
for(j=0;ji;j++)
{}
}
void Scan_key()
{ H1=0;
H2=1;
if(L1==0)
{
while(!L1)
{display();
TR1=TR0=0;
}
c=!c;
if(c==0)
{P2=0xff;
P3=0xfd;
TR0=!TR0;
TR1=!TR1;
}
}
if(L2==0)
{TR0=1;
TR1=1;
m=tab2[d];
f=tab3[e];
}
H1=1;
H2=0;
if(L1==0)
{delay(60000);
if(L1==0)
{k1++;
tab2[k]=k1;
m=tab2[k];
tab3[k2]=k1;
f=tab3[k2];
display();
}
}
if(L2==0)
{delay(60000);
k1--;
tab2[k]=k1;
m=tab2[k];
tab3[k2]=k1;
f=tab3[k2];
display();
}
if(L3==0)
{delay(60000);
k++;
k1=0;
if(k==3)
k=0;
k2++;
if(k2==3)
k2=0;
}
}
void display(void)
{ uchar b,p,temp;
uchar ccode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar ch[]={0xfe,0xfd,0xfb,0xf7};
disbuffer[0]=m/10;
disbuffer[1]=m%10;
disbuffer[2]=f/10;
disbuffer[3]=f%10;
for (b=0;b4;b++)
{temp=ch[b];
P0=temp;
p=disbuffer[b];
temp=ccode[p];
P1=temp;
delay(1000);
}
}
void deng()
{if(d==0) //红灯亮
{
D5=D11=1;
D6=D12=0;
}
if(d==1) //绿灯亮
{
D6=D12=1;
D4=D10=0;
}
if(d==2) //黄灯亮
{
D4=D10=1;
D5=D11=0;
}
if(e==0) //绿灯亮
{
D3=D9=1;
D1=D7=0;
}
if(e==1) //黄灯亮
{
D1=D7=1;
D2=D8=0;
}
if(e==2) //红灯亮
{
D2=D8=1;
D3=D9=0;
}
}
void jinji()
{while(c==1)
{
d=e=g=b=0;
m=tab2[0];
f=tab2[1];
P2=0xdb;
P3=0x98;
Scan_key();
}
}
v
显示全部