[其他芯片] 【国产FPGA高云GW1N-4系列开发板测评】静态数码管显示

怀揣少年梦   2021-12-14 17:11 楼主

一、目标

  1. 进行数码管显示0-9 十个数字,并且每秒切换一次

二、原理

数码管按段数可分为七段数码管和八段数码管按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到VCC,当某一字段发光二极管的阴极为低电平时,应字段就点亮,当某一字段的阴极为高电平时,应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。按照数字或者字母的特定可以进行数码管显示字段组合进而显示数字或者字母。

三、硬件

打开GW1N-4K-LQFP144-16原理图,可以看到开发板上使用的是共阳极显示方式。从原理图上看,D1D6D16D21四个PNP管,构成四位数码管的公共端,控制四个PNP导通就能控制显示哪个数码管亮,即LED_DIS_SEL4LED_DIS_SEL3LED_DIS_SEL2LED_DIS_SEL1为位选信号端口。数码管的段选端口为LED_DIS_ALED_DIS_BLED_DIS_CLED_DIS_DLED_DIS_ELED_DIS_FLED_DIS_GLED_DIS_DP

数码管原理图.png

四、软件

编写数码管驱动程序。

1、产生1Hz时钟

`define UD #1  //在引用已定义的宏名时,必须在宏名的前面加上符号“`”,表示该名字是一个经过宏定义的名字.
               //宏定义不是Verilog HDL语句,不必在行末加分号。如果加了分号会连分号一起进行置换
               //宏名和宏内容必须在同一行中进行声明。如果在宏内容中包含有注释行,注释行不会作为被置换的内容

module div_clk(
    input  sys_clk,//系统时钟 50Mhz
    
    output clk_1hz //1Hz时钟

);


reg [25:0] time_cnt = 0;//用于保存分频计数保存

always @(posedge sys_clk)
begin 
    if(time_cnt == 26'h2faf080-1'b1)
        time_cnt <= `UD 26'd0;
    else
        time_cnt <= `UD time_cnt + 1'b1;
end

reg flag = 0;//用于产生正负信号标志
//分频,产生1Hz时钟
always @(posedge sys_clk)
begin   
    if(time_cnt == 26'h2faf080/2-1'b1)
        flag <= `UD 1'b1;
    else if(time_cnt == 26'h2faf080-1'b1)
        flag <= `UD 1'b0;
end   

assign clk_1hz = flag;

endmodule

 

2、数码管驱动显示。

/*
数码管显示实验,进行每秒显示不同的数字
4个数码管
*/

`define UD #1  //延时1个时间单位

module SEG(
    input  sys_clk,//系统时钟
    
    output [3:0]dig,//位选
    output reg[7:0]smg//数码管段码
);


wire clk_1hz;  //变量

div_clk u_div_clk
(
    .sys_clk(sys_clk),
    .clk_1hz(clk_1hz)
);

reg [3:0]counter = 0;
always @(posedge clk_1hz)
begin
    if(counter == 4'd15)
        counter <= `UD 4'd0;
    else
        counter <= `UD counter + 1'b1;
end


//共阳极
assign dig = 4'b1110; //显示一位
//0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80,0x90
//显示部分 共阳极,为0有效
always @(*)
begin   
    case(counter)
        4'd0:smg = 8'hc0;//数字0
        4'd1:smg = 8'hf9;//数字1
        4'd2:smg = 8'ha4;//数字2
        4'd3:smg = 8'hb0;//数字3
        4'd4:smg = 8'h99;//数字4
        4'd5:smg = 8'h92;//数字5
        4'd6:smg = 8'h82;//数字6
        4'd7:smg = 8'hf8;//数字7
        4'd8:smg = 8'h80;//数字8
        4'd9:smg = 8'h90;//数字9
        default:smg = 8'hc0;//数字0
    endcase
end
endmodule

五、实验现象

见附件

 

 

回复评论 (3)

附件上传与此。

数码管.mp4 (2.29 MB)
(下载次数: 7, 2021-12-14 17:19 上传)

点赞  2021-12-14 17:19
引用: 怀揣少年梦 发表于 2021-12-14 17:19 附件上传与此。

视频可以上传到大学堂:https://training.eeworld.com.cn/,然后直接嵌入

点赞  2021-12-15 09:42
引用: nmg 发表于 2021-12-15 09:42 视频可以上传到大学堂:https://training.eeworld.com.cn/,然后直接嵌入

多谢指教

点赞  2021-12-15 10:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复