单片机读入4*4矩阵键盘

发布者:快乐的天使最新更新时间:2019-08-16 来源: eefocus关键字:单片机  4*4  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章

一、什么是矩阵键盘

矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4*4和8*8,其中用的最多的是4*4。

网上搜了两张实物图,大家可以看看


看上图就知道,4*4键盘还是很多地方用到的吧^_^


二、矩阵键盘的原理

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。由于单片机IO端口具

有线与的功能,因此当任意一个按键按下时,行和列都有一根线被线与,通过运算就可以

得出按键的坐标从而判断按键键值。

原理如同矩阵数列的行列式


三、驱动电路图


按4*4矩阵搭建的按键矩阵还是比较简单的,也有的人为了保证电路的稳定性,加上二极管保护和上拉电阻,但是一般要求不太高的电路就不需要加了,向下面设置的电路那样就可以


四、软件程序设计


根据4*4键盘的原理软件设计程序如下:


//***************************************************

//函数功能:

//单片机驱动4*4键盘,读入键盘值并使用数码管静态

//显示按键键值,若没有数码管用8421码显示LED灯也可以的

//读入原理:先令单片机端口输出11110000读一次,然后

//再令单片机输出00001111读一次把两次的值相加,最后

//获取一个高位和低位分别有0的值即可判断键值,

//如11101110

//***************************************************

#include

#define uchar unsigned char 

#define uint unsigned int 

 

unsigned char code smg_d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

 

//************************************************

//延时函数,在12MHz的晶振频率下

//大约50us的延时

//************************************************

void delay_50us(uint t)

{

 uchar j;

 for(;t>0;t--)

        for(j=19;j>0;j--);

}

 

void main()

{

 uchar key_l,key_h;

 uchar key;

 while(1)

 {

 P1=0xf0;

 key_l=P1; //读P1端口的值

 key_l=key_l&0xf0;  //令低4位置位为0

 if(key_l!=0xf0)    //判断是否有按键按下

 {

  delay_50us(100);

  if(key_l!=0xf0)

  { //若有按键按下,则切换高低4位判断键值

   key_l=P1&0xf0;   //11100000 获取第一次键值

   key_l=key_l|0x0f;//11101111   

   P1=key_l;        //反过来再读一次,由于人手按下按键的时间虽然短暂,但是

   key_h=P1;        //对于单片机来说,已经足够长,因此可以正反读取两次值

   key_h=key_h&0x0f;//00001110

   key_l=key_l&0xf0;//11100000

   key=key_h+key_l; //11101110

  }

 }

 switch (key)

 {

  case 0xee:P2=smg_d[0];break;

  case 0xde:P2=smg_d[1];break;

  case 0xbe:P2=smg_d[2];break;

  case 0x7e:P2=smg_d[3];break;

  case 0xed:P2=smg_d[4];break;

  case 0xdd:P2=smg_d[5];break;

  case 0xbd:P2=smg_d[6];break;

  case 0x7d:P2=smg_d[7];break;

  case 0xeb:P2=smg_d[8];break;

  case 0xdb:P2=smg_d[9];break;

  case 0xbb:P2=smg_d[10];break;

  case 0x7b:P2=smg_d[11];break;

  case 0xe7:P2=smg_d[12];break;

  case 0xd7:P2=smg_d[13];break;

  case 0xb7:P2=smg_d[14];break;

  case 0x77:P2=smg_d[15];break;

 }

 }

}


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

上一篇:利用中断实现的4*4矩阵键盘扫描
下一篇:矩阵键盘扫描原理详解——单片机

推荐阅读最新更新时间:2024-11-05 15:24

消息称三星Galaxy A60将4月份发布
本周早些时候,一份报告显示,三星目前正在开发9款Galaxy A系列智能手机。到目前为止,已经曝光了其中的四款,包括Galaxy A90、A70及A50、A40。   但现在,三星2019年A系列智能手机第五款曝光了。   据外媒phonearena报道,来自可靠的爆料人消息,这款新设备被称为Galaxy A60,该设备将搭载三星Exynos 9610处理器。这意味着Galaxy A60在配置上与骁龙660处理器的手机差不多。   在外部,这款智能手机被描述为Galaxy A8s“Lite”,即Galaxy A8s的青春版,同时三星将Infinity-O屏幕开孔技术进一步下探到了Galaxy A60手机上。
[手机便携]
消息称三星Galaxy A60将<font color='red'>4</font>月份发布
单片机编程入门基础知识(新手必看)
单片机不是一门技术,而是一个工具。 对于工具,我们的目的是会熟练地使用它。 如果你看懂这句话,会少走很多弯路。 下面我来讲一下使用这个工具时,会涉及到的一些知识点。 1. 单片机是什么? 2. 单片机编程需要掌握哪些知识? 一、单片机是什么? 简单来说就是一个可编程的芯片,它的特点可通过不同程序和不同的电路实现不同产品的功能,价格便宜,功耗也低,所以非常适合去做各种消费类、工业、医疗、航空等智能控制。 这里只要有基本概念就行了,它就是一个芯片,可以通过程序控制它就够了。 二、单片机编程需要掌握哪些知识? 很多人学不会单片机,学不会编程,主要有以下几点: 1. 学习方向不对 2. 学习过程太枯燥,没正确培养自
[单片机]
使用STC15W408AS单片机I/O口点亮LED
STC15W408AS单片机有14个I/O口。其所有I/O口均可由软件配置成4种类型。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC15系列单片机的I/O口上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。每个I/O口驱动能力均可达到20mA,但40-pin及40-pin以上单片机的整个芯片最大不要超过120mA,20-pin以上及32-pin以下(包括32-pin)单片机的整个芯片最大不要超过90mA。 在上一节3.STC15W408AS单片机GPIO介绍了的GPIO的结构和
[单片机]
使用STC15W408AS<font color='red'>单片机</font>I/O口点亮LED
超低功耗FRAM MCU,许你一个智能化未来
  “这是电子纸,用于显示商品条形码和价格信息,”TI MSP430 中国区业务拓展经理刁勇指了指一个巴掌大小的Demo板接着说,这种技术在国外超市越来越流行,它将价格标签组建成一个传感器网络,当价格信息变化时,标签的价格也及时更新。 TIMSP430 中国区业务拓展经理刁勇   以往,这个方案通过Flash实现,但功耗、擦写次数往往受到制约。而随着技术的发展与成熟,具备更低功耗、无穷次擦写次数的FRAM渐渐显露出其独有的优势,似乎天生为电子标签、智能交通、智能停车场管理、集装箱追踪、贵重物品跟踪等实际物联网应用量身打造。   挑战智能化   其实,所有的应用最终目的只有一个——打造更加智能化的生活。而为了达成这样的目
[单片机]
无锡打造4个百亿级物联网产业链
日前,无锡市制定了物联网产业三年发展规划,到2015年,全市将打造5个销售收入过百亿的专业园区;在RFID、专用芯片涉及封装、云计算等重点领域,打造出4个百亿级产业链(集群),集聚100个以上较为重大技术转移项目投产,平均每个项目实现1亿元以上产出;销售收入5000万元以上企业达100家;引进培育物联网企业1000家,全市实现物联网营业收入1000亿元;引进物联网科技研发和经营管理高端人才1000名,累计完成物联网领域的专利申请1000项。
[网络通信]
利用单片机实现远程数据传送
  1 引言   我国中大型石油化工企业大都采用小电流接地系统来供电,电力系统较为庞大。这类系统一般拥有几座乃至十几座35kV级的总降压站,几十座6~10kV级的高压配电室,分布范围较广,有的变电站离开总调有十几km之远。因此,各变电站的电量参数(电压、电流、相位、功率因数等)的准确、可靠传送,对总调及时决策、对提高供电质量和确保电力运行安全尤为重要。这里,我们采用单片微型计算机控制调制解调器进行远程实时数据传送,获得了满意的效果。   2 硬件系统设计   系统网络图如图1所示。本系统的上位机采用PII微机,通过MODEM←→交换网←→MODEM与作为下位机的单片机系统相连接。电力传感器采集的数据信号输入单片机系统,经软件
[单片机]
利用<font color='red'>单片机</font>实现远程数据传送
AT89S51和AT89S52这两种类型的单片机有什么区别?
AT89S51 AT89S51是一个低功耗、高性能的CMOS 8位单片机,片内含4KB的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。 性能 4KB Flash片内程序存储器 128bytes的随机存取数据存储器(RAM) 32个外部双向输入/输出(I/O)口 2个中断优先级、2层中断嵌套中断 5个中断源 2个16位可编程定时器/计数器 1个全双工串行通信口 看门狗(WDT)电路 片内振荡器和时钟电路 与MC
[单片机]
Q4亚洲半导体订单量缩水 恐持续至09年Q1
根据财务管理公司Robert W Baird & Co.旗下的半导体组件分析部门之调查,与十月份相较,十一月份的亚洲半导体订单下滑了近20%。该公司预期,这种两位数字的订单衰退状态将持续到十二月与明年一月;不过到明年第一季,遭受两位数字季衰退的半导体业者营收可望回升。 该公司表示,一线笔记型计算机ODM业者现在预期第四季营收将较上一季衰退10~15% (通常第四季营收都是成长10~15%);该产业营收在十一月较十月下滑了25%,十二月恐再继续下滑10~15%。 此外在手机市场,一线OEM也将第四季营收预测由原先的成长10~15%,下修为衰退8%。手机零件订单则可能在第四季出现10~12%的衰退,并在明年第一季
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved