第二章51单片机学习基础综合(独立按键)

        接下来是第二部分51单片机的学习综合,这篇文章包括了三个小实验:独立按键控制LED亮暗、独立按键控制LED二进制亮灭以及独立按键控制LED移位。

       在笔者使用的电路板中p30~p33代表的k1、k2、k3、k4独立按键。在实验开始之前,我们需要了解按键的抖动:对于机械按键来说,当我们按下它的时候,并不会马上接通,会有很微小时间内的抖动。同时因为单片机的响应时间极短,这就会导致LED会有极短时间内的不稳定。

        鉴于此种情况,在我们编写代码的时候,我们就需要写一段延长时间的代码以度过这段时间。

        下面是独立按键以及LED的电路图:

       

                                           

        第一个实验:独立按键控制LED亮暗

        

        上面是实现这一过程的代码,Delay函数的作用就是解决按键抖动的问题,该实验难度不大笔者不多做赘述。

        实验现象如下:      

独立按键控制LED亮灭

        第二个实验:独立按键控制LED二进制亮灭

        我们知道,在LED灯在不亮的时候处于高电平(1),亮的时候则处于低电平(0)。所以在初始时刻,LED灯的情况为1111 1111。由此我们可以想到只要减去一,就会变成1111 1110,也就是第一个灯会亮,以此类推,成为零的位置所代表的灯就会亮,所以我们可以设计以下代码:

            同时笔者也可以提供第二种思路:定义一个新的数num,数字的类型为 unsigned char(对于unsigned char,它用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其取值范围为0~255。unsigned char可以用来存放无符号数,也可以存放西文字符,一个西文字符占一个字节。)而且255正好等于二进制中的1111 1111。

        同时我们也要知道取反符号的应用,在一串二进制的数字前加上“~”可以将0变为1,1变为0。

        将num的初始值设置为0x00(十六进制的0000 0000),每当我们按下一次独立按键的时候,num就加一,再取反后就和上一种方法是一样的了。代码如下:

实验现象如下:

  独立按键控制LED二进制亮灭

        第三个实验:独立按键控制LED移位

        在实验开始之前,我们需要认识位移符号,”<<“的含义是二进制数字中的1向左移一位。

        我们可以定义一个类型为unsigned char的数字num=0x01。每当我们按一次独立按键的时候,num就通过”<<“改变一次,同时我们再次将num取反赋值给P2(LED灯)就可以完成LED的顺序点亮了,代码如下:

实验结果如下:

       独立按键控制LED移位

        以上就是第二章51单片机有关独立按键的部分基础学习了,希望可以帮助到大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值