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

news2024/11/18 1:41:54

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件操作和异常处理1-读写文件

Python 之 lambda 函数完整详解 & 巧妙运用&#xff1a; https://blog.csdn.net/PY0312/article/details/88956795

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 文章目录 jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 Sentinel概述基本介绍 Sentinel安装下载地址: http…

Spring boot2.7整合jetcache方法缓存

前面的文章 我们讲了 spring boot 整合 jetcache 做基本字符串数据缓存 但是 我这里有个这样的逻辑 我的 domain 包下 有一个 book 属性类 里面就 id 和 name 属性 设置了 对应的 set get函数 和一个整体的构造函数 package com.example.javadom.domain;public class book {pr…

一些 AI 工具

AI 搜索&#xff1a;Phind&#xff0c;perplexity AI聊天大模型&#xff1a;chatgpt&#xff0c; kimi&#xff08;国内可用&#xff0c;支持上传文件&#xff09; AI 机器人&#xff1a;https://www.coze.com/ AI工具集&#xff1b;https://ai-bot.cn/#term-2 agent GPT&a…

Windows错误码2503

2503错误码通常出现在Windows系统中&#xff0c;指的是安装或卸载程序时遇到的错误。 2503错误码表示在安装或卸载程序时发生了一些错误&#xff0c;可能是由于权限不足或某些文件被占用等原因导致的。 解决这个的方法包括&#xff1a; 1.以管理员运行程序安装。 2.如果程序右…

批量缩放图片,按比例轻松调整,高效处理一键完成

在数字化时代&#xff0c;图片处理已成为我们日常生活和工作中不可或缺的一部分。无论是为了网页制作、社交媒体分享&#xff0c;还是为了打印照片、制作相册&#xff0c;我们都需要对图片进行各种调整和优化。其中&#xff0c;按比例缩放图片是一个常见的需求。 第一步&#…

在连续请求过程中,如何取消上次的请求?

前言 这个问题想必很多朋友都遇到过&#xff0c;我再详细说一下场景&#xff01; 如 Boss 搜索框所示&#xff1a; 先输入1 再输入2 再输入3 再输入123 请求参数依次为&#xff1a;1 12 123 123123 请求参数通过右侧的 query 参数也可以看到&#xff0c;一共请求了四次。 不…

腾讯云优惠券领取的几种方法,助你降低云服务成本

随着云计算技术的广泛应用&#xff0c;越来越多的企业和个人选择使用云服务来降低运营成本、提高运营效率。腾讯云作为国内领先的云服务提供商&#xff0c;凭借其出色的性能、稳定性和安全性&#xff0c;赢得了广大用户的信赖。为了回馈用户&#xff0c;腾讯云经常推出各种优惠…

matlab simulink 工业汽轮机调节系统的模糊PID控制器设计

1、内容简介 略 72-可以交流、咨询、答疑 工业汽轮机调节系统的模糊PID控制器设计 工业汽轮机;调节系统;模糊PID;自调整论域 2、内容说明 略 摘要&#xff1a;针对汽轮机电、热栽荷存在不确定因素&#xff0c;简单的线性和非线性微分方程不能完全代表 实际调节系统&#…

数据库国产化探究及升级改造过程指导

一、背景 在信创“自主可控”的浪潮下&#xff0c;政企行业首当其冲&#xff0c;基于国产化信创的要求&#xff0c;本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制&#xff1b;能用国产化替代的评估后尽可替代割接&#xff0c;本期针对传统数据库…

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主+前端

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主前端程序源码 程序介绍 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序&#xff0c;接入云洋/易达物流接口&#xff0c;支持选择快递公司&#xff0c;三通一达&#xff0c;极兔&#xff0c;德邦等&…

DensityCalculator 程序(1D 2D):通过 VMD 可计算 LAMMPS 轨迹的密度(一)

主要内容 “在分子动力学&#xff08;MD&#xff09;模拟中描述原子层面的结构信息是材料建模与模拟领域研究人员的一项必要任务。密度分布的可视化通常是结构表征中最重要的特性之一。可视化分子动力学&#xff08;VMD&#xff09;是一种广泛使用的分子可视化软件包&#xff…

vue中如何查看组件有哪些函数与变量

在开发的过程中&#xff0c;经常用到他人的框架&#xff0c;特别是开源框架比如element,uniapp等。其中就涉及到框架里对应的组件。而组件里又有哪些内置的函数&#xff0c;我们通常是去查官方文档。然后很多的时候需求的多样性&#xff0c;要改的地方也是不一样的&#xff0c;…

Java------数据结构之栈与队列(简单讲解)

本篇碎碎念&#xff1a;时隔n个月&#xff0c;继续写博客&#xff0c;假期落下的进度&#xff0c;在开学后努力追赶&#xff0c;假期不努力&#xff0c;开学徒伤悲啊&#xff0c;此时此刻真想对自己说一句&#xff0c;活该啊~~~~ 欠下的链表练习题讲解会在下次更新~~~~ 今日份励…

数仓建模简介

1 建模的意义 如果把数据看作图书馆里的书&#xff0c;我们希望看到它们在书架上分门别类地放置&#xff1b;如果把数据看作城市的建筑&#xff0c;我们希望城市规划布局合理&#xff1b;如果把数据看作电脑文件和文件夹&#xff0c;我们希望按照自己的习惯有很好的文件夹组织方…

从政府工作报告中的IT热词统计探计算机行业发展(二)人工智能+:3次

政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&#xff0c;从政府工作报告中探寻计算…

快递送上门,别太难为快递小哥了

新修订的《快递市场管理办法》正式落地半个月&#xff0c;就给快递行业来了场大热闹。 与之相关的&#xff0c;例如&#xff1a;快递新规&#xff1b;快递员收入减半&#xff1b;快递员离职潮&#xff1b;大把快递员离职去送外卖&#xff1b;上门送件快递加钱...... 简单来说&…

Sawyer 机器人 ROS SDK 配置

系列文章目录 目录 系列文章目录 前言 恢复出厂设置 内容 概述 要求 程序 将 Sawyer 升级到 Intera SDK 打印 内容 概述 先决条件 安装步骤 将机器人从 Intera MFG 切换到 SDK 模式 联网 内容 确认 Sawyer 在机器人上以 SDK 模式运行 基本 基本要求 网络…

5.多媒体

考试比重小&#xff0c;一般只有1道题&#xff0c;多则2道少则无&#xff1b; 主要议题&#xff1a; 1.多媒体概念 2.多媒体分类 分类要记下&#xff1a; 显示媒体又称表现媒体&#xff1b; 感觉媒体&#xff1a;着重于人的感觉器官&#xff1b; 表示媒体&#xff1a;为了存…

锦意绵长,丽彩婚典

锦江丽笙酒店亮相婚博会 演绎沪上多彩浪漫情怀 &#xff08;中国上海&#xff0c;2024年3月18日&#xff09;3月16日至17日&#xff0c;2024年上海春季婚博会在上海世博展览馆举办。此次婚庆行业盛会上&#xff0c;锦江丽笙酒店旗下8家酒店联袂登场&#xff0c;凭借深厚的品牌…