51单片机-独立按键与数码管联动

独立键盘和矩阵键盘检测原理及实现

键盘的分类:编码键盘和非编码键盘

键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如:计算机键盘。靠软件编程识别的称为非编码键盘;在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的。

非编码键盘又分为独立键盘和行列式键盘(矩阵键盘)。

在计算机工程中指的是线路逻辑中的"或"和"与"操作。在电路中,线或操作涉及到一条线和一个开关,当开关闭合时,整条线的电平状态会发生变化。具体来说,如果一端是高电平,另一端是低电平,开关闭合后,整条线会变为低电平,这就是线与的关系;如果一端是高阻态,另一端是高电平,开关闭合后,整条线会变为高电平,这就是线或的关系

原理图如下:

cpp 复制代码
#include <reg52.h>

sbit d1=P1^0;//声明第一个发光二极管
sbit key1=P3^4;

sbit wela=P2^7;
sbit dula=P2^6;

unsigned char num;//定义数码管显示的数字变量
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delay(unsigned int z)
{
	unsigned int x,y;
	for(x=z;x>0;x--)
	   for(y=110;y>0;y--);
}


void main()
{
	//打开第一个数码管
	wela=1;
	P0=0xfe;
	wela=0;

	P3=0xff;
	while(1)
	{
		if(key1==0)
		{
			delay(10);//延迟一段时间
			if(key1==0)
			{
				d1=0;//按键按下第一个发光二极管点亮
				num++;
				if(num==10)
				{
					num=0;
				}
			}
			while(!key1);//如果key1=0,说明未松手(松手检测),一直等待
			delay(10);
			while(!key1);
		}else{
			d1=1;//否则第一个发光二极管熄灭
		}

		dula=1;
		P0=table[num];
		dula=0;
	}
}

独立键盘与数码管联动

相关推荐
炸膛坦客5 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
华清远见IT开放实验室9 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
AI的探索之旅12 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
茯苓gao12 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
GeekArch12 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
Freedom_my13 小时前
STM32项目3
stm32·单片机·嵌入式硬件
国科安芯14 小时前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
小李不困还能学15 小时前
基于 51 单片机的8 路抢答器设计教程
单片机·嵌入式硬件·mongodb·抢答器
CedarQR15 小时前
万字长文:从零在 RK3588 上部署 PaddleSpeech 中文 TTS 全流程(FastSpeech2 + HiFiGAN)
开发语言·c++·嵌入式硬件·ubuntu·json
萌动的小火苗16 小时前
嵌入式开发中的栈与队列:任务调度为什么依赖数据结构
数据结构·c++·单片机·嵌入式硬件