数码管的动态显示(二)

news2024/11/20 0:41:29

1.原理

这个十六进制是右边的dp为高位。

数码管的动态显示,在第一个计数周期显示个位,在第二个周期显示十位,在第三个周期显示百位由于人眼的视觉和数码管的特性,感觉就是显示了234,每个数码管的显示需要从输入的数据里提取出个十百位,所以需要BCD码。

8,原来输入的数据有多少位宽就要移位多少次。

增加一个BCD转码模块。

修改系统框图

2.代码

2.1 bcd_8421.v

module bcd_8421(
	input wire 			sys_clk			,
	input wire 			sys_rst_n		,
	input wire[19:0]	data			,
	
	output reg[3:0]		unit			,
	output reg[3:0]		ten				,
	output reg[3:0]		hun				,
    output reg[3:0]		tho				,
	output reg[3:0]		t_tho			,
    output reg[3:0]		h_hun
);

reg [4:0]cnt_shift;  //输入是20位,第0次补0,要计数到20,就是0-20,第21次进行输出的赋值
reg [43:0]data_shift;//20位的data输入,和4*6=24位的8421BCD
reg shift_flag;

always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		cnt_shift<=5'd0;
	else if((cnt_shift==5'd21)&&(shift_flag==1'b1))
		cnt_shift<=5'd0;
	else if(shift_flag==1'b1)
		cnt_shift<=cnt_shift+1'b1;
	else
		cnt_shift<=cnt_shift;
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		shift_flag<=1'b0;
	else
		shift_flag<=~shift_flag;
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		data_shift<=44'd0;
	else if(cnt_shift==5'd0)
		data_shift<={24'b0,data};
	else if((cnt_shift<21)&&(shift_flag==1'b0))
		begin
			data_shift[23:20]<=(data_shift[23:20]>4) ? (data_shift[23:20]+2'd3) : (data_shift[23:20]);
			data_shift[27:24]<=(data_shift[27:24]>4) ? (data_shift[27:24]+2'd3) : (data_shift[27:24]);
			data_shift[31:28]<=(data_shift[31:28]>4) ? (data_shift[31:28]+2'd3) : (data_shift[31:28]);
			data_shift[35:32]<=(data_shift[35:32]>4) ? (data_shift[35:32]+2'd3) : (data_shift[35:32]);
			data_shift[39:36]<=(data_shift[39:36]>4) ? (data_shift[39:36]+2'd3) : (data_shift[39:36]);
			data_shift[43:40]<=(data_shift[43:40]>4) ? (data_shift[43:40]+2'd3) : (data_shift[43:40]);
		end
	else if((cnt_shift<5'd21)&&(shift_flag==1'b1))
		data_shift<=data_shift<<1;
	else 
		data_shift<=data_shift;
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		begin
			unit	<=4'b0;
	        ten	    <=4'b0;
	        hun	    <=4'b0;
	        tho	    <=4'b0;
	        t_tho   <=4'b0;
	        h_hun   <=4'b0;
		end
	else if(cnt_shift==5'd21)
		begin
        	unit	<=data_shift[23:20];
            ten	    <=data_shift[27:24];
            hun	    <=data_shift[31:28];
            tho	    <=data_shift[35:32];
            t_tho   <=data_shift[39:36];
            h_hun   <=data_shift[43:40];
        end
		
endmodule

2.2 tb_bcd_8421.v

`timescale 1ns/1ns
module tb_bcd_8421();

reg sys_clk	;
reg sys_rst_n;
reg [19:0] data;

wire [3:0]unit	  ;
wire [3:0]ten	  ;
wire [3:0]hun	  ;
wire [3:0]tho	  ;
wire [3:0]t_tho   ;
wire [3:0]h_hun   ;
				


initial 
	begin
		sys_clk=1'b1;
		sys_rst_n<=1'b0;
		data<=20'd0;
		#30
		sys_rst_n<=1'b1;
		data<=20'd123_456;
		#3000
		data<=20'd654_321;
		#3000
		data<=20'd987_654;
		#3000
		data<=20'd999_999;
	end
	
always #10 sys_clk=~sys_clk;

bcd_8421 tb_bcd_8421(
	.sys_clk	(sys_clk)		,
	.sys_rst_n	(sys_rst_n)	,
	.data		(data)	,
	
	.unit		(unit)	,
	.ten		(ten)		,
	.hun		(hun)		,
    .tho		(tho)		,
	.t_tho		(t_tho)	,
    .h_hun      (h_hun)
);

endmodule

shift_reg高电平时,cnt_shift开始计数

(最后一位999_999显示有误,不知道怎么改)

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

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

相关文章

AHU 数据库 实验五

【实验名称】 实验5 数据库的数据更新与视图管理 【实验目的】 1. 熟悉数据更新操作的概念与操作类型&#xff1b; 2. 熟练掌握INSERT、UPDATE、DELETE语句的基本语法&#xff1b; 3. 熟练运用INSERT、UPDATE、DELETE语句实现数据的插入、修改与删除…

应对恶意IP攻击的有效方法

在当今数字化时代&#xff0c;网络攻击已经成为了互联网安全的重大挑战之一。恶意IP攻击是网络安全领域中的一种常见威胁&#xff0c;它可能导致数据泄露、服务中断、系统瘫痪等严重后果。因此&#xff0c;有效地应对恶意IP攻击至关重要。IP数据云将深入探讨如何应对恶意IP攻击…

OpenHarmony开源项目—工程管理

DevEco Studio的基本使用&#xff0c;请参考DevEco Studio使用指南。本章主要介绍如何使用DevEco Studio进行多设备应用开发。 说明&#xff1a; 本章的内容基于DevEco Studio 3.1.1 Release版本进行介绍&#xff0c;如您使用DevEco Studio其它版本&#xff0c;可能存在文档与产…

Oracle PL/SQL Programming 第9章:Numbers 读书笔记

总的目录和进度&#xff0c;请参见开始读 Oracle PL/SQL Programming 第6版 本章谈3点&#xff1a; 可使用的数字数据类型如何在数字和文本间转换PL/SQL 内置数值函数 Numeric Datatypes NUMBER&#xff1a;平台无关的实现&#xff0c;适合处理货币金额PLS_INTEGER 和 BINA…

HBuilder发行微信小程序

首先需要完善mainifest.json中的基本配置 这个需要组测dcloud才可以获取&#xff0c;注册后点击重新获取就可以。 然后发行前还需要完成dcloud的信息&#xff0c;这个他会给你网址 点击连接完成信息填写就可以了 然后就可以发行了。 发行成功后会自动跳转微信小程序&#xff…

uniapp封装统一请求(get和post)

uniapp封装请求 request.js文件 import Vue from vue // 全局配置 import settings from ./settings.js function computedBaseUrl(url) {// console.log(url);return (url.indexOf(http) -1 ? settings.baseUrl : ) url }// 发送请求 export default (options) > {const…

一.java介绍和idea基础使用

java技术体系 Java技术体系说明Java SE(Java standard Edition):标准版Java技术的核心和基础Java EE(Java Enterprise Edition):企业版企业级应用开发的一套解决方案Java ME(Java Micro Edition):小型版针对移动设备应用的解决方案&#xff08;认可少&#xff0c;主要是安卓和…

基于Vue移动端电影票务服务APP设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Vue框架 3 1.2 数据库MongoDB 3 1.3 Axios请求 3 1.4 H5、CSS3和JavaScript 4 1.5 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 5 2.3 用户功能 6 2.4本章小结 6 3 基于Vue电影票务服务APP设计 7 3.1 页面设计 …

Java_8 移除元素

移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

微信小程序之表单组件

1、button 常用的属性&#xff1a; 属性类型默认值必填说明sizestringdefault否按钮的大小 合法值说明default默认大小mini小尺寸typestringdefault否按钮的样式类型 合法值说明primary绿色default白色warn红色plainbooleanfalse否按钮是否镂空&#xff0c;背景色透明disable…

Transformer原理

在《机器学习综述》中大致罗列人工智能常见算法&#xff0c;近些年深度学习发展快速&#xff0c;其中Transformer为甚&#xff0c;其英文的意思是变形金刚&#xff0c;对的就是我们看电影变形金刚的意思。Transformer是大语言模型的基础&#xff0c;比如现在常见的GPT、Bert、P…

详解Python中%r和%s的区别及用法

首先看下面的定义&#xff1a; %r用rper()方法处理对象 %s用str()方法处理对象 函数str() 用于将值转化为适于人阅读的形式&#xff0c;而repr() 转化为供解释器读取的形式&#xff08;如果没有等价的语法&#xff0c;则会发生SyntaxError 异常&#xff09; 某对象没有适于人…

数据库增删改查以及联合查询——数据库——day1

今天学习了数据库的知识 首先数据库分为关系型数据库和非关系型数据库 关系型数据库:Mysql OracleSqlServerSqlite 非关系型数据库&#xff1a;RedisNoSQL我们首先来看一下数组、链表、文件、数据库的区别 数组、链表: 内存存放数据的方式(代码运行结束、关机数据丢失) …

JS数组相关知识

获取数组的最大值/最小值&#xff1a; let arrary [2,5,4] let max arrary[0] for(let i 0;i<arrary.length;i){if(arrary[i]>max){max arrary[i]} }console.log(max);//查询数组最小值let arr [2,21,34,23,45] let min arr[0] for(let i 0;i<arr.length;i){if…

“我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语

每日一句 Im bored to death. 我快无聊死了。 单词解析&#xff1a; bored / bɔːd / adj.无聊的&#xff0c;厌倦的 bored to d15857575376eath&#xff1a;指非常无聊或厌烦&#xff0c;达到了极点的程度。 "bored" 和 "boring" 都与无聊相关&#…

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

AI人工智能改变项目管理及控制的5种方式,最后一个你认同吗?

前言 斯蒂芬霍金说&#xff1a;“AI is likely to be either the best or the worst thing to happen to humanity. 人工智能可能是发生在人类身上的最好或最坏的事情”。根据Gartner的说法&#xff0c;它将是前者。它预测到2020年&#xff0c;人工智能将减少1万个就业机会&am…

软件设计师15--进程资源图

软件设计师15--进程资源图 考点1&#xff1a;进程资源图例题&#xff1a; 考点1&#xff1a;进程资源图 例题&#xff1a; 1、在如下所示的进程资源图中&#xff0c;D&#xff09;。 A、P1、P2、P3都是非阻塞节点&#xff0c;该图可以化简&#xff0c;所以是非死锁的 B、P1、…

Linux:1_常见指令以及权限理解(上)

常见指令以及权限理解 一.补充知识 为方便初学者更好的理解Linux系统,这部分将对比windows系统补充一部分必要知识1 2 3 4 5 6 二.补充指令 1. 重新认识指令: 指令本质都是程序 —指令、程序、可执行程序都是一回事(都是文件内容属性)指令就是程序 … 安装和卸载是在把可…

【Axure高保真原型】下拉列表切换图表

今天和大家分享通过下拉列表动态切换统计图表的原型模板&#xff0c;我们可以通过下拉列表选择要显示的图表&#xff0c;包括柱状图、条形图、饼图、环形图、折线图、曲线图、面积图、阶梯图、雷达图&#xff1b;而且图表数据可以在左侧表格中动态维护&#xff0c;包括增加修改…