找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3128|回复: 1
收起左侧

[求助]

[复制链接]
ID:46594 发表于 2012-11-19 22:56 | 显示全部楼层 |阅读模式

采用单片机系统、四路按键、四个LED灯、一个数码管,学习按键检测的基本原理,实现四路按键的检测,当检测到某一按键按下,点亮对应LED等,并在数码管显示对应的按键号。   跪求啊   最好在这个程序上修改  


/***************************************************
描  述:按键控制

***************************************************/
#include<reg52.h>                 //包含一个51标准内核的头文件

sbit K1=P3^5;   //定义IO口
sbit K2=P3^4;                   //定义IO口
sbit K3=P3^3;                   //定义IO口
sbit K4=P3^2;                   //定义IO口
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;                   
sbit L4=P1^3;

sbit DU=P2^6;
sbit WE=P2^7;


void delay10ms(void) //延时程序
{
 unsigned char i,j;
 for(i=20;i>0;i--)
 for(j=248;j>0;j--);

}
 
void main(void)                  //主函数
{ 
   K1=1 ; 
   K2=1 ;
   K3=1 ;
   K4=1 ;
   L1=1; 
   L2=1; 
   L3=1; 
   L4=1;
   DU=1;
   WE=1;
   P0=0xff;                        //赋初值 
   while(1)       
   {
 
 
if(K1==0)                       //如果按键1按下
     {
   delay10ms();
   if(K1==0)
    L1=0;                //灯亮
       DU=0;
    WE=1;
       P0=0xf9; 
  }
    else                        //没按下
      {
       L1=1;                   //灯灭
    
     }
     
if(K2==0)                       //如果按键2按下
     {
   delay10ms();
   if(K2==0)
    L2=0;                //灯亮
       DU=0;
    WE=1;
       P0=0xa4; 
  }
    else                        //没按下
      {
       L2=1;                   //灯灭
    
       }
     
if(K3==0)                       //如果按键3按下
     {
   delay10ms();
   if(K3==0)
    L3=0;                //灯亮
       DU=0;
    WE=1;
       P0=0xb0; 
  }
    else                        //没按下
      {
       L3=1;   
                //灯灭
       }
           
if(K4==0)                       //如果按键4按下
     {
   delay10ms();
   if(K4==0)
    L4=0;                //灯亮
    DU=0;
    WE=1;
       P0=0x99; 
      }
    else                        //没按下
      {
       L4=1;                   //灯灭
       
   }
     }

}

回复

使用道具 举报

ID:46654 发表于 2012-11-26 10:28 | 显示全部楼层

描  述:按键控制

***************************************************/
#include<reg52.h>                 //包含一个51标准内核的头文件

sbit K1=P3^5;   //定义IO口
sbit K2=P3^4;                   //定义IO口
sbit K3=P3^3;                   //定义IO口
sbit K4=P3^2;                   //定义IO口
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;                  
sbit L4=P1^3;

sbit DU=P2^6;
sbit WE=P2^7;


void delay10ms(void) //延时程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);

}

void main(void)                  //主函数
{
   K1=1 ;
   K2=1 ;
   K3=1 ;
   K4=1 ;
   L1=1;
   L2=1;
   L3=1;
   L4=1;
   DU=1;
   WE=1;
   P0=0xff;                        //赋初值
   while(1)      
   {


if(K1==0)                       //如果按键1按下
     {
   delay10ms();
   if(K1==0)
    L1=0;                //灯亮
       DU=0;
         P0=0xf9;

      DU=1;

     delay();

     WE=0;

   P0=OX??

    WE=1;

 

   p0=0XFF;消隐

 delay();

   }
    else                        //没按下
      {
       L1=1;                   //灯灭
   
     }
    
if(K2==0)                       //如果按键2按下
     {
   delay10ms();
   if(K2==0)
    L2=0;                //灯亮
       DU=0;
 
       P0=0xa4; //数码管显示数字

      DU=1;

      WE=0;

   P0=OX??

    WE=1;

 

   p0=0XFF;消隐

 delay();

      
  }
    else                        //没按下
      {
       L2=1;                   //灯灭
   
       }
    
if(K3==0)                       //如果按键3按下
     {
   delay10ms();
   if(K3==0)
    L3=0;                //灯亮
       DU=0;
          P0=0xb0;

       DU=1;

    WE=0;

P0=0x??; 

WE=1;

p0=0xff;


  }
    else                        //没按下
      {
       L3=1;  
                //灯灭
       }
          
if(K4==0)                       //如果按键4按下
     {
   delay10ms();
   if(K4==0)
    L4=0;                //灯亮
    DU=0;
    WE=0;
       P0=0x99;
      }
    else                        //没按下
      {
       L4=1;                   //灯灭
      
   }
     }

[此贴子已经被作者于2012-11-26 11:26:20编辑过]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

快速回复 返回顶部 返回列表