给你用单片机画的电路和程序及仿真
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
sbit D0=P2^0;
sbit D1=P2^1;
sbit D2=P2^2;
sbit D3=P2^3;
sbit D4=P2^4;
sbit D5=P2^5;
sbit K1=P3^0;//左闪
sbit K2=P3^1;//右闪
sbit K3=P3^2;//刹车开关
uchar sign=0;
bit num;
uint com=0;
void Timer0Init() //250微秒@12.000MHz
{
TMOD= 0x02; //设置定时器模式
TL0 = 0x06; //设置定时初值
TH0 = 0x06; //设置定时重载值
TR0 = 1; //定时器0开始计时
EA=1; //开总中断
ET0=1; //开定时器0中断
}
void main()
{
uchar i=0;
Timer0Init();
while(1)
{
if(K3==0)
sign=3;
else if(K2==0)
sign=2;
else if(K1==0)
sign=1;
else sign=0;
if(num==1)
{
num=0;
i++;
if(i>=3)
i=0;
D0=D1=D2=D3=D4=D5=1;
switch(sign)
{
case 0: D0=D1=D2=D3=D4=D5=1; break;
case 1:
switch(i)
{
case 0:D2=0;D1=D0=1;break;
case 1:D1=0;D2=D0=1;break;
case 2:D0=0;D1=D2=1;break;
}
break;
case 2:
switch(i)
{
case 0:D3=0;D4=D5=1;break;
case 1:D4=0;D3=D5=1;break;
case 2:D5=0;D3=D4=1;break;
}
break;
case 3:
switch(i)
{
case 1:D0=D1=D2=D3=D4=D5=0; break;
case 2:D0=D1=D2=D3=D4=D5=1; break;
}
break;
}
}
}
}
void timer0() interrupt 1
{
com++;
if(com>=400)
{
com=0;
num=1;
}
}