单片机 4*4 矩阵键盘应用

发布者:Yuexiang888最新更新时间:2015-10-12 来源: eefocus关键字:单片机  4*4  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章
在单片机按键使用过程中,当键盘中按键数量较多时 为了减少端口的占用通常将按键排列成矩阵 形式如下图所示,在矩阵式键盘中 每条水平线和垂直线在交叉处不直接连通而是通过一个按键加以连接,到底这样做是出意何种目的呢? 大家看下面电路图,单片机的整一个8位端口可以构成 4*4=16 个矩阵式按键 ,相比独立式按键接法多出了一倍,而且线数越多区别就越明显,假如再多加一条线就可以构成 20个按键的键盘,但是独立式按键接法只能多出1个按键。由此可见,在需要的按键数量比较多时,采用矩阵法来连接键盘是非常合理的,矩阵式结构的键盘显然比独立式键盘复杂一些,单片机对其进行识别也要复杂一些。确定矩阵式键盘上任何一个键被按下通常采用行扫描法。行扫描法又称为逐行查询法它是一种最常用的多按键识别方法。因此,我们就以行扫描法为例介绍矩阵式键盘的工作原理。

图5-4(4*4矩阵式按键的接法)

首先,不断循环地给低四位独立的低电平,然后判断键盘中有无键按下。将低位中其中一列线(P1.0~P1.3中其中一列)置低电平然后检测行线的状态(高4位,即P1.4~P1.7,由于线与关系,只要与低电平列线接通,即跳变成低电平),只要有一行的电平为低就延时一段时间以消除抖动,然后再次判断,假如依然为低电平,则表示键盘中真的有键被按下而且闭合的键位于低电平的4个按键之中任其一,若所有行线均为高电平则表示键盘中无键按下。再其次,判断闭合键所在的具体位置。在确认有键按下后 ,即可进入确定具体闭合键的过程。其方法是: 依次将列线置为低电平,即在置某一根列线为低电平时,其它列线为高电平。同时再逐行检测各行线的电平状态 ;若某行为低 ,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。下面图5-5是4*4矩阵式按键接法的软件算法操作流程。

[转载]单片机 <wbr>4*4 <wbr>矩阵键盘应用

下面程序按照上述算法流程去编写的,其电路如图5-6,只是在图5-5的基础上多加了P0端口的8只LED灯。从键盘中检测到一个键值,然后将这个值写到LED数码管上显示。

 

#include

#include

 

#define uchar unsigned char

#define uint unsigned int

uchar temp,num;

uchar code Dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}   ;

//0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,0ff

 

void delay(uchar ms)

{

int i;

while(ms--)

{

for(i=0;i<100;i++) ;

}

}

 

uchar keyscan()

{

P1=0xfe;

temp=P1;

while(temp!=0xfe)

{

temp=P1;

switch(temp)

{

case 0xee:num=1;

break;

case 0xde:num=2;

break;

case 0xbe:num=3;

break;

case 0x7e:num=4;

break;

}

delay(100);

}

P1=0xfd;

temp=P1;

while(temp!=0xfd)

{

temp=P1;

switch(temp)

{

case 0xed:num=5;

break;

case 0xdd:num=6;

break;

case 0xbd:num=7;

break;

case 0x7d:num=8;

break;

}

delay(100);

}

P1=0xfb;

temp=P1;

while(temp!=0xfb)

{

temp=P1;

switch(temp)

{

case 0xeb:num=9;

break;

case 0xdb:num=10;

break;

case 0xbb:num=11;

break;

case 0x7b:num=12;

break;

}

delay(100);

}

P1=0xf7;

temp=P1;

while(temp!=0xf7)

{

temp=P1;

switch(temp)

{

case 0xe7:num=13;

break;

case 0xd7:num=14;

break;

case 0xb7:num=15;

break;

case 0x77:num=16;

break;

}

delay(100);

}

return num;

}

 

 

void Display(uchar Wei_8,uchar Wei_7,uchar Wei_6,uchar Wei_5,uchar Wei_4,uchar Wei_3,uchar Wei_2,uchar Wei_1)

{

P2=0xfe;

P0=Dis_code[Wei_8];

delay(1);

 

P2=0xfd;

P0=Dis_code[Wei_7];

delay(1);

 

P2=0xfb;

P0=Dis_code[Wei_6];

delay(1);

 

P2=0xf7;

P0=Dis_code[Wei_5];

delay(1);

 

P2=0xef;

P0=Dis_code[Wei_4];

delay(1);

 

P2=0xdf;

P0=Dis_code[Wei_3];

delay(1);

 

P2=0xbf;

P0=Dis_code[Wei_2];

delay(1);

 

P2=0x7f;

P0=Dis_code[Wei_1];

delay(1);

}

 

void main()

{

while(1)

{

Display(keyscan(),16,16,16,16,16,16,16)     ;

}

}

关键字:单片机  4*4  矩阵键盘 引用地址:单片机 4*4 矩阵键盘应用

上一篇:单片机实现软件复位(软复位)的方法及讨论
下一篇:单片机键盘输入及串口发送

推荐阅读最新更新时间:2024-03-16 14:35

基于MCU的风光互补独立电源系统
0 引言   综合利用了风能、光能的风光互补独立电源系统是一种合理的电源系统。不仅能为电网供电不便的地区,如边防哨所,通讯的中继站,交通的信号站,勘探考察的工作站以及农牧区提供低成本、高可靠性的电源,而且也为解决当前的能源危机和环境污染开辟了一条新路。   单独的太阳能或风能系统,由于受时间和地域的约束,很难全天候利用太阳能和风能资源。而太阳能与风能在时间上和地域上都有很强的互补性,白天光照强时风小,夜间光照弱时,风能由于地表温差变化大而增强,太阳能和风能在时间上的互补性是风光互补发电系统在资源利用上的最佳匹配。 l 硬件构成   风光互补独立电源系统由光伏发电单元、风力发电单元、系统智能管理核心、逆变器、储能元件等构成,如图
[电源管理]
宅男买二手PS4:到手拆开后竟现多只蟑螂
PS4里面出现蟑螂也不是什么新鲜事了,但即使这样还是把韩国小哥给吓坏了。   这不,一位韩国小哥购买了一台二手的PS4,但让他没有想到的是,这台主机买回家后,每次使用时都会出现很强的臭味,这到底是什么情况?   最终,这位小哥决心把这台PS4给拆开一探究竟,但让他没有想到的是,里面居然发现了多只蟑螂。于是他开展示了整个拆机灭虫行动,两个小时干掉了至少10只以上。   大家感受下。
[手机便携]
瑞萨加入4K影像传感器市场 发展监测、汽车相关事业
  日本微处理器大厂 瑞萨 电子(Renesas Electronics)发布消息,决定加入CMOS 影像传感器 市场,2017年9月底开始试产848万画素的新产品,12月起量产,计划在2018年12月将月产能提高到7万颗,提供对应4K画质的监测相机使用,相关事业目标是2020年营收28亿日圆(约2,560万美元)。下面就随网络通信小编一起来了解一下相关内容吧。    瑞萨 加入CMOS 影像传感器 市场的原因,据日刊工业新闻报导,是因为近年来监视摄影机结合新科技的用途增多,比方以人工智能(AI)进行影像识别,进行自动人物辨识,避免国际知名恐怖分子或罪犯混入人群,对2020年将举行东京奥运的日本,相关系统市场相当可观。   AI
[网络通信]
基于ARM7 TDMI核的MCU ADuC7020的单电源心电检测系统设计
本文给出的设计采用单电源供电,可以解决上述问题并降低产品成本,同时该设计还在基于ARM核的嵌入式系统中采用了简单实用的算法,能快速准确定位QRS复波(即计算人的心率)。该设计面向广大家庭用户而设计,体积较小,只需要一台个人电脑与之连接,便可实时地操作、观测心电信号。 心电信号采集系统的基本架构如图1所示。人体的心电信号经电极和专用导联线从人体送至系统。通过滤波和放大调节电路,微弱的心电信号被放大到合适的幅值,并处于A/D转换范围之内。 系统的控制和数据的处理由ADI公司基于ARM7 TDMI核的MCU ADuC7020来完成。这款芯片有丰富的片内外围电路,处理速度高达40MIPS,A/D转换速度可达1MSPS,具有很
[单片机]
基于ARM7 TDMI核的<font color='red'>MCU</font> ADuC7020的单电源心电检测系统设计
乐视发布4K电视X50 Air:完成4K产业链布局
  乐视宣布打造全球首个垂直整合的4K生态系统——Le4K   4月9日下午消息,乐视TV在京正式发布50英寸4K超级电视X50 Air,并宣布打造全球首个垂直整合的4K生态系统——Le4K,通过由4K内容、应用、4K云平台、4K屏幕、4核处理器组成的完整4K体系,为用户提供包括画质、图像、声音、内容、速度、操控等在内的全方位4K体验。并宣布超级电视X50 Air单机售价为2999元,达到目前4K电视的市场最低价。   乐视贾跃亭认为,目前传统电视厂商推出的4K电视仍是无本之木,这些4K电视只是空壳子,并没有真正的4K内容,更缺乏云平台及完整的传输通道做支持。为让4K电视不再是噱头,4K内容真正被用户所及、所看、
[家用电子]
Proteus运行Keil编写的51单片机C语言步骤
1. 在Keil 编写好程序以后,在左侧项目栏中单击鼠标右键,如下图 2.点击上图中Options for Target Target1 选项,弹出下列窗口 3.在Target标签中将Xtal(MHz)中的晶振频率改为12.0;再在Output标签中勾选Create HEX Fi复选框。 完成上面两项设置后点击确定。 4.再点击编译,生成Hex 文件。 5 再在Proteus中双击的51 芯片 ,弹出下列窗口,按下图修改 晶振 频率,添加需要运行的C语言生成的hex文件即可运行。 #include reg51.h #define uchar unsig
[单片机]
Proteus运行Keil编写的51<font color='red'>单片机</font>C语言步骤
51单片机在微机自动交换系统中稳定运行的设计方法
  MCS—51 单片机 在电力线载波通信中处理任务时的实时性尤为突出。由于该系统整机配置的主要服务对象是电力调度,且它的使用环境将来多为无人值守站,所以系统工作是否稳定直接影响到电力线载波机的整机性能。针对电力通信特点,在考虑稳定运行方面我们采取了以下几项措施。   1 设置上电延时复位电路   1.1 为什么要进行上电复位46   计算机在启动运行时都要进行复位。作为在控制领域中应用最广泛的单片机,复位处理更是设计中的关键。单片机内部的各个功能部件均受特殊功能寄存器控制,程序运行直接受程序计数器指挥,寄存器的复位状态决定了单片机内有关功能部件工作用的初始状态,而程序的正常运行就是从这个状态开始的。如果上电时没有做到正
[单片机]
51<font color='red'>单片机</font>在微机自动交换系统中稳定运行的设计方法
采用二维模糊控制器和C8051单片机实现室内自然采光系统的设计
1、 引言 从远古的篝火、油灯到蜡烛、白炽灯,再到今天千家万户的荧光灯,人类已经基本适应了人工光源的室内照明环境。但是由于千万年来的环境影响,自然光仍然是人类最习惯、感觉最舒适的光源,自然采光一直受到建筑师和照明设计师的高度重视。当今社会建筑的节能环保需求更对自然采光照明提出了进一步的要求。《建筑采光设计标准》 中的国家技术经济政策指出: 建筑设计要充分利用天然光,创造良好的光环境。 对室内照明自然采光的研究具有重要的意义: (1) 资料表明,照明用电占整个商业建筑能耗的25 - 40% ,而自然采光在特定的情况下可以节省52% 的照明用电,大大节约了能源。 (2) 相关研究表明,人在自然光条件下工作,可以增加满意度和提高工作
[单片机]
采用二维模糊控制器和C8051<font color='red'>单片机</font>实现室内自然采光系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved