K1是总开关,当K1首次按下时,流水灯由下往上流动;当K2按下时停止流动且全部灯灭;当K3按下时使灯由上往下流动,K4则使灯由下往上运动。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- # include <reg51.h>
- unsigned char led[]= {0xfe,0xfd,0xfb,0xf7};
- void delay(unsigned char time)
- {
- unsigned int j=15000;
- for(;time> 0;time--)
- for(;j> 0;j--);
- }
- void main()
- {
- bit dir=0,run=0;
- char i;
- while(1)
- {
- switch (P0&0x0f)
- {
- case 0x0e:run=1;break;
- case 0x0d:run=0,dir= 1;break;
- case 0x0b:dir=1;break;
- case 0x07:dir=0;break;
- }
- if (run)
- if (dir)
- for (i=0;i<=3;i++)
- {
- P2=led[i];
- delay(200);
- }
- else
- for(i=3;i>=0;i--)
- {
- P2=led[i];
- delay(200);
- }
- else P2= 0xff;
- }}
复制代码
所有资料51hei提供下载:
键控流水灯.zip
(62.15 KB, 下载次数: 38)
|