基于51单片机的4X4键盘数码管显示proteus仿真

硬件设计

链接:https://pan.baidu.com/s/11-EH_0-v4CPRYd0sXVVJkg
提取码:fzfx
在这里插入图片描述

#include<reg51.h>
#define uchar unsigned char 
#define uint unsigned int
#define GPIO_KEY P1
#define weixuan P2
//0~F的共阳数码管段码,最后一个是黑屏
const uchar SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF
};
sbit wei1=P2^0;
sbit wei2=P2^1;
uchar ge,shi,KeyValue,j;
/*****延时函数*****/
void delay1ms(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=112;y>0;y--);  //12M晶振下,延时1MS
}

/*****显示函数*****/
void xianshi(uchar k)
{
	  ge=k%10;  //个位
	  shi=k/10; //十位
	  if(k>9)
	  {
		weixuan=0x02;
		P0=SEG_CODE[ge];//个位段选
		delay1ms(10);
		weixuan=0x01;
		P0=SEG_CODE[shi];//十位段码,显示
		delay1ms(10);	
	  }
	  else
	  {
		weixuan=0x02;
		P0=SEG_CODE[ge];//个位段选
		delay1ms(10);				  		
	  }
}
/***键盘扫描函数***/
uchar keyscan()
{
	char a=0;
		GPIO_KEY=0x0f;   //P1口值准备
			if(GPIO_KEY!=0x0f)
			{
				delay1ms(10);   //延时消抖
				if(GPIO_KEY!=0x0f)//再次判断
				{
					GPIO_KEY=0x0f;  //再次装值准备
					switch(GPIO_KEY)  //测试行
					{
						case(0x07):KeyValue=0;break; //第一行
						case(0x0b):KeyValue=1;break; //第二行
						case(0x0d):KeyValue=2;break; //第三行
						case(0x0e):KeyValue=3;break; //第四行							
					}
					GPIO_KEY=0xf0;   //高四位赋1,判断准备
					switch(GPIO_KEY) //测试行
					{
						case(0x70):KeyValue=KeyValue;break;	   //0-3
						case(0xb0):KeyValue=KeyValue+4;break;  //4-7
						case(0xd0):KeyValue=KeyValue+8;break;  //8-11
						case(0xe0):KeyValue=KeyValue+12;break; //12-15		
					}
					while((GPIO_KEY!=0x0f)&&(a<10)) //判断是否松手,假若没有松手,
				                                   	//一段延时后依旧判断松手完成
					{
						delay1ms(1);
						a++;
					}
					a=0;		
				}
			} 	
			return KeyValue; 
}

  • 0
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值