时间:2024-07-27 来源:网络搜集 关于我们 0
本教程将教给大家如何使用北邮版FPGA开发板上的2个七段数码管。
七段数码管是电子设计中常用的一种LED显示器,可以显示数字0-9,以及一些其他符号,七段数码管根据内部发光二极管的连接方式,可以分为共阴极和共阳极两种。
七段数码管中,七个LED的编号顺序是固定的,如下图所示,点亮LED的位置不同,显示的符号也就不同。
在实际应用中,从节约端口数量、降低成本等角度考虑,经常将多个七段数码管并联,采用动态扫描的方式,通过位选信号控制各个七段数码管轮流点亮,利用人眼视觉暂留现象,实现多个七段数码管同时显示信息的效果。
七段数码管的动态扫描,用单片通过C语言编程时比较复杂,但在FPGA中,利用Verilog语言本身的并行机制,这件事倒变得简单了。
下图为北邮版FPGA开发板中2个七段数码管的连接方式,这2个七段数码管是并联关系,但位线相对独立,通过T2和T3控制2个七段数码管的阴极公共端,当T2=1时,允许对应的七段数码管工作。
使用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)
4h0: digit_seg <= 8b11111100; //显示0~F
4h1: digit_seg <= 8b01100000;
4h2: digit_seg <= 8b11011010;
4h3: digit_seg <= 8b11110010;
4h4: digit_seg <= 8b01100110;
4h5: digit_seg <= 8b10110110;
4h6: digit_seg <= 8b10111110;
4h7: digit_seg <= 8b11100000;
4h8: digit_seg <= 8b11111110;
4h9: digit_seg <= 8b11110110;
4hA: digit_seg <= 8b11101110;
4hB: digit_seg <= 8b00111110;
4hC: digit_seg <= 8b10011100;
4hD: digit_seg <= 8b01111010;
4hE: digit_seg <= 8b10011110;
4hF: digit_seg <= 8b10001110;
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开发板的管脚对照表如下表所示。
迎接另一个晨曦,带来全新空气
气息改变情味不变,茶香飘满情谊
我家大门常打开,开放怀抱等你
拥抱过就有了默契,你会爱上这里
不管远近都是客人请不用客气
相约好了在一起,我们欢迎你
我家大门常打开,开怀容纳天地
岁月绽放青春笑容,迎接这个日期
天大地大都是朋友请不用客气
画意诗情带笑意,只为等待你
相关链接