单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:13381|回复:1

四按键 控制四种流水灯程序

[复制链接]
ID:308393发表于 2018-4-15 10:18|显示全部楼层
#include< reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1 =P2^0;
sbit key2 =P2^1;
sbit key3 =P2^2;
sbit key4 =P2^3;
uchar flag1=0,flag2=0,flag3=0,flag4=0;
void delay_ms(uint z)
{
     uint i,j;
     for(i=0;i<z;i++)
     for(j=0;j<110;j++);
}
   void O_to_E()
{
P0=0Xaa;
delay_ms(200);
P0=~0Xaa;
delay_ms(200);
}
void key_scan()   //键盘扫描
{
     if(!key1)
     {
       delay_ms(10); //延时消抖
       if(!key1)
       flag1=1;
     }
     if(!key2)
     {
       delay_ms(10); //延时消抖
       if(!key2)
         flag2=1;
       }
     if(!key3)
     {
       delay_ms(10); //延时消抖
       if(!key3)
         flag3=1;
     }
   if(!key4)
   {
     delay_ms(10);
     if(!key4)
       flag4=1;   //延时消抖
   }
}
void main()
{
     uchar i;
     while(1)
     {
         key_scan();
         if(flag1)                     //按键一按          
         {
             for(i=0;i<8;i++)         //从左至右亮,每次一盏        
             {
                   P0=~(0x80>>i);
                   delay_ms(100);
                   key_scan();             //按键扫描  
                   if(flag2||flag3||flag4){flag1=0;break;}       //如果有其它按键按下响应其它按键
             }
         }
         if(flag2)                       //按键一按下?            
         {
               for(i=0;i<8;i++)         //从右至左亮,每次一盏  
             {
                   P0=~(0x01<<i);
                   delay_ms(100);
                   key_scan();
                   if(flag1||flag3||flag4){flag2=0;break;}
             }
         }
           if(flag3)
         {
             O_to_E();                     //奇偶交替闪烁
             key_scan();
             if(flag1||flag2||flag4){flag3=0;break;}
             }
         }
       if(flag4)
   {
     for(i=0;i<8;i++)
     {
   P0=(0x80>>i);     //单方向全部点亮
   delay_ms(100);    
   key_scan();
   if(flag1||flag2||flag3){flag4=0;break;}
   }
   }
   }
  
ID:556486发表于 2019-6-15 22:15|显示全部楼层
有电路图吗?

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网