51单片机学习笔记6 数码管显示

51单片机学习笔记5 数码管显示

  • 一、动态数码管
    • 1. 动态数码管工作原理
    • 2. 工作过程
    • 3. 原理图
      • (1)数码管及74HC245
      • (2)74HC138译码器
    • 4. 74HC245介绍
      • (1)**功能**
      • (2)**引脚**
      • (3)**工作原理**
      • (4)真值表
    • 5. D74HC138 介绍
      • (1)**功能**
      • (2)**引脚**
      • (3)**工作原理**
      • (4)真值表
    • 6. 代码实现

在这里插入图片描述

一、动态数码管

1. 动态数码管工作原理

动态数码管是一种常见的数字显示设备,通常由七段LED组成。每个数码管都有七段LED分别表示数字的不同部分,通过控制这些LED的亮灭,可以显示数字0到9以及一些字母。

在动态数码管中,每个数码管的七段LED是依次被控制的,通过快速地依次使每个数码管的七段LED亮起,可以形成多位数字的连续显示效果。

单片机通过扫描技术和适时的输出控制信号,使得数码管的各个段依次显示所需的数字或字母。

动态数码管特点:

动态数码管具有显示效果清晰、功耗低、寿命长、驱动电路简单等特点,广泛应用于计时器、电子表、计数器等设备中。
由于动态数码管需要单片机不断地扫描和控制,因此需要一定的处理能力和时间,适合用于单片机控制的场合。

我使用的普中开发板,使用 74HC245 作为动态数码管的驱动器,使用 D74HC138 作为译码器。

2. 工作过程

  1. 首先,单片机输出控制信号,选择要显示的数码管。
  2. 然后,单片机根据要显示的数字或字母,通过输出控制信号,通过D74HC138,连接 74HC245,控制对应的七段LED灯亮起或熄灭。
  3. 单片机通过不断地切换显示的数码管,并控制每个数码管的七段LED灯,实现多位数字或字母的连续显示效果。

3. 原理图

(1)数码管及74HC245

在这里插入图片描述

(2)74HC138译码器

在这里插入图片描述

4. 74HC245介绍

74HC245是一款常用的8位双向电平转换器,也被称为总线驱动器。它常用于数字系统中的数据总线扩展、电平转换以及信号缓冲等应用,其主要特点:

  • 高速:74HC245具有较高的数据传输速率,适用于高速数字系统。
  • 低功耗:它的静态功耗较低,适用于功耗要求较低的应用。
  • 低电平输出:74HC245的输出端口可以提供低电平输出,适用于5V和3.3V系统之间的电平转换。

其管脚定义:
在这里插入图片描述

(1)功能

  • 74HC245具有8位双向数据传输功能,可以将数据从一个总线转移到另一个总线,并在两个方向上进行数据传输。
  • 它还具有电平转换功能,可以将高电平信号转换为低电平信号,反之亦然。
  • 74HC245还具有输出使能功能,可以通过控制输入引脚来控制数据的传输使能。

(2)引脚

  • 74HC245具有16个引脚,分为两组,每组包含8个数据引脚和一个使能引脚。

  • 数据引脚用于连接输入或输出数据总线。

  • 使能引脚用于控制数据传输的使能。

  • OE 是输出使能引脚,L 表示输出使能,H 表示输出禁用。

  • DIR 是方向控制引脚,L 表示数据从A端到B端传输,H 表示数据从B端到A端传输。

(3)工作原理

  • 74HC245的工作原理基于双向缓冲器的原理。当使能引脚为高电平时,数据可以从A端传输到B端,并且数据也可以从B端传输到A端。
  • 当使能引脚为低电平时,输入和输出端口之间的连接被切断,此时输入数据不会传输到输出端口,输出端口也不会对输入数据进行响应。

(4)真值表

在这里插入图片描述

5. D74HC138 介绍

D74HC138是一种八线三至八译码器,也被称为3-8译码器。它通常用于数字系统中的地址译码、片选信号生成等应用,用于将三位二进制地址转换为八个输出端口中的一个低电平输出。它具有快速响应、低功耗、高阻抗输入端口等特点。
管脚定义:
在这里插入图片描述

(1)功能

  • D74HC138具有八个输入端口(A0-A2),可以接受三位二进制地址输入。
  • 它有八个输出端口(Y0-Y7),每个输出端口对应一个使能输入端口(G1、G2A、G2B),输出对应的输出端口为低电平。
  • D74HC138将三位输入地址转换为八个输出端口中的一个为低电平,其余输出端口为高电平。

(2)引脚

  • A0-A2:三位地址输入端口,接受二进制地址输入。
  • Y0-Y7:八个输出端口,其中一个为低电平,其余为高电平。
  • G1、G2A、G2B:使能输入端口,通过这些端口控制输出的使能状态。

(3)工作原理

  • 当输入地址的二进制值与译码器的某个输出对应时,该输出端口将产生低电平输出,其余输出端口为高电平。
  • 通过使能端口G1、G2A、G2B来控制译码器的工作状态,使能信号为高电平时,译码器处于工作状态,可以根据输入地址产生对应的输出信号。

(4)真值表

在这里插入图片描述

6. 代码实现

下面代码实现的功能,每1秒在一个数码管上显示当前的数值,即第一个数码管显示0,第二个数码管显示1,以此类推 。

下面定义的gsmg_code中的含义,以0x3f为例,换算成二进制: 00111111,根据电路原理图:
在这里插入图片描述

可以看出赋值情况:

  • a 引脚 P00=1
  • b 引脚 P01=1
  • c 引脚 P02=1
  • d 引脚 P03=1
  • e 引脚 P04=1
  • f 引脚 P05=1
  • g 引脚 P06=0
  • dp 引脚 P07=0
    最终在数码管上就会显示数值 0。
#include "segment_display_utils.h"
#include "types.h"
#include "common_utils.h"

#define SMG_A_DP_PORT P0

// 3-8译码器控制端口
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;

u8 gsmg_code[17] =  {0x3f, 0x06, 0x5b, 0x4f,
                     0x66, 0x6d, 0x7d, 0x07,
                     0x7f, 0x6f, 0x77, 0x7c,
                     0x39, 0x5e, 0x79, 0x71, 0x00};


void segment_display() {
    u8 i=0;
    for(i=0;i<8;i++){
        switch(i){
            case 0:
                // 选择第一位数码管,即数码管1, 通过3-8译码器,转换为二进制码111,即7,即选中LED8
                LSA = 1; LSB = 1; LSC = 1;
                break;
            case 1:
                LSA = 0; LSB = 1; LSC = 1;
                break;
            case 2:
                LSA = 1; LSB = 0; LSC = 1;
                break;
            case 3:
                LSA = 0; LSB = 0; LSC = 1;
                break;
            case 4:
                LSA = 1; LSB = 1; LSC = 0;
                break;
            case 5:
                LSA = 0; LSB = 1; LSC = 0;
                break;
            case 6:
                LSA = 1; LSB = 0; LSC = 0;
                break;
            case 7:
                LSA = 0; LSB = 0; LSC = 0;
                break;
        }
        SMG_A_DP_PORT = gsmg_code[i];
        delay_ms(1000);
    }
}

本文代码开源地址:
https://gitee.com/xundh/learn51

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/478152.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

unity3d——沙盒路径

文章目录 Unity3D中不同平台的沙盒路径&#xff1a; 示例 在Unity3D中&#xff0c;尤其是在移动平台如Android和iOS上&#xff0c;由于系统安全机制&#xff0c;应用程序不能直接访问操作系统的所有文件和目录&#xff0c;而是被限制在一个特定的“沙盒”环境中。这个沙盒是一个…

迷宫(蓝桥杯)——DFS和BFS

迷宫 题目描述 下图给出了一个迷宫的平面图&#xff0c;其中标记为 1 的为障碍&#xff0c;标记为 0 的为可以通行的地方。 010000 000100 001001 110000迷宫的入口为左上角&#xff0c;出口为右下角&#xff0c;在迷宫中&#xff0c;只能从一个位置走到这 个它的上、下、左…

【Linux】Centos7安装redis

目录 下载安装包安装1.解压2.环境安装3.查看redis的安装路径4.将之前redis的配置文件&#xff0c;复制到安装路径下&#xff08;新建一个文件夹并复制&#xff09;5.redis 设置默认后台启动&#xff0c;修改配置文件6.启动redis服务默认启动通过配置文件启动查看进程 7.开放637…

52、Qt/窗口、常用类、ui相关学习20240321

一、使用Qt 自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面。 要求&#xff1a; 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置&#xff0c;通过代码实现 3. 需要添加适当的动图。 代码&#xff1a; #include "widget.h" #incl…

【重温设计模式】访问者模式及其Java示例

访问者模式的基本概念 访问者模式&#xff0c;一种行为型设计模式&#xff0c;其基本定义是&#xff1a;允许一个或者多个操作应用到一组对象上&#xff0c;解耦操作和对象的具体类&#xff0c;使得操作的添加可以独立于对象的类结构变化。在面向对象编程中&#xff0c;访问者…

软件推荐 篇三十七:开源免费无广告的在线音乐免费播放 | MusicFree纯净无广告体验-小众冷门推荐

引言 自从QQ音乐没了杰伦、某云开始收费&#xff0c;除了各种广告弹窗导致电脑卡的要死&#xff0c;打工人就靠这点音乐背景熬夜了&#xff0c;木有办法&#xff0c;得有个开源免费的听歌软件吧&#xff0c;一搜github&#xff0c;软件一大堆&#xff0c;作为一个打工仔&#…

八大排序算法之希尔排序

希尔排序是插入排序的进阶版本&#xff0c;他多次调用插入排序&#xff0c;在插入排序上进行了改造&#xff0c;使其处理无序的数据时候更快 核心思想&#xff1a;1.分组 2.直接插入排序&#xff1a;越有序越快 算法思想&#xff1a; 间隔式分组&#xff0c;利用直接插入排序…

java数据结构与算法刷题-----LeetCode215. 数组中的第K个最大元素

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路&#xff1a;时间复杂度O( n n n)&#xff0c;空间复杂度…

【深度学习】训练Stable Diffusion环境

仓库&#xff1a; https://github.com/bmaltais/kohya_ss.git 基础镜像&#xff1a; from kevinchina/deeplearning:sdxllighting_trt_nginx_002api docker run --net host --gpus device0 -e APIWORKS1 -it t1:t1 bash构建环境&#xff1a; sudo -i git clone https://git…

算法第三十一天-直方图的水量

直方图的水量 题目要求 解题思路 使用面向列的计算比面向行的计算更加容易。我们只需要考虑当前的位置的左右最高模板的高度。 方法一、暴力解法 每个位置能接到多少雨水&#xff0c;很容易想到[木桶效应]&#xff0c;即是由两边最短的木板限制的。那么直观思路就是&#x…

C语言 动态内存管理

目录 前言 一、动态内存分配 二、malloc和free函数 2.1 malloc函数 2.2 free函数 三、calloc和realloc函数 3.1 calloc函数 3.2 realloc函数 四、常见的动态内存的错误 1.对NULL指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用…

深度学习-2.8模型拟合概念和欠拟合模型、过拟合调整策略

模型拟合概念和欠拟合模型、过拟合调整策略 文章目录 模型拟合概念和欠拟合模型、过拟合调整策略一、模型拟合度概念介绍1.测试集的“不可知悖论”2.模型拟合度概念与实验 二、过拟合、欠拟合问题解决方案1. 欠拟合解决方案2.过拟合解决方案 三、神经网络结果选择策略1. 参数和…

拼多多2023年实现营收2476亿 助力品质好物与消费升级双向奔赴

拼多多集团近日发布了截至去年12月31日的财务业绩报告&#xff0c;拼多多在2023年第四季度实现了889亿元的营收&#xff0c;同比增长了惊人的123%。而在全年范围内&#xff0c;拼多多的营收更是高达2476亿元&#xff0c;同比增长了90%。 去年是拼多多全面拥抱高质量发展的元年…

晶体管图示仪 能测 IGBT. Mosfet. Diode. BJT......

STD2000晶体管图示仪系统能测试很多电子元器件的静态直流参数&#xff08;如击穿电压V(BR)CES/V(BR)DSs、漏电流ICEs/lGEs/IGSs/lDSs、阈值电压/VGE(th)、开启电压/VCE(on)、跨导/Gfe/Gfs、压降/Vf、导通内阻Rds(on)&#xff09;。 测试种类覆盖 7 大类别26分类&#xff0c;包…

解锁企业数字化运营管理:论专业数据中台解决方案的重要性-亿发

没有数据中台&#xff0c;数字化经营就像是建立在沙滩上的城堡&#xff0c;缺乏坚实的基础支撑。数据中台对于企业数字化经营能力的建设至关重要&#xff0c;它扮演着连接、整合和管理数据的关键角色&#xff0c;出现将扩展企业可利用数据的范围。传统的业务分析主要使用财务数…

Python使用PaddleOCR进行图片转文字

PaddleOCR是百度飞桨开发的OCR库 安装 安装PaddleOCR&#xff0c;只需要两个命令&#xff1a; pip install paddlepaddle2.4.2 pip install paddleocr 基本使用 PaddleOCR的使用也很简单&#xff1a; from paddleocr import PaddleOCR# use_angle_cls&#xff1a;是否使用…

高通 8255 基本通信(QUP)Android侧控制方法说明

一&#xff1a;整体说明 高通8255芯片中&#xff0c;SPI IIC UART核心统一由QUP V3 进行控制 QUP V3为可编程模块&#xff0c;可以将不同通道配置为SPI IIC UART通路&#xff0c;此部分配置在QNX侧 QUP 资源可以直接被QNX使用&#xff0c;Android侧可以通过两种方法使用QUP资源…

Android Audio相关

AudioManager AudioService的Bp端&#xff0c;调用AudioManager>AudioService&#xff08;代码实现&#xff09; AudioService 继承自IAudioService.Stub&#xff0c;为Bn端 AudioSystem AudioService功能实现都依赖于AudioSystem&#xff0c;AudioService通过AudioSys…

SCXI-1193 控制器 多路复用器开关模块 NI 仪器仪表 SCXI-1001

规范 SCXI -1193 500 MHz四路8x1 50多路复用器 本文件列出了SCXI-1193多路复用器模块的规格。所有规格均为 如有变更&#xff0c;恕不另行通知。请访问ni.com/manuals了解最新规格。 配置四路8x1多路复用器 双通道16x1多路复用器 单路32x1多路复用器 四路4x1端接多路复用器 双路…

Java Swing游戏开发学习15

内容来自RyiSnow视频讲解 这一节讲的是Title Screen&#xff0c;直译&#xff1a;标题屏幕。视频开始没有字幕了&#xff0c;比较考验听力[/doge]&#x1f436;&#xff0c;常听到不认识的单词&#xff0c;一边猜&#xff0c;一边琢磨意思。作者说有许多人讨论如何实现non-gam…