4X4 矩阵键盘控制条4X4 矩阵键盘控制条
16 4X4 矩阵键盘控制条
形LED 显示
/* 名称:4X4 矩阵键盘控
制条形LED 显示
说明:运行本例时,按
下的按键值越大点亮的
LED 越多。
*/
#include
#include #define uchar unsigned char #define uint unsigned int //矩阵键盘按键特征码表
uchar code KeyCodeTable[]={0x11,0x12,0x14,0x18,0x21,
0x22,0x24,0x28,0x41,0...
4X4 矩阵键盘控制条
16 4X4 矩阵键盘控制条
形LED 显示
/* 名称:4X4 矩阵键盘控
制条形LED 显示
说明:运行本例时,按
下的按键值越大点亮的
LED 越多。
*/
#include
#include #define uchar unsigned char #define uint unsigned int //矩阵键盘按键特征码
uchar code KeyCodeTable[]={0x11,0x12,0x14,0x18,0x21,
0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88};
//延时
void DelayMS(uint x) {
uchar i;
while(x--) for(i=0;i<120;i++);
}
//键盘扫描
uchar Keys_Scan()
{
uchar sCode,kCode,i,k; //低4 位置0,放入4 行
P1=0xf0;
//若高4 位出现0,则有键按下
if((P1&0xf0)!=0xf0)
{
DelayMS(2);
if((P1&0xf0)!=0xf0) {
sCode=0xfe; //行扫描码初值
for(k=0;k<4;k++) //对4 行分别进行扫描 {
P1=sCode;
if((P1&0xf0)!=0xf0) {
kCode=~P1;
for(i=0;i<16;i++) //查表得到按键序号并返回 if(kCode==KeyCodeTable[i])
return(i);
}
else
sCode=_crol_(sCode,1); }
}
}
return(-1);
}
//主程序
void main()
{
uchar i,P2_LED,P3_LED; uchar KeyNo=-1; //按键序号,-1 表示无按键 while(1)
{
KeyNo=Keys_Scan(); //扫描键盘获取按键序号KeyNo
if(KeyNo!=-1)
{
P2_LED=0xff;
P3_LED=0xff;
for(i=0;i<=KeyNo;i++) //键值越大,点亮的LED 越多 {
if(i<8)
P3_LED>>=1;
else
P2_LED>>=1;
}
P3=P3_LED; //点亮条形LED
P2=P2_LED;
}
}
}
本文档为【4X4 矩阵键盘控制条】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。