51单片机数码管的使用

news2024/12/17 12:47:16

IO的使用2–数码管

本文主要涉及51单片机的数码管的使用

文章目录

  • IO的使用2--数码管
    • 一、数码管的定义与类型
    • 1.1 数码管的原理图
    • 二、 举个栗子
      • 2.1 一个数码管的底层函数
      • 2.2 调用上面的底层函数显示具体数字

一、数码管的定义与类型

数码管是一种用于数字显示的电子元件,通常由多个LED(发光二极管)组成。它被广泛用于各种计数、测量和显示应用,如数字时钟、温度计、计数器等。

主要特点和结构如下:

  1. LED组成: 数码管的基本组成单元是LED,通常为七段共阳(Common Cathode)或共阴(Common Anode)的结构。七段代表数码管上的七个LED段,分别对应显示数字0到9的不同线段。

  2. 共阳和共阴: 共阳数码管表示LED的阳极连接在一起,共阴数码管表示LED的阴极连接在一起。在共阳数码管中,通过给定的线段点亮LED,而在共阴数码管中,通过接通的线段关闭LED。

  3. 多位数码管: 为了显示更多的数字或字符,可以将多个数码管连接在一起形成多位数码管,每一位数码管对应显示其中的一个数字或字符。

  4. 控制信号: 为了控制数码管的显示,需要提供适当的控制信号。这些信号通常包括电源、段选信号和位选信号,以确保正确的数字或字符在正确的数码管上显示。

  5. 常见的数码管类型:

    • 共阳七段数码管: 每个数字由7个LED段组成,共阳表示数字的阳极连接在一起。
    • 共阴七段数码管: 同样由7个LED段组成,共阴表示数字的阴极连接在一起。
    • 数码管显示器: 可以同时显示多个字符或数字,通常用于计算器、计数器等设备。

总体而言,数码管是一种简单、实用的数字显示设备,广泛应用于各种电子设备和嵌入式系统。

1.1 数码管的原理图

在这里插入图片描述

在这里插入图片描述

可以从上面原理图可以知道:

上图电路使用的是 2 个四位一体的共阴数码管组成,即 8 位数码管的段选数据 a-dp 全部并联一起引出,每位数码管的位选即公共端引出。数码管的段选 a-dp连接在 74HC245 驱动芯片输出口,由 P0 端口控制。由 P2.2、P2.3、P2.4 管脚控制 74HC138 译码器输入从而控制数码管位选.

二、 举个栗子

1-利用动态扫描方法在三位数码管上显示出稳定的321

思路:显示原理:

  1. 数码管类型: 数码管分为共阴极和共阳极两种类型。在共阴极数码管中,所有的LED的阴极(负极)都连接在一起,而阳极(正极)分别连接到不同的引脚。在共阳极数码管中,所有LED的阳极连接在一起,而阴极分别连接到不同的引脚。

  2. 动态扫描: 为了在有限的引脚上控制多个数码管,采用了动态扫描的方法。在一个很短的时间内,依次点亮每一个数码管,然后迅速切换到下一个数码管,以此类推。由于人眼的视觉暂留效应,看起来就像所有的数码管都在同时显示

  3. 数码管控制: 对于每个数码管,通过在段选信号上输出相应的二进制码,控制数码管的每一段LED的亮灭状态。例如,数字 0 对应的二进制码可以是 00111111,其中每一位对应数码管的一个段,1 表示点亮,0 表示熄灭。

  4. 显示数字: 在动态扫描的过程中,根据要显示的数字,依次输出相应的段选信号,将对应数码管的LED点亮,实现数字的显示。通过迅速切换并依次点亮每个数码管,就能够看到整个数字在数码管上的显示效果。

  5. 控制电平: 在具体的硬件连接中,控制数码管的LED点亮和熄灭需要通过控制相应的引脚输出高电平或低电平来实现。不同的数码管芯片和硬件连接可能存在一些差异,但基本的原理是类似的。

2.1 一个数码管的底层函数

下面的函数通过数码管显示一位数字,通过设置数码管的位选信号(Location参数)以及数码管的段选信号(NixieNumber数组中的对应数字),从而实现数字的显示。
其中:

  1. unsigned char smgNumber[] = {...}:定义了一个数组,用于存储共阳极数码管的七段编码。每个元素对应一个数字的七段编码,共阳极表示为1,点亮。

  2. void smg(unsigned char Location, Number):定义了一个函数smg,接收两个参数,Location表示选择哪一个数码管,Number表示要在该数码管上显示的数字。

  3. switch(Location):根据Location的值,选择要点亮的数码管。根据不同的Location值,设置对应的位选信号,即数码管的引脚。这样在多位数码管的情况下,可以选择具体点亮哪个数码管。

  4. P0 = smgNumber[Number];:将对应数字的七段编码写入P0口,通过具体的硬件连接和控制逻辑,实现数码管的段选。

  5. Delay(1);:通过调用Delay函数,延时一段时间,以使得数码管的LED能够被稳定点亮,确保显示效果。

  6. P0 = 0x00;:将P0口清零,熄灭数码管的LED,准备进行下一轮的显示。

这样,通过不断调用smg函数,可以在指定的数码管上显示相应的数字。

unsigned char smgNumber[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //共阳极编码,七位表示数字

void smg(unsigned char Location,Number)     //第一个参数选择数码管,第二个参数表示显示数字
{
 //这一段swith代码是为了设置位选信号,选择数码管
 switch(Location)
 {
  case 1:P2_4=1;P2_3=1;P2_2=1;break;                  
  case 2:P2_4=1;P2_3=1;P2_2=0;break;
  case 3:P2_4=1;P2_3=0;P2_2=1;break;
  case 4:P2_4=1;P2_3=0;P2_2=0;break;
  case 5:P2_4=0;P2_3=1;P2_2=1;break; 
  case 6:P2_4=0;P2_3=1;P2_2=0;break;
  case 7:P2_4=0;P2_3=0;P2_2=1;break;
  case 8:P2_4=0;P2_3=0;P2_2=0;break;
 }
 
 //这一段代码是给开启之后的数码管显示数字
 P0=smgNumber[Number];
 Delay(1);
 P0=0x00;
}

2.2 调用上面的底层函数显示具体数字

要显示具体的数值,只需要在主函数中调用上述底层函数即可

//利用动态扫描显示稳定的321
void main()
{
 while(1)
 {
   Nixie(1,3);
   Nixie(2,2);
   Nixie(3,1 );
 }
}

上面代码中还使用到了延迟函数
如下:

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

当然其他延迟函数也是适用的。

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

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

相关文章

数字系统设计(EDA)实验报告【出租车计价器】

一、问题描述 题目九:出租车计价器设计(平台实现)★★ 完成简易出租车计价器设计,选做停车等待计价功能。 1、基本功能: (1)起步8元/3km,此后2元/km; (2…

Redis 环境搭建2

文章目录 第2关:使用 Redis 第2关:使用 Redis 本文是接着上篇文章写的第二关代码,部分人再进入第二关时不会保留第一关的配置的环境,可以通过下面一句代码进行检验。 redis-cli -p 7001 -c如果进入到了redis界面就是有环境&…

Unity中Batching优化的GPU实例化(4)

文章目录 前言一、构建需要实例化的额外数据二、在顶点着色器,将实例化 ID 从 appdata 存入 v2f 传给片元着色器三、在片断着色器中访问具体的实例化变量三、使用代码修改Shader材质属性,实现GPU实例化后不同对象颜色不同的效果1、在C#测试脚本生成小板凳…

linux 中crontab 定时任务计划创建时间文件夹示例

1.创建一个sh脚本 /usr/bin/mkdir 是mkdir命令的路径 /usr/bin/chmod 是chmod命令的路径 2.编辑定时任务 crontab -e

PHP入门软件Wampserver与vscode

PHP入门软件Wampserver与vscode Wampserver 一个集成的PHP环境,非常好用,上链接官网:https://www.wampserver.com/#download-wrapper 推荐华军https://www.onlinedown.net/soft/82112.htm 无脑下一步就行,会出现两个弹窗全点否。…

有理函数的积分

1.多项式相除法: 2.分子分母次数带来的解题思路差异: 1.总体目的:降次 2.分子次数高于分母,采用多项式相除 3.分子次数等于分母,分离常数 4.最终形式:分子次数低分母次数高 3.不同形式的计算方法 4.按类拆…

排序:挖坑快排前后指针快排

目录 挖坑快排: 代码实现: 代码分析: 前后指针快排: ​编辑动画分析: 代码分析: 代码演示: 快排的优化:三数取一 挖坑快排: 挖坑法,顾名思义&am…

Unity打包到Webgl平台以及遇到的问题

Unity打包到Webgl平台以及遇到的问题 参考网站 Unity打包WebGL的全过程及在打包和使用过程中会遇到的问题(本地测试)-CSDN博客 unity打包到Webgl 并配置能正常运行 这里我用的是Unity2022.3.3f1c1版本 有两种方法 1、配置本地web服务 2、安装vsCode>添加插件LiveServe…

C语言进阶之路之顶峰相见篇

目录 一、学习目标 二、宏定义 预处理 宏的概念 带参宏 无值宏定义 三、条件编译 条件编译 条件编译的使用场景 四、头文件 头文件的作用 头文件的内容 头文件的基础语句: GCC编译器的4个编译步骤: 总结 一、学习目标 掌握宏定义含义和用…

持续集成交付CICD:通过API方式上传Nexus制品

目录 一、实验 1.通过API方式上传Nexus制品 二、问题 1.如何通过API方式上传PNG图片 2.如何通过API方式上传tar.gz 与 ZIP文件 3.如何通过API方式上传Jar file文件 4.如何通过API方式上传制品(maven类型的制品)文件 5.如何下载制品 一、实验 1.通…

我在Vscode学OpenCV 图像处理二(滤除噪声干扰)

图像处理二 滤除噪声干扰三、噪声3.1图像噪声3.2 滤波3.2.1均值滤波(1)锚点(2)中心点(下面第3小点会详细解释)(3)核的大小奇偶数的区别(1)举例奇偶的例子&…

tomcat篇---第四篇

系列文章目录 文章目录 系列文章目录前言一、为什么我们将tomcat称为Web容器或者Servlet容器 ?二、tomcat是如何处理Http请求流程的?三、tomcat结构目录有哪些?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

软件测试相关

软件测试是什么? 使用人工和自动手段来运行或测试某个系统的过程,其目的在于验证它是否满足规定的需求或弄清预期结果与实际结果的差别。 为什么做软件测试?目的是什么? 发现软件存在的代码或业务逻辑错误 检验产品是否符合用户需…

Docker本地部署Drupal内容管理框架并实现公网远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址7. 结语 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它…

免费分享一套Springboot+Vue前后端分离的在线商城系统,挺实用的

大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue前后端分离的在线商城系统,分享下哈。 项目视频演示 【免费】SpringbootVue在线商城系统 毕业设计 Java毕业设计_哔哩哔哩_bilibili【免费】springbootvue在线商城系统 毕业设计 …

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2020)

文章目录 -Abstract1. Introductiondiss former methodour method 2. Related Work3. Compound Model Scaling3.1. 问题公式化3.2. Scaling Dimensions3.3. Compound Scaling 4. EfficientNet Architecture5. Experiments6. Discussion7. Conclusion 原文链接 源代码 - 本文中…

SpringIOC之ConfigurationClassUtils

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

mysql面试题——日志

一:为什么需要REDO日志 缓冲池可以帮助我们消除CPU和磁盘之间的鸿沟,checkpoint机制可以保证数据的最终落盘,然而由于checkpoint 并不是每次变更的时候就触发 的,而是master线程隔一段时间去处理的。所以最坏的情况就是事务提交后…

【基于Python的二手车数据可视化平台的设计与实现】

基于Python的二手车数据可视化平台的设计与实现 前言数据获取与处理网络爬虫数据存储 可视化平台的设计与实现Flask框架数据可视化 创新点结语 前言 随着社会的不断发展,二手车市场也逐渐成为一个备受关注的领域。为了更好地为二手车的买家和卖家提供信息&#xff…

【Vue】日常错误总结(持续更新)

日常遇到的小问题汇总, 内容小篇幅少的就全放这里了, 内容多的会在Vue专栏单独分享~ 目录 【Q】 el-form-item值为 null 或 undefined显示““ 【Q】dialog内组件数据刷新总是延迟慢一拍 问题背景描述 解决方案 代码简单模拟 JS 【Q】el-input 不能输入的解决办法 方法…