首页 > 其他分享 >Verilog设计实现七段数码管译码器的设计

Verilog设计实现七段数码管译码器的设计

时间:2024-05-31 22:58:51浏览次数:23  
标签:LED 数码管 num 七段 译码器 输入

七段数码管常用于计时器、拨码开关输入、班级和学号等信息的显示,通过控制不同的段亮灭,可以实现各种数字和字符的显示。七段数码管通常由a-g七个段组成,每一段对应一个LED。为了显示不同的数字,需要控制这些LED的亮灭。

图1 七段数码管

为了控制这些LED的亮灭,需要设计一个显示译码器。显示译码器的作用是将输入的编码数据转换为控制7段数码管LED亮灭状态的输出信号。译码器接收来自微控制器或其他电路的数字信号,并根据预设的逻辑规则将这些信号转换为对应的控制信号。这些控制信号随后被应用到7段数码管的LED段上,从而实现数字或字符的显示。

1. 定义输入输出:

输入:一个4位宽的二进制数,表示要显示的数字(0-9)。

输出:七个信号,分别控制七段数码管的a-g段。

2.编写Verilog代码:

创建一个Verilog模块,定义输入输出端口。

使用case语句或查找表(LUT)来实现译码逻辑。

对于每个输入值(0000到1001),指定对应的输出值(LED亮灭组合)。

3.编译与仿真:

使用Verilog编译器将代码编译成可在模拟器上运行的目标文件。

创建测试平台(testbench),生成输入信号并观察输出信号。

运行仿真,验证译码器的功能是否正确。

4.结果分析:

检查仿真结果,确保对于每个输入值,输出信号都正确对应了七段数码管的显示。

设计模块:

module test5(num,a_g);
input[3:0]				num;
output[6:0]				a_g;  // a_g -->{a,b,c,d,e,f,g}
reg[6:0]				a_g;  // always赋值需要定义为reg变量
always@(num)begin  // 敏感变量,需要变的量是输入num
	case(num)  
	// 4'd0:4位宽的十进制('d),数值为0:0000,4'd8:4位宽的十进制('d),数值为8:1000
	// 'b 二进制,'h十六进制,'d十进制。eg 10'd15,则表示十进制15, 0000001111。 
	4'd0:	begin a_g <= 7'b111_1110; end  // a-g7根管a-f亮,g不亮(0)
	4'd1:	begin a_g <= 7'b011_0000; end
	4'd2:	begin a_g <= 7'b110_1101; end
	4'd3:	begin a_g <= 7'b111_1001; end
	4'd4:	begin a_g <= 7'b011_0011; end
	4'd5:	begin a_g <= 7'b101_1011; end
	4'd6:	begin a_g <= 7'b101_1111; end
	4'd7:	begin a_g <= 7'b111_0000; end
	4'd8:	begin a_g <= 7'b111_1111; end
	4'd9:	begin a_g <= 7'b111_1011; end
	default:begin a_g <= 7'b000_0001;  end // 输入超过9,输出“中杠”
	endcase
end
endmodule

 测试文件:

`timescale 1ns/10ps
module tb_test5;
reg[3:0]			num_in;
wire[6:0]			a_g_out;
test5 my_test5(.num(num_in),.a_g(a_g_out));
initial begin 
				num_in = 0; // 初始化输入
				#3000 $stop; // 4位输入_ _ _ _,16种变化,10ns一个变化,200ns即可
end
always  #10 num_in <= num_in+1;  // 10ns变化一次
endmodule

仿真波形:

标签:LED,数码管,num,七段,译码器,输入
From: https://blog.csdn.net/jskwys/article/details/139347024

相关文章

  • 基于51单片机的超声波测距(汽车倒车雷达)—数码管显示
    基于51单片机的超声波测距(仿真+程序+原理图+PCB+设计报告)功能介绍具体功能:1.HC-SR04超声波模块测距;2.数码管显示测量的距离,74hc573和三极管驱动数码管;3.本设计可用作汽车的倒车雷达;4.三个按键可设置报警距离;​演示视频:基于51单片机的超声波测距(汽车倒车雷达)—数码......
  • 七段数码管
    importturtle,datetimedefdrawGap():#绘制数码管间隔turtle.penup()turtle.fd(5)defdrawLine(draw):#绘制单段数码管drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d):#根据数字绘制七段数......
  • 数码管显示屏驱动芯片VK1640 SOP28,2线串行接口,适用于小型LED显示屏驱动
    产品品牌:永嘉微电/VINKA产品型号:VK1640封装形式:SOP28概述VK1640是一种数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、LED驱动等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持8SEGx16GRID的点阵LED显示。适用于小型LED显示屏驱动。采用SOP28的封装形式。LJQ336特点•......
  • 数码管闪烁模板及注意事项
    数码管闪烁模板及注意事项方式1:直接在segProc()里写查看代码voidSeg_Proc(void){ if(Seg_Slow_Down)return; Seg_Slow_Down=1; /***用户自定义代码区↓***/ sprintf(seg_string,"-%d-%3d",(unsignedint)disp1,disp2); if(state_flag==2)//让disp1......
  • 基于EP4CE6F17C8的FPGA可调校数码管时钟实例
    一、电路模块1、数码管开发板板载了6个数码管,全部为共阳型,原理图如下图所示,段码端引脚为DIG[0]~DIG[7]共8位(包含小数点),位选端引脚为SEL[0]~SEL[5]共6位。端口均为低电平有效。其实物图如下所示。数码管引脚分配见下表。2、时钟晶振开发板板载了一个50MHz的有源晶振,为系统......
  • 基于51单片机的锅炉控制【热电偶,数码管,PID】(仿真)
    1、使用N型热电偶测量锅炉内部温度2、设置温度值,温度低于设定值则启动加热3、加热过程使用PID控制,PID参数固定4、数码管显示温度5、温度过限报警#include"lcd1602.h"voiddelay_uint(uinti){ while(i--);}/**************************************************......
  • 点阵LED数码管显示驱动IC VK16K33 A/B/C/BA/AA 驱动电流大 质量稳定 适用于计量插座,数
    VK16K33是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、键盘扫描、LED驱动模块等电路。数据通过I2C通讯接口与MCU通信。SEG脚接LED阳极,GRID脚接LED阴极,可支持16SEGx8GRID的点阵LED显示面板。最大支持13×3的按键。内置上电复位电路,整体闪烁频率可......
  • 蓝桥杯单片机速成2-动态数码管数码管显示
    一、原理图段选给1是选中,该数码管是共阳极的数码管,位选输入0才会电亮一位二、代码分析/*************本地常量声明**************/u8codet_display[]={//标准字库//0123456789ABC......
  • 基于51单片机的雨刮器【雨量,速度,手动自动,点动,数码管】(仿真)
    #include"DHT11.h"unsignedchardht11_dat1[5];//湿度高低+温度高低+和校验unsignedchardht11_dat2[5];voiddelay1ms(unsignedinti)//延时函数{unsignedcharj;while(i--){ for(j=0;j<110;j++);}}voiddht11_recive1()//接收{unsignedch......
  • 七段码(蓝桥杯)
    文章目录七段码题目描述答案:80分析编程求解:有多种方法方法一:状态压缩+枚举+构图(以二极管为顶点)+DFS判断连通代码方法二:bfs七段码题目描述小蓝要用七段码数码管来表示一种特殊的文字。上图给出了七段码数码管的一个图示,数码管中一共有7段可以发光的二极管,分别......