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

news2025/7/20 9:30:11

单个数码管的实现 

第一种方式

 

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

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]=J13
    output reg [6:0]a_to_g,
    output DP,
    output [7:0]AN
    );
    assign AN=8'b1111_1110;
    assign DP=1;
    always@(*)
    begin
    case(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;
    endcase
    end
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四个开关(四位二进制数)决定了一个十六进制数,然后在数码管上显示这个在四位开关上表示的一位十六进制数,只调用了一个数码管表示

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

##Switches
 set_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,与所选进制无关

分时复用? 

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

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

相关文章

文心一言 VS 讯飞星火 VS chatgpt (115)-- 算法导论10.2 8题

八、用go语言,说明如何在每个元素仅使用一个指针 x.np(而不是通常的两个指针 next和prev)的下实现双向链表。假设所有指针的值都可视为 k 位的整型数,且定义x.npx.next XOR x.prev,即x.nert和x.prev 的 k 位异或。(NIL 的值用0表示。)注意要说…

1数据结构的分类,算法效率的度量

一,数据结构的定义和分类 数据结构:数据之间的关系即数据的逻辑结构,因为要存储到计算机里,所以视为将这个数据的逻辑结构映射到存储器里。即数据因为自身的和其他的数据的关系而在计算机内存储的方式。我们就归类了一些类型。 二…

Idea怎么配置Maven才能优先从本地仓库获取依赖

网上的方法 : 在设置中搜索 Runner ,在VM Option中设置参数 -DarchetypeCataloginternal删除 解压后的依赖包中的 _remote.repositories m2e-lastUpdated.properties *.lastUpdated 文件。 上边都没有效果 最终的解决方法,修改maven配置文件settings.xml 主要两个…

封装一个Element-ui生成一个可行内编辑的表格(vue2项目)

这个封装的是一个供整个项目使用的表格,可多次复用.放在一个全局使用的公共组件文件下. 大致功能介绍,封装自定义指令,点击获得焦点,显示输入框,失去焦点显示文本内容,类型是字典决定类型,图片可以显示图片名还是上传图片 子组件 <script> export default {props: {//生…

6.4 图的存储结构

思维导图&#xff1a; 前言&#xff1a; --- **6.4 图的存储结构** - **核心问题**&#xff1a;由于图的结构复杂性&#xff0c;我们不能仅仅依赖于元素在存储区的物理位置来表示它们之间的关系。 - **邻接矩阵**&#xff1a; - **基本思路**&#xff1a;虽然图没有顺序存…

基于混沌博弈优化的BP神经网络(分类应用) - 附代码

基于混沌博弈优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于混沌博弈优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.混沌博弈优化BP神经网络3.1 BP神经网络参数设置3.2 混沌博弈算法应用 4.测试结果…

在Objective-C中使用ASIHTTPRequest发送HTTP请求并获取HTML内容

在网络爬虫开发中&#xff0c;发送HTTP请求并获取目标网站的HTML内容是一项常见任务。通过发送HTTP请求&#xff0c;我们可以模拟浏览器行为&#xff0c;访问网页并获取其中的数据。这些数据可以用于数据分析、信息收集、自动化测试等多种用途。为了实现这个目标&#xff0c;开…

基于堆优化优化的BP神经网络(分类应用) - 附代码

基于堆优化优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于堆优化优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.堆优化优化BP神经网络3.1 BP神经网络参数设置3.2 堆优化算法应用 4.测试结果&#x…

数组越界访问导致死循环的情况

这个问题是在学习程序地址空间的时候回忆C语言学习时想到的 我们会遇到下面的情况 int main() {int i 0;int arr[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };for(i 0; i < 12; i){arr[i] 0;}return 0; }程序死循环了 问题就出在程序的存储空间上&#xff0c;i和arr都是局…

BFD基础

1.BFD概述 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制&#xff0c;有以下两大优点&#xff1a; ①对相邻转发引擎之间的通道提供轻负荷、快速故障检测。 ②用单一的机制对任何介质、任何协议层进行实时检测。 BFD是一个简单的“Hello”协议。两个…

分享一份适合练手的软件测试实战项目

最近&#xff0c;不少读者托我找一个能实际练手的测试项目。开始&#xff0c;我觉得这是很简单的一件事&#xff0c;但当我付诸行动时&#xff0c;却发现&#xff0c;要找到一个对新手友好的练手项目&#xff0c;着实困难。 我翻了不下一百个web网页&#xff0c;包括之前推荐练…

YOLOv5算法改进(6)— Neck网络介绍(AFPN和BiFPN)

前言:Hello大家好,我是小哥谈。Neck网络是目标检测中的一个重要组成部分,主要用于对检测器提取的特征进行进一步处理和融合,以提高检测精度。通常,Neck网络由一系列卷积层、池化层、上采样层等组成,可以将不同层次的特征进行融合,同时也可以对特征进行降维和升维操作。本…

VT-MVTW-1-16/D VTS0234-47/AP025 可以用模拟或数字输入来控制

VT-MVTW-1-16/D VTS0234-47/AP025 可以用模拟或数字输入来控制 伺服驱动器可以用模拟或数字输入来控制。本质上&#xff0c;伺服驱动器的作用是将来自控制器的低功率命令信号转换成高功率电压和电流给电机。根据应用&#xff0c;伺服驱动器可以调节和适当协调电机的期望位置、…

【MySQL】索引介绍、索引的数据结构

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 索引 一、索引概述二、索引结构2.1 BTree2.…

Linux文件管理(上)

一、VIM编辑器 1、vi概述 vi&#xff08;visual editor&#xff09;编辑器通常被简称为vi&#xff0c;它是Linux和Unix系统上最基本的文本编辑器&#xff0c;类似于Windows 系统下的notepad&#xff08;记事本&#xff09;编辑器。 2、vim编辑器 Vim(Vi improved)是vi编辑器…

CSS之布局系列--顶部导航栏二级菜单居中展示

原文网址&#xff1a;CSS之布局系列--顶部导航栏二级菜单居中展示_IT利刃出鞘的博客-CSDN博客 简介 本文介绍CSS将顶部导航栏居中展示并支持二级菜单下拉展示的方法。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-…

基于人工水母优化的BP神经网络(分类应用) - 附代码

基于人工水母优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工水母优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工水母优化BP神经网络3.1 BP神经网络参数设置3.2 人工水母算法应用 4.测试结果…

Wireshark 通过 nrf-sniffer for BLE 抓包环境配置说明

1 准本工作 1.1 购买 nrf sniffer 抓包工具 购买链接&#xff1a;https://item.taobao.com/item.htm?spma21n57.1.0.0.46291dafMXbO9s&id718103919140&ns1&abbucket15#detail 1.2 下载文件 下载 CP2101 驱动 下载链接&#xff1a;http://www.wxlrf.com/downloa…

基于springboot实现民宿管理平台项目【项目源码+论文说明】

摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于民宿管理平台系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了民宿管理平台系统&#xff0c;它彻底改变了过…

利用Tomcat服务器实现一个简单的web应用

2023.10.17 昨天使用Tomcat服务器实现了一个简单的web应用&#xff0c;但是显示的页面是静态页面&#xff0c;今天来实现一个动态的web应用。 对于一个动态的web应用&#xff0c;一个请求和响应的过程中&#xff0c;有哪些角色参与&#xff0c;角色间有哪些协议&#xff1f; 角…