【单片机】C52单片机之4X4矩阵键盘和数码管联动

各位读者好,本文主要介绍在C52单片机上如何设计矩阵键盘并与数码管联动。
在你拥有以下条件时,学习效果最佳:
1、开发环境中安装了keil(单片机程序开发工具)、proteus(仿真软件)
2、有一定c语言使用基础、有一定单片机电路基础

一、电路图设计

1、电路图展示
在这里插入图片描述

二、控制程序设计

#include<reg52.h>

sbit p0_0 = P0^0;
sbit p0_1 = P0^1;

char code display[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //数码管段选值
char display1 = 0xff;   //数码管位选1
char display2 = 0xff;   //数码管位选2

void delayms(int t)
{
	unsigned int i,j;
	for(i=0; i<t; i++)
		for(j=0; j<120; j++);
}

//当与P2口第四位相连的4与门器输出低电平时,触发中断
void led() interrupt 0
{
		//这里利用电平触发的延时效果,我们将P2引脚的高4位的电平顺序置低,引起被按下按键的行列电平产生电压差,产生电流,从而让P2引脚第四位中对应引脚的电平降低,以达到检测的目的。
		P2=0xef;
		if (P2==0xee) display1=display[1],display2=display[10]; 
		if (P2==0xed) display1=display[5],display2=display[10]; 
		if (P2==0xeb) display1=display[9],display2=display[10]; 
		if (P2==0xe7) display1=display[3],display2=display[1]; 
		
		P2=0xdf;        
		if (P2==0xde) display1=display[2],display2=display[10];    
		if (P2==0xdd) display1=display[6],display2=display[10];    
		if (P2==0xdb) display1=display[0],display2=display[1];      
		if (P2==0xd7) display1=display[4],display2=display[1];      
		
		P2=0xbf;            
		if (P2==0xbe) display1=display[3],display2=display[10];       
		if (P2==0xbd) display1=display[7],display2=display[10];        
		if (P2==0xbb) display1=display[1],display2=display[1];        
		if (P2==0xb7) display1=display[5],display2=display[1];      
		
		P2=0x7f;         
		if (P2==0x7e) display1=display[4],display2=display[10];        
		if (P2==0x7d) display1=display[8],display2=display[10];        
		if (P2==0x7b) display1=display[2],display2=display[1];        
		if (P2==0x77) display1=display[6],display2=display[1];        
		
		P2=0x0f;
}

void main()
{
	P2=0x0f;
	//中断初始化
	EA = 1;
	EX0 = 1;
	IT0 = 0;
	while(1)
	{
	//循环对数码管赋值并且动态显示
		P1 = display1;
		p0_0 = 0;
		delayms(55);
		p0_0 = 1;
		P1  = display2;
		p0_1 = 0;
		delayms(55);
		p0_1 = 1;
	}
}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值