【蓝桥杯】CT107D单片机之独立按键

一、简介

  独立按键是直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立式按键电路配置灵活,软件结构简单。
  独立键盘理想的波形是按下去时保持低电平,实际上在上升沿和下降沿的过程中(即按键和离键时的一段微小时间)会出现抖动。消抖的方法有两种,一种是通过硬件:在电路上连个电容;另一种是软件消抖,根据经验增加10ms的延时。

二、图解

在这里插入图片描述

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

三、独立按键控制LED实验

硬件说明: IAP15F2K61S2
实验目标: 在CT107D单片机综合训练平台上,通过独立按键实现对LED灯闪烁的控制。
实验要求:按键S7和S6为选择键,确定控制键控制那组LED指示灯。按键S5和S4为控制键,按键该键点亮指定的LED指示灯,松开后熄灭。
按下S7点亮L1指示灯,L1点亮后,S6不响应操作,S5控制L3, S4控制
L4,再次按下S7, L1指示灯熄灭,S6可可响应操作。
按下S6点亮L2指示灯,L2点亮后,S7不响应操作,S5控制L5,S4控制
L6,再次按下S6,L2指示灯熄灭,S7可可响应操作。
程序代码

#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 L5 = P0^4;
sbit L6 = P0^5;/*LED灯*/

void SelectHC573(unsigned char channel)/*74HC573锁存器*/
{
	switch(channel)
	{
		case 4:
			P2 = (P2 & 0x1f) | 0x80;
		break;
		case 5:
			P2 = (P2 & 0x1f) | 0xa0;
		break;
		case 6:
			P2 = (P2 & 0x1f) | 0xc0;
		break;
		case 7:
			P2 = (P2 & 0x1f) | 0xe0;
		break;
	}
}

void DelayK(unsigned char t)/*按键延时*/
{
	while(t--);
}

unsigned char stat_k = 0; /*模式标志位*/

void ScanKeys_Alone()/*按键扫描*/
{
	if(S7 == 0)
	{
		DelayK(100);
		if(S7 == 0)
		{
			if(stat_k == 0)
			{
				L1 = 0;
				stat_k = 1;
			}
			else if(stat_k == 1)
			{
				L1 = 1;
				stat_k = 0;
			}
			while(S7 == 0);
		}
	}
	if(S6 == 0)
	{
		DelayK(100);
		if(S6 == 0)
		{
			if(stat_k == 0)
			{
				L2 = 0;
				stat_k = 2;
			}
			else if(stat_k == 2)
			{
				L2 = 1;
				stat_k = 0;
			}
			while(S6 == 0);
		}
	}
	if(S5 == 0)
	{
		DelayK(100);
		if(S5 == 0)
		{
			if(stat_k == 1)
			{
				L3 = 0;
				while(S5 == 0);
				L3 = 1;
			}
			else if(stat_k == 2)
			{
				L5 = 0;
				while(S5 == 0);
				L5 = 1;
			}
		}
	}
	if(S4 == 0)
	{
		DelayK(100);
		if(S4 == 0)
		{
			if(stat_k == 1)
			{
				L4 = 0;
				while(S4 == 0);
				L4 = 1;
			}
			else if(stat_k == 2)
			{
				L6 = 0;
				while(S4 == 0);
				L6 = 1;
			}
		}
	}
}

void main()
{
	SelectHC573(4);
	while(1)
	{
		ScanKeys_Alone();
	}
}
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ct107d单片机是一种常见的单片机类型,广泛应用于各种电子设备中。蓝桥杯是中国著名的计算机及信息技术竞赛,矩阵键盘是一种常见的输入设备。下面我将介绍ct107d单片机如何与蓝桥杯矩阵键盘配合使用。 首先,ct107d单片机具有输入输出接口,可以与外部设备进行数据交互。蓝桥杯矩阵键盘通常采用矩阵排列的按钮形式,可以通过多个引脚与单片机相连。我们需要在单片机上配置对应的引脚,使其与蓝桥杯矩阵键盘的按键相对应。 然后,我们需要编写程序来读取输入的按键信息。在ct107d单片机上,可以使用GPIO口中断来实现按键的检测功能。当按键被按下时,引脚电平发生变化,触发GPIO口中断,单片机会执行相应的中断服务程序。我们可以在中断服务程序中读取按键的状态,并根据不同按键进行不同的处理。 在程序设计过程中,我们可以利用矩阵键盘的特性,将按键映射为矩阵的行和列。通过循环扫描的方式,逐一检测矩阵中的每个按键,并根据按键的状态进行相应的操作。例如,当按键按下时,可以执行一些特定的功能,如发送数据、改变显示内容等。 总结起来,ct107d单片机蓝桥杯矩阵键盘的配合使用,需要在单片机上配置引脚连接,编写相应的程序来读取按键信息,并根据按键状态进行相应的处理。这样,就能够实现方便的按键输入功能,在蓝桥杯竞赛及其他实际应用中发挥作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值