|
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define uchar unsigned char
#define uint unsigned 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[0];break;//0 按下相应的键显示相对应的码值
case 0x7d:P1=dofly[1];break;//1
case 0x7b:P1=dofly[2];break;//2
case 0x77:P1=dofly[3];break;//3
case 0xbe:P1=dofly[4];break;//4
case 0xbd:P1=dofly[5];break;//5
case 0xbb:P1=dofly[6];break;//6
case 0xb7:P1=dofly[7];break;//7
case 0xde:P1=dofly[8];break;//8
case 0xdd:P1=dofly[9];break;//9
case 0xdb:P1=dofly[10];break;//a
case 0xd7:P1=dofly[11];break;//b
case 0xee:P1=dofly[12];break;//c
case 0xed:P1=dofly[13];break;//d
case 0xeb:P1=dofly[14];break;//e
case 0xe7:P1=dofly[15];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) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|