独立按键控制单个数码管显示按键值

#include <reg52.h>
#define uchar unsigned char
uchar keyvalue;
sbit P2_0=P2^0; //数码管位选
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳极数码管
void delay(uchar z) //延时函数
{uchar x,y;
for(x=z;x>0;x–)
for(y=114;y>0;y–);
}
void keyscan() //独立按键扫描函数
{ P3=0xff;
if(P3!=0xff)
{ delay(5);
if( P3!=0xff)
{
switch(P3)//判断哪一行被按下
{ case 0xdf:keyvalue=2;break;//S1按下
case 0xef:keyvalue=3;break;//S2按下
case 0xf7:keyvalue=4;break;//S3按下
case 0xfb:keyvalue=5;break;}//S4按下
}
while(P3!=0xff);//松手检测
}
}
void display(uchar i) //数码管显示函数
{
P2_0=0; //打开位选锁存器
P0=table[i]; //显示按键值
delay(5);
P2_0=1; //锁定位选数据
}
void main()
{
while(1)
{
keyscan(); //独立按键扫描
display(keyvalue);//按键值显示
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值