当前位置: 首页 > news >正文

10.17七段数码管单个多个(部分)

单个数码管的实现 

第一种方式

 

一端并接称为位码;一端分别接收电平信号以控制灯的亮灭,称为段码

8421BCD码转七段数码管段码是将BCD码表示的十进制数转换成七段LED数码管的7个驱动段码

段码就是LED灯的信号

a为1表示没用到a,a为0表示用到了a灯

就是说在B1B2B3B4组成怎样的BCD码时,才会不用到a灯

 就得到各个灯与输入的BCD码之间的关系

第二种 

这个是说,由于3位二进制数只能表示8个状态,所以要表示十进制,至少需要4位二进制数,然后用case语句将这些四位的二进制编码转化为七段显示器所需要的编码

4’hf,'前面记录的是二进制下所需要的位数,是绝对的,不因表示的进制改变而改变,'后面的字母表示表示这个数所用的进制,其绝对后继是怎么表示,是相对的,且记录的方式就是这个进制记录的方式。一位h相当于4位b

 module BCDsegment(input [3:0]SW, 
//输入BCD码SW[3]=R15,SW[2]=M13,SW[1]=L16,SW[0]=J13output reg [6:0]a_to_g,output DP,output [7:0]AN);assign AN=8'b1111_1110;assign DP=1;always@(*)begincase(SW)4'b0000:  a_to_g=7'b0000001;4'b0001:  a_to_g=7'b1001111;4'b0010:  a_to_g=7'b0010010;4'b0011:  a_to_g=7'b0000110;4'b0100:  a_to_g=7'b1001100;4'b0101:  a_to_g=7'b0100100;4'b0110:  a_to_g=7'b0100000;4'b0111:  a_to_g=7'b0001111;4'b1000:  a_to_g=7'b0000000;4'b1001:  a_to_g=7'b0000100;endcaseend
endmodule

.v分析:
① input一个四位向量SW作为输入信号,通过拨动对应的引脚改变输入的BCD码。
② output一个七位向量a_to_g决定一组七段数码管的各二极管亮暗状态,亮起的二极管组合形成一个十进制数。
③ output一个DP信号,是实验板上8组数码管的总开关,用assign语句赋值为1。
④ output一个八位向量AN,AN决定一个实验板上的八组数码管使用状态,赋值为1的不使用,赋值为0的为使用。本次实验中将AN通过assign语句赋值为8’b1111_1110,表示只使用AN[0]对应的那组数码管。
⑤ 在always语句中,用case语句完成BCD码和七段数码管状态的对应工作。

这里就是说R15,M13,L16,J13四个开关(四位二进制数)决定了一个十六进制数,然后在数码管上显示这个在四位开关上表示的一位十六进制数,只调用了一个数码管表示

这里的关键在于引脚文件的编写

##Switchesset_property -dict { PACKAGE_PIN J15   IOSTANDARD LVCMOS33 } [get_ports { SW[0] }]; 
set_property -dict { PACKAGE_PIN L16   IOSTANDARD LVCMOS33 } [get_ports { SW[1] }]; 
set_property -dict { PACKAGE_PIN M13   IOSTANDARD LVCMOS33 } [get_ports { SW[2] }]; 
set_property -dict { PACKAGE_PIN R15   IOSTANDARD LVCMOS33 } [get_ports { SW[3] }];
##7 segment display
set_property -dict { PACKAGE_PIN T10   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[6] }]; 
set_property -dict { PACKAGE_PIN R10   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[5] }];
set_property -dict { PACKAGE_PIN K16   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[4] }]; 
set_property -dict { PACKAGE_PIN K13   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[3] }]; 
set_property -dict { PACKAGE_PIN P15   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[2] }];
set_property -dict { PACKAGE_PIN T11   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[1] }];
set_property -dict { PACKAGE_PIN L18   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[0] }]; set_property -dict { PACKAGE_PIN H15   IOSTANDARD LVCMOS33 } [get_ports { DP }]; set_property -dict { PACKAGE_PIN J17   IOSTANDARD LVCMOS33 } [get_ports { AN[0] }]; 
set_property -dict { PACKAGE_PIN J18   IOSTANDARD LVCMOS33 } [get_ports { AN[1] }]; 
set_property -dict { PACKAGE_PIN T9    IOSTANDARD LVCMOS33 } [get_ports { AN[2] }]; 
set_property -dict { PACKAGE_PIN J14   IOSTANDARD LVCMOS33 } [get_ports { AN[3] }]; 
set_property -dict { PACKAGE_PIN P14   IOSTANDARD LVCMOS33 } [get_ports { AN[4] }]; 
set_property -dict { PACKAGE_PIN T14   IOSTANDARD LVCMOS33 } [get_ports { AN[5] }]; 
set_property -dict { PACKAGE_PIN K2    IOSTANDARD LVCMOS33 } [get_ports { AN[6] }]; 
set_property -dict { PACKAGE_PIN U13   IOSTANDARD LVCMOS33 } [get_ports { AN[7] }]; 

.xdc分析
① 每个引脚一行语句:代表引脚在实验板上的位置和输出标准电平3.3V。
② 引脚锁定文件使用到的引脚名称与design source中所使用到变量名称相对应。
③ 该.xdc文件中,SW[0]~SW[3]代表输入的BCD码,a_to_g[6] ~a_to_g[0]代表一组7段数码管的编号a~g的led灯(顺时针方向),DP为总开关,AN为实验板上的8组7段数码管。

这个引脚文件编写的很清晰,声明和定义放在一起了,清晰明了

SWITHCES表示开关,是下面的四个二进制,组成一个十六进制

Display表示显示,引脚接到数码管上

?这里后面的AN,表示的是说下面的开关来决定到底是板子上的8个灯哪个灯亮,不确定?

一个实验板上的8组七段数码管首先由一个总开关DP控制,DP为1时,数码管才能被使用;而每组数码管是否工作,则由一个8位的向量AN控制,因为是共阳极构造,当AN某位为0时,才表示该组数码管投入使用;每组数码管由7个二极管组成,亮暗状态由一个7位向量a_to_g决定,同样因为共阳极的构造,当a_to_g某位为0时对应的二极管亮。这个a_to_g向量同时控制所有组数码管的7段二极管。

这个是说原始信号为clk.然后分频就是说让这个信号的频率降低,到20时才进一,就是说频率是原来的二十分之一

由于是共阳极构造,0时显示,1时不显示

多个数码管动态显示 

就是说让其刷新频率高于人眼分辨率,但实际上每次是只亮一个灯的,但是速度足够快,所以就显示好像亮了好多灯 ,所以说的是交替被点亮发光


 

 动态数码管显示的原理是: 每次选通其中一位送出这位要显示的内容, 然后一段时间后选通下一位送出对应数据,4 个数码管这样依次选通并送出相应的数据,结束后再重复进行。这样只要选通时间选取的合适,由于人眼的视觉暂留,数码管看起来就是连续显示的。
这里面涉及到七段数码管的分频问题(决定多久从这个数码管换到下一个数码管显示)

那就是说,需要不断记录当前需要显示的是什么内容

分频

增加了一个0,就是频率从400变到了40,说明d后面是分频的倍数,‘d前面记录的数是'd后面所允许记录的最大数(用二进制表示下),’d后面记录的是实际记录的数,用d,即十进制下,不应当超过'd前面记录的那个数的二进制最大,但可以小于

每次比较的时候都是在进行实际记录的数据比较,自加加的也是实际的单位1,与所选进制无关

分时复用? 

相关文章:

10.17七段数码管单个多个(部分)

单个数码管的实现 第一种方式 一端并接称为位码;一端分别接收电平信号以控制灯的亮灭,称为段码 8421BCD码转七段数码管段码是将BCD码表示的十进制数转换成七段LED数码管的7个驱动段码, 段码就是LED灯的信号 a为1表示没用到a,a为…...

linux静态库与动态库

库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在Linux 下有静态库和动态库。   静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。因此编译出来的体积就比较大。以 lib 开头,以.a 结尾。…...

LeetCode 面试题 10.03. 搜索旋转数组

文章目录 一、题目二、C# 题解 一、题目 搜索旋转数组。给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详。请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素&#xff…...

SpringCloudSleuth异步线程支持和传递

场景 在使用Sleuth做链路跟踪时,默认情况下异步线程会断链,需要进行代码调整支持。 调整内容 方式一 使用Async实现异步线程 开启异步线程池 EnableAsync SpringBootApplication public class LizzApplication {public static void main(String[] a…...

如何使用 Disco 将黑白照片彩色化

Disco 是一个基于视觉语言模型(LLM)的图像彩色化工具。它使用 LLM 来生成彩色图像,这些图像与原始黑白图像相似。 本文将介绍如何使用 Disco 将黑白照片彩色化。 使用 Disco 提供了一个简单的在线演示,可以用于测试模型。 访问…...

ChatGPT AIGC 制作大屏可视化分析案例

第一部分提示词prompt: 商品 价格 p1 13 p2 41 p3 42 p4 53 p5 19 p6 28 p7 92 p8 62 城市 销量 北京 69 上海 13 南京 18 武汉 66 成都 70 你现在是一名非常专业的数据分析师,请结合上述数据完成下列几件事情 1:第一部分数…...

2023年9款好用的在线流程图软件推荐!

随着互联网技术和基础设施的发展,人们能用上比过去更加稳定的网络,因此在使用各类工具软件时,越来越倾向于选择在线工具,或是推出了网页版的应用。 就流程图软件而言,过去想要绘制流程图,我们得在电脑上安…...

剑指Offer || 044.在每个树行中找最大值

题目 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1: 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9] 解释:1/ \3 2/ \ \ 5 3 9 示例2: 输入: root [1,2,3] 输出: [1,3] 解释:1/ \2 3示例3&#xff…...

ESP32网络开发实例-UDP数据发送与接收

UDP数据发送与接收 文章目录 UDP数据发送与接收1、UDP简单介绍2、软件准备3、硬件准备4、代码实现本文将详细介绍在Arduino开发环境中,如何实现ESP32通过UDP协议进行数据发送与接收。 1、UDP简单介绍 用户数据报协议 (UDP) 是一种跨互联网使用的通信协议,用于对时间敏感的传…...

液压自动化成套设备比例阀放大器

液压电气成套设备的比例阀放大器是一种电子控制设备,用于控制液压动力系统中的液压比例阀1。 比例阀放大器通常采用电子信号进行控制,以控制比例阀的开度和流量,以实现液压系统的可靠控制。比例阀放大器主要由以下组成部分: 驱动…...

专业144,总分440+,上岸西北工业大学827西工大信号与系统考研经验分享

我的初试备考从4月末,持续到初试前,这中间没有中断。 总的时间分配上,是数学>专业课>英语>政治,虽然大家可支配时间和基础千差万别,但是这么分配是没错的。 数学 时间安排:3月-7月:…...

JQuery - template.js 完美解决动态展示轮播图,轮播图不显示问题

介绍 在JQuery中,使用template.js把轮播图的图片渲染到页面后,发现无法显示。 解决方案 首先,打开控制台发现,图片dom是生成了的,排除dom的缺失其次,换了一个插件Swiper,发现效果一样,排除插件的沦丧把动态数据换成假数据,...

CC2540和CC2541的区别简单解析

CC2541理论上是CC2540的精简版,去除了USB接口,增加了1个HW1C接口。 CC2540集成了2.4GHz射频收发器,是一款完全兼容8051内核的无线射频单片机,它与蓝牙低功耗协议栈共同构成高性价比、低功耗的片上系统(SOC&#xff09…...

Java8 新特性之Stream(八)-- Stream的collect()与Collectors的联合运用

目录 1. collect()的 收集 作用 2. collect()的 统计 作用 3. collect()的 分组 作用 4. collect()的 拼接 作用...

SpringBoot基础详解

目录 SpringBoot自动配置 基于条件的自动配置 调整自动配置的顺序 纷杂的SpringBoot Starter 手写简单spring-boot-starter示例 SpringBoot自动配置 用一句话说自动配置:EnableAutoConfiguration借助SpringFactoriesLoader将标准了Configuration的JavaConfig类…...

学会Docker之---应用场景和基本操作

实体机、VM和容器 实体机(Physical Machine)是指实际的物理设备,例如我们常见的计算机主机、服务器等。它们是由硬件组成,可以直接运行操作系统和应用程序。 虚拟机(Virtual Machine)是在一台物理机上通过…...

C++_linux下_非阻塞键盘控制_程序暂停和继续

1. 功能 在程序执行过程中,点击键盘p按键(pause), 程序暂停, 点击键盘上的n按键(next),程序继续执行 2. 代码 #include <iostream> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/ioctl.h> char get_keyboar…...

SQL AND, OR and NOT(与,或不是运算符)

SQL AND & OR 运算符 AND&OR运算符用于根据一个以上的条件过滤记录&#xff0c;即用于组合多个条件以缩小SQL语句中的数据。 WHERE子句可以与AND&#xff0c;OR和NOT运算符结合使用。 AND和OR运算符用于根据多个条件筛选记录&#xff1a; 如果由AND分隔的所有条件为TR…...

Python网络编程之Socket(套接字)

文章目录 一、Socket概念二、套接字的发展史及分类三、Socket的使用语法格式(基于TCP协议)1.基于TCP协议的套接字(socket)编程半连接池 2.基于UDP协议的套接字(socket)编程也可以使用服务端只接收客户端消息 黏包现象 一、Socket概念 Socket套接字&#xff0c;一种独立于协议的…...

金山终端安全系统V9.0 SQL注入漏洞复现

0x01 产品简介 金山终端安全系统是一款为企业提供终端防护的安全产品&#xff0c;针对恶意软件、病毒和外部攻击提供防范措施&#xff0c;帮助维护企业数据和网络。 0x02 漏洞概述 金山终端安全系统V9.0 /inter/update_software_info_v2.php页面存在sql注入漏洞&#xff0c;该…...

Radius OTP完成堡垒机登录认证 安当加密

Radius OTP&#xff08;One-Time Password&#xff09;是一种用于身份验证的协议&#xff0c;它通过向用户发送一个一次性密码来验证用户的身份。使用Radius OTP可以实现堡垒机登录&#xff0c;以下是一些实现步骤&#xff1a; 1、安装Radius服务器 首先需要安装Radius服务器…...

ROS opencv 人脸识别

人脸识别需要在输入的图像中确定人脸&#xff08;如果存在&#xff09;的位置、大小和姿态&#xff0c;往往用于生物特征识别、视频监听、人机交互等应用中。2001年&#xff0c;Viola和Jones提出了基于Haar特征的级联分类器对象检测算法&#xff0c;并在2002年由Lienhart和Mayd…...

文心一言 4.0 ERNIE-Bot 4.0 :ERNIE-Bot 4.0 大模型深度测试体验报告

本心、输入输出、结果 文章目录 文心一言 4.0 ERNIE-Bot 4.0 &#xff1a;ERNIE-Bot 4.0 大模型深度测试体验报告前言相关跳转文心一言 4.0 ERNIE-Bot 4.0 接口简介Bash 请求示例代码Windows 模式使用 Python 请求如果直接使用官方提供的代码文心一言 4.0 ERNIE-Bot 4.0 API 在…...

华为OD机考B卷 | 100分】阿里巴巴找黄金宝箱(JAVA题解——也许是全网最详)

前言 本人是算法小白&#xff0c;甚至也没有做过Leetcode。所以&#xff0c;我相信【同为菜鸡的我更能理解作为菜鸡的你们的痛点】。 题干 1. 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0~N的箱子&…...

请求转发和重定向区别

两者区别&#xff1a; 1.转发在一次请求中完成&#xff0c;重定向是两次请求 2.转发操作发生在服务器内部&#xff0c;重定向是在浏览器执行操作 3.转发地址栏不变&#xff0c;重定向地址栏变化&#xff08;两次请求&#xff0c;两个地址&#xff09; 4.转发可以在一次请求中共…...

JS如何判断对象为空?以及各自的缺点。

JS如何判断对象为空&#xff1f;以及各自的缺点。 Object.keys() 通过 Object.keys() 来获取对象的键进行判断。 function isEmpty(obj) {return Object.keys(obj).length 0; }console.log(isEmpty({})); // true console.log(isEmpty({ a: 1 })); // false缺点&#xff1a…...

同城代驾开源版小程序开发

同城代驾开源版小程序开发 功能特性描述&#xff1a; 定价模式&#xff1a;本系统支持灵活的计价模式&#xff0c;包括白天和夜晚的起步价、起步里程、每公里价以及超时费用&#xff0c;从而满足不同时段的定价需求。 实时路径计算&#xff1a;通过集成腾讯地图的软件开发工…...

【Python机器学习】零基础掌握ShrunkCovariance协方差估计

有没有想过如何准确地评估股票投资的风险? 在投资领域,了解各种资产(如股票、债券等)之间的相关性和波动性是非常重要的。常用的方法是计算资产收益率的协方差矩阵,但这个矩阵在样本量少或数据质量不高的情况下可能会产生误导。那么,有没有更好的方法来解决这个问题呢?…...

精神科常用评估量表汇总,建议收藏!

根据精神科医生的量表使用情况&#xff0c;笔者整理了10个精神科常用量表&#xff0c;可在线评测直接出结果&#xff0c;可转发使用&#xff0c;可生成二维码使用&#xff0c;可创建项目进行数据管理&#xff0c;有需要的小伙伴赶紧收藏&#xff01; 抑郁自评量表 抑郁自评量表…...

Python之切片

Python之切片 切片 通过给定的索引区间获得线性结构的一部分数据start、stop、step为整数&#xff0c;可以是正整数、负整数、零start为0时&#xff0c;可以省略stop为末尾时&#xff0c;可以省略step为1时&#xff0c;可以省略切片时&#xff0c;索引超过上界(右边界)&#…...