【ct107d】独立键盘

news/2025/2/15 16:42:03/

独立键盘

独立键盘和矩阵键盘虽都是键盘,但程序完全不同
先说独立键盘:

1、独立按键的处理思路
一般情况下,独立按键有两个引脚,其中一个通过上拉电阻接到单片机的I/O端口,另外一端接地。也就是说,平时按键没有动作的时候,输出的是高电平,如果有按下动作发生,则输出的是低电平。那么,我们在程序设计的时候,只要扫描跟按键引脚相连的I/O端口,如果发现有低电平产生,则判定该按键处于按下状态。有些时候,电路或者外围有电磁干扰,也会使单片机的I/O端口产生低电平,这种干扰信号会让单片机误认为是按键动作。所以,在扫描按键的时候应该做去抖动处理,把干扰信号过滤掉,从而获得准确的按键状态信号。

在这里插入图片描述
原理图中若想操作独立键盘想让J5端子2 3 引脚短接,这样当有键按下之后低电平将会从io口送出,然后我们检测io口的电平是否为低电平来判断按键是否按下.

CT107D 开发版任务:
在这里插入图片描述
程序如下:

#include "reg52.h"  sbit HC138_A = P2^5;        
sbit HC138_B = P2^6;        
sbit HC138_C = P2^7;        sbit S7 = P3^0;        
sbit S6 = P3^1;        
sbit S5 = P3^2;        
sbit S4 = P3^3;        unsigned char code SMG_NoDot[18] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};void Delay(unsigned char t)
{while(t--);
}void Init74HC138(unsigned char n)
{switch(n){case 4:HC138_A = 0;HC138_B = 0;HC138_C = 1;break;case 5:HC138_A = 1;HC138_B = 0;HC138_C = 1;break;case 6:HC138_A = 0;HC138_B = 1;HC138_C = 1;break;case 7:HC138_A = 1;HC138_B = 1;HC138_C = 1;break;case 8:HC138_A = 0;HC138_B = 0;HC138_C = 0;break;}
}void ShowKeyNum(unsigned char value)
{Init74HC138(6);P0 = 0x01;Init74HC138(7);P0 = value;
}void ScanKeys()
{if(S7 == 0){Delay(200);if(S7 == 0){while(S7 == 0);ShowKeyNum(SMG_NoDot[1]);}}if(S6 == 0){Delay(200);if(S6 == 0){while(S6 == 0);ShowKeyNum(SMG_NoDot[2]);}}if(S5 == 0){Delay(200);if(S5 == 0){while(S5 == 0);ShowKeyNum(SMG_NoDot[3]);}}if(S4 == 0){Delay(200);if(S4 == 0){while(S4 == 0);ShowKeyNum(SMG_NoDot[4]);}}
}{while(1){ScanKeys();}
}

非常的简单 ,但在蓝桥杯中 独立键盘的应用是有很多的嵌套; 如让S5 S6 按键来实现功能的切换 当S5作用时S6不工作,反之S6工作S5不工作,即S5 S6 是功能选择 其他键在嵌套进来实现功能.
如题目:
在这里插入图片描述
在第一次程序的基础上 改动,

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar stat=0;sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;
sbit key=P3^6;sbit D1=P0^0;
sbit D2=P0^1;
sbit D3=P0^2;
sbit D4=P0^3;
sbit D5=P0^4;
sbit D6=P0^5;
sbit D7=P0^6;
void HC_138(uchar n) //138译码器选择
{switch(n){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 delay(uint t)
{while(t--);
}
void init() //关闭蜂鸣器
{HC_138(5);P0=0X00;
}
void scankey() //键盘扫描
{if(S7==0){delay(100);if(S7==0){if(stat==0){D1=0;stat=1;}else if(stat==1){D1=1;stat=0;}}}if(S6==0){delay(100);if(S6==0){if(stat==0){D2=0;stat=2;}else if(stat==2){D2=1;stat=0;}}}if(S5==0){delay(100);if(S5==0){if(stat==1){D4=0;while(S5==0)D4=1;}else if(stat==2){D6=0;while(S5==0)D6=1;}	}}if(S4==0){delay(100);if(S4==0){if(stat==1){D3=0;while(S4==0)D3=1;}else if(stat==2){D5=0;while(S4==0)D5=1;}	}}}
void main()
{key=0;init();HC_138(4);P0=0XFF;while(1){scankey();}
}

这里设置一个变量stat 通过他的值来嵌套.


http://www.ppmy.cn/news/317230.html

相关文章

键盘ASCII对照表

转载网站&#xff1a;键盘按键与 ASCII 字符集对照表 键盘 Key Code 对照表 字母和数字键的键码值(keyCode)按键键码按键键码按键键码按键键码A65J74S83149B66K75T84250C67L76U85351D68M77V86452E69N78W87553F70O79X88654G71P80Y89755H72Q81Z90856I73R82048957 数字键盘上的…

867. 四键键盘

题目描述&#xff1a;https://www.lintcode.com/problem/4-keys-keyboard/description 借鉴了2keyboard的思路&#xff0c;N次操作最少能打出N个A&#xff0c;且如果最后的一组操作是acv(vvv...)打出的A的个数比干敲多之后&#xff0c;先用acv再干敲肯定是不划算的(因为如果把…

1033 旧键盘打字 (20 分)

1033 旧键盘打字 (20 分) 旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在 2 行中分别给出坏掉的那些…

puppeteer 美式键盘 Keyboard对应表

在查看 puppeteer 文档的时候,发现 keyboard 的链接 404 找了挺久才找到, 所以记录一下 /*** Copyright 2017 Google Inc. All rights reserved.** Licensed under the Apache License, Version 2.0 (the License);* you may not use this file except in compliance with the…

程序员用什么样子的键盘?

我对自己键盘嫌弃已经是一种日常了,总是把敲错代码的锅扣在键盘身上,所以今天就"程序员用什么键盘?"搜索了一下. 有几个见解精辟的: #https://blog.csdn.net/h8y0bDJVUkwE1LboZlE/article/details/79547951 补了一下键盘知识&#xff0c;发现有太多的选择&#xff…

达尔优A87Pro机械键盘暮云灰有线版带你玩转键盘光效

最近又入手了达尔优A87Pro机械键盘暮云灰有线版。整块键盘走向是舒服洁净时尚。配件有Type-c数据线、7颗增补键帽以及拔轴器。整个键盘机身结构处无螺丝。 按键排列有序&#xff0c;键与键之间的空隙都刚刚好。支持全键热插拔。几乎能兼容市面上99%的机械轴体。让你随心所欲更换…

MacOS 10.10 以上解决机械键盘按键无法识别

MacOS 10.10 以上解决机械键盘按键无法识别 题主的配置是 MacBook Pro &#xff0c;系统10.13&#xff0c;机械键盘高斯87 以前装的黑苹果&#xff0c;系统10.10&#xff0c;机械键盘可以完美使用&#xff0c;但是现在用了MacBook Pro机械键盘确有几个键无法识别出来&#xf…

Ikbc C87 键盘功能组合键

音量调节 FnF9: 静音 FnF10: 音量- FnF11: 音量windows切歌 顺带记录一个win10自带的切歌快捷键 Ctrl Alt → &#xff1a;下一首歌 Ctrl Alt ← &#xff1a;上一首歌背光亮度调节 Fn方向上&#xff1a;亮度加 Fn方向下&#xff1a;亮度减 &#xff08;亮度共有七…