查表法矩阵键盘

发布者:平安宁静最新更新时间:2015-07-22 来源: 51hei关键字:查表法  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章
//p1口外接3*4矩阵键盘,其中p1^0不用置1,常用读出键值方法有
//“查表法”和“反转法”。查表法程序最为简短,但是稍多占用
//一点存储空间;反转法的程序执行速度最快,只是要求接口是
//双向的。
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
~0x3F,~0x06,~0x5B,~0x4F,~0x66,
~0x6D,~0x7D,~0x07,~0x7F,~0x6F,
~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};//共阳极LED代码与共阴极正好相反,所以阴极码取反
uchar num;
uchar keyscan();
/*void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--); 
}*/
void main()
{ 
 P0=table[0];
 while(1)
 { 
    num=keyscan();
    if(num!=16)
    P0=table[num];
  
 
 } 
}
uchar keyscan()
{
 uchar code table1[3][4]=
  {//0xee,0xde,0xbe,0x7e,
   0xed,0xdd,0xbd,0x7d,
   0xeb,0xdb,0xbb,0x7b,
   0xe7,0xd7,0xb7,0x77};
  uchar temp1=0xfd,temp2,i,j; //如果是3*4则只需将初值temp1改变p1^0不用置1并改变表值
  for(i=0;i<4;i++)//扫描低四位//如果3*4键盘i<3也可
  {  P1=temp1;       //输出一行0
   temp2=P1;       //马上读入P1口状态
   if((temp2&0xf0)!=0xf0)//如果有键按下
   {
    for(j=0;j<4;j++)//就扫描高四位                 j=0 j=1  j=2  j=3  
   {
    if(temp2==table1[i][j])//查表              i=0  0   1    2  3
     return i*4+j;    //查到了就返回键的值        i=1  4   5    6  7
   }                  //             i=2  8   9    10  11
   }        //                        i=3  12   13   14 15
  else temp1=_crol_(temp1,1);        //
          //                             i*4+j
  }
  return 16;        //没有查到,返回键松开的代码
}   
关键字:查表法  矩阵键盘 引用地址:查表法矩阵键盘

上一篇:小玩LED点阵之-滚动显示
下一篇:STC单片机免掉电下载

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

单片机学习记录——矩阵键盘
硬件连接 如图,4*4矩阵键盘需要接8个IO引脚。 通过行列分别扫描的方法,得出键值。 软件设计 /******************************************************* * 函 数 名 : key_scan * 函数功能 : 返回矩阵键盘被按下的键值 * 输 入 : 无 * 输 出 : 键值(1~16),无键按下时返回0 ********************************************************/ unsigned char key_scan(void) { unsigned char hang
[单片机]
单片机学习记录——<font color='red'>矩阵键盘</font>
矩阵键盘的51程序
// P1口扩展4*4矩阵键盘,P1.7-P1.4作为行线,P1.3-P1.0作为列线。 // 数码管显示按键值,P0提供段码,P2.7-2.5通过74ls138,作为位码,片选数码管。 #include reg52.h void leddisplay(); // 数码管显示 unsigned char keyscan(); //键盘扫描 unsigned char keyin(); //按键值读取 void delayms(unsigned int k); unsigned char data ledxs ={16,16,16,16,16,16,0,0}; // 数码管显示缓冲区 unsigned char code
[单片机]
基于RS232行列式矩阵键盘接口的设计方案
  一、引言   本方案是用VHDL语言来实现的基于RS232按位串行通信总线的行列式矩阵键盘接口电路,具有复位和串行数据的接收与发送功能,根据发光二极管led0-led2的显示状态可判断芯片的工作情况;实现所有电路功能的程序均是在美国ALTERA公司生产的具有现场可编程功能的芯片EPM7128SLC84-15上调试通过的。能通过动态扫描来判有键按下、将键值转换成对应的ASCII码值,在时钟脉冲的作用实现串行数据的接收与发送。   二、设计方案   1.芯片引脚定义      reset复位输入端;clk时钟输入端;rxd串行数据接收端;retn0-retn7键盘扫描行输入线;txd串行数据发送端;scan0-
[嵌入式]
51单片机(二十九)—— 矩阵键盘输入实验
一、矩阵键盘原理介绍 在之前的文章中,我们介绍过独立按键的使用,独立按键需要每个按键使用一个IO口进行读取,如果按键比较多,对IO资源的占用比较多。使用矩阵键盘,并采用扫描的方式对按键进行读取是解决按键多的一个有效办法。采用矩阵按键的方式就可以有效的节省I/O资源。4*4的矩阵键盘只需要8个I/O口进行采集。6*6的矩阵键盘只需要12个I/O口就可以采集。 本实验的硬件电路是一个4X4的矩阵键盘。矩阵键盘的原理图如下图所示。 由原理图可以看出J23的1~4与矩阵键盘的每一行相连。5~8与矩阵键盘的每一列相连。每一列上设置了上拉电阻。矩阵键盘扫描时,令J23的1~4中的一个为低电平,如果相应的行有按键按下,则J23的5~8中
[单片机]
51单片机(二十九)—— <font color='red'>矩阵键盘</font>输入实验
4×4矩阵键盘的工作原理与编程
本文介绍如何在ME300B型51/AVR单片机学习开发系统上使用数码管显示4 4矩阵键盘的键值。 一、硬件工作原理的简单介绍 该实验使用ME300B上的8位数码管显示电路和4 4矩阵键盘电路。现将这二部分的电路工作原理进行简单的介绍: 1、4 4矩阵键盘的工作原理 矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4 4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。 图1为ME300B矩阵键盘电路图,行线接P1.4-P1.7,列线接P1.0-P1.3。 图1 矩阵键盘电路
[单片机]
stm32F103状态机矩阵键盘
矩阵键盘程序,作为麦知club小车项目的一部分,从IAR状态机应用修改而来。 IAR7.4+STM32CUBEMX调试通过。 键盘行4,列3,每条线都有10K上拉电阻。改到4×4矩阵也很容易。 行线设置为 输入,针脚为浮空; 列线设置为开漏输出。 不支持长按和组合键,主要是我不会改。 在OS中使用20ms任务周期调用。 以下贴出代码。 keypad.h /* * * Name: keypad.h */ #ifndef KEYPAD_H #define KEYPAD_H #include stm32f1xx_hal.h #include pinname.h #define PORT_KEY GPI
[单片机]
4x4矩阵键盘 扫描程序
一:不排除第四位异常处理 uchar JuzhenkeyScan() { // P3=0xfe; // temp=P3; // while(temp!=0xfe) // { // temp=P3; // switch(temp) // { // case 0xee:num=10; // break; // case 0xde:num=3; // break; // case 0xbe:num=2; // break; // case 0x7e:num=1; // break; // } // delayms(10); // } P3=0xfd;//
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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