C51行列键盘扫描程序
来源:互联网 发布:thinkphp商城项目源码 编辑:程序博客网 时间:2024/04/30 13:54
C51行列键盘扫描程序
#i nclude "reg51.h"
void main()
{
unsigned char key;
while(1)
{
key=kbscan(); //键盘扫描函数
delay10ms(); //健消除抖动的延时函数
}
}
void delay10ms()
{
unsigned char i;
for(i=0xff;i>0;i--);
}
unsigned char kbscan()
{
unsigned char sccode,recode;
P1=0xf0; //发全“0”行扫描,列线输入
if(P1&0xf0)!=0xf0) //有键按下
{
delay10ms(); //延时去抖动
if((P1&0xf0)!=0xf0)
{
sccode =0xf0; //逐行扫描初值
while((sccodeZ&0x10)!=0)
{
P1=sccode; //输出行扫描码
if((P1&0XF0)!=0XF0) //本行有键按下
{
ecode=(P1&0xf0)|0xf0;
return((~sccode)+(~recode); //返回特征码
}
else
sccode=(sccode<<1)|0x01; //行扫描码左移一位
}
}
}
return 0; //无键按下,返回0
}
#i nclude <reg51.h>
#define byte unsigned char
#define kbd_port p1
byte code key[16]={0xeb,0xd7,0xdb,0xdd, //0 1 2 3
0xb7,0xbb,0xbd,0x77, //4 5 6 7
0x7b,0x7d,0xe7,0xed, //8 9 - +
0xee,0xde,0xbe,0x7e}; //= * / c
byte k_input(void)
{
static bit k_status; /*键盘状态flag(静态局部变量) */
byte i,k;
kbd_port=0x0f;
k=kbd_port;
kbd_port=0xff;
kbd_port=k|0xf0;
k=kbd_port;
kbd_port=0xff;
if(k!=0xff)
{
for(i=0;i<16;i++)
{
if(k==key && k_status==0)
{
k_status=1;
return(i);
}
}
}
else
k_status=0;
return(0xff);
* 功 能:4×4键盘扫描程序
* 返 回:键序号(0~f),0xff表示没有字符输入
*
* 硬件连接:p1口(高4位 - 行;低4位 - 列)
* 软件特点:简洁高效,无须延时消抖,避免连发
- C51行列键盘扫描程序
- C51矩阵键盘扫描程序
- c51版键盘扫描
- 矩阵键盘行列扫描
- C51单片机矩阵键盘扫描去抖程序,新手必读
- 51单片机键盘行列反转扫描
- 键盘扫描程序
- 键盘扫描程序
- 矩阵键盘扫描程序
- 矩阵键盘扫描程序
- 51单片机的4x4矩阵键盘扫描例程(C51)
- C51中4X4键盘扫描(非反转法)
- 4*4矩阵键盘C51程序
- 键盘扫描程序进展顺利
- 键盘扫描程序 FPGA
- 51单片机扫描键盘程序
- 键盘扫描程序及体会
- 矩阵键盘扫描程序实例
- 自己翻译的书(关于ASP.NET),希望对大家有帮助 (六)
- 实现Oracle跨服务器的具体步骤
- 51单片机的4x4矩阵键盘扫描例程(C51)
- 自己翻译的书(关于ASP.NET),希望对大家有帮助 (七)
- Seventh Demo of OGRE
- C51行列键盘扫描程序
- VMWare+Windbg双机调试终于成功!
- c标准库源代码之 随机数产生算法
- 自己翻译的书(关于ASP.NET),希望对大家有帮助 (八)
- Use python win32gui for drawing
- SqlServer Function(SplitText)
- WINCE应用的UI实现方案
- Add words (you consider right but VIM does not) to VIM internal-wordlist
- C# flash player 制作