独立键盘和矩阵键盘 文档资料
- 格式:ppt
- 大小:1.71 MB
- 文档页数:29
键盘的结构与原理键盘是单片机应用系统中人机交流不可缺少的输入设备。
键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。
键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系(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. 键盘设计应注意的问题机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。
实验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数组保存流水灯同时从两侧向中间逐步点亮,之后再从中间向两侧逐渐熄灭的赋值方式。
美国动力公司前言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. 其他特殊场合除了上述提到的应用场合外,矩阵式键盘还可以用于一些特殊的场合,比如医疗设备、安防设备等领域。
独立式键盘和矩阵式键盘各自在不同的应用场合中发挥着重要的作用。
在选择键盘时,用户需要根据自己的实际需求和使用场景来选择适合的键盘类型,以便更好地提高工作和生活的效率。
在现代社会,随着科技的不断发展和应用范围的扩大,人们对输入设备的要求也越来越高。
键盘作为计算机最基本的输入设备,其种类和类型也越来越多样化。
除了独立式键盘和矩阵式键盘之外,还有触摸键盘、薄膜键盘、无线键盘等多种类型,每种键盘都有其特定的应用场合。
独立式键盘因其较长的按键行程和舒适的手感,被广泛应用于专业领域,如程序员、作家、编辑等需要长时间键盘输入的人裙。
而在专业音乐领域,独立式键盘同样得到了广泛的应用。