使用51单片机一个独立按键(P3^1口)切换点亮不同LED
初值为所有LED灭,按下按键第一下第一个LED点亮,再按一下第二个LED点亮,然后第三个第四个……按到第九下模式会到0,即全灭。
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
u16 mode;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
sbit key=P3^1;
void delay(u16 i)
{
while(i--);
}
void LED()
{
switch(mode)
{
case(0):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
case(1):LED1=0;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
case(2):LED1=1;LED2=0;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
case(3):LED1=1;LED2=1;LED3=0;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
case(4):LED1=1;LED2=1;LED3=1;LED4=0;LED5=1;LED6=1;LED7=1;LED8=1;break;
case(5):LED1=1;LED2=1;LED3=1;LED4=1;LED5=0;LED6=1;LED7=1;LED8=1;break;
case(6):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=0;LED7=1;LED8=1;break;
case(7):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=0;LED8=1;break;
case(8):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=0;break;
//LED写的有点多,可以直接用P2口赋值
}
}
void main()
{
while(1)
{
LED();
if(key==0)
{
delay(1000);
if(key==0)
{
mode++;
if(mode==9)
{
mode=0;
}
while(!key);
}
}
}
}
版权声明:本文为qq_56894255原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。