学习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	 
	}		
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐