3分钟带你彻底弄懂数码管的段选与位选

蓝桥杯单片机基础学习部分(3)——数码管 在蓝桥的比赛里,大部分的输出显示是通过数码管显示出来的,每一次的比赛,数码管的显示功能是必考的!本文通过数码管的静态显示和动态扫描两部分分析数码管的功能实现。 阅读详情
AI摘要

本文详细介绍了数码管的工作原理,包括段选和位选的概念,共阳共阴的区别,以及如何通过编程设置数码管显示数字。通过实例演示了如何使用P0端口控制共阴共阳数码管显示'0',并提供了对应的段选表格和代码示例。

数码管是给我们展示数据或者信息的电子器件,它是最原始以及成本比较低。以下是数码管的实物图:

1.1 数码管的段选与位选

以下是数码管的每一段所对应的位置:

从图可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段,而实际上,这 8 个段每一段都是一个 LED 小灯,所以一个数码管就是由 8个 LED 小灯组成的。注意 dp 这个段,它是表示一个小数点!我们看一下数码管内部结构的示意图:

数码管分为共阳和共阴两种:

  • 共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的,阴极是公共端,由阳极来控制单个小灯的亮灭。
  • 同理共阳数码管就是阳极接在一起。

看到这里我们就不难猜出,所谓的段选就是选择要点亮数码管中 a、b、c、d、e、f、g、dp 哪些段。

我们假设有多个这样的数码管,例如这样:


该图中的 LED8、LED7、LED6、LED5、LED4、LED3、LED2、LED1 网络标签都是数码管的公共端口 COM,位选指的就是这里,你可以认为里面有8个数码管,在你选择好段选之后,给某个 COM 网络进行选择就相当于选择点亮某个数码管。

下面以一个例子说明:

假设我要在上图从左往右第3个数码管显示“0”,那么“0”对应段选就是点亮 a、b、c、d、e、f,对于共阴数码管,它的表示如下:

数字dp段g段f段e段d段c段b段a段二进制表示十六进制表示
0001111110b001111110x3f

假设P0端口连接到数码管的各个段,那么给P0端口写入0x3f,再给LED6网络端口置为0电平即可。

相反地,共阳数码管把共阴数码管的位选反转一下:

数字dp段g段f段e段d段c段b段a段二进制表示十六进制表示
0110000000b110000000xc0

给P0端口写入0xc0,再给LED6网络端口置为1。

1.2 数码管的段选表格

前面我们学习了“0”的表示,下面列出共阴数码管与共阳数码管的表格:

① 共阴数码管表格:

unsigned char code LedChar[]={
	0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0xff, //全亮
    0x00  //熄灭
};

② 共阳数码管表格:

unsigned char code LedChar[]={
	0xc0,//0
	0xf9,//1
	0xa4,//2
	0xb0,//3
	0x99,//4
	0x92,//5
	0x82,//6
	0xf8,//7
	0x80,//8
	0x90,//9
	0x88,//A
	0x83,//B
	0xc6,//C
	0xa1,//D
	0x86,//E
	0x8e, //F
	0x00, //全亮
	0xff  //熄灭
};

【蓝桥杯-单片机】基础模块:数码管 位选(Digit Select):位选是指在多位数码管中选择哪一位进行显示。例如,4位数码管就有4个位选引脚,通过控制这些引脚的电平状态,可以选择显示哪一位的数字。位选的常见方式是通过一个计时器或者控制芯片,轮流地激活每一位,以达到依次显示多个数字的效果。位选引脚一般用W0、W1、W2等表示,其中W0对应最低位,W1对应次低位,以此类推。段选(Segment Select):段选是指选择数码管的哪一段(LED)亮起来,以显示对应数字的哪一部分。 阅读详情

相关推荐

proteus数码管段选位选控制原理通俗解释+仿真演示

深入浅出讲解proteus数码管的段选与位选控制机制,通过仿真演示直观展示动态显示过程,帮助理解proteus数码管在单片机系统中的实际应用与驱动逻辑。

weixin_31486261的博客 1219

数码管的段选和位选是什么

初选单片机的时候,数码管是一个绕不过去的弯,对于初学者来说,数码管的段选和位选总是一脸懵。那么数码管的段选和位选是什么呢? 位选,选位置。我要选择哪一位数码管亮。 段选,选一段。我要选择哪一段LED亮. ...

Chaosna13的博客 1万+

51单片机按键控制数码管加减和秒表

#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit k1=P3^4; sbit k2=P3^5; sbit k3=P3^6; sbit k4=P3^7; sbit du=P2^6; sbit we=P2^7; uchar counter,num; uchar code table...

wenxin161203的博客 1万+

点灯工程师点灯中的位选和段选的区别。

段选和位选

W546556的博客 6636

51单片机动态数码管驱动原理与实战:从静态显示到电子时钟应用

数码管作为单片机系统中最基础的数字显示器件,其工作原理基于LED点阵的段码控制。通过理解共阳与共阴的结构差异,掌握段码表的生成与使用,是驱动显示的第一步。其技术价值在于以极低的硬件成本实现数字信息的直观输出,广泛应用于计时、计数、状态指示等场景。为了节省宝贵的I/O口资源,动态扫描技术应运而生,它利用人眼视觉暂留效应,通过分时复用快速轮流点亮多个数码管,实现多位数字的稳定显示。这一原理正是构建51单片机电子时钟、交通灯倒计时等经典项目的核心。本文深入解析了动态数码管的驱动电路设计、软件消影策略以及使用定时器

weixin_34080951的博客 458

基于51单片机的数码管时钟程序详解

51单片机作为经典微控制器之一,广泛应用于教学和工业控制领域。在开发基于51单片机的硬件接口项目时,编程是构建系统的核心。本章节将提供51单片机的基本编程知识,帮助读者了解如何操作其硬件接口,并为后续章节打下基础。BCD(Binary-Coded Decimal)编码是二进制编码的十进制数。在BCD编码中,每个十进制数字都使用四位二进制数表示。例如,十进制数9在BCD编码中表示为1001。

weixin_35094083的博客 468

数码管的位选和段选

位选就是选择位置,比如有3个数码管,位选就是选择这三个中的那个数码管;位选后才能段选,段选就是选择你已经选择好的数码管里面的灯,比如要显示1,就让b,c等于0。 总结:位选选择数码管,段选选择数码管里面的灯。 ...

dppkirito的博客 1万+

TL494充电器原理与维修 (转)

TL494充电器原理与维修 电动自行车充电器多采用开关 电源,型号虽多,但电路结构大同小异,主要区别在于所选的脉宽调制(PWM)芯片不同如(UC3845、UC3842、SG3524、TL494)。现以佳腾牌 充电器为例,介绍其原理和故障检修方法。 一、电路原理 根据实物测绘的佳腾牌充电器电路原理如图1所示。整机可分为PWM产生和推动电路、功 率开关变换电路、...

weixin_30500663的博客 1814

两位数码管显示学号练习程序和图_【Proteus】数码管简易计时器

前言本章介绍使用定时器与数码管来做一个简易的计数器,使用3个2位一体数码管来分别代表时,分,秒。使用锁存器来控制数码管的段选与位选。先放一张完整的仿真图:锁存器:锁存器在数码管驱动中是非常常用的一种器件。简单来说,锁存器最主要的作用就是缓存。可以按照下面的简单描述来理解:当LE给到1的时候,锁存器就会使能打开,然后由单片机给输入数据到D0-D7,然后关闭LE端口,也就是LE端口给0,这时候锁存器的...

weixin_39783857的博客 8414

深入解析ffmpeg编码错误:avcodec_send_frame()返回-22的排查与修复

本文深入解析FFmpeg编码中avcodec_send_frame()返回-22(AVERROR(EINVAL))错误的根本原因与系统排查方法。核心问题通常在于编码器未正确打开或上下文传递错误。文章提供了从检查编码器查找、确认avcodec_open2()调用,到验证上下文传递的完整修复指南,并附有可运行的代码示例,帮助开发者快速定位并解决这一常见编码障碍。

weixin_28049429的博客 389

卡方检验的隐藏逻辑:为什么正态分布的平方和如此重要?

本文深入探讨了卡方检验的核心逻辑,揭示了正态分布平方和在统计检验中的重要性。通过分析卡方分布与伽马分布的关系,以及实际应用案例,帮助读者理解卡方检验的原理、局限及高级应用场景,为数据分析提供有力工具。

3a9bq4r8t2y的博客 206

51单片机学习记录笔记(3)--数码管

学习记录

jiangjiahao123n的博客 1003

ROST_CM6软件之词频分析、社会网络和语义网络分析、情感分析

简介 ROST CM 6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。 社会网络和语义网络分析(S) 数据 注意,保存时编码要为ANSI 所以这里需要转换一下 准备自定义表与停词表 例如 同时,点击快速分析后,将会弹出网络图 对网络图进行设置 对布局进行设置 对节点、边进行设置 最终效果图 修改 情感分析

积一时之步,臻千里之遥程 9万+

5分钟图解数码管驱动:从段选码表到位选扫描实战

本文详细解析了数码管驱动技术,从段选码表到位选扫描的实战应用。通过共阴/共阳编码原理、多位数码管驱动方法及消影处理技巧,帮助开发者快速掌握数码管显示控制。文章还提供了硬件电路设计要点和软件定时扫描实现方案,解决常见显示问题。

weixin_42709044的博客 187

2025-08-19利用opencv检测图片中文字及图片的坐标

该代码实现了图片中中文文本的检测与位置计算功能。主要使用CnOcr库进行OCR识别,结合OpenCV和PIL库处理图像。功能包括:1)检测图片中的中文文本及位置坐标;2)计算每个文本的像素宽度和高度;3)在原图上绘制文本边界框并标注识别结果。代码通过put_chinese_text函数解决中文显示问题,最终输出各文本内容、坐标位置及尺寸信息。适用于需要获取图片中文字精确位置的应用场景。

m0_58149406的博客 394

Labview邪修01:贪吃蛇小游戏

摘要:博主使用LabVIEW 2020(32位)复刻了经典贪吃蛇游戏。程序具备随机生成蛇(初始长度3)和食物、三档速度调节、键盘方向控制等功能,碰撞边界或自身即游戏结束。实现过程包括:1)界面设计,使用二维颜色盒数组构建游戏区,添加速度枚举控件和功能按钮;2)程序架构,采用模块化设计包含Main.vi、Start.vi等6个核心VI,分别处理初始化、位置计算、碰撞检测等逻辑;3)事件驱动机制,通过开始/结束事件、按键响应和超时循环实现游戏流程控制。运行时可实时显示分数,完整还原了贪吃蛇的核心玩法。

weixin_38637405的博客 969

基于STM32的时钟设计并在六位数码管上显示附proteus仿真

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考本项目包含KEIL代码编写和Proteus代码仿真两部分,主要通过基础定时器实现时钟功能,难点在于在六位数码管上显示,本项目采用定时器3的中断,以一秒为一单位,重点对时间的处理,让小时,分钟,秒显示在数码管上,项目扩展部分,可以加入按键来进行一个时间的设置与校准。

clanned16的博客 7599

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2792

从段选到位选:手把手教你用51单片机实现数码管时钟的动态显示原理

本文详细解析了51单片机实现数码管时钟动态显示的核心技术,包括段选与位选原理、动态扫描机制及电子时钟逻辑实现。通过代码示例和工程优化策略,帮助开发者掌握数码管驱动技术,提升嵌入式系统开发能力。

weixin_30555125的博客 416

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

8051单片机实战分析(以STC89C52RC为例) | 06 - 动态数码管驱动

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u8 code LedChar[]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66,

Systemcall名屋 3213

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

51单片机利用锁存器控制数码管显示年月日时分秒

数码管模块中的两片74hc573,一片锁存段码,一片锁存位码,这样才能驱动8位数码管。74hc573是锁存器,用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。驱动数码管需要两个信号,一个是段选信号,另一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了16个IO口,非常浪费。使用573锁存器后,只占用10个IO口,其中2个用于控制锁存器使能,另外8个用于输出信号。先关闭控制片选

fat_niu_tui_zi的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

单片机基础知识--数码管的显示

段选 = 控制数码管的段引脚电平通俗讲:段选的核心作用是告诉所有数码管「你们要显示0还是1、2、3…9」专业讲:通过给段引脚(a~g、dp)赋值对应的段码(比如共阴0x3F=显示0,0x06=显示1),确定数码管要显示的数字/符号,段码变,显示的数字就变。段选是「全局生效」的,一个段码信号,所有位的数码管都能接收到。位选 = 控制数码管的位引脚电平通俗讲:位选的核心作用是告诉所有数码管「你们中,只有第X位可以亮,其他位都熄灭」

qq_43582136的博客 1172

51单片机-动态数码管

1.不用的函数要注释掉,否则会警告:“*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS”。2.Keil uVision5不支持函数中定义变量,之前用C++和C#习惯了用到变量了再定义。3.子函数的定义要放在使用该函数的函数前,有点绕。1.段选和位选:简单来说就是段选是控制具体数字显示几,位选是控制哪个数码管显示。功能:两个四位一体数码管,可以显示两个浮点数计算的结果。3.DIR:Direct的缩写,指驱动芯片引脚。

u010019329的博客 1059

51单片机控制4位数码管显示时钟

根据数码管的共阳(或共阴)特性,在对应的I/O口输出高电平(或低电平)来点亮相应的数码管段。1. 连接硬件:将4位数码管的共阳(或共阴)引脚连接到51单片机的I/O口,连接数码管的段选引脚到51单片机的另外4个I/O口。原文链接:https://blog.youkuaiyun.com/ou2413/article/details/131636228。2. 设置引脚:在代码中定义每个数码管引脚对应的I/O口为输出模式,用于控制数码管的显示。Digit1 = 0;Digit1 = 1;Digit2 = 1;

ou2413的博客 5432

第5章 数码管显示!掌握静态与动态驱动原理,实现单片机数字输出

本章我们从最底层的数码管发光原理讲起,C语言数组、循环、位操作、定时器中断、中断优先级等核心知识点,先讲透共阳/共阴数码管的核心区别、段码表的生成逻辑,再从最简单的静态显示,到工业级开发最常用的动态显示,解决新手最头疼的鬼影、亮度不均、闪烁等问题,最终结合定时器中断实现非阻塞式的多位数码管刷新

ZhongWeiXiang9的博客 793
上一篇: 74HC138三八译码器的应用
下一篇: 8051单片机实战分析(以STC89C52RC为例) | 06 - 动态数码管驱动
嵌入式逍遥
嵌入式逍遥 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄9年 7万+粉丝 237原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值