独立键盘和矩阵键盘 文档资料

合集下载

单片机矩阵键盘

单片机矩阵键盘

按键在闭合和断开时,触点会存在抖动现象:

数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。
在上题的基础上,用另外三个独立键盘实现按下第一个时计时停止,按下第二个时计时开始,按下第三个是计数值清零从头开始。
键盘处理程序就作这么一个简单的介绍,实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C RLC A JC NEXT2 NEXT3: MOV R0,#00H RET KCODE: MOV B,#0FBH NEXT4: RRC A INC B JC NEXT4 MOV A,R1 SWAP A NEXT5: RRC A INC B INC B INC B INC B 。
按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4...
识别方法
04
03
01
02
3、若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出: P1.7 1 1 1 0 P1.6 1 1 0 1 P1.5 1 0 1 1 P1.4 0 1 1 1 在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值 4、为了保证键每闭合一次CPU仅作一次处理,必须去除键释放时的抖动。

《矩阵键盘》课件

《矩阵键盘》课件

游戏机按键通常配备震动反馈 功能,提供触觉反馈,增强游 戏体验的真实感。
工业控制设备
工业控制设备如自动 化仪表、数控机床等 也采用矩阵键盘布局 。
工业控制设备的矩阵 键盘通常防水、防尘 ,适应恶劣的工业环 境。
矩阵键盘的设计使得 工业控制设备能够实 现快速、准确的输入 控制指令。
06
矩阵键盘的未来展望

扫描程序
按照一定的规则逐行逐列扫描键盘 ,检测按键状态变化。
识别程序
根据按键电路的状态变化,判断具 体哪个按键被按下,并执行相应的 操作。
接口通信方式
并行通信
通过数据线将按键信号直接传输 到微控制器,数据传输速度快,
但需要较多的数据线。
串行通信
通过串行数据线将按键信号传输 到微控制器,数据传输速度较慢
键。
矩阵键盘的设计使得电子琴能够 模拟传统钢琴的触感,提供逼真
的演奏体验。
电子琴的矩阵键盘通常配备力度 感应功能,根据按下琴键的力度
来调整音符的音量和音质。
游戏机按键
游戏机按键通常采用矩阵键盘 布局,以适应游戏过程中快速 输入指令的需求。
矩阵键盘的设计使得游戏机按 键能够实现多键同时按下,提 高游戏操作的准确性和速度。
THANKS
感谢观看
03
矩阵键盘的电路设计
硬件电路设计
电源电路
为矩阵键盘提供稳定的电 源,确保按键的正常工作 。
按键电路
每个按键对应一个或多个 行列交叉点,通过检测行 和列的状态变化来确定按 键的按下状态。
输出电路
将按键信号输出到微控制 器或其他处理设备进行处 理。
软件编程设计
初始化程序
对矩阵键盘进行初始化设置,包 括设置扫描频率、去抖动时间等

键盘的结构与原理

键盘的结构与原理

键盘的结构与原理键盘是单片机应用系统中人机交流不可缺少的输入设备。

键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。

键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系(1和0)。

常见的种类有:独立式按键和矩阵式键盘。

1. 独立式按键结构如下图所示,其特点是每个按键单独占用一根I/O口线,每个按键工作不会影响其他I/O口线的状态。

多用于所需按键不多的场合。

可采用JNB(或JB)来查询哪一个按键按下,并转向相应的功能处理程序。

JNB P1.0, A0 ;如P1.0键按下,就跳到A0JNB P1.1, A1 ;如P1.1键按下,就跳到A1JNB P1.2, A2 ;如P1.2键按下,就跳到A2JNB P1.3, A3 ;如P1.3键按下,就跳到A3JNB P1.4, A4 ;如P1.4键按下,就跳到A4JNB P1.5, A5 ;如P1.5键按下,就跳到A5JNB P1.6, A6 ;如P1.6键按下,就跳到A6JNB P1.7, A7 ;如P1.7键按下,就跳到A78031P1.0P1.1P1.2P1.3 P1.4P1.5P1.6P1.7V CC2. 矩阵式键盘单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。

由图可知,一个4×4的行、列结构,可以构成一个含有16个按键的键盘,节省了很多I/O 口。

控制方式:先判断是否有键按下。

如有,再判断哪一键按下,并得到 键码值,然后根据键码值转向不同的功能程序。

矩阵式结构键盘比独立式按键要复 杂,识别也要复杂一些。

最常用的识别方法是键盘扫描法。

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7+5V 10kΩ10kΩ10kΩ10kΩ89S513. 键盘设计应注意的问题机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。

独立按键

独立按键

软件消抖
if(k1==0) //检测按键K1是否按下 { delay(1000); //消除抖动 一般大约10ms if(k1==0) //再次判断按键是否按下 { 语句; }
软件编程
下载程序后按下K1按键可以对D1小灯状态取反。 #include "reg52.h" typedef unsigned int u16; typedef unsigned char u8; sbit k1=P3^1; //定义P31口是k1 sbit led=P2^0; //定义P20口是led void delay(u16 i) { while(i--); }
按键处理函数 void keypros() { if(k1==0) //检测按键K1是否按下 { delay(1000); //消除抖动 一般大约10ms if(k1==0) //再次判断按键是否按下 { led=~led; //led状态取反 } while(!k1); //检测按键是否松开 } }
独立按键原理
(2)矩阵按键
为了减少I/O口的占用,通常将按键排列成矩阵 形式,即每条水平和垂直直线在交叉处不直接连通, 而是通过一个按键加以连接。
2. 独立按键原理
按键在闭合和断开时,触点会存在抖动现象。由 于机械触点的弹性作用,一个按键在闭合时不会马上 稳定地接通,断开时不会立即断开。
为了避免这种现象而做的措施就是按键消抖。消抖方法 分为:硬件消抖、软件消抖。
独立按键实验
1.按键介绍
2.独立按键原理 3.编写独立按键控制程序
工程图示按键
键盘的分类
键盘分为编码键盘和非编码键盘。键盘上闭合键的识别由专用源自硬件编码器实现,如计算机键盘。靠软件编
程来识别称为非编码键盘。单片机组成的各系统中,用

实验5-独立键盘和矩阵键盘

实验5-独立键盘和矩阵键盘

实验5 独立键盘和矩阵键盘一、实验目的1、学会用C语言进行独立按键应用程序的设计。

2、学会用C语言进行矩阵按键应用程序的设计。

二、实验内容1、独立按键:对四个独立按键编写程序:当按k1时,8个LED同时100ms闪烁;当按k2时,8个LED从左到右流水灯显示;当按k3时,8个LED从右到左流水灯显示;当按k4时,8各LED同时从两侧向中间逐步点亮,之后再从中间向两侧逐渐熄灭;2、矩阵按键:采用键盘扫描方式,顺序按下矩阵键盘后,在一个数码管上顺序显示0~F,采用静态显示即可。

3、提高部分(独立按键、定时器、数码管动态扫描):编写程序,实现下面的功能。

用数码管的两位显示一个十进制数,变化范围为00~59,开始时显示00,每按一次k1,数值加1;每按一次k2,数值减1;每按一次k3,数值归零;按下k4,利用定时器功能使数值开始自动每秒加1;再按一次k4,数值停止自动加1,保持显示原数。

三、实验步骤1、硬件连接(1)使用MicroUSB数据线,将实验开发板与微型计算机连接起来;(2)在实验开发板上,用数据线将相应接口连接起来;2、程序烧入软件的使用使用普中ISP软件将HEX文件下载至单片机芯片内。

查看结果是否正确。

四、实验结果——源代码1. #include "reg52.h"typedef unsigned char u8;typedef unsigned int u16;#define LED P2sbit key1=P3^1;sbit key2=P3^0;sbit key3=P3^2;sbit key4=P3^3;const char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; u8 code begMid[]={0x7e, 0xbd,0xdb,0xe7, 0xdb, 0xbd, 0x7e}; void Delay(u16 i){ while(i--);}void KeyDown(){u8 i;if(key2==0){Delay(1000);if(key2==0){for(i=0;i<8;i++){LED=tab[i];Delay(50000);}while(!key2);}LED=0xff;}else if(key1==0){Delay(1000);if(key1==0)for(i=0;i<3;i++){LED=0x00;Delay(10000);LED=0xff;Delay(10000);}}}}void Int0Init(){IT0=1;EX0=1;EA=1;}void Int1Init(){IT1=1;EX1=1;EA=1;} void main(){Int0Init();Int1Init();while(1){KeyDown();}}void Int0() interrupt 0{u8 i;if(key3==0){Delay(1000);if(key3==0)for(i=7;i>=0;i--){LED=tab[i];Delay(50000);}}}}void Int1() interrupt 2{u8 i;if(key4==0){Delay(1000);if(key4==0){for(i=0;i<=6;i++){LED=begMid[i];Delay(50000);}}}}2.#include "reg52.h"typedef unsigned int u16;typedef unsigned char u8;#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;u8 KeyValue;u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//??0~F?? void delay(u16 i){while(i--);}void KeyDown(void){char a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f){delay(1000);if(GPIO_KEY!=0x0f){GPIO_KEY=0X0F;switch(GPIO_KEY){case(0X07): KeyValue=0;break;case(0X0b): KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e): KeyValue=3;break;}GPIO_KEY=0XF0;switch(GPIO_KEY){case(0X70): KeyValue=KeyValue;break;case(0Xb0): KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0): KeyValue=KeyValue+12;break;}while((a<50)&&(GPIO_KEY!=0xf0)){delay(1000);a++;}}}}void main(){LSA=0;LSB=0;LSC=0;while(1){KeyDown();GPIO_DIG=smgduan[KeyValue];}}3.#include <reg52.h>typedef unsigned int u16;typedef unsigned char u8;#define KEYPORT P3sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit key1=P3^1;sbit key2=P3^0;sbit key3=P3^2;sbit key4=P3^3;u16 t;u8 sec;u8 DisplayData[2];u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void Time1Init(){TMOD |= 0x10;TH1=0Xd8;TL1=0Xf0;EA=1;ET1=1;}void delay(u16 i){while(i--); }void DigDisplay(){u8 i;for(i=0;i<2;i++){switch(i){case 0:LSA=0;LSB=0;LSC=0;break;case 1:LSA=1;LSB=0;LSC=0;break;}P0=DisplayData[i];delay(100);P0=0x00;}}void datapros(){DisplayData[0]=smgduan[sec%10];DisplayData[1]=smgduan[sec/10];}void main(){Time1Init();while(1){if(key4==0){delay(1000);if(key4==0){TR1=!TR1;while(key4==0);}}if(key3==0){delay(1000);if(key3==0){sec=0;while(key3==0);}}if(key2==0){delay(1000);if(key2==0){sec--;while(key2==0);}}if(key1==0){delay(1000);if(key1==0){sec++;while(key1==0);}}}}void Time1() interrupt 2{TH1=0Xd8;TL1=0Xf0;t++;if(t==100){t=0;sec++;if(sec>=60){sec=0;}}datapros();DigDisplay();}五、实验体会——结果分析1、独立按键:位定义四个按键key1、key2、key3、key4,宏定义LED为P2口,tab数组保存流水灯D0-D7依次点亮的数值,begMid数组保存流水灯同时从两侧向中间逐步点亮,之后再从中间向两侧逐渐熄灭的赋值方式。

独立按键及矩阵键盘控制LED灯课件

独立按键及矩阵键盘控制LED灯课件
动态显示技术
通过动态刷新LED灯的状态,实现LED灯的闪烁、流水灯等效果,提高 系统的交互性和用户体验。
03
队列缓冲技术
将按键输入和LED灯输出分别放在不同的队列中处理,通过队列缓冲技
术实现程序的非阻塞性处理,提高系统的响应速度和处理效率。
实战项目:独立
05 按键及矩阵键盘 控制LED灯的综
合应用
行消抖处理。
硬件去抖
通过在按键与处理芯片之间增加 一个RC滤波电路,利用RC的充 放电过程来过滤按键电平抖动, 从而消除按键抖动对读取按键状
态的影响。
软件去抖
通过编写一段软件延时程序,在 检测按键状态时延时一段时间后 再进行检测,从而避免按键抖动
对读取按键状态的影响。
复杂矩阵键盘控制
1 2
扫描法
通过逐行逐列扫描键盘矩阵,依次识别每个按键 的行列坐标,从而判断出按下的按键位置。
连接电路
矩阵键盘的行线和列线分 别与树莓派的GPIO引脚相 连,形成矩阵结构。
电源和地线
需要连接电源和地线,以 给矩阵键盘提供工作电压 。
编程实现
01
02
03
04
安装库
需要安装相应的Python库, 如RPi.GPIO和MFRC522。
初始化
初始化树莓派的GPIO引脚和 MFRC522模块。
扫描按键
二极管和晶体管
介绍这两种重要的电子元件及其在 电路中的应用。
编程基础
01
02
03
编程语言
介绍适用于独立按键和矩 阵键盘控制的编程语言, 如C语言或Python。
程序结构
详细解释程序的各个部分 ,如变量、函数、循环等 。
条件语句
介绍条件语句及其在编程 中的应用。

ad矩阵和键盘说明书

ad矩阵和键盘说明书

美国动力公司前言2040系统是用于闭路电视监控(CCTV)系统的一种集成矩阵切换及控制系统,最多能控制一个完整的1024路输入和128路输出CCTV系统以及多个控制站(键盘)。

2040系统在与变速云台和接收机配套使用时,具有视频输放循环连接能力,并带有一个方向引导手柄进行变速控制。

此软件/固件属AMERICAN DYNAMICS美国动力公司独家所有,本公司拥有版权。

未经本公司书面明确同意,不得以任何方式予以复制或披露。

软件通过许可证向买方提供,用于单个系统。

由美国动力公司提供的资料,相信是准确和可靠的。

但是,对于该资料的使用或由于使用该资料可能造成的对第三方其它权利的侵犯行为,本公司一概不承担责任。

对于本公司的任何一项专利或专利权限均不发给许可证。

1994年版板,美国动力公司,版权所有目录使用本说明书注意事项第1章产品概况第2章技术指标第3章设备安装第4章操作与编程第5章附录使用本说明书注意事项产品名称 / 图片功能特点本说明书不适用章节2U矩阵全功能无(报警选配)4U矩阵无并行报警输入、输出,需用报警接口箱来实现3.2 中,典型连接图2“矩阵主机后面板并行报警输入、输出端口”部分;4.2.4 中“矩阵主机后面板并行报警输入、输出端口”部分8U矩阵无并行报警输入、输出,需用报警接口箱来实现3.2 中,典型连接图2“矩阵主机后面板并行报警输入、输出端口”部分;4.2.4 中“矩阵主机后面板并行报警输入、输出端口”部分第1章产品概况AD2040矩阵切换 /控制(主机)系统采用了先进的大规模集成电路矩阵切换技术和计算机控制技术,可以为用户提供卓越的整体性能,它具有完备的视音频矩阵切换能力,可以在任意监视器上显示任意摄像机的图像和与之对应的声音。

并对前端设备进行控制,而且这些操作可以通过手动操作和编程自动切换两种方式来实现,系统可使操作者方便地管理电视监控系统。

AD2040矩阵切换控制系统采用总线式控制结构,方便周边设备联结和扩容,通过码转换器可直接控制 ROBOT、SENSORMATIC 等多画面分割录像处理器。

矩阵键盘的检测和独立按键的区别

矩阵键盘的检测和独立按键的区别

矩阵键盘的检测和独立按键的区别
 这次我接着上次的说,讲一下复合按键和矩阵键盘。

 先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些。

所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了。

 矩阵键盘的检测和独立按键有很大的区别,但是究其本质还是一样的。

 先看一下矩阵键盘的原理图:
 矩阵键盘原理图
 由于矩阵键盘中每一个按键的两个接线口都是接在IO口上的,所以我们就必须在软件里面控制单片机在每个独立按键的两端加上不同的电平。

 【注】:独立按键很简单,直接在一端接地就行了。

矩阵按键的原理及代码实现

矩阵按键的原理及代码实现

矩阵按键的原理及代码实现
独⽴按键和矩阵按键:
矩阵按键扫描原理:
⽅法⼀、逐⾏扫描,我们可以通过⾼四位轮流输出低电平来对矩阵键盘进⾏扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪⼀位为0来判断是哪⼀个按键被按下。

⽅法⼆、⾏列扫描,我们可以通过⾼四位全部输出低电平,低四位输出⾼电平,当接收到的数据,低四位不全为⾼电平时,说明有按键按下,然后通过接受的数据值,判断是哪⼀列有按键按下,然后再反过来,⾼四位输出⾼电平,低四位输出低电平,然后根据接收到的⾼四位的值判断是哪⼀⾏有按键按下,这样就能够确定是哪⼀个按键按下了。

通常我们⽤到的是⾏列扫描
代码实现:(待更新)。

简述独立式键盘和矩阵式键盘的应用场合

简述独立式键盘和矩阵式键盘的应用场合

独立式键盘和矩阵式键盘是两种常见的计算机输入设备,它们各自有着不同的特点和应用场合。

下面将分别对两种键盘的应用场合进行简述。

一、独立式键盘的应用场合1. 专业键盘输入独立式键盘通常采用机械键盘的结构,具有较长的按键行程和良好的手感,适合需要大量键盘输入的专业人士使用,如程序员、作家、编辑等。

2. 高端游戏玩家对于注重游戏体验的高端游戏玩家来说,独立式键盘同样是一种不错的选择。

它们通常具有反应迅速、按键触感舒适的特点,能够满足玩家对于游戏操作的要求。

3. 办公场合在办公场合,独立式键盘也有着很好的应用前景。

其结构稳固,按键手感舒适,可以提高办公人员的工作效率,并减少长时间使用键盘造成的手部疲劳。

二、矩阵式键盘的应用场合1. 多媒体控制矩阵式键盘通常体积较小,布局紧凑,适合用于多媒体设备的控制。

在数字音乐控制台上就常常使用矩阵式键盘来控制音乐的播放、切换等操作。

2. 工业自动化设备在工业自动化设备中,常常需要使用键盘来进行设备的参数设置和控制。

而矩阵式键盘适合布局灵活,结构紧凑,适用于工业环境的特点,因此在这些场合下有很好的应用表现。

3. 其他特殊场合除了上述提到的应用场合外,矩阵式键盘还可以用于一些特殊的场合,比如医疗设备、安防设备等领域。

独立式键盘和矩阵式键盘各自在不同的应用场合中发挥着重要的作用。

在选择键盘时,用户需要根据自己的实际需求和使用场景来选择适合的键盘类型,以便更好地提高工作和生活的效率。

在现代社会,随着科技的不断发展和应用范围的扩大,人们对输入设备的要求也越来越高。

键盘作为计算机最基本的输入设备,其种类和类型也越来越多样化。

除了独立式键盘和矩阵式键盘之外,还有触摸键盘、薄膜键盘、无线键盘等多种类型,每种键盘都有其特定的应用场合。

独立式键盘因其较长的按键行程和舒适的手感,被广泛应用于专业领域,如程序员、作家、编辑等需要长时间键盘输入的人裙。

而在专业音乐领域,独立式键盘同样得到了广泛的应用。

按键资料整理

按键资料整理

键盘知识讲解一、键盘的分类编码键盘键盘独立键盘非编码键盘矩阵键盘键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。

键盘分两大类:编码键盘和非编码键盘。

编码键盘:由硬件逻辑电路完成必要的键识别工作与可靠性措施。

每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。

这种键盘易于使用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘管理接口芯片构成编码式键盘系统是很实用的方案。

非编码键盘:只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。

有:独立式按键结构、矩阵式按键结构。

二、键盘系统设计首先,确定键盘编码方案:采用编码键盘或非编码键盘。

随后,确定键盘工作方式:采用中断或查询方式输入键操作信息。

然后,设计硬件电路。

非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。

(一)非编码键盘的键输入程序应完成的基本任务1.监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。

2.判断是哪个键按下。

3.完成键处理任务。

(二)从电路或软件的角度应解决的问题1.消除抖动影响。

键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。

由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动,波形如下:抖动时间的长短由按键的机械特性决定,一般为5~10ms,这是一个很重要的参数。

抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。

为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。

按键的消抖,通常有软件,硬件两种消除方法。

硬件消抖:这种方法只适用于键的数目较少的情况。

软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。

独立按键及矩阵键盘控制LED灯课件

独立按键及矩阵键盘控制LED灯课件

THANKS
电路。
当按键被按下时,按键的两个触 点之间会短路,从而接通电路; 当按键释放时,触点断开,电路
断开。
独立按键通常用于简单的输入控 制,如开关一个LED灯。
独立按键控制LED灯的电路连接
01
将LED的正极连接到按键的常闭 触点上,LED的负极连接到地线 。
02
当按键没有被按下时,LED灯不 亮;当按键被按下时,LED灯亮 起。
控制家电设备
独立按键和矩阵键盘可以用于控制各种家电设备,如灯光、空调、电视等,实现一键控制和智能 化管理。
实现人机交互
通过独立按键和矩阵键盘,用户可以方便地与智能家居系统进行交互,实现语音控制、手势控制 等多种交互方式。
实现家庭安全
独立按键和矩阵键盘可以用于设置安全报警系统,如门窗报警、烟雾报警等,提高家庭安全防范 能力。
应用场景的比较
独立按键
适用于按键数量较少,布局较为分散 的场合,如遥控器、计算器等。
矩阵键盘
适用于按键数量较多,布局较为紧凑 的场合,如电脑键盘、游戏机手柄等 。
优缺点的比较
独立按键
01
缺点:占用引脚多,不适合大量按键的应 用场景。
03
02
优点:每个按键独立控制,电路简单,易于 实现。
04
矩阵键盘
优点:可节省引脚数量,适用于大量按键 的应用场景。
05
06
缺点:电路较为复杂,需要行列扫描或解 码电路才能实现。
04
独立按键及矩阵键盘在智能 家居中的应用
智能家居概述
1 2
3
智能家居定义
智能家居是指通过互联网、物联网等技术,将家庭中的各种 设备连接到一起,实现智能化控制和管理,提高生活便利性 和舒适度。

51单片机学习之5-独立按键和矩阵键盘

51单片机学习之5-独立按键和矩阵键盘

51单片机学习之5-独立按键和矩阵键盘
第14集
键盘的原理
键盘分编码键盘(例如电脑键盘)和非编码键盘(自己用程序去识别)。

非编码键盘分:独立式非编码键盘(独立按键)、行列式非编码键盘(4*4阵列键盘)
独立键盘的电路图。

因为51单片机的IO口不是双向口而是准双向口,要让IO口具备输入功能,必须将IO口置1,置1之后当按键按下时IO口的电平会被拉低,即被置0。

当检测到IO口为0时即可判断该按键已经按下。

按键按下时会有一个抖动的
过程(弹片会抖动),由于单片机检测IO口速度非常快,超过弹片抖动的频率,所以当单片机检测到IO口为0时需延时一小段时间再检测IO是否为0,如果仍为0就确认该按钮被按下。

因为IO口里面有上拉电阻,所以当松开按钮时,IO口又被拉高。

例程:
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitKey=P3;//按键
sbitLed=P1;//Led灯
voiddelay(uintz);
/********主函数********/
voidmain()。

矩阵键盘资料(在实验五十中)

矩阵键盘资料(在实验五十中)

TECHISHINE
有了表 50-2,要写出键盘译码电路的 VHDL 程序就非常容易了,尤其针对有表可以对照
的电路设计,只要使用 CASE-WHEN 或 WHNE-ELSE 语句,便可轻松完成设计。
表 50-2 键盘参数表
SEL2~SEL0 KIN3~KIN0
对应的 键盘译 按键功 按键 码输出 能
010
1101
REG 10010 功能键
1011
C
01100 字母 C
表 50-1 按键位置与数码关系
122
Beijing Techshine Technology Co.
TECHISHINE
SEL2~SEL0 000
KIN3~KIN0 1110 1101 1011
对应的按键 0 6
LAST
0111
CTRL
1110
1
1101
7
001
1011
STEP
0111
EMPTY1
5
1101
B
111
1011
ENTER
0111
NONE
光靠矩阵键盘是无法正确地完成输入工作的,另外还需搭配以下几个电路模块: 1、 时钟产生电路
当一个系统中使用不同操作频率的脉冲波形时,最方便的方法就是利用一个自由计数器 来产生各种频率。本电路中就使用三种不同频率的工作脉冲波形。它们分别是:系统时钟(它 是系统内部所有时钟的提供者,频率最高)、弹跳消除取样信号、键盘扫描信号和七段显示器 扫描信号。在很多的电路设计中,键盘扫描信号和七段显示器扫描信号可以使用相同的时钟 信号,本设计也采用此方法。
Beijing Techshine Technology Co.

(完整)矩阵键盘完整使用说明书

(完整)矩阵键盘完整使用说明书

键盘控制器(KEYBOARD CONTROLLER)使用说明书Operation InstructionCopyright 2003-2009. All Rights Reserved。

温馨提示:感谢您使用本公司产品。

为了让您能够尽快熟练的操作本机,请您仔细阅读我们为您配备内容详细的使用说明书,从中您可以获取有关产品安全注意事项、产品介绍以及产品使用方法等方面的知识.当您阅读完说明书后,请将它妥善保存好,以备日后参考。

如果您在产品的使用过程中发现什么问题,请联系产品技术服务人员.谢谢您的合作!申明:在编写此说明书时我们非常小心谨慎,并认为此说明书中所提供的信息是正确可靠的,然而难免会有错误和疏漏之处,请您多加包涵并热切欢迎您的指正。

但是我们将不对本手册可能出现的问题和疏漏负责.同时,由于我们无法控制用户对本手册可能造成的误解,因此,将不负责在使用本手册的过程中出现的事故或由此引起的损坏。

对于因使用本产品所造成的任何损坏第三方的索赔不负责任。

对于因软件的误操作、产品维修、或其它意外情况等引起资料的删改或丢失不负任何责任,也不对由此造成的其它间接损失负责。

本产品的发行和销售由原始购买者在许可协议条款下使用。

未经允许,任何单位和个人不得将本说明书全部或部分复制、再生或翻译成其它机器可读形式的电子媒介。

本说明书若有任何修改恕不另行通知。

因软件版本升级而造成的与本说明书不符,以软件为准。

注:本设备在出厂前已经过严格的质量测试,符合国家电磁辐射标准。

目录第一部分键盘操作 (4)1.1设备概述 (4)1。

2开机运行 (6)1.3键盘登录 (6)1.4键盘注销 (6)第二部分控制监控主机 (6)2.1选择监视器 (6)2。

2选择图像 (7)2。

3向前、向后切换图像 (7)2.4图像保持 (7)2.5主机自由切换 (7)2。

6主机程序切换 (8)2。

7主机同步切换 (9)2.8主机群组切换 (10)2。

9屏幕分割控制 (10)2.10屏幕拼接控制 (10)2.11保存主机当前设置 (11)2.12网络主机控制 (11)2.13监控主机菜单设置 (11)第三部分控制摄像机 (12)3.1选择摄像机 (12)3。

第六讲——独立按键及矩阵键盘控制LED灯

第六讲——独立按键及矩阵键盘控制LED灯

39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28
K0
P10
K4
0
4 8
K1
1
5 9
K2
2
6
K3
3
7
K5
K6
K7
P11 P12K8 P13
K12
K9
K10
89S52
A K11 B
EA/VP X1 X2 RESET RD WR
9
17 16
VCC GND RXD TXD ALE/P PSEN

10ms 10ms 键抖动时间
图8.7 软件消抖法延时区间示意图
3. 计算键码 键码是每个按键的标识。被按键确定下来之后,
接下来的工作是计算闭合键的键码,然后才能根据
键码进行对应的操作。 为编程方便,键码通常都是以键的排列顺序安 排,按照从左到右、从上向下的顺序编排。键码可
根据行号列号以查表求得,也可通过计算得到。我
的话, 则列线所接的端口得到的是全“1”信号, 如
果有键按下的话, 则得到非全“1”信号。
设第2行第 4列键按下 +5V
89C51 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
0 1 1 0 1 1 0 1 1 0
行线输出 列线输入 0111 1011 1101 1110 1111 1110 1111 1111
40 20 10 11 30 29
C
K13
D
K14
E
K15
F
P17
P14
P15
P16

扫描法 和线反转法
+5V

单片机C编经典例程(独立、矩阵按键,动、静数码管显示)

单片机C编经典例程(独立、矩阵按键,动、静数码管显示)

独立键盘/****************************************************************************** * 按键控制程序* 连接方法:JP10(P2)与JP1 (LED灯)连接,* JP11(P0)与JP5(按键接口)连接* * 开始点亮P1LED* 按P01 LED向右移一位* * 按P00 LED向左移一位* 连续按动按钮LED会不停的左移或右移******************************************************************************** /#include <reg51.h>#include <intrins.h>unsigned char scan_key();void proc_key(unsigned char key_v);void delayms(unsigned char ms);sbit K1 = P0^0; //对应按钮K1sbit K2 = P0^1; //对应按钮K2main(){unsigned char key_s,key_v;key_v = 0x03;P2 = 0xfe;while(1){key_s = scan_key();if(key_s != key_v){delayms(10);key_s = scan_key();if(key_s != key_v){key_v = key_s;proc_key(key_v);}}}}unsigned char scan_key(){unsigned char key_s;key_s = 0x00;key_s |= K2;key_s <<= 1;key_s |= K1;return key_s;}void proc_key(unsigned char key_v){if((key_v & 0x01) == 0){P2 = _crol_(P2,1);}else if((key_v & 0x02) == 0){P2 = _cror_(P2, 1);}}void delayms(unsigned char ms) // 延时子程序{unsigned char i;while(ms--){for(i = 0; i < 120; i++);}}矩阵键盘******************************************************************************* *描述: * * 矩阵键盘数码管显示键值** 排线连接方法:JP8(P1)与JP4(矩阵键盘接口)连接P0与JP3(静态数码管)连接* * 矩阵键盘定义:** P1.1-P1.4为列线,P1.4-P1.7为行线* * 喇叭接P1.5口矩阵键盘P1口,* * 注意:请将JP165短路冒断开* ******************************************************************************* #include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar dis_buf; //显示缓存uchar temp;uchar key; //键顺序吗void delay0(uchar x); //x*0.14MS#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};// 此表为LED 的字模unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5 E,~0x79,~0x71};/*************************************************************//* *//* 延时子程序*//* *//*************************************************************/void delay(uchar x){ uchar j;while((x--)!=0){ for(j=0;j<125;j++){;}}}/*************************************************************//* /* 键扫描子程序(4*3 的矩阵) P1.4 P1.5 P1.6 P1.7为行*//* P1.1 P1.2 P1.3为列*/*************************************************************/void keyscan(void){ temp = 0;P1=0xF0; //高四位输入行为高电平列为低电平delay(1);temp=P1; //读P1口temp=temp&0xF0; //屏蔽低四位temp=~((temp>>4)|0xF0);if(temp==1) // p1.4 被拉低key=0;else if(temp==2) // p1.5 被拉低key=1;else if(temp==4) // p1.6 被拉低key=2;else if(temp==8) // p1.7 被拉低key=3;elsekey=16;P1=0x0F; //低四位输入列为高电平行为低电平delay(1);temp=P1; //读P1口temp=temp&0x0F;temp=~(temp|0xF0);if(temp==2) // p1.1 被拉低key=key+0;else if(temp==4) // p1.2 被拉低key=key+4;else if(temp==8) // p1.3 被拉低key=key+8;elsekey=16;dis_buf = key; //键值入显示缓存dis_buf = dis_buf & 0x0f;}/*************************************************************//* *//*判断键是否按下*//* *//*************************************************************/void keydown(void){P1=0xF0;if(P1!=0xF0) //判断按键是否按下如果按钮按下会拉低P1其中的一个端口{keyscan(); //调用按键扫描程序}}/*************************************************************//* *//* 主程序*//* *//*************************************************************/main(){P0=0xFF; //置P0口P1=0xFF; //置P1口delay(10); //延时while(1){keydown(); //调用按键判断检测程序P0 = LED7Code[dis_buf%16]&0x7f; //LED7 0x7f为小数点共阴和共阳此处也是不一样; %16表示输出16进制}}/************************************************************/标题: 试验数码管上如何显示数字(共阳极) * 连接方法:P0 与JP3 用8PIN排线连接*请学员认真消化本例程,用单片机脚直接控制数码管* #include <reg51.h>#include <intrins.h>#define NOP() _nop_() /* 定义空指令*/void delay(unsigned int i); //函数声名// 此表为LED 的字模unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5 E,~0x79,~0x71};main(){unsigned int LedNumVal=1 ,C ; //定义变量while(1){if (++C>= 300){ LedNumVal++ ; //每隔300个扫描周期加一次C =0; //每隔300个扫描清零}// 将字模送到P0口显示P0 = LED7Code[LedNumVal%10]&0x7f; //LED7 0x7f为小数点共阴和共阳此处也是不一样;delay(150); //调用延时程序}}/****************************************************************** ** 延时程序** ******************************************************************/void delay(unsigned int i){char j;for(i; i > 0; i--)for(j = 200; j > 0; j--);}*******************************************************************************标题: 试验数码管上显示数字( 单片机直接实现位选共阴极) * * 连接方法:P0与J12 用8PIN排线连接P1与JP16 用排线连接***************************************************************************** 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管******************************************************************************** #include <reg51.h>#include <intrins.h>void delay(unsigned int i); //函数声名char DelayCNT;//定义变量//此表为LED 的字模, 共阴数码管0-9 -unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制//此表为8个数码管位选控制, 共阴数码管1-8个-unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制查表的方法控制/************主函数**********************/main(){unsigned int i,LedNumVal=1 ; //变量定义unsigned int LedOut[10]; //变量定义DelayCNT=0;while(1){if(++DelayCNT>=20) //控制数字变化速度{DelayCNT=0; //20个扫描周期清零一次++LedNumVal; //每隔20个扫描周期加一次}LedOut[0]=Disp_Tab[LedNumVal%10000/1000];LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;LedOut[2]=Disp_Tab[LedNumVal%100/10];LedOut[3]=Disp_Tab[LedNumVal%10];LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位LedOut[7]=Disp_Tab[LedNumVal%10]; //个位for( i=0; i<9; i++){P0 = LedOut[i];P1 = dispbit[i]; //使用查表法进行位选/* switch(i) //使用switch 语句控制位选{case 0:P1 = 0x7F; break;case 1:P1 = 0xbF; break;case 2:P1 = 0xdF; break;case 3:P1 = 0xeF; break;case 4:P1 = 0xf7; break;case 5:P1 = 0xfb; break;case 6:P1 = 0xfd; break;case 7:P1 = 0xfe; break;} */delay(150); //扫描间隔时间太长会数码管会有闪烁感}}}void delay(unsigned int i){char j;for(i; i > 0; i--)for(j = 200; j > 0; j--);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【例】 switch/case 语句的用法。 对学生成绩划分为A~D,对应不同的百分制
分数,要求根据不同的等级打印出它的对应百分数。 可以通过下面的switch/case 语句实现。
…… switch (grade )
{ case ‘A;' printf (”90~100\n”);break ; case ‘B;' printf (”80~90\n”);break ; case ‘C;' printf (”70~80\n”);break ; case ‘D;' printf (”60~70\n”);break ; case ‘E;' printf (”<60\n”);break ; default ;printf (”error”\n)
说明如下: (1)switch 后面括号内的表达式,可以是整型或字符型表 达式。 (2)当该表达式的值与某一“ case”后面的常量表达式的 值相等时,就执行该“case”后面的语句,然后遇到break 语 句退出switch 语句。若表达式的值与所有case 后的常量表达 式的值都不相同,则执行default 后面的语句,然后退出
(3)if (score>=90) printf(“Your result is an A \n”); else if (score>=80) printf(“Your result is an B \n”); else if (score>=70) printf(“Your result is an C \n”); else if (score>=60) printf(“Your result is an D \n”); else printf(“Your result is an E \n”);
【例】 if语句的用法。 (1)if (x!=y) printf(“x=%d,y=%d \n”,x,y); 执行上面语句时,如果x不等于y,则输出x的值和y的值。 (2)if (x>y) max=x;
else max=y; 执行上面语句时,如x大于y成立,则把x送给最大值变
量max ,如x大于y不成立,则把y送给最大值变量max 。使 max 变量得到x、y中的大数。
switch 结构。 (3)每一个case 常量表达式的值必须不同否则会出现自相
矛盾的现象。 (4)case 语句和default 语句的出现次序对执行过程没有影
响。 (5)每个case 语句后面可以有“break”,也可以没有。有
break 语句,执行到break 则退出switch 结构,若没有,则会 顺次执行后面的语句,直到遇到break 或结束。
P15 6 P16 7 P17 8
P10 P11 P12 P13
P14 P15
P16 P17
P00 P01 P02 P03
P04 P05
P06 P07
39 38 37 36 35
34 33 32
13 12
15 14
31
19 18
9
17 16
INT1 INT0
TT0189S52
EA/VP
P20
P21 P22 P23 P24 P25 P26
执行上面语句后,能够根据分数score 分别打出A、B、 C、D、E五个等级。
switch/case 语句
if 语句通过嵌套可以实现多分支结构,但结构复杂。 switch 是C51中提供的专门处理多分支结构的多分支 选择语句。它的格式如下:
switch (表达式) {case 常量表达式1:{语句1;}break ; case 常量表达式2:{语句2;}break ; …… case 常量表达式n:{语句n;}break ; default :{语句n+1;}
1.消除键抖动
键按下
键稳定
前沿抖动
前沿抖动
图5.2 键合断时的电压抖动
if 语句 if 语句是C51中的一个基本条件选择语句,它通常 有三种格式: (1)if (表达式) {语句;} (2)if (表达式) {语句1;} else { 语句2;} (3)if (表达式1) {语句1;} else if (表达式2) (语句2;) else if (表达式3) (语句3;) …… else if (表达式n-1) (语句n-1;) else { 语句n}
非编码键盘按组成结构又可分为 独立式键盘 和 矩阵式键盘 。独立式键盘的工作过程与矩阵式键盘 类似,无论是硬件结构还是软件设计都比较简单,。
P1.4 P1.5 P1.6 P1.7
89S52
+5V
S1 S2 S3 S4
89s52
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
+5V
图8.1 独立式键盘接口
特点:每个按键占用一条I/O 线,当按键数量较多时,I/O 口利用率不高,但程序编制简 单。适用于所需按键较少的场 合。
图8.2 矩阵式键盘接口
特点:电路连接复杂,但提 高了I/O 口利用率,软件编程 较复杂。适用于需使用大量 按键的场合。
U1
P10 1 P11 2 P12 3 P13 4 P14 5
P16
3 7 B F
P17
? 扫描法 和线反转法
+5V
89s52
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
图8.2 矩阵式键盘接口
?0
1
2
3
? ee
de
be
7e
?4
5
6
7
? ed
dd
bd
7d
?8
9
A
B
? eb
db
bb
7b
?C
D
E
F
? e7
d7
b7
77
键盘接口的消抖
P27
21 22
23 24 25 26 27 28
X1 X2
RESET
RD WR
VCC GND RXD TXD ALE/P
PSEN
40 20 10 11 30
29
K0
P10
K4
P11
P12K8
P13K12
0 K1 4 K5 8 K9 C K13
P14
1 K2 5 K6 9 K10 D K14
P15
2 K3 6 K7 A K11 E K15
键盘ห้องสมุดไป่ตู้口
键盘是单片机应用系统中使用最广泛的一种 数据输入设备。键盘是一组按键的组合。键通常 是一种常开型按钮开关,常态下键的两个触点处 于断开状态,按下键时它们才闭合(短路)。
通常,键盘有 编码和非编码两种。编码键盘通 过硬件电路产生被按按键的键码和一个选通脉冲。 选通脉冲可作为 CPU的中断请求信号。这种键盘使 用方便,所需程序简单,但硬件电路复杂,常不被 单片机采用。
相关文档
最新文档