51单片机练习:矩阵按键篇

文章讲述了如何使用51单片机控制数码管显示,通过矩阵键盘输入并实现逐个数码管动态显示,介绍了初始化、延时函数和矩阵键盘处理技巧。

题目:

实验板上电时,数码管不显示,顺序按下矩阵键盘后,在数码管上依次显示0~F,6个数码管同时静态显示即可。(来自郭天祥老师的51单片机练习)

代码:

初始化函数:

//初始化函数
void Init()
{
	DLE = 1;
	P0 = 0x00;//关闭数码管(共阴极)段选,数码管不显示
	DLE = 0;
	
	WLE = 1;
	P0 = 0xc0;//打开所有数码管的位选
	WLE = 0;
}

延时1ms函数:

//延时1ms函数
void delay_1ms(uint z)
{
	uint x,y;
	for(x = z;x > 0;x--)
	{
		for(y =110;y > 0;y--){}
	}
}

矩阵键盘函数:

//矩阵键盘函数
void MatrixKeyboard()
{
	uchar temp;
	uint keyNum;
	P3 = 0xfe;//第一排按键
	temp = P3;
	temp = temp & 0xf0;
	while(temp != 0xf0) 
	{
		delay_1ms(10);//消抖
		temp = P3;
		temp = temp & 0xf0;
		if(temp != 0xf0)
		{
			temp = P3;
			switch(temp)
			{
				case 0xee:
					keyNum = 0;
					break;
				case 0xde:
					keyNum = 1;
					break;
				case 0xbe:
					keyNum = 2;
					break;
				case 0x7e:
					keyNum = 3;
					break;
			}
			//等待按键释放	
			while(temp != 0xf0)
			{
				temp = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值