CT107D:5、独立按键的基本操作

题目:在CT107D单片机综合训练平台上,首先将J5处的跳帽接到2~3引脚,使按键S4~S7四个按键的另外一端接地从而成为4个独立按键。在扫描按键的过程中,发现有按键触发信号后,先做去抖动处理,当确认按键按下时,才进行相应的功能处理。

基本操作:按下S7点亮L1指示灯,松开按键熄灭,S6点亮L2指示灯,S5点亮L3指示灯,S4点亮L4指示灯,都是松开熄灭,按键均作去抖。

原理图

代码 

#include "reg52.h"

sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;

sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;

sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
//定义延时函数来去抖动
void delay(unsigned int t)
{
	while(t--);	
}

//打开控制led的Y4C
void led()
{
	HC138_A=0;
	HC138_B=0;
	HC138_C=1;		
}
//先消抖后进行操作
void key_alone()
{
	if(S7==0)
	{
		delay(100);
		if(S7==0)//还是低电平说明真的按下去了,让灯亮
		{
			L1=0;
			while(S7==0);
			L1=1;
		}
	}

	if(S6==0)
	{
		delay(100);
		if(S6==0)//还是低电平说明真的按下去了,让灯亮
		{
			L2=0;
			while(S6==0);
			L2=1;
		}
	}

	if(S5==0)
	{
		delay(100);
		if(S5==0)//还是低电平说明真的按下去了,让灯亮
		{
			L3=0;
			while(S5==0);
			L3=1;
		}
	}

	if(S4==0)
	{
		delay(100);
		if(S4==0)//还是低电平说明真的按下去了,让灯亮
		{
			L4=0;
			while(S4==0);
			L4=1;
		}
	}
}
void main()
{
	led();
	while(1)
	{
		key_alone();		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值