⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩阵键盘.c

📁 一些51单片机基础模块的程序
💻 C
字号:
/********************************************************************
* 文件名  : 矩阵键盘.c
* 描述    :  该文件实现了 4 * 4 键盘的试验。通过数码管的最后两位来显示当前的按键值。		 
* 创建人  : 东流,2009年4月9日
* 版本号  : 2.0
* 技术支持论坛:www.zidh.com/bbs(请进入“赞助商板块”中的“东流电子工作室”)
* 感谢“中国自动化资讯网”对本工作室的大力支持。
*********************************************************************/
#include<reg51.h>
#include<intrins.h>

#define uint unsigned int
#define uchar unsigned char

uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};

/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)
{
	uchar x,j;
	for(j=0;j<i;j++)
	for(x=0;x<=148;x++);	
}


/********************************************************************
* 名称 : Keyscan()
* 功能 : 实现按键的读取。下面这个子程序是按处理 矩阵键盘 的基本方法处理的。
		 该函数的原理将在“视频及教程”文件夹中介绍。
* 输入 : 无
* 输出 : 按键值
***********************************************************************/
uchar Keyscan(void)
{
	uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
	for(j=0; j<4; j++)
	{
		P1 = Buffer[j];
		/*以下三个_nop_();作用为让 P1 口的状态稳定*/
		_nop_();
		_nop_();
		_nop_();
		temp = 0x01;                                                                                                                                                                    
		for(i=0; i<4; i++)
		{
			if(!(P1 & temp)) 
			{
				return (i+j*4);		  //返回取得的按键值
			}
			temp <<= 1;
		}	
	}
}

/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
	uchar Key_Value;  //读出的键值		
	while(1)
	{
		P1 = 0xf0;		
		if(P1 != 0xf0)
		{
			Delay_1ms(15);	//按键消抖
			if(P1 != 0xf0)
			{
				Key_Value = Keyscan();		
			}
		}
		P0 = table[Key_Value / 10];     //显示高位键值
		P2 = 0x02;
		Delay_1ms(5);       
		P0 = table[Key_Value % 10];		//显示低位键值
		P2 = 0x01;
		Delay_1ms(5);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -