名奢网 名表 最新资讯 查看内容

FPGA入门--七段数码管显现

2022-12-7 15:51| 发布者: 夏梦飞雨| 查看: 77| 评论: 0

放大 缩小
简介:本教程将教给大家如何运用北邮版FPGA开发板上的2个七段数码管。七段数码管是电子设计中常用的一种LED显现器,能够显现数字0-9,以及一些其他符号,七段数码管依据内部发光二极管的衔接方式,能够分为共阴极和共阳极 ...

本教程将教给大家如何运用北邮版FPGA开发板上的2个七段数码管。


FPGA入门--七段数码管显现


七段数码管是电子设计中常用的一种LED显现器,能够显现数字0-9,以及一些其他符号,七段数码管依据内部发光二极管的衔接方式,能够分为共阴极和共阳极两种。


FPGA入门--七段数码管显现


七段数码管中,七个LED的编号次第是固定的,如下图所示,点亮LED的位置不同,显现的符号也就不同。


FPGA入门--七段数码管显现


在实践应用中,从节约端口数量、降低成本等角度思索,经常将多个七段数码管并联,采用动态扫描的方式,经过位选信号控制各个七段数码管轮番点亮,应用人眼视觉暂留现象,完成多个七段数码管同时显现信息的效果。


FPGA入门--七段数码管显现


七段数码管的动态扫描,用单片经过C言语编程时比较复杂,但在FPGA中,应用Verilog言语自身的并行机制,这件事倒变得简单了。


下图为北邮版FPGA开发板中2个七段数码管的衔接方式,这2个七段数码管是并联关系,但位线相对独立,经过T2和T3控制2个七段数码管的阴极公共端,当T2=1时,允许对应的七段数码管工作。


FPGA入门--七段数码管显现


运用Verilog操作2个七段数码管的例程如下,这段代码是经过拨码开关来控制七段数码管显现0-9和A-F的,用拨码开关的低4位和高4位拨码分别控制2个七段数码管,读者可仿照FPGA入门--树立第一个工程,自己来树立新的工程完成相关操作。


module seg_scan(clk_50M,rst_button, switch, digit_seg, digit_cath);


input clk_50M; //板载50M晶振


input rst_button;


input [7:0] switch;


output reg [7:0] digit_seg; //七段数码管的段选端


output [1:0] digit_cath; //2个数码管的片选端


wire reset; //复位按键


assign reset = rst_button;


//计数分频,经过读取32位计数器div_count不同位数的上升沿或降落沿来取得频率不同的时钟


reg [31:0] div_count;


always @(posedge clk_50M,posedge reset)


begin


if(reset)


div_count <= 0; //假如按下复位按键,计数清零


else


div_count <= div_count + 1;


end


//拨码开关控制数码管显现,每4位拨码开关控制一个七段数码管


wire [7:0] digit_display;


assign digit_display = switch;


wire [3:0] digit;


always @(*) //对一切信号敏感


begin


case (digit)


4'h0: digit_seg <= 8'b11111100; //显现0~F


4'h1: digit_seg <= 8'b01100000;


4'h2: digit_seg <= 8'b11011010;


4'h3: digit_seg <= 8'b11110010;


4'h4: digit_seg <= 8'b01100110;


4'h5: digit_seg <= 8'b10110110;


4'h6: digit_seg <= 8'b10111110;


4'h7: digit_seg <= 8'b11100000;


4'h8: digit_seg <= 8'b11111110;


4'h9: digit_seg <= 8'b11110110;


4'hA: digit_seg <= 8'b11101110;


4'hB: digit_seg <= 8'b00111110;


4'hC: digit_seg <= 8'b10011100;


4'hD: digit_seg <= 8'b01111010;


4'hE: digit_seg <= 8'b10011110;


4'hF: digit_seg <= 8'b10001110;


endcase


end


//经过读取32位计数器的第10位的上升沿得到分频时钟,用于数码管的扫描


reg segcath_holdtime;


always @(posedgediv_count[10], posedge reset)


begin


if(reset)


segcath_holdtime <= 0;


else


segcath_holdtime <= ~segcath_holdtime;


end


//7段数码管位选控制


assign digit_cath ={segcath_holdtime, ~segcath_holdtime};


// 相应位数码管段选信号控制


assign digit =segcath_holdtime ? digit_display[7:4] : digit_display[3:0];


endmodule


在这里,我们并没有给出管束分配表,也希望读者能自己动脑来完成,北邮版FPGA开发板的管脚对照表如下表所示。


FPGA入门--七段数码管显现


迎接另一个晨曦,带来全新空气


气息改动情味不变,茶香飘满友谊


我家大门常翻开,开放怀抱等你


拥抱过就有了默契,你会爱上这里


不论远近都是客人请不用客气


相约好了在一同,我们欢送你


FPGA入门--七段数码管显现


我家大门常翻开,开怀容纳天地


岁月绽放青春笑容,迎接这个日期


天大地大都是朋友请不用客气


画意诗情带笑意,只为等候你


FPGA入门--七段数码管显现



路过

雷人

握手

鲜花

鸡蛋
已有 0 人参与

会员评论

最新文章

文章列表

 名表回收网手机版

官网微博:名表回收网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
浙江速典奢贸易有限公司 网站经营许可证 备案号:浙ICP备19051835号2012-2022
名表回收网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,浙江实体店,支持全国范围上门回收手表
返回顶部