通過外中斷,兩個按鍵可實現流水燈加速減速控制,從左到右,從右到左,從中間到兩端,從兩端到中間等。大家可以參考下
仿真圖.png (185.79 KB, 下載次數: 55)
下載附件
2019-10-18 16:07 上傳
單片機源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar j,k;
- void delay(int ms)
- { uchar i;
- while(ms--)
- for(i=0;i<123;i++);
- }
- uchar codetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
- 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
- 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
- 0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,
- 0xff,0xe7,0xc3,0x81,0x00,0x7e,0x3c,0x18,
- 0x00,};
- void EXINTinit()
- {
- EA=1;EX0=1;EX1=1;IT0=1;IT1=1;
- }
- void main()
- {
- EXINTinit(); P0=0xfe;
- while(1)
- {
- switch(k)
- {
- case 0:
- {
- for(j=0;j<16;j++)
- {
- if(k!=0) break;
- P0=tab[j];
- delay(300);
- }
- for(j=0;j<16;j++)
- {
- if(k!=0)
- break;
- P0=tab[j+16];
- delay(300);
- }
- for(j=0;j<9;j++)
- {
- if(k!=0)
- break;
- P0=tab[j+32];
- delay(300);
- }
- for(j=0;j<16;j++)
- {
- if(k!=0)
- break;
- P0=0x00;
- delay(300);
- }
- for(j=8;j>0;j--)
- {
- if(k!=0)
- break;
- P0=0x55;
- delay(300);
- P0=0xaa;
- delay(300);
- }
- }break;
-
- case 1:
- {
- for(j=0;j<16;j++)
- {
- if(k!=1)
- break;
- P0=tab[j];
- delay(100);
- }
- for(j=0;j<16;j++)
- {
- if(k!=1)
- break;
- P0=tab[j+16];
- delay(100);
- }
- for(j=0;j<9;j++)
- {
- if(k!=1)
- break;
- P0=tab[j+32];
- delay(100);
- }
- for(j=0;j<16;j++)
- {
- if(k!=1)
- break;
- P0=0x00;
- delay(100);
- }
- for(j=8;j>0;j--)
- {
- if(k!=1)
- break;
- P0=0x55;
- delay(300);
- P0=0xaa;
- delay(100);
- }
- };break;
- case 2:
- {
- for(j=0;j<16;j++)
- {
- if(k!=2)
- break;
- P0=tab[j];
- delay(600);
- }
- for(j=0;j<16;j++)
- {
- if(k!=2)
- break;
- P0=tab[j+16];
- delay(600);
- }
- for(j=0;j<9;j++)
- {
- if(k!=2)
- break;
- P0=tab[j+32];
- delay(600);
- }
- for(j=0;j<16;j++)
- {
- if(k!=2)
- break;
- P0=0x00;
- delay(600);
- }
- for(j=8;j>0;j--)
- {
- if(k!=2)
- break;
- P0=0x55;
- delay(600);
- P0=0xaa;
- delay(600);
- }
- };break;
- default: break;
- }
- }
- }
- voidEX0INT() interrupt 0
- {
- k=1;
- }
- voidEX1INT() interrupt 2
- { k=2;
- }
復制代碼
|