51单片机按键使用

51单片机里有许多寄存器(存储器),每个寄存器8位为一组,例如P1,P2等等。每一位连接有导线,导线连接驱动器,对应一个I/O口,驱动器能够增大驱动能力。CPU能够通过程序访问寄存器,给I/O口高电平或低电平,1是高电平,0是低电平。
插入图片描述LED电路图

正常情况下,寄存器P2口为高电平,灯不亮。当给任意一位低电平时,相应的灯才会亮。

独立按键电路图
正常情况下,P31,P30,P32,P33处于高电平。当按键按下,P3口与地相连,处于低电平。

按键控制LED亮灭

#include <REGX52.H>

void main()
{
	while(1)
  {
 	if(P3_0==0)   //当P3_0按键按下
 	{
    P2_0=0;    //P2_0 LED灯亮
 	}
	 else
 	{
	 P2_0=1;     //按键没有按下,灯不亮
	}
  }
}

按键控制LED显示二进制

#include <REGX51.H>


void Delay20ms()		//@11.0592MHz  20ms延迟
{
	unsigned char i, j, k;


	i = 1;
	j = 216;
	k = 35;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{
	while(1)
  {
  
	if(P3_1==0)   //按键p3_1按下
	{
   Delay20ms();   //防抖处理
    while(P3_1==0) ;//当P3_1按键按下没有松开,P3_1一直处于低电平,让它一直处于while循环,按键松开程序继续执行
    Delay20ms();  //防抖处理
	P2--;         //p2口默认是高电平,初始值是1111 1111,灯全灭,每次按下让p2减一,实现LED表示二进制
	}
  }
}

独立按键控制LED移位

#include <REGX51.H>

void Delay20ms()		//@11.0592MHz   20ms延迟
{
	unsigned char i, j, k;


	i = 1;
	j = 216;
	k = 35;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	unsigned char LED_num; //定义变量LED_num,没有赋值默认是0
    P2=~0X01;		   //P2口初始值为0000 0001再取反1111 1110,只有一个灯亮
while(1)
    {
    if(P3_1==0)        //当按键P3_1按下
    {
        Delay20ms();    //按键防抖
        while(P3_1==0);//当P3_1按键按下没有松开,P3_1一直处于低电平,让它一直处于while循环,按键松开程序继续执行
        Delay20ms();  //按键防抖
        LED_num++;    //按键P3_1按下松开一次,变量LED_num加1,
        if(LED_num==8)//当LED_num为8时,重新赋值0
        LED_num=0;          
        P2=~(0X01<<LED_num);//0000 0001左移再取反
         
    }
    
     if(P3_0==0)
    {
        Delay20ms();
        while(P3_0==0);
        Delay20ms();
        LED_num--;  //按键P3_0按下松开一次,变量LED_num减1,
        if(LED_num==0XFF)//LED_num为无符号变量,0减1为255,16进制0XFF
        LED_num=7; //重新赋值7
        P2=~(0X01<<LED_num);//0000 0001左移取反
          
    
    }
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值