c51单片机16个按键密码锁源代码(富proteus电路图)

注意了:这个代码你是没法直接运行的,但是如果你看得懂,随便改一改不超过1分钟就可以用

cpp 复制代码
#include "reg51.h"
#include "myheader.h"
void displayNumber(unsigned char num)
{
	if(num==1)
	{
		P1=0XFF;
		P10=P11=P14=P15=P16=0;
	}
	else if(num==0)
	{
		P1=0XFF;
		P10=P13=P14=P15=P16=P17=0;
	}
	sleep(50000);
	P1=0XFF;
}
void judgeKey()
{
	int keydown=0;
	unsigned char state=0;
	unsigned char tag=0;
	unsigned char row=0,col=0;
	while(1)
	{
	P2=0XFF;
	P3=0;
	keydown=0;
	while(keydown==0)
	{
		if(P2!=0XFF)//说明没有键按下
		{
			keydown=1;
		}
	}
	if(keydown==1)//说明有按键按下了
	{
		row=0;col=0;
		//判断是哪一个按键
		//判断行
		P3=0;P2=0XFF;
		for(state=~P2&0X0F,tag=0;state!=0X01;state=state>>1 )
		{
			tag++;
		}
		row=tag;
		//判断列
		//逻辑错误:P2的高电平接到P3的低电平是不会把低电平变为高电平的,
		P2=0;P3=0XFF;
		for(state=~P3&0X0F,tag=0;state!=0X01;state=state>>1 )
		{
			tag++;
		}
		col=tag;
		if(row==1&&col==3)
		{
			P34=1;
			displayNumber(1);
		}
			
		else
		{
			P34=0;
			displayNumber(0);
		}
			
		sleep(5000);
		while(keydown==1)
		{
			if(P3&&0x0f==0X0F)//说明没有键按下
			{
				keydown=0;
			}
		}
	}

	}
}
int main()
{
	judgeKey();
	return 0;
}
void sleep(long int a)
{
	long int i=0;
	for(i=0;i<a;i++){;;;}
}
相关推荐
不脱发的程序猿8 小时前
AI Coding时上下文不够用咋办?
单片机·嵌入式硬件·嵌入式
blevoice9 小时前
杰理工程师日志3:杰理芯片AC6966B开发蓝牙智能音响时,关于自己设置各种提示音常见问题
单片机·jl杰理蓝牙音频芯片·ac6966b蓝牙音响方案·杰理智能音箱开发·杰理蓝牙mp3芯片·杰理ac6965e蓝牙播放器·杰理蓝牙mcu芯片
leoFY1239 小时前
SGM3209(圣邦微 高压负压电荷泵)(与TP7660可只修改4脚,7脚即可替换)
单片机·嵌入式硬件
zlinear数据采集卡10 小时前
基准电压电路深度解析:从理论参数到ZLinear采集卡的精准参考实战
c语言·单片机·嵌入式硬件·fpga开发·自动化
bbaydnog10 小时前
FreeRTOS学习笔记 18:调试方法论——HardFault排查、栈溢出检测、运行时统计,RTOS调试三板斧
笔记·单片机·freertos
下午写HelloWorld10 小时前
GD32F4系列微控制器上电启动流程
单片机·嵌入式硬件
daad77710 小时前
记录一次ardupilot_sitl调试longitude的输入数据流
单片机·嵌入式硬件
搁浅小泽10 小时前
电子负载的作用
单片机·嵌入式硬件
周周记笔记12 小时前
【元器件专题】MOS管上下桥设计详解(死区时间)
单片机·嵌入式硬件
RFID舜识物联网12 小时前
耐高温RFID:让喷涂线从“数据断点”走向“全链贯通”
大数据·人工智能·嵌入式硬件·物联网·汽车