请高人帮我看看,矩阵键盘问题
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char
#define uintunsigned int
unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
/*------------------------------------------------
函数声明
------------------------------------------------*/
uchar keyscan(void);//键盘扫描
void delay(uint i); //演示程序
/*------------------------------------------------
主函数
------------------------------------------------*/
void main()
{
uchar key;
P2=0x00; //1数码管亮 按相应的按键,会显示按键上的字符
while(1)
{
key=keyscan();//调用键盘扫描,
switch(key)
{
case 0x7e:P1=dofly;break;//0 按下相应的键显示相对应的码值
case 0x7d:P1=dofly;break;//1
case 0x7b:P1=dofly;break;//2
case 0x77:P1=dofly;break;//3
case 0xbe:P1=dofly;break;//4
case 0xbd:P1=dofly;break;//5
case 0xbb:P1=dofly;break;//6
case 0xb7:P1=dofly;break;//7
case 0xde:P1=dofly;break;//8
case 0xdd:P1=dofly;break;//9
case 0xdb:P1=dofly;break;//a
case 0xd7:P1=dofly;break;//b
case 0xee:P1=dofly;break;//c
case 0xed:P1=dofly;break;//d
case 0xeb:P1=dofly;break;//e
case 0xe7:P1=dofly;break;//f
}
}
}
/*------------------------------------------------
键盘扫描程序
------------------------------------------------*/
uchar keyscan(void)
{
uchar scancode,tmpcode;
P3 = 0xf0; // 发全0行扫描码
if ((P3&0xf0)!=0xf0) // 若有键按下
{
delay(1000); // 延时去抖动
if ((P3&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响
{
scancode = 0xfe;
while((scancode&0x10)!=0) // 逐行扫描
{
P3 = scancode; // 输出行扫描码
if ((P3&0xf0)!=0xf0) // 本行有键按下
{
tmpcode = (P3&0xf0)|0x0f;
/* 返回特征字节码,为1的位即对应于行和列 */
return(~(~scancode)+(~tmpcode));
}
else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
}
}
}
return(0); // 无键按下,返回值为0
}
/*------------------------------------------------
延时程序
------------------------------------------------*/
void delay(uint i)//延时函数
{
while(i--);
}
这个是我编的程序,用PROTUES仿真,只能显示0到3,从4开始按下键盘一点反应都没有,请高人指点一下,小弟不胜感激!!!谢谢大家了
点击此处下载 ourdev_624964W4LHNN.rar(文件大小:14K) (原文件名:数码管显示4×4键盘矩阵按键.rar) 怎么没有人啊!小弟急啊! 回复【楼主位】194027lm
-----------------------------------------------------------------------
在上传的“数码管显示4×4键盘矩阵按键.rar” 中,没有提供 keyboard.hex 文件。 回复【2楼】JQ_Lin
-----------------------------------------------------------------------
忘记上传了,现在怎么传上去?指点一下! 把仿真工程文件“数码管显示4×4键盘矩阵按键.DSN”和 keyboard.hex 一起压缩成为一个 XXX.rar 压缩文件,上传后,复制链接到回帖中来。 回复【4楼】JQ_Lin
-----------------------------------------------------------------------
弄上来了,麻烦大哥帮看一下,小弟感激不尽啊!
点击此处下载 ourdev_626814RW0F5J.rar(文件大小:15K) (原文件名:矩阵键盘.rar) 大家帮帮忙啊! 你发的文件连0-3都显示不了! 都发的什么啊?一个是空文件一个什么都按不了 可以啊!我在这里仿真可以成功啊,按最左边的这一列的按键就显示0到3啊
页:
[1]