学习C51单片机——矩阵按键控制数码管显示数字(学习笔记Keil5)

本文详细介绍了使用C51语言在Keil5环境下实现矩阵按键对数码管显示数字的控制,包括基本原理和实际代码示例,展示了如何通过按键操作使数码管显示0到9的不同数字。
摘要由CSDN通过智能技术生成

学习C51单片机——矩阵按键控制数码管显示数字(学习笔记Keil5)

1、矩阵按键原理

单片机检测矩阵按键是否被按下的依据是检测与该按键对应的 I/O 口是否为低电平
矩阵按键原理图
单片机原理图

2、矩阵按键S1按下在第二个数码管显示数字1

#include <REGX52.H>
void main()//控制数码管第二位显示数字1
{	
	P0=0x00;//数码管不亮
	while(1)
	{	
		P2_4=1;P2_3=1;P2_2=0;//位选
		P1_3=0;
		if(P1_7==0)//按键S1按下
		{
			P0=0x06;//段选,显示数字1
		}	  	 
	}		
}

3、控制S1-S10按键按下显示数字0~9

#include <REGX52.H>
unsigned char shuzi[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void main()//控制数码管第二位显示数字1
{	
	P0=0x00;//数码管不亮
	while(1)
	{	
		P2_4=1;P2_3=1;P2_2=0;//位选
		P1=0xFF;
		P1_3=0;
        if(P1_7==0){P0=shuzi[0];}//按下S1按键数码管第2位显示数字0
        if(P1_6==0){P0=shuzi[4];}//按下S5按键数码管第2位显示数字4
        if(P1_5==0){P0=shuzi[8];}//按下S9按键数码管第2位显示数字8
	
	    P1=0xFF;
	    P1_2=0;
	    if(P1_7==0){P0=shuzi[1];}//按下S2按键数码管第2位显示数字1
	    if(P1_6==0){P0=shuzi[5];}//按下S6按键数码管第2位显示数字5
	    if(P1_5==0){P0=shuzi[9];}//按下S10按键数码管第2位显示数字9
	
	    P1=0xFF;
	    P1_1=0;
	    if(P1_7==0){P0=shuzi[2];}//按下S3按键数码管第2位显示数字2
	    if(P1_6==0){P0=shuzi[6];}//按下S7按键数码管第2位显示数字6
	
	    P1=0xFF;
	    P1_0=0;
	    if(P1_7==0){P0=shuzi[3];}//按下S4按键数码管第2位显示数字3
	    if(P1_6==0){P0=shuzi[7];}//按下S8按键数码管第2位显示数字7	 
	}		
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值