C51数码管显示

2023-11-09

一、数码管简介

        

        LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字

型的器件。管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极

管单元,也就是多一个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容;

个数码管分成八段,分别由a、b、c、d、e、f、g、dp(dp是小数点)八个二极管组成,数码按发光

二极管单元连接方式可分为共阳极数码管和共阴极数码管。 STC89C52RC是共阴极。

               

        共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码
管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点
亮,当某一字段的阴极为高电平时,相应字段就不亮。
        共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码
管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光 二极管的阳极为高电平时,相应
字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

二、显示原理

 

        从上图可看出,一位数码管的引脚是 10 个,显示一个 8 字需要 7 个小段,另外还有一个小数
点,所以其内部一共有 8 个小的发光二极管,最后还有一个 公共端,多数生产商为了封装统一,
单位数码管都封装 10 个引脚,其中第 3 和 第 8 引脚是连接在一起的。
        
        对于STC89C52来说采用的使共阴极,对共阴极数码来说,其 8 个发光二极管的阴极在数码
管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接
地。当给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮 了。如果想要显
示出一个 8 字,并且把右下角的小数点也点亮的话,可以给 8 个阳极全部送高电平,如果想让它
显示出一个 0 字,那么可以除了给第“g, dp” 这两位送低电平外,其余引脚全部都送高电平,这样
它就显示出 0 字了。
        
        STC89C52使用的数码管是 2 个四位一体的共阴极数码管(即 8 个 LED 的阳极全部并联一起
引出,阴极分别引出如 a, b...dp)。在使用时,需要程序选定使用哪几个数码管,这就是"位选",
位选选定数码管后再对选定的数码管每个小段进行操作,其操作与单个数码管的操作一致这就是
“段选”。
共阴数码管码表
0x3F   0x06 0x5B 0x4F 0x66 0x6d
0 1 2 3 4 5
0x7D 0x07 0x7F 0x6F 0x77 0x7C
6 7 8 9 A B
0x39 0x5E 0x79 0x71 0x00
C D E F 无显示

 三、静态数码管显示

        上图电路实际上是动态数码管电路,使用的是 2 个四位一体的共阴数码管组成,即 8 位数码
管的段选数据 a-dp 全部并联一起引出,每位数码管的位选即公共端引出。STC89C52开发板上没
有单个的静态数码管,但依然可以在动态数码管电路中使用其中一个来学习静态数码管显示。还需
要通过74HC138(38译码器)来进行位选。
#include <REGX52.H>
typedef unsigned char u8;



void main()
{
	P2_2=0;	 /低位
	P2_3=0;
	P2_4=1;	 //100 --> Y4 --> LED5	  
	P0=0x7D; //0111 1101	  高位对高位,低位对低位   显示数字6
	
	while(1)
	{}
}

 四、动态数码管显示

        多位数码管,即两个或两个以上单个数码管并列集中在一起形成一体的数码 管。当多位一体
时,它们内部的公共端是独立的,而负责显示什么数字的段线 (a-dp)全部是连接在一起的,独
立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮
数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两
个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。
        动态显示,就是利用减少段选线,分开位选线,利用位选线不同时选择通断,改变段选数据
来实现的。比如在第一次选中第一位数码管时,给段选数据 0,下一次位选中第二位数码管时显示
1。为了在显示 1 的时候,0 不会消失(当然实际上是消失了),必须在人肉眼观察不到的时间里
再次点亮第一次点亮的 0。而这时就需要记住,人的肉眼正常情况下只能分辨变化超过 24ms 间隔
的运动。也就是说,在下一次点亮 0 这个数字的时间差不得大于 24ms。这时就会发现,数码管点
亮是在向右或者向左一位一位点亮,形成了动态效果。
        通过前面内容的介绍知道,要使单片机能控制开发板上 2 位一体的共阴数码管显示,仅靠单
片机 IO 口来驱动是不行的,这里就需要增加外部驱动芯片,开发板上使用的是 74HC245 芯片。2
个 4 位一体的共阴数码管的位选线有 8 根,直接让单片机 IO 口控制是没有任何问题的,但考虑到
51 单片机 IO 口资源的限制,通常会使用一种 IO 扩展芯片,只需要很少的单片机 IO 口就可以扩
展出 8 个控制口,STC89C52 开发板上使用的是 74HC138 译码器芯片,只需单片机 3 个 IO 口就
可以实现 8 个位选管脚的控制,节省了芯片的 IO 资源。

 74HC245芯片   

        74HC245 是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产
品中增加驱动。

(1)主要特性: 

        ①采用 CMOS 工艺
        ②宽电压工作范围:3.0V-5.0V
        ③双向三态输出
        ④八线双向收发器
        ⑤封装形式:SOP20、SOP20-2、TSSOP20、DIP20
(2)管脚功能定义

        通过上图可以知道给 OE 使能管脚低电平(低电平有效),DIR 管脚为高电平传输方向是 A-
>B 输出,DIR 为低电平传输方向是 B->A,至于输出高电平还是输出低电平取决于输入端的状态,
如果输入为 低电平,输出即为低;输入为高电平,输出即为高。如果 OE 使能管脚为高电平,不
论 DIR 管脚是高还是低,输出是高组态。
        
        通常使用 74HC245 芯片用作驱动只会让其在一个方向输出,即 DIR 管脚 为高电平,传输方
向是 A->B。

74HC138 --38译码器

 (1)主要特性:

        ①采用 CMOS 工艺

        ②低功耗
        ③工作电压:3.0V-5.0V
        ④封装形式:SOP16

 (2)管脚功能定义: 

 

 

        给 E1、E2 使能管脚低电平,E3 管脚为高电平,至于哪个管脚输出有效电平(低电 平),要
看 A0,A1,A2 输入管脚的电平状态。如果 A0,A1,A2 都为低电平,则 Y0 输出有效电平(低
电平),其他管脚均输出高电平。如果 A0 为高电平,A1, A2 都为低电平,则 Y1 输出有效电平
(低电平),其他管脚均输出高电平。
#include <REGX52.H>
typedef unsigned char u8;

u8 NiXietube[]={0x3F,0x06,0x5B,0x4F,0x66,
				0x6D,0x7D,0x07,0x7F,0x6F,
				0x77,0x7C,0x39,0x5E,0x79,
				0x71,0x00};
void delay(u16 ten)
{
	while(ten--);
}

void NiXie(u8 Location ,u8 num)
{	
	switch(Location)
	{
		case 1: P2_2=1;P2_3=1;P2_4=1;break;	 //111 --> Y7 -->LED8
		case 2: P2_2=0;P2_3=1;P2_4=1;break;	 //110 --> Y6 -->LED7
		case 3: P2_2=1;P2_3=0;P2_4=1;break;	 //101 --> Y5 -->LED6
		case 4: P2_2=0;P2_3=0;P2_4=1;break;	 //100 --> Y4 -->LED5
		case 5: P2_2=1;P2_3=1;P2_4=0;break;	 //011 --> Y3 -->LED4
		case 6: P2_2=0;P2_3=1;P2_4=0;break;	 //010 --> Y2 -->LED3
		case 7: P2_2=1;P2_3=0;P2_4=0;break;	 //001 --> Y1 -->LED2
		case 8: P2_2=0;P2_3=0;P2_4=0;break;	 //000 --> Y0 -->LED1
	}
	P0=NiXietube[num];
    delay(100);
	P0=0x00;  //消影
}

void main()
{
	while(1)
	{
        NiXie(1,1);//显示1
		delay(20); 
		NiXie(2,2);//显示2
		delay(20);
		NiXie(3,3);//显示3
		delay(20);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C51数码管显示 的相关文章

  • ROS:bag数据包内容提取——雷达点云数据和imu数据

    通常在利用ros采集传感器数据时 我们会得到一个包含多个传感器数据的bag数据包 下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法 系统版本 Ubuntu20 04 ROS版本 Noetic 先觉条件 查看bag数据包中雷达点云
  • Python爬虫从入门到精通:(17)协程_Python涛哥

    协程 本节的概念需要重点理解和实际操作 我们需要安装asynico库 pip install asyncio 学习之前我们先来看下这段代码 import time def get request url print 正在请求的url url
  • nginx---四层七层代理

    理论部分 所谓四层负载均衡 也就是主要通过报文中的目标地址和端口 再加上负载均衡设备设置的服务器选择方式 决定最终选择的内部服务器 它一般走的是tcp udp协议 所谓七层负载均衡 也称为 内容交换 也就是主要通过报文中的真正有意义的应用层
  • 2022年4月23日第十三届省赛蓝桥杯真题答案_python_第五题_统计未被污染的海域

    第五题如约而至哈 和第六题差不多 但比第六题简单 好 上题目 题目 有一片海域划分为N M个方格 其中有些海域已被污染 用0表示 有些海域没被污染 用1表示 请问这片N M海域中有几块是没被污染的独立海域 没被污染的独立海域是指该块海域上下
  • Obsidian流程图

    下载的obsidian进行安装时自动在C盘建立文件夹 但是该文件夹大小不大 关于在obsidian中安装插件 参考以下文章进行操作 https zhuanlan zhihu com p 403001135 我自己弄mermaid这个插件时

随机推荐

  • CSDN不再更新,后续文章在掘金发布

    掘金地址 方大可的主页
  • 用手机版python爬虫_Python爬虫也能用手机进行抓包?没错!这个技巧我只告诉你...

    今天要说说怎么在我们的手机抓包 我们知道了 HTTP 的请求方式 以及在 Chrome 中摸清了一些套路 但是 除了对数据进行解析之外 有时候我们想 对请求的数据或者响应的数据进行篡改 怎么做呢 我们经常在用的手机 手机里面的数据 怎么对它
  • Memcached 学习笔记(三)——多节点测试

    Memcached 学习笔记 三 多节点测试 一 启动两个 或者多个 节点 memcached d p 11212 u nobody c 1024 m 64 memcached d p 11213 u nobody c 1024 m 64
  • 跳跃列表(skipList)、压缩列表(zipList)和快速列表(quicklist)

    跳跃列表 skipList 压缩列表 zipList 和快速列表 quicklist 都是Redis底层重要的数据结构 跳跃列表 skipList Redis使用跳跃表作为有序集合键的底层实现之一 通过在每个节点中维持多个指向其他节点的指针
  • python信号端点检测_python的webrtc库实现语音端点检测

    引言 语音端点检测最早应用于电话传输和检测系统当中 用于通信信道的时间分配 提高传输线路的利用效率 端点检测属于语音处理系统的前端操作 在语音检测领域意义重大 但是目前的语音端点检测 尤其是检测 人声 开始和结束的端点始终是属于技术难点 各
  • 网站被DDOS攻击怎么办?防护经验!

    为了能够及时发现ddos攻击 下面我们就详细介绍一下网站受ddos攻击的症状 网站遇到ddos攻击的表现之一 服务器CPU被大量占用 ddos攻击其实是一种恶意性的资源占用攻击 攻击者利用肉鸡或者攻击软件对目标服务器发送大量的无效请求 导致
  • AngularJS的使用总结

    1 AngularJS是一个前端JavaScript框架 它可通过
  • 无法使用域名访问服务器,但IP访问正常

    具体判断方法和解决办法 问题判断 在电脑的windows系统左下角点击 开始 运行 输入 cmd 确定 然后在弹出的命令提示符界面输入命令 nslookup 空格 域名 若命令结果中域名指向的ip和服务器实际公网ip一致 那么问题产生的原因
  • C语言 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)

    1 汇编实现 text global start start LED1点灯 gt PE10 RCC章节初始化 CC INIT 1 使能GPIOE组控制器 通过RCC MP AHB4ENSETR寄存器设置GPIOE组使能0x50000A28
  • C++11多线程之条件变量

    文章目录 一 关于多线程的同步 二 初始条件变量 三 关于条件变量的例题 四 生产者消费者模型 一 关于多线程的同步 函数被调用 分配相应的栈帧 进行现场保护 void func char c char filename 20 sprint
  • elementUI table组件渲染问题

    elementUI table组件渲染问题 1 问题 问题描述 页面内 使用选项卡 进行内容显示的切换 切换后 原本高度合适的表格出现白边 以及滚动条 检查Dom会发现 el table组件内 发现了一个类名为 is scrolling n
  • 分布式文件存储Minio学习入门

    文章目录 一 分布式文件系统应用场景 1 Minio介绍 Minio优点 2 MinIO的基础概念 3 纠删码ES Erasure Code 4 存储形式 5 存储方案 二 Docker部署单机Minio 三 minio纠删码模式部署 四
  • html空格符号代码及特殊符号

    一 html空格符号代码 nbsp 一个字符的半角的不断行的空格 如果需要在网页中插入多个空格 可以将 nbsp 代码写多遍 ensp 一个字符的半角的空格 也可以将 写多遍来插入多个空格 emsp 两个字符的全角的空格 也可以将 emsp
  • Flask框架入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

    Flask框架 一 简介 Flask是一个非常小的PythonWeb框架 被称为微型框架 只提供了一个稳健的核心 其他功能全部是通过扩展实现的 意思就是我们可以根据项目的需要量身定制 也意味着我们需要学习各种扩展库的使用 二 概要 1 安装
  • 【学习笔记】python实现excel数据处理

    概述 Excel固然功能强大 也有许多函数实现数据处理功能 但是Excel仍需大量人工操作 虽然能嵌入VB脚本宏 但也容易染上宏病毒 python作为解释性语言 在数据处理方面拥有强大的函数库以及第三方库 excel作为主要基础数据源之一
  • MySQL中的事务(隔离性详解)

    1 什么是事务 事务是指逻辑上的一组操作 组成这组操作的各个单元 要么全部成功 要么全部失败 通俗的说一组SQL语句 要么全部执行成功 一条语句出错则全部出粗 在不同的环境中 都可以有事务 对应在数据库中 就是数据库事务 2 为什么使用事务
  • RobotFramework学习系列--(一)

    测试工作需要用到了RobotFramework 之前只是使用 用了一段时间后 决定深入研究一下它 使用平台为Windows Linux 由于是基于Linux 系统方面的测试工作 使用的RobotFramework版本为2 8 5 先简单介绍
  • 强力推荐:Atom入坑必备插件

    You are my warm gloves my cloud beer my sun kissed shirt my day after day dreams 你是我温暖的手套 冰冷的啤酒 带着阳光味道的衬衫 日复一日的梦想 强力推荐 A
  • vue 快速入门--快速使用vue2

    关于mvvm的理解 说到mvvm 就要提到vue的优点了 vue有什么优点呢 更改变量很容易 具有即时性 这是我们广泛所知道的 vue的优点 在原来只有jquery的时候 我们改变一个元素的值的时候 我们需要深入到原代码里 重新绑定元素啦
  • C51数码管显示

    一 数码管简介 LED数码管 数码管是一种简单 廉价的显示器 是由多个发光二极管封装在一起组成 8 字 型的器件 管按段数可分为七段数码管和八段数码管 八段数码管比七段数码管多一个发光二极 管单元 也就是多一个小数点 DP 这个小数点可以更