FPGA(5)数码管静态显示与动态显示

这篇具有很好参考价值的文章主要介绍了FPGA(5)数码管静态显示与动态显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、数码管静态显示

二、数码管动态显示

1、变量定义

2、定时(60us)

3、动态显示

代码


一、数码管静态显示

FPGA的数码管有4位,8段。(位和段都是共阳,即低电平有效

 FPGA(5)数码管静态显示与动态显示

 FPGA(5)数码管静态显示与动态显示

FPGA(5)数码管静态显示与动态显示

位选的4位(二进制):分别为第1、2、3、4位数码管。

段选的8位(二进制):分别为第h、g、f、e、d、c、b、a段。

下面用4位(所有)数码管, 显示数字“1”:

//数码管(共阳:低电平有效)
//FPGA的数码管:段选和位选都共阳
module my_and(dig, seg);

output wire [3:0] dig;		//位选(选定某一个数码管)
output wire [7:0] seg;	//段选(选定一个数码管上的小段)

assign dig = 4'b0000;	//位选(0000:4个零,共4个数码管,全选)

assign seg = 8'b1111_1001;	//段选(第6、7段为0,显示的是“1”)

endmodule

二、数码管动态显示

由于要显示不同的数字,但是FPGA的数码管没办法单独操作,只能群操作。
所以只能给每个数码管不同的频率,然后依次显示。
注:这里频率要给适当:
频率过快:容易发生混叠;
频率过慢,变化慢,明显的流水式显示。

 频率过慢(流水式变化):

FPGA(5)数码管静态显示与动态显示

 FPGA(5)数码管静态显示与动态显示

频率过快(混叠):

FPGA(5)数码管静态显示与动态显示

 正常频率:

FPGA(5)数码管静态显示与动态显示

1、变量定义

module my_and(dig, seg, clk, rst_n);

input clk, rst_n;
output reg [7:0] seg;		//段选(选定一个数码管上的小段)
output reg [3:0] dig;		//位选(选定某一个数码管)

reg [25:0] cnt;
reg [1:0] wei;

2、定时(60us)

计时到60us,使得位变化一次。 

//定时(60us变化位变化一次)
always@ (posedge clk, negedge rst_n)
begin 
	//按下复位键(清空)
	if(!rst_n)		
		cnt <= 1'b0;		//清空
	
	else if(cnt != 12'd3000)	//60us(3000*20ns=60us)
		cnt <= cnt + 1'b1;//加1
	
	else
	begin
		cnt <= 1'b0;		//清空
		wei <= wei + 1;	//位+1
	end
end

3、动态显示

这里改变位(dig)和段(seg),段随位变。 文章来源地址https://www.toymoban.com/news/detail-411791.html

//动态显示
always@(*)
begin 
	case(wei)
		//2
		2'b00: 
		begin
			dig <= 4'b0111;
			seg <= 8'b1010_0100;
		end
		//5
		2'b01:
		begin
			dig <= 4'b1011;
			seg <= 8'b1001_0010;
		end
		//0
		2'b10:
		begin
			dig <= 4'b1101;
			seg <= 8'b1100_0000;
		end
		//8
		2'b11:
		begin
			dig <= 4'b1110;
			seg <= 8'b1000_0000;
		end
	endcase
end

代码

//数码管动态显示(共阳:低电平有效)
//由于要显示不同的数字,但是FPGA的数码管没办法单独操作,只能群操作。
//所以只能给每个数码管不同的频率,然后依次显示
//注:这里频率要给适当,
//频率过快:容易发生混叠;
//频率过慢,变化慢,明显的流水式显示
/*对照表
4'h0 : seg = 8'hc0; //显示"0"
4'h1 : seg = 8'hf9; //显示"1"
4'h2 : seg = 8'ha4; //显示"2"
4'h3 : seg = 8'hb0; //显示"3"
4'h4 : seg = 8'h99; //显示"4"
4'h5 : seg = 8'h92; //显示"5"
4'h6 : seg = 8'h82; //显示"6"
4'h7 : seg = 8'hf8; //显示"7"
4'h8 : seg = 8'h80; //显示"8"
4'h9 : seg = 8'h90; //显示"9"
4'ha : seg = 8'h88; //显示"a"
4'hb : seg = 8'h83; //显示"b"
4'hc : seg = 8'hc6; //显示"c"
4'hd : seg = 8'ha1; //显示"d"
4'he : seg = 8'h86; //显示"e"
4'hf : seg = 8'h8e; //显示"f"
*/
module my_and(dig, seg, clk, rst_n);

input clk, rst_n;
output reg [7:0] seg;		//段选(选定一个数码管上的小段)
output reg [3:0] dig;		//位选(选定某一个数码管)

reg [25:0] cnt;
reg [1:0] wei;


//定时(60us变化位变化一次)
always@ (posedge clk, negedge rst_n)
begin 
	//按下复位键(清空)
	if(!rst_n)		
		cnt <= 1'b0;		//清空
	
	else if(cnt != 12'd3000)	//60us(3000*20ns=60us)
		cnt <= cnt + 1'b1;//加1
	
	else
	begin
		cnt <= 1'b0;		//清空
		wei <= wei + 1;	//位+1
	end
end


//动态显示
always@(*)
begin 
	case(wei)
		//2
		2'b00: 
		begin
			dig <= 4'b0111;
			seg <= 8'b1010_0100;
		end
		//5
		2'b01:
		begin
			dig <= 4'b1011;
			seg <= 8'b1001_0010;
		end
		//0
		2'b10:
		begin
			dig <= 4'b1101;
			seg <= 8'b1100_0000;
		end
		//8
		2'b11:
		begin
			dig <= 4'b1110;
			seg <= 8'b1000_0000;
		end
	endcase
end

endmodule

到了这里,关于FPGA(5)数码管静态显示与动态显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA极易入门教程----数码管篇(1)静态显示

            数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显 示)。当然也还有一些其他类型的数码管如“N”形管、“米”字管以及工业科研领域用 的

    2024年02月05日
    浏览(42)
  • [FPGA 学习记录] 数码管动态显示

    数码管动态显示 在上一小节当中,我们对数码管的静态显示做了一个详细的讲解;但是如果单单只掌握数码管的静态显示这种显示方式是远远不够的,因为数码管的静态显示当中,被选中的数码位它们显示的内容都是相同的,这种显示方式在我们的实际应用当中显然是不合适

    2024年02月04日
    浏览(49)
  • LED数码管的静态显示与动态显示(Keil+Proteus)

    就是今天看了一下书上的单片机实验,发现很多的器件在Proteus中都不知道怎么去查找,然后想做一下这个实验,尝试能不能实现,LED数码管的两个还可以实现,但是用LED点阵显示器的时候他那个网络标号不知道是什么情况,有两个东西,所以我也还没搞懂,先暂时就是把LE

    2024年02月08日
    浏览(33)
  • 二、19【FPGA】数码管动态显示实验

    学习说明此文档为本人的学习笔记,注重实践,关于理论部分会给出相应的学习链接。 学习视频:是根据野火FPGA视频教程——第二十二讲 https://www.bilibili.com/video/BV1nQ4y1Z7zN?p=3 “天下武功唯快不破”    “看到的不一定为真” 眼睛的视觉暂留:光信号传入大脑需要短暂时间,

    2023年04月08日
    浏览(36)
  • FPGA基本实验之数码管的动态显示

            关于数码管的基本知识大家可以参考我上一篇文章数码管的静态显示,         使用 1ms 的刷新时间让六个数码管轮 流显示:第 1ms 点亮第一个数码管,第 2ms 点亮第二个数码管,以此类推依次点亮六个数 码管,6ms 一个轮回,也就是说每个数码管每 6ms 点亮

    2024年02月08日
    浏览(38)
  • 【51单片机】数码管的静态与动态显示(含消影)

    数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 注意 :数码管有 共阴 和 共阳 的区分。 在自己设计电路时,应当选用一种数码管时需要选用相应的译码器(共阴配共阴,共阳同理) 数码管的使用: 数码管其实就是一段一段LED构成的,51单

    2024年01月19日
    浏览(39)
  • FPGA项目(5)--FPGA控制数码管动态显示的原理

            数码管是现在电子产品上常用的显示器件,它有驱动简单、显示清晰、价格低廉等优势。数码管的实物图:          数码管的内部结构图如下所示:          从图中可以看出,它由八个段组成,即A B C D E F G DP(小数点),只要将这八个段按规律组合点亮,就

    2024年02月11日
    浏览(50)
  • FPGA 驱动数码管动态显示(Verilog&Vivado)

    应用实例: (1)使用串口发送实现ACX720开发板时钟显示 本章将实现 FPGA 驱动数码管动态显示并提取出实现的电路结构,从电路结构入手编写代码,仿真对设计进行验证。最终板级调试时使用 Virtual Input/Output(VIO,虚拟输入/输出端口工具),输入需要显示的数据,数码管则显

    2023年04月12日
    浏览(52)
  • FPGA学习日志——74hc595驱动的数码管静态显示seg_595_static

    数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显示)。 八段数码管是一个八字型数码管,分为八段:a、b、c、d、e、f、g、dp,其中dp为小数点,每一段即

    2024年02月08日
    浏览(115)
  • 利用AT89C52单片机实现数码管的静态与动态显示

            资源work1和work2(完整工程文件在笔者本人主页的资源中,免费欢迎下载)分别完成下面两个任务:         1、单片机接矩阵键盘和2个静态数码管,自行设计硬件电路,利用汇编语言,要求将按键值(0~15)在数码管显示。         主要代码: ……      

    2024年02月02日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包