如图,简易交通灯
有四个状况0,1,2,3
数码管为2位7段共阳数码管,能够经过修正i,j的值从而修正倒计时的长短。
不妥当地,敬请批评指正!
图一:十字路口交通灯
图二:状况0
绿灯:0x42
红灯:0xbd
图三:状况1
绿灯:0x25
红灯:0xda
图四:状况2
绿灯:0x90
红灯:0x6f
图五:状况3
绿灯:0x2c
红灯:0xd3
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit ge=P0^6;
sbit shi=P0^7;
sbit d0=P0^0;
sbit d1=P0^1;
sbit d2=P0^2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=113;y>0;y–);
}
void shu0()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=0;
d1=0;
d2=1;
delay(1);
d0=1;
d1=0;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu1()
{
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu2()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=1;
d1=0;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=0;
d1=0;
d2=1;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu3()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu4()
{
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=0;
d2=1;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu5()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=1;
d1=0;
d2=1;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu6()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=0;
d1=0;
d2=1;
delay(1);
d0=1;
d1=0;
d2=1;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu7()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void shu8()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=0;
d1=0;
d2=1;
delay(1);
d0=1;
d1=0;
d2=1;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
}
void shu9()
{
d0=0;
d1=0;
d2=0;
delay(1);
d0=1;
d1=0;
d2=0;
delay(1);
d0=0;
d1=1;
d2=0;
delay(1);
d0=1;
d1=1;
d2=0;
delay(1);
d0=1;
d1=0;
d2=1;
delay(1);
d0=0;
d1=1;
d2=1;
delay(1);
_nop_();
_nop_();
_nop_();
delay(1);
}
void display(uchar p)
{
switch(p)
{
case 0:shu0();break;
case 1:shu1();break;
case 2:shu2();break;
case 3:shu3();break;
case 4:shu4();break;
case 5:shu5();break;
case 6:shu6();break;
case 7:shu7();break;
case 8:shu8();break;
case 9:shu9();break;
}
}
void chushihua()
{
ge=0;
shi=0;
}
void main()
{
uchar p,m,n,i,j;
chushihua();
i=9; //状况0
j=3;
while(1)
{
n=76;
while(n)
{
n–;
P1=0x42;
P2=0xbd;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(i==0x00)
{
i=0x0a;
j=j-1;
}
while(j==0x00&&i<=0x03)
{
while(1)
{
m=40;
while(m)
{
m–;
P1=0x00;
P2=0xbd;
P3=0x42;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
p=40;
while(p)
{
p–;
P1=0x00;
P2=0xbd;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(j==0x00&&i==0x00)
{
i=9;//状况1
j=2;
while(1)
{
n=76;
while(n)
{
n–;
P1=0x25;
P2=0xda;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(i==0x00)
{
i=0x0a;
j=j-1;
}
while(j==0x00&&i<=0x03)
{
while(1)
{
m=40;
while(m)
{
m–;
P1=0x00;
P2=0xda;
P3=0x25;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
p=40;
while(p)
{
p–;
P1=0x00;
P2=0xda;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(j==0x00&&i==0x00)
{
i=9; //状况2
j=3;
while(1)
{
n=76;
while(n)
{
n–;
P1=0x90;
P2=0x6f;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(i==0x00)
{
i=0x0a;
j=j-1;
}
while(j==0x00&&i<=0x03)
{
while(1)
{
m=40;
while(m)
{
m–;
P1=0x00;
P2=0x6f;
P3=0x90;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
p=40;
while(p)
{
p–;
P1=0x00;
P2=0x6f;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(j==0x00&&i==0x00)
{
i=9; //状况3
j=2;
while(1)
{
n=76;
while(n)
{
n–;
P1=0x2c;
P2=0xd3;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(i==0x00)
{
i=0x0a;
j=j-1;
}
while(j==0x00&&i<=0x03)
{
while(1)
{
m=40;
while(m)
{
m–;
P1=0x00;
P2=0xd3;
P3=0x2c;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
p=40;
while(p)
{
p–;
P1=0x00;
P2=0xd3;
P3=0x00;
ge=1;
display(i);
ge=0;
shi=1;
display(j);
shi=0;
}
if(j==0x00&&i==0x00)
{
return;
}
i–;
}
}
i–;
}
}
i–;
}
}
i–;
}
}
i–;
}
}
i–;
}
}
i–;
}
}
i–;
}
}
数码管为2位7段共阳数码管,能够经过修正i,j的值从而修正倒计时的长短。
不妥当地,敬请批评指正!
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit ge=P0^6;
sbit shi=P0^7;
sbit d0=P0^0;
sbit d1=P0^1;
sbit d2=P0^2;
void delay(uint z)
{
}
void shu0()
{
}
void shu1()
{
}
void shu2()
{
}
void shu3()
{
}
void shu4()
{
}
void shu5()
{
}
void shu6()
{
}
void shu7()
{
}
void shu8()
{
}
void shu9()
{
}
void display(uchar p)
{
}
void chushihua()
{
}
void main()
{
}