经典4*4矩阵键盘C51程序
【经典4*4矩阵键盘C51程序】/**************************
文件所用资源
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;i
}
/**************************
键盘扫描函数
**************************/
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); //带键值返回主调函数
}
}
推荐阅读
- 经典黑白灰 打造高冷范卫生间
- 经典个性 轻松打造快乐卫浴
- 70平米房子装修效果图 经典小户型客厅设计案例
- 恒源祥婚庆床上用品 演绎经典中式婚礼
- 油漆装修17条经典口诀 速速学起来!
- 复古欧式书房设计效果图创造经典
- 博古架经典造型及尺寸介绍
- 厨房简约风格尽在黑白经典搭配
- 10万精装 经典黑白低调奢华之家
- 网友晒呕心沥血搭建40平经典LOFT