当前位置:首页 > 单片机 > 单片机
[导读]/**************************文件所用资源1.端口:P22.调用delay_ms函数**************************/#include #include #define key_port P2//键盘接口定义sbitkey_port_0=key_port^0;sbitkey_port_1=key_port^1;sbi

/**************************
文件所用资源

1.端口:P2
2.调用delay_ms函数
**************************/
#include
#include
#define key_port P2//键盘接口定义
sbitkey_port_0=key_port^0;
sbitkey_port_1=key_port^1;
sbitkey_port_2=key_port^2;
sbitkey_port_3=key_port^3;

/**************************
延时函数
***************************/
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for( i=0;ifor(j=0;j<332;j++); //332是STC89C52在22.1184MHz晶振
}


/**************************
键盘扫描函数
**************************/
unsigned char keyscan(void)
{
unsigned char key,i;
unsigned char code key_table[16]=
{0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};
//扫描端口数据与键值的对应关系,可以根据使用来调节顺序
key_port=0x0f; //确定行列位置
if(key_port==0x0f)return(0x10);//无键按下返回0
delay_ms(10); //调用延时函数 ,目的是去前沿键抖。
if(key_port==0x0f)return(0x10);//再次判断。目的是确保检测正确
else
{
for(i=0;i<4;i++) //以下为经典的计算键值(判断闭合键所在的位置)
{
key_port=_cror_(0x7f,i);
if(key_port_0==0)break;
if(key_port_1==0)break;
if(key_port_2==0)break;
if(key_port_3==0)break;
}
key=key_port; //取得键值
for(;key_port!=0x0f;key_port=0x0f);//等待键松开,目的是去后沿键抖
for(i=0;key_table[i]!=key && i<16;i++);//查表取key的值0-F
key=i;
return(key); //带键值返回主调函数
}
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发中,经常通过键盘来实现人机交互。本文介绍了一种直接利用ARM的I/O口扩展矩阵键盘的方法。同时以TQ2440开发板为例,对硬件电路连接和相应的linux驱动设计方法都作了详细说明。

关键字: ARM 矩阵键盘 linux驱动

有的单片机应用需要使用的按键数量比较多,比如:密码锁,这时如果按照之前的设计,一个GPIO控制一个按键的话,有点浪费单片机资源,这时候我们常常需要使用矩阵键盘。

关键字: 矩阵键盘

矩阵键盘的使用在单品机的学习当中十分广泛,可是对于许多新手,包括本人有时也是搞不明白,昨天晚上和今天早上的思考和同行们的讨论,终于有了点头绪,所以想记录下读取键盘的思路。

关键字: 矩阵键盘 编程方法 读取键值

基于TX-1C开发板,电路连接图如下

关键字: 检测及使用 矩阵键盘

矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。矩阵键盘...

关键字: 单片机 矩阵键盘

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

关键字: 单片机 矩阵键盘 扫描识别

1.代码:#include typedef unsigned char u8;typedef unsigned int u16;sbit seg_sel = P1^4;sbit bit_sel = P1^5;#defin...

关键字: 矩阵键盘 解码程序

/**************************文件所用资源1.端口:P0.2,P0.32.调用delay_ms函数**************************//*********************...

关键字: c51程序 读写驱动 24cxx

/**************************文件所用资源1.端口:P0.4,P0.5,P0.6,P0.72.调用delay_ms函数**************************//***********...

关键字: c51程序 io口 模拟spi通信

/********************************文件所用资源1.外部中断0、1 定时中断0、1 串口中断2.端口:P3.0,P3.1,P3.3,P3.4,P3.5********************...

关键字: c51程序 串口中断 外部中断 定时中断
关闭