单片机实验10:矩阵按键控制数码管显示

本文介绍了一种利用矩阵按键控制数码管显示的方法。通过给矩阵键盘的不同列输入低电平并检测行状态来判断按键是否按下。文章详细展示了如何通过编程实现这一功能,并解释了如何避免按键抖动的影响。

矩阵按键控制数码管显示

矩阵按键和独立按键很不一样,独立按键一段直接与I/O口连接,因此原本为高电平,另一端接地,因此只要检测I/O口是否为低电平就可以检测按键是否被按下。
但是矩阵按键两端同时连接I/O口,因此检测较为复杂。
原理如下:
在这里插入图片描述
图中S16按键同时连接P10和P14,因此检测的时候只要先人为给P10一个高电平,P14一个低电平,之后再重复检测P10是否变为低电平就可以检测到S16是否被按下。其他按键原理相同,I/O口高低电平位置可以互换,但是要保证一个是高一个是低。

实验源代码:

晶振11.0592
矩阵键盘为4x4
肉眼的视觉暂留效果捕捉时间为1000ms~2000ms,这个大家可以直接用数码管做实验得出

#include <reg52.h>
#define uchar unsigned char 
#define uint unsigned int

sbit jz_key1 = P1^0;	//矩阵按键位定义
sbit jz_key2 = P1^1;
sbit jz_key3 = P1^2;
sbit jz_key4 = P1^3;
sbit jz_key5 = P1^4;
sbit jz_key6 = P1^5;
sbit jz_key7 = P1^6;
sbit jz_key8 = P1^7;
sbit led2 = P2^2;		//数码管显示位选控制
sbit led3 = P2^3;
sbit led4 = P2^4;
uchar code duanxuan[] = {
   
   0x3f,0x06,0x5b,0x4f,	  //0,1,2,3
						 0x66,0x6d,0x7d,0x07,	  //4,5,6,7
					 	 0x7f,0x6f,0x77,0x7c,	  //8,9,A,B
						 0x39,0x5e,0x79,0x71};	  //C,D,E,F		段选
						 
uchar code juzhen[] 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值