蓝桥杯单片机入门(7)—按键模块

这回我们讲解的是按键模块,上一章我们讲的是LED灯模块,这次我们是基于上一次LED模块的基础上再增加的,这次的内容是关于按键控制LED灯的,

首先我们先讲一下,按键的原理,下面这个就是按键的原理图,大家看左边,四个按键连在一条线上,然后接地,这个意思就是说,按键按下才会导通,且按下后接地,输出低电平,意思就是说,S2 =0,则按键按下,S3= 0,则S3按键按下,S4=0,则S4按键按下,S5=0,则S5按下

        

大家看右边这张图,这张图便是控制按键的IO口连接图,我们只需要控制对应的IO口输出低电平即可控制按键

        接下来我们讲解的是按键读取函数

功能:用于读取按键按下的值,并且返回对应的数值,不同的数值对应不同的按键,以下是操作上述4个按键的读取按键函数的代码

unsigned char temp;//这个变量是按键读取函数的存放返回值的变量
unsigned char Key_Read()
{
	if(P3_4 == 0) temp = 1; //如果P3_4按下,则返回数值1
	if(P3_5 == 0) temp = 2; //如果P3_5按下,则返回数值2
	if(P3_6 == 0) temp = 3; //如果P3_6按下,则返回数值3
	if(P3_7 == 0)  temp = 4; //如果P3_7按下,则返回数值4
	return temp;//返回出变量的值
}

       接下来记住3行死代码,不需要理解啥原理,记死就行,在使用的时候直接把这几行代码原封不动的丢到代码中去

		

unsigned char Key_Val,Key_Down,Key_Up,Key_Old;//这四个变量依次是读取存放按键返回值的变量,按下起作用,
        Key_Val = Key_Read();//读取按键值,把读取到的值放到Key_Val变量中
		Key_Down = Key_Val & (Key_Old ^ Key_Val);//检测下降沿
		Key_Up = ~Key_Val & (Key_Old ^ Key_Val);//检测上升沿
		Key_Old = Key_Val;//扫描辅助变量

关于按键我们小结一下:分为3步走,第一步写按键读取函数,第二步设置变量,第三步编写三行死代码。这就完成了对按键的检测,消抖的操作,完成了按键模块的封装

接下来给大家演示一段代码,功能:按键控制LED灯的亮灭

		switch(Key_Down)
		{
			case 1: P1_0 = 1; break;//按键1按下,LED1亮
			case 2: P1_1 = 1; break;//按键2按下,LED2亮
			case 3: P1_0 = 0; break;//按键3按下,LED1灭
			case 4: P1_1 = 0; break;//按键4按下,LED2灭
		}

这里的思路就是,我们采用按键按下发挥作用,用switch case  语句,完成对灯的点亮和熄灭

比如  当按键返回值为1时,则P1_0输出高电平,点亮LED灯,再跳出循环。剩下的三句,以此类推,同样的道理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值