51单片机矩阵键盘——数码管显示

这篇具有很好参考价值的文章主要介绍了51单片机矩阵键盘——数码管显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1.前言

当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了。

1.1实验现象

按下矩阵键盘S1并松开,数码管第一位(LED8)显示0;按下矩阵键盘S2并松开,数码管第一位显示1;...按下矩阵键盘S16并松开,数码管第一位显示F;

1.2工作原理

矩阵键盘扫描(输入扫描)
    原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果

https://blog.csdn.net/YLG_lin/article/details/126429384?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

数码管的显示(位选,段选)

https://blog.csdn.net/YLG_lin/article/details/126406076?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen文章来源地址https://www.toymoban.com/news/detail-507289.html

2.源码

#include<regx52.h>
//数码管段码表,123456789AbcdEF;

unsigned char Table[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};	

void Delay(unsigned int xms)//延时函数
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}				 

unsigned char MatrixKey()//按键扫描(逐列扫描)
{                         
	unsigned char KeyNumber=0;
	
	P1=0xFF;
	P1_3=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}
	if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}
	if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}
	
	P1=0xFF;
	P1_2=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}
	if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}
	if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}
	
	P1=0xFF;
	P1_1=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}
	if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}
	if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}
	
	P1=0xFF;
	P1_0=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}
	if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}
	if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}
	
	return KeyNumber;
}

void Xian_Shi(KeyNum)
{
		
		P2_4=1;P2_3=1;P2_2=1;//选中第一位(LED8)
		P0=Table[KeyNum-1];	//数字的首元素为Table[0];
		Delay(1);
}

				
void main()
{
	while(1)
	{
		unsigned char KeyNum=MatrixKey();//不断循环扫描
		if(KeyNum)	//判断是否有按键按下,如果有就显示					
		{
			Xian_Shi(KeyNum);		
		}	
	}		
}

到了这里,关于51单片机矩阵键盘——数码管显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】矩阵按键实现数码管显示

    闲的没事看一看玩一玩········· 矩阵按键 数码管是一种导体发光器件,其基本单元是发光二极管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管 共阴极数码管是指将所有发光二极管的阴极接到一起形成共阴极的数码管,共阴极的数码管在应用时将公共

    2024年02月02日
    浏览(47)
  • 51单片机使用TM1638驱动的数码管键盘模块

    前几天差不多把清翔的视频教程写完了,然后玩了两天,这次准备把以前买的TM1638芯片驱动的数码管按键模块用在51单片机上。 这个模块我在pdd上买的,用了2块的优惠券后付款7元包邮,价格还行吧,对比了下这个价格几乎就是最低价了。TM1638芯片都要1块多,再加上PCB,焊接

    2024年02月03日
    浏览(80)
  • 51单片机——数码管、按键、矩阵按键C语言入门编程

    目录 数码管: 1.静态数码管:第二位数码管显示0 2.动态数码管:每一位数码管依次显示对应位数 按键: 1.独立按键:按下按键对应LED亮灭 矩阵按键: 1.矩阵按键:按下的每个按键,数码管显示对应键码          数码管按段数可分为七段数码管和八段数码管,八段数码管

    2024年01月23日
    浏览(37)
  • 这才是单片机44矩阵键盘控制数码管最简单的写法

    这才是单片机4*4矩阵键盘控制数码管最简单的写法 ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛/

    2023年04月19日
    浏览(36)
  • 51单片机---编程实现流水灯----键盘控制数码管显示--利用74LS164扩展并行输出口---定时中断方式驱动一个数码管

    目录 基于51单片机,用c语言编程实现流水灯 代码: 使用C语言编写的基于51单片机的键盘控制数码管显示 代码: 基于51单片机,用c语言编程实现利用74LS164扩展并行输出口 代码: 基于51单片机,用c语言编程实现定时中断方式驱动一个数码管  代码:  1- 2- 上述代码中,使用

    2024年02月16日
    浏览(35)
  • 基于51单片机的简易6位密码锁(数码管 led 矩阵)

      本文章是基于51单片机的简易密码锁,无掉电保护,所以没有用到I^C总线协议,仅用到数码管显示,矩阵键盘扫描,led显示。   本例程主要实现功能为:定义一个六位数的初始密码,用矩阵输入,输入正确后led被点亮,错误不点亮;摁下任意一个按键蜂鸣器发出声音,松下

    2024年02月11日
    浏览(28)
  • 学习C51单片机——矩阵按键控制数码管显示数字(学习笔记Keil5)

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

    2024年04月17日
    浏览(32)
  • 51单片机数码管

    51单片机的数码管是一种常用的数字显示设备,用于在嵌入式系统中显示数字和一些特定的符号。数码管通常由七段LED组成,每个LED段可以显示数字0到9以及一些字母和符号。通过控制每个LED段的亮灭,可以显示不同的数字和字符。 在51单片机中,数码管通常连接到GPIO(通用

    2024年01月21日
    浏览(31)
  • 51单片机(四)静态数码管和动态数码管显示

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(37)
  • 【51单片机】动态数码管

    0、前言 参考: 普中51单片机开发攻略–A2.pdf 上一章我们主要是介绍一位数码管的内部结构及控制原理。下面我们再来介 绍下多位数码管及动态显示原理的相关知识。 本章所要实现的功能是:控制动态数码管从左至右显示数字 0-7。 为了正规点,工程弄个正规文件夹: http

    2024年01月21日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包