本帖最后由 上善-若水 于 2018-9-14 17:03 编辑
1.正常行驶时,左右两侧指示灯处于熄灭状态;
2.右转行驶时,右侧的指示灯按右循环顺序点亮;
3.左转行驶时,左侧的指示灯按左循环顺序点亮;
4.临时制动时,左右两侧指示灯处于同时闪烁状态
电路原理图如下:
单片机源程序:
- #include<reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit kaishi=P3^0;
- sbit keystop=P3^1;
- sbit keyzuozhuan=P3^2;
- sbit keyyouzhuan=P3^3;
- sbit keyyaokong=P3^4;
- sbit led1=P1^0;
- sbit led2=P1^1;
- sbit led3=P1^2;
- sbit led4=P1^3;
- sbit led5=P1^4;
- sbit led6=P1^5;
- sbit ledyk=P3^7;
- unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行选
- unsigned char code tabb[]={0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F};//"出"
- unsigned char code tabc[]={0x00,0x02,0x04,0x08,0x18,0x24,0x42,0x81};//"入"
- unsigned char code tabd[]={0xFF,0x4A,0x2A,0x1C,0xFF,0x08,0x08,0x08};//"平"
- unsigned char code tabe[]={0x08,0xFF,0x89,0x04,0x7F,0x14,0x1C,0x63};//"安"
- unsigned char i,j;
- void delay2(void)//延时5ms
- {
- unsigned char i,j;
- for(i=10;i>0;i--)
- for(j=248;j>0;j--);
- }
- void delay1(void)//延时10ms
- {
- unsigned char i,j,k;
- for(k=10;k>0;k--)
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
- }
- void delay(uint z)
- {
- uint i,j;
- for(i=z;i>0;i--)
- for(j=110;j>0;j--);
- }
- void zuozhuan() //左转子程序
- {
- if(keyzuozhuan==0)
- {
- led3=1;
- delay(100);
- led3=0;
- delay(500);
- led2=0;
- delay(500);
- led1=0;
- delay(500);
- P1=0xff;
- }
- }
- void youzhuan() //右转子程序
- {
- if(keyyouzhuan==0)
- {
- led4=1;
- delay(100);
- led4=0;
- delay(500);
- led5=0;
- delay(500);
- led6=0;
- delay(500);
- P1=0xff;
- }
- }
- void stop() //停车子程序
- {
- if(keystop==0)
- {
- P1=0x00;
- delay(500);
- P1=0x3f;
- delay(500);
- }
- }
- void yaokong() //遥控子程序
- {
- if(keyyaokong==0)
- {
- ledyk=~ledyk;
- delay(500);
- }
- }
- void main()
- {
- while(1)
- { zuozhuan(); //调用左转子程序
- youzhuan();
- stop();
- yaokong();
- if(kaishi==0)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- for(j=0; j<10; j++) //from 上 to 下 3 time
- {
- for(i=0;i<8;i++)
- {
- P0=taba[i];
- P2=tabb[i];
- delay2();
- }
- }
- for(i=0;i<8;i++)
- {
- P0=taba[i];
- P2=0xff;
- // delay1();
- }
- for(j=0; j<10; j++) //from 上 to 下 3 time
- {
- for(i=0;i<8;i++)
- {
- P0=taba[i];
- P2=tabc[i];
- delay2();
- }
- }
- for(i=0;i<8;i++)
- {
- //delay1();
- }
- for(j=0; j<10; j++) //from 上 to 下 3 time
- {
- for(i=0;i<8;i++)
- {
- P0=taba[i];
- P2=tabd[i]; //"平"
- delay2();
- }
- }
- for(i=0;i<8;i++)
- {
- P0=taba[7-i];
- P2=0xff;
- // delay1();
- }
- for(i=0;i<8;i++)
- {
- //delay1();
- }
- for(j=0; j<10; j++) //from 上 to 下 3 time
- {
- for(i=0;i<8;i++)
- {
- P0=taba[i];
- P2=tabe[i];
- delay2();
- }
- }
- for(i=0;i<8;i++)
- {
- P0=0xff;
- P2=0xff;
- delay1();
- }
- }
- }
- }
- }
复制代码
|