51单片机的4X4矩阵键盘的C语言程序
#include /////////////////////////////////////////数码管常量///////////////////////////////////////////////////////// 延时t毫秒 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// unsigned char t2=126; while(t--)while(t2--); 按键扫描函数 若有按键按下:返回 键值(1-16); 若没按键按下:返回 255 unsigned char X=0, Y=0, Z=0, k=255; P2=0xff; P2=0x0f; //先对P2置数 行扫描 if(P2!=0x0f) //判断是否有键按下 { //延时,软件去干扰 if(P2!=0x0f) //确认按键按下X = P2; { X=P2; //保存行扫描时有键按下时状态 P2=0xf0; //列扫描 Y=P2; //保存列扫描时有键按下时状态 Z=X|Y; //取出键值 switch ( Z ) //判断键值(那一个键按下) { case 0xee: k=0; break; //对键值赋值 case 0xde: k=1; break; case 0xbe: k=2; break; case 0x7e: k=3; break; case 0xed: k=4; break; case 0xdd: k=6; break; case 0xbd: k=7; break; case 0x7d: k=8; break; case 0xeb: k=9; break; case 0xdb: k=7; break; case 0xbb: k=10;break; case 0x7b: k=11;break; case 0xe7: k=12;break; case 0xd7: k=13;break; case 0xb7: k=14;break; case 0x77: k=15;break; } while(P2!=0xf0); } } return k; unsigned char temp=0,key=255; while(1) { key=getch(); //扫描 if(key!=255)temp=key; //有按键按下 led_display(temp); //显示按键值 }
unsigned charcode table[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90}; //LED段码
unsigned char code position[]={1,2,4,8}; //LED选位码
/////////////////////////////////////////延时函数////////////////////////////////////////////////////////////
void delay_ms(unsigned char t)
{
}
///////////////////////////// 数码管显示函数 ////////////////////////////////////////////////////////////////////////
参数:待显示的数据
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void led_display(unsigned int dat )
{
unsigned int dat1=dat000; //四位数码管只能显示到一千,此处用于防止溢出
P0=table[dat1/1000]|position[0];
delay_ms(2);
P0=table[(dat100)/100]|position[1];
delay_ms(2);
P0=table[dat10/10]|position[2];
delay_ms(2);
P0=table[(dat1)]|position[3];
delay_ms(2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned char getch ( )
{
}
void main()
{
}
关键词: 51单片机矩阵键盘C语言程

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码