2021-07-13矩阵按键与二位动态数码管联动

直接开始

#include<reg52.h>

sbit displaya=P2^2;
sbit displayb=P2^3;
sbit displayc=P2^4;//数码管管脚定义
#define juzhen P1//矩阵按键定义
#define dig P0//数码管显示
typedef unsigned char u8;
typedef unsigned int u16;
u16 value,a;//value代表各个按键的值
void delay(u16 i)//延时函数
{
while(i--);
}
void hang()//行列法
{
	juzhen=0x0f;//0x0f= 0000 1111即高位低电位,低位高电位
	if(juzhen!=0x0f)//先列后行
	{
		delay(1000);
	}
	if(juzhen!=0x0f)
	{
		switch(juzhen)
		{case(0x07):value=1;break;
		case(0x0b):value=2;break;
		case(0x0d):value=3;break;
		case(0x0e):value=4;break;
		
		}
		juzhen=0xf0;//高低位电位颠倒
		switch(juzhen)
		{
			case(0x70):value=value;break;
			case(0xb0):value=value+4;break;
			case(0xd0):value=value+8;break;
			case(0xe0):value=value+12;break;			
		}
		while(a<50&&juzhen!=0xf0)//延时按键防止误判
		{
			delay(1000);
			a++;
		}
	}
}
void main()
{
	u8 c[2],j,a[]={0x3f,0x06,0x5b ,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
	hang();
	if(value>9)
	{
		c[1]=value/10;
		c[2]=value%10;
	}
	for(j=1;j<2;j++)//同上篇文章
	{
		displaya=j%2;
		displayb=j/2-j%4;
		displayc=j/4;
		dig=a[c[j]];
		delay(100);
		}}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值