本帖最后由 上善-若水 于 2018-9-14 17:03 編輯
1.正常行駛時,左右兩側指示燈處于熄滅狀態;
2.右轉行駛時,右側的指示燈按右循環順序點亮;
3.左轉行駛時,左側的指示燈按左循環順序點亮;
4.臨時制動時,左右兩側指示燈處于同時閃爍狀態
電路原理圖如下:
1.jpg (102.09 KB, 下載次數: 31)
下載附件
開始 后顯示出
2018-8-30 21:35 上傳
2.jpg (98.88 KB, 下載次數: 24)
下載附件
入
2018-8-30 21:35 上傳
3.jpg (98.24 KB, 下載次數: 23)
下載附件
平
2018-8-30 21:35 上傳
4.jpg (97.43 KB, 下載次數: 25)
下載附件
安
2018-8-30 21:35 上傳
5.jpg (95.93 KB, 下載次數: 29)
下載附件
左轉
2018-8-30 21:35 上傳
6.jpg (94.33 KB, 下載次數: 23)
下載附件
右轉
2018-8-30 21:35 上傳
7.jpg (96.94 KB, 下載次數: 25)
下載附件
臨時制動
2018-8-30 21:35 上傳
8.jpg (97.49 KB, 下載次數: 20)
下載附件
臨時制動
2018-8-30 21:35 上傳
單片機源程序:
- #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();
- }
- }
- }
- }
- }
復制代碼
|