(2)数码管

news/2024/10/17 20:20:11/

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

请添加图片描述

请添加图片描述

51单片机是共阴极连接

请添加图片描述

请添加图片描述

请添加图片描述

74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱动能力)的。那么缓冲这个是什么意思?

假设我们给上二进制,就从A0到达B0这是连接的关系,DIR如果接的是高电平(1)那么就能把左边的数据接到我们右边的数据上。电容(100nf)在这里的作用是:芯片的供电更加稳定叫做电源滤波

静态数码管显示:

确定阴码(选择第几个数字):根据译码器的CBA表示

确定阳码(具体哪个段亮):通过abcdefg(dp)组合出01序列,经过双向数据缓冲器后高位对高位(逆序)

选择第六个数字:
LED3 -> Y2 -> 010 -> P2_4=0;P2_3=1;P2_2=0;
显示"6":
abcdefg(dp) -> 10111110 -逆序-> 0111 1101 -> P0=0x7d;
#include <REGX52.H>unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void Nixie(unsigned char location, Number){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 = NixieTable[Number];
}
void main(){Nixie(2, 2);while(1){}
}

动态数码管显示:

消影:

当我们要显示数码管的时候首先要:位选 段选、还要显示的话就还要 位选、段选,循环。

那么这样就会出现问题:首先是选择"位选端"给上低电平,然后是段选给上数据,然后给上下一位位选的数据。但是:由于我们单片机的速度是很快的,在段选到下一个位选之间就会出现问题。我们选中下一位这个时刻很短的时间内,上一个数据就会串到下一个数据。因为它们是挨着一起的,我在选中下一位之后 上一位的数据自然是会直接过来的。这样就会显示出数据的串位的问题了!

那么我们应该怎么避免这个问题?那我们就需要在上一个段选端给清零,这样即使到下一位它也不会对上一位产生影响!因为以及清零了。所以在子函数上需要优化下,显示完之后我们首先要延迟1ms这个是为了能让程序更加稳定显示,并且 进行清零!

#include <REGX52.H>unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Delay(unsigned int xms)
{unsigned char i, j;i = 2;j = 239;while(xms--){do{while (--j);} while (--i);}
}void Nixie(unsigned char location, Number, short dp){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 = dp ? NixieTable[Number] | 0x80 : NixieTable[Number]; // 可以显示小数点Delay(1);P0 = 0;
}void main(){while(1){Nixie(1, 1, 1);Nixie(2, 2, 0);Nixie(3, 3, 1);Nixie(4, 4, 0);}
}

数码管驱动方式:

  • 单片机直接扫描:硬件设备简单,但会耗费大量的单片机CPU时间
  • 专用驱动芯片:内部自带显存、扫描电路,单片机只需告诉她显示什么即可(TM1640)

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个的单片机I/O口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

  • 静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。

所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的。

流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的。

  • 动态驱动的优点是能够节省大量的I/O端口,而且功耗更低。缺点是花费cpu占用时间,编程较为复杂。

http://www.ppmy.cn/news/69830.html

相关文章

java前端程序员职业生涯规划,我来分享一下升职加薪的六大技巧

今天给大家分享一下java前端程序员的职业生涯规划&#xff0c;我把它分成四个阶段。 第一个阶段是你还是一名在校大学生。这个时候一定要好好学习学校的专业技术知识&#xff0c;尤其是C语言、数据结构和算法。然后及时关注你身边名校的这些校园招聘机会&#xff0c;获得一些名…

tpm2-tools源码分析之tpm2_verifysignature.c(1)

TPM 2.0中的tpm2_verifysignature命令对应的源文件就是tpm2_verifysignature.c&#xff0c;该文件位于tpm2-tools/tools/下&#xff0c;一共有293行&#xff08;版本5.5&#xff09;。 tpm2_verifysignature的功能是使用TPM验证签名。使用加载的密钥验证带有传递给TPM的消息摘…

Spring Cloud Alibaba(二)Nacos统一配置管理

目录 一、为什么需要配置中心 二、常用的配置中心 Nacos 的几个概念 三、Nacos配置中心的使用 &#xff08;一&#xff09;properties格式 1、导入依赖 2、在配置中心新建配置 3、修改配置文件名为bootstrap.yml 4、在微服务中添加nacos config服务地址的配置 5、测试…

2013蓝桥杯真题省赛翻硬币 C语言/C++

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;&#xff0c;比如可能情形是 **oo***oooo&#xff0c;如果…

【Python_Pandas】reset_index() 函数解析

【Python_Pandas】reset_index函数解析 文章目录 【Python_Pandas】reset_index函数解析1. 介绍2. 示例2.1 参数drop2.2 参数inplace2.3 参数level2.4 参数col_level2.5 参数col_fill 参考 1. 介绍 pandas.DataFrame.reset_index reset_index(levelNone, dropFalse, inplaceF…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-自动变道-1

书接上回 2.3.4.自动变道 当车辆处于导航引导模式NOA功能时(即车辆横向控制功能激活),且车速大于40km/h,驾驶员按下转向灯拨杆或系统判断当前有变道需要时,自动变道系统通过对车道线、自车道前方目标距离、邻近车道前后方目标距离等环境条件进行判断,在转向灯亮起3s后控…

Oracle_11g_RAC安装与配置for_Linux(2)

确认软件要求 LINUX发行版要求 Linux Distribution Requirements Asianux Distributions Asianux Server 3, Service Pack 2 (SP2) Oracle Linux Distributions Oracle Linux 4 Update 7, kernel 2.6.9 or laterOracle Linux 5 Update 2, kernel 2.6.18 or later (compatib…

Hugging Face Transformers Agent

&#x1f917;Hugging Face Transformers Agent 就在两天前&#xff0c;&#x1f917;Hugging Face 发布了 Transformers Agent——一种利用自然语言从精选工具集合中选择工具并完成各种任务的代理。听着是不是似曾相识&#xff1f; 没错&#xff0c;Hugging Face Transformer…